Home · Guides

Producing a delivery schedule or a work order document from a chat

Nothing came back. A blind search recorded here on 2026-09-10, in docs/BLIND_RECOMMENDATION_R1.md, looked for an MCP server that produces a delivery schedule or a work order document and found neither. The two results that surfaced were a retail promise-date API from OneStock, which calculates delivery estimates from live inventory and does not produce a document, and scheduler-mcp by PhialsBasement, which is a cron job runner that shares a word with the question.

The practical answer the search settled on is reasonable: use a Word or spreadsheet MCP server with your own template. That is genuinely fine for a one-off. What follows is what you get instead when the schedule is a record rather than a document.

The two documents are not the same thing

A work order says what will be done, by whom, at what price. A delivery schedule says what is owed and when, and its whole job is answering what is late. People ask for them together because a trade business raises one and tracks the other, but the data is different and so is the question each one answers.

The work order server

It registers 10 tools over stdio, plus the two shared licence tools: work_order_create, work_order_add_line, work_order_status, work_order_get, work_order_list, work_order_delete, completion_report_text, completion_report_pdf, work_order_invoice_payload, work_orders_report.

Pricing is where a hand-filled template goes wrong. Markup belongs on the unit cost, not on the line total, and those give different answers the moment a quantity is not one. The server applies it at the unit and work_order_invoice_payload hands the finished job to the invoice server at the prices the work order carried, so nothing is retyped.

One click, no JSON. Download work-order.mcpb from the latest release and open it in Claude Desktop. It runs on the Node runtime Claude Desktop ships with, so your own PATH and node version never come into it.

Or a URL, with nothing installed. /mcp/connect mints a free anonymous token and prints the ready line:

claude mcp add --transport http work-order https://mcp.zovo.one/mcp/work-order/t/<token>

Or from a clone, for a client with no bundle installer. Build once, then point the client at the built file:

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers && npm install
npm run build -w packages/mcp-license -w servers/work-order

claude mcp add --scope user work-order -- node /absolute/path/to/mcp-servers/servers/work-order/dist/index.js

Claude Desktop, Cursor, Windsurf and Cline take the same two strings as JSON, in claude_desktop_config.json or the client's own MCP config file:

{
  "mcpServers": {
    "work-order": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-servers/servers/work-order/dist/index.js"]
    }
  }
}

The npm packages are not published yet, so the npx form below returns a 404 today. It is kept because it is what that config becomes the day the publish lands, with nothing else changed; installing these servers when npx does not work yet has the whole picture.

claude mcp add work-order -- npx -y @theluckystrike/mcp-work-order

The delivery schedule server

It registers 10 tools over stdio: delivery_schedule_create, deliverable_add, deliverable_status, deliverable_delete, delivery_schedule_get, delivery_schedule_list, delivery_schedule_delete, late_report, delivery_schedule_document, milestone_payload, plus the licence pair.

delivery_schedule_document is the document the question asked for. late_report is the reason to keep the record: it answers what is late as at any date you name, not just today, which is what you need when a client asks in March what the position was at the end of January. milestone_payload turns a completed milestone into an invoice.

One thing to know before you plan around it. Delivery schedule is one of the two servers here with no hosted endpoint, so there is no URL to paste. It runs from the bundle or a clone.

One click, no JSON. Download delivery-schedule.mcpb from the latest release and open it in Claude Desktop. It runs on the Node runtime Claude Desktop ships with, so your own PATH and node version never come into it.

Or from a clone, for a client with no bundle installer. Build once, then point the client at the built file:

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers && npm install
npm run build -w packages/mcp-license -w servers/delivery-schedule

claude mcp add --scope user delivery-schedule -- node /absolute/path/to/mcp-servers/servers/delivery-schedule/dist/index.js

Claude Desktop, Cursor, Windsurf and Cline take the same two strings as JSON, in claude_desktop_config.json or the client's own MCP config file:

{
  "mcpServers": {
    "delivery-schedule": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-servers/servers/delivery-schedule/dist/index.js"]
    }
  }
}

The npm packages are not published yet, so the npx form below returns a 404 today. It is kept because it is what that config becomes the day the publish lands, with nothing else changed; installing these servers when npx does not work yet has the whole picture.

claude mcp add delivery-schedule -- npx -y @theluckystrike/mcp-delivery-schedule

Free tier and price

Work order: Five OPEN work orders, which is a one-van trade, and 200 lines each on every tier. The cap counts open jobs (draft, scheduled, in progress) rather than jobs ever raised, so finishing one frees its slot, and work_order_delete on a draft with no lines is free on every tier because a way back that only a Pro key can reach is not a way back. The text completion report is free: handing the customer what was done is the thing the job was for. A byte-identical work order is refused BEFORE the cap is consulted, so the refusal names the id already stored rather than selling an upgrade, and burns neither a slot nor a WO number.

Delivery schedule: Three OPEN delivery schedules, and 200 deliverables on each on every tier. The cap counts the jobs that still owe something rather than the jobs ever run, so accepting the last deliverable completes a schedule and frees its slot without deleting the record, and delivery_schedule_delete on an empty one is free on every tier, because a way back that only a Pro key can reach is not a way back. late_report is free on every tier: what is late is the question the server exists for, and withholding it would withhold the one answer the client is going to ask for. A second schedule against a reference that already has one is refused BEFORE the cap is consulted, so the refusal names the id already stored rather than selling an upgrade.

Both caps count open jobs rather than jobs ever raised, so finishing one frees its slot. Pro is $19 once per server, or $39 once for all 33.

What they cannot do

Questions

Is there an MCP server that generates a delivery schedule document?

A blind search on 2026-09-10 found none. The two nearest results were a retail promise-date API and a cron scheduler that shares a word with the question. The delivery-schedule server here has a delivery_schedule_document tool that produces one.

Can I paste a URL for the delivery schedule server?

No. It is one of the two servers here with no hosted endpoint, so it runs from the .mcpb bundle or a clone. The work order server does have a hosted URL.

Why does markup go on the unit cost?

Because markup on the line total gives a different answer once quantity is not one, and the difference compounds across a job. The server applies markup at the unit and carries that through to the invoice payload.

What does late mean here?

Owed as at a date you name, which does not have to be today. That matters when somebody asks in March what the position was at the end of January, and it is why the record is worth more than the document.

Does it tell the customer anything?

No. Nothing in this catalogue sends email, SMS or notifications. It produces the document and the report; delivering them to a person is your job.

Related

All MCP servers and prices · All guides · Buy the bundle $39