theluckystrike MCP Job Card
A community MCP server for managing on-site job cards, allowing users to log labor hours and materials per job, track status from open to invoiced, and generate printable cards with client signature lines for trades and field service teams.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.zovo.one/mcp/job-cardWhat its tools do
11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Log labor hours and material costs for a specific job
- Update job status from open to invoiced
- Print a job card with client signature line
- Generate weekly summary of hours and value per job
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- mcp-job-card 0.22.6
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 11 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 1 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
11 advertised
job_card_create — Open a job card
Open a job card for a job your crew is taking on and return its JC-YYYY-NNNN number: the client, the site, what the job is, the currency and when it is scheduled. Free tier: 10 active cards; archiving a finished job frees its slot.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"site",
"description",
"currency"
],
"properties": {
"note": {
"type": "string",
"maxLength": 2000
},
"site": {
"type": "string",
"maxLength": 400,
"description": "Where the job is, e.g. 14 Nowa Street, flat 3"
},
"client": {
"type": "string",
"maxLength": 200,
"description": "Who the job is for, e.g. Kowalski bathroom refit, or Acme Ltd"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO code the rates and prices are in"
},
"description": {
"type": "string",
"maxLength": 2000,
"description": "What the job is, e.g. Replace the consumer unit and certify"
},
"scheduled_date": {
"type": "string",
"maxLength": 10,
"description": "The date the crew is due on site, YYYY-MM-DD. May be in the future; it is a plan, not a log"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_log_labor — Log hours on a job card
Log hours worked on a job card: who did the work, the day, the hours and the hourly rate in whole cents, with a note on what was done. The line value is hours times rate, rounded half-up to the cent, fixed the moment it is logged.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card",
"worker",
"date",
"hours",
"rate_cents"
],
"properties": {
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "The day the work was done, YYYY-MM-DD. A future date is refused"
},
"note": {
"type": "string",
"maxLength": 2000,
"description": "What was done, e.g. First fix, kitchen ring main"
},
"hours": {
"type": "number",
"maximum": 24,
"description": "Hours worked, to the hundredth, e.g. 7.5 or 3.25. One entry is one worker's day at most",
"exclusiveMinimum": 0
},
"worker": {
"type": "string",
"maxLength": 200,
"description": "Who did the work, e.g. Anna"
},
"rate_cents": {
"type": "integer",
"maximum": 100000000000000,
"minimum": 0,
"description": "The hourly rate in whole cents. 4500 is 45.00 an hour"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_log_material — Log materials used on a job card
Log materials used on a job card: the item, the day it went in, the quantity and the unit cost in whole cents. The line value is quantity times unit cost, rounded half-up to the cent, fixed the moment it is logged.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card",
"item",
"date",
"qty",
"unit_cost_cents"
],
"properties": {
"qty": {
"type": "number",
"maximum": 1000000,
"description": "How many, to the thousandth, e.g. 2 or 0.5",
"exclusiveMinimum": 0
},
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "The day it went in, YYYY-MM-DD. A future date is refused"
},
"item": {
"type": "string",
"maxLength": 200,
"description": "What went into the job, e.g. Copper pipe 15mm, or Consumer unit 10-way"
},
"note": {
"type": "string",
"maxLength": 2000
},
"unit_cost_cents": {
"type": "integer",
"maximum": 100000000000000,
"minimum": 0,
"description": "What one costs in whole cents. 1299 is 12.99"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_update_status — Move a job card one step
Move one job card exactly one step: open, in_progress, done, invoiced, archived, stamping the date and an optional note into its history. A skipped or backwards step is refused and nothing is written. Archiving a finished job frees a free-tier slot.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card",
"status"
],
"properties": {
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "The date to stamp the step with, YYYY-MM-DD. Default today"
},
"note": {
"type": "string",
"maxLength": 2000
},
"status": {
"type": "string",
"maxLength": 20,
"description": "The next step for this card: open, in_progress, done, invoiced, archived. in-progress is accepted too"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_list — List job cards
List job cards newest first: client, site, status, hours logged, and the labor, materials and grand totals in cents. Filter by status and by client. Totals are kept per currency, never mixed.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"client": {
"type": "string",
"maxLength": 200,
"description": "Only cards whose client contains this text, case-insensitive"
},
"status": {
"type": "string",
"maxLength": 20,
"description": "Only cards at this status: open, in_progress, done, invoiced, archived"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_get — Read one job card with its running totals
Read one job card in full by JC number or client: every labor entry and every material used, the hours per worker, and the running totals -- labor, materials and grand total -- as integer cents with formatted amounts. Reads only.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card"
],
"properties": {
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_print — Render the card for the client to sign
Render a job card ready to print and hand to the client: the labor, the materials, the totals and a signature line for client sign-off. Markdown, or self-contained HTML that needs nothing from the network. Writes nothing.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card"
],
"properties": {
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
},
"format": {
"enum": [
"markdown",
"html"
],
"type": "string",
"description": "markdown (default) or html. The HTML carries its own styling and references nothing external"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}job_card_delete — Delete an empty job card
Delete a job card entered by mistake. One with labor or materials logged is refused, naming what it holds, because deleting it would lose the record of work done: archive it instead. The JC number is never reissued.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"card"
],
"properties": {
"card": {
"type": "string",
"maxLength": 200,
"description": "The job card id, e.g. JC-2026-0003, or the client name when only one card has it"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}job_card_summary — Summarize a day or a week
Hours and value for a day or a week: the job cards touched, the hours per worker, and the labor, materials and total value, kept per currency. A week runs Monday to Sunday. Touched means a labor or material entry dated inside the window.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "A date inside the window, YYYY-MM-DD. Default today"
},
"span": {
"enum": [
"day",
"week"
],
"type": "string",
"description": "day (default) is the date itself; week is the Monday to Sunday containing it"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}license_status — License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_activate — Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "License key from checkout, MCPL1.<payload>.<signature>"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
1 advertised
upgrade_to_pro — Explain the upgrade
Explain what Pro on the job-card server costs and exactly what the user has to do, without leaving the conversation.
- feature
- The capped feature that prompted this, if there was one
Resources
1 advertised
pricing — Pricing and upgrade
What job-card costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.
pricing://job-card90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1323 ms
- 95th percentile latency
- 1323 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1323 ms · metadata changed · 11 tool(s), 1 resource(s), 0 resource template(s), 1 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mcp-job-card https://mcp.zovo.one/mcp/job-cardCodex
codex mcp add mcp-job-card --url https://mcp.zovo.one/mcp/job-cardCursor
{
"mcpServers": {
"mcp-job-card": {
"url": "https://mcp.zovo.one/mcp/job-card"
}
}
}Cline
{
"mcpServers": {
"mcp-job-card": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/job-card",
"disabled": false
}
}
}VS Code
{
"servers": {
"mcp-job-card": {
"type": "http",
"url": "https://mcp.zovo.one/mcp/job-card"
}
}
}Gemini CLI
gemini mcp add --transport http mcp-job-card https://mcp.zovo.one/mcp/job-cardClaude Desktop
https://mcp.zovo.one/mcp/job-cardWindsurf
{
"mcpServers": {
"mcp-job-card": {
"serverUrl": "https://mcp.zovo.one/mcp/job-card"
}
}
}Let your agent find its tools
Find servers like theluckystrike MCP Job Card from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.