mcpField
C
change-order

change-order

Remote
mcp.zovo.oneBusiness & Marketing2Updated 1d ago

About change-order

change-order is an MCP server for tracking changes to quotes or work orders, including line-item deltas, approval status, and contract value. Only approved changes affect the running value, and approved deltas can be returned as invoice- or quote-ready items.

Key features

  1. 01Record added, removed, and changed lines
  2. 02Track approval status and dates
  3. 03Calculate approved and pending deltas
  4. 04Create client approval documents
  5. 05Return invoice- and quote-ready items

Use cases

  1. 01Track contract changes against quotes or work orders
  2. 02Review current contract value and pending changes
  3. 03Convert approved deltas into invoice or quote items

MCP support

As an MCP server, it exposes tools for creating and managing change orders, updating statuses, retrieving contract values, and producing documents and line-item payloads.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.zovo.one/mcp/change-order
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://mcp.zovo.one/mcp/change-orderAuth required
Packages
mcpbchange-order.mcpb0.22.5

Tools

11
ParameterTypeRequiredDescription
datestringNoThe day the change was raised, YYYY-MM-DD. Default today
notestringNo
titlestringYesWhat the change is, in one line, e.g. Add a second landing page and drop hosting
clientstringYesThe client the change is agreed with, as named on the quote or work order
currencystringNoISO code the contract is priced in. Defaults to the shared business profile's currency
referencestringYesThe quote or work order this change order is against, by its id, e.g. Q-2026-0003 or WO-2026-0001
duplicate_okbooleanNoRaise it even though an identical change order exists on this reference. Default false
reference_kindenumNoWhat the reference is. Inferred from the id when omitted: WO-... is a work order, anything else a quotequote | work_order
original_value_minorintegerNoThe contract value BEFORE any change order, net of VAT, in whole minor units. Required on the first change order against a reference; inherited by every later one

Details

From the project README

mcp-change-order

In the official MCP Registry (io.github.theluckystrike/change-order). Change orders against a quote or a work order, kept the way a variation is kept on site: what was added, what was taken out and what changed, each with a reason and a date, sent to the client, and answered. The running contract value is the original plus the deltas the client has APPROVED; what they have not answered yet is shown as pending and never added in. Once a change order is approved, the delta comes back as invoice_create-ready items in MAJOR units and quote_create-ready items in MINOR units, in one call, with the scale printed against each.

No delta is stored. A change order holds its lines and its status history; the delta, the running value and the VAT are derived on every call, with the invoice server's own arithmetic. Nothing is invented: the first change order against a reference states the original contract value once, every later one inherits it, and a different figure is refused by name.

Install

One-click (.mcpb): download change-order.mcpb from the latest release and double-click it in Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

Hosted, no install: point a URL-based client at https://mcp.zovo.one/mcp/change-order. GET https://mcp.zovo.one/mcp/connect mints a token and prints a ready URL.

npm publish for @theluckystrike/mcp-change-order is pending, so the npx line below returns 404 today.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "change-order": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-change-order"]
    }
  }
}
Claude Code
claude mcp add change-order -- npx -y @theluckystrike/mcp-change-order
Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

ToolWhat it does
change_order_createRaise a change order against a quote or work order: reference, client, title, date, and the original contract value on the first one
change_order_add_lineAdd an added, removed or changed line to a draft, with its quantity, unit price in minor units, reason and date
change_order_statusMove it along: draft to sent, sent to approved or rejected, draft or sent to void, each step dated
change_order_getOne change order in full: every line with its delta, the VAT, the history and the running value of the reference
change_order_listChange orders by reference, status, client and date range, with approved and pending deltas per currency
change_order_deleteDelete an empty draft raised by mistake. Free on every tier
contract_valueThe running value of one reference: original, approved delta, current value, pending delta held apart
change_order_documentThe change order as a plain-text document for the client to approve
change_order_invoice_payloadThe approved delta as invoice_create items (MAJOR units) and quote_create items (MINOR units)
license_status / license_activateFree or Pro, and where to upgrade

Free vs Pro

FreePro
Open change orders (draft and sent)5unlimited
Lines per change order200200
Raise, line, move, get, list, deleteyesyes
Running contract valueyesyes
Change order documentnoyes
Invoice-ready delta payload, both scalesnoyes

The cap counts OPEN change orders, the ones the client has not answered, not the ones you have ever raised. Approving, rejecting or voiding one frees its slot, and so does change_order_delete on a draft with no lines; all of those are free on every tier, because a way back that only a Pro key can reach is not a way back.

Get Pro: https://mcp.zovo.one/buy/change-order (one-time $19, lifetime), or all servers for $39: https://mcp.zovo.one/buy/bundle

The status machine

draft to sent; sent to approved or rejected; draft or sent to void. Approved, rejected and void are final. A draft cannot be approved directly: approval is the client's answer to something they were sent. Lines are added only while a change order is a draft; a sent one that needs another line is voided and raised again, so the client's approval always refers to what they were sent. Every step carries its own date, and a step dated before the last one is refused.

Where the money comes from

This server keeps no arithmetic of its own. computeTotals, currencyDecimals, formatMoney and roundHalfUp are imported from @theluckystrike/mcp-invoice/lib, the corrupt-store quarantine from @theluckystrike/mcp-timezone/lib, the timezone-aware "today" from @theluckystrike/mcp-quotes/lib. The VAT rate, the currency and the business name come from the shared business profile that business_set in the invoice server writes. Nothing is written outside this server's own directory, and no sibling store is opened.

The measured insight

A changed line is two items, not one, because one net item shows the customer nothing they can check. A line that goes from 3 x EUR 450.00 to 5 x EUR 420.00 is worth +EUR 750.00, and the tempting payload is one item of quantity 1 at EUR 750.00. The customer cannot reproduce that figure from anything on the change order they signed. The payload this server emits is a reversal, -3 x EUR 450.00, and the revised line, 5 x EUR 420.00; each reproduces on a calculator, and computeTotals over both is the same +EUR 750.00, because the invoice server's roundHalfUp is symmetric in sign. The same rule carries a removal as a negative quantity at the unit price it was booked at, which invoice_create accepts. The unit suite re-runs the invoice server's own computeTotals over the payload as returned and asserts the four item values and the three totals, then feeds the quote_create items into the same engine as though their MINOR figure were MAJOR and asserts the net is exactly 100x, so the day someone "simplifies" the payload to one net item, or moves a field between the two scales, the build says so instead of the customer.

Privacy

All data stays on your machine, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/change-order/. Nothing is sent anywhere. There is no account and no API key. License keys are verified offline. This server reads one file it does not own, the shared business profile, and writes into no store but its own.

Built by theluckystrike. https://github.com/theluckystrike

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.