Servidor MCP

job-card

io.github.theluckystrike/job-card
Negocio y operaciones Público y accesible MCP 2026-07-28

Qué hace este MCP

Manages field-service job cards with labor and material entries, running totals, status workflows, summaries, and printable client sign-off documents.

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.
Esquema de entrada
{'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}
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.
Destructivo
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Esquema de entrada
{'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}
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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Modificado
license_activate
22 de September de 2026 a las 02:40
Modificado
license_status
22 de September de 2026 a las 02:40
Modificado
job_card_summary
22 de September de 2026 a las 02:40
Modificado
job_card_delete
22 de September de 2026 a las 02:40
Modificado
job_card_print
22 de September de 2026 a las 02:40
Modificado
job_card_get
22 de September de 2026 a las 02:40
Modificado
job_card_list
22 de September de 2026 a las 02:40
Modificado
job_card_update_status
22 de September de 2026 a las 02:40
Modificado
job_card_log_material
22 de September de 2026 a las 02:40
Modificado
job_card_log_labor
22 de September de 2026 a las 02:40
Modificado
job_card_create
22 de September de 2026 a las 02:40
Añadido
license_activate
18 de September de 2026 a las 02:40
Añadido
license_status
18 de September de 2026 a las 02:40
Añadido
job_card_summary
18 de September de 2026 a las 02:40
Añadido
job_card_delete
18 de September de 2026 a las 02:40
Añadido
job_card_print
18 de September de 2026 a las 02:40
Añadido
job_card_get
18 de September de 2026 a las 02:40
Añadido
job_card_list
18 de September de 2026 a las 02:40
Añadido
job_card_update_status
18 de September de 2026 a las 02:40
Añadido
job_card_log_material
18 de September de 2026 a las 02:40
Añadido
job_card_log_labor
18 de September de 2026 a las 02:40
Añadido
job_card_create
18 de September de 2026 a las 02:40