Home · Setup · Claude.ai and Claude Desktop connectors
Change orders against a quote or a work order, with the running contract value built from what the client actually approved. You raise a change order against a quote or a work order, naming the client, the change in one line and, on the first one for that reference, the original contract value in minor units. Then you add the lines: added work with a quantity and a unit price, removed work the same way, and a changed line with what it was and what it is now. You move it to sent on the day it goes out, and to approved or rejected on the day the client answers, each step dated and a step dated before the last one refused. contract_value then answers the question the whole thing exists for: the original, plus the deltas the client APPROVED, equals the value today, with the draft and sent deltas shown apart and never added in. The original value is stated once per reference and inherited by every later change order, and a different figure is refused by name, because a contract with two original values has two running values and the customer sees whichever was typed last. No delta is stored: the delta, the VAT and the running value are derived from the lines on every call with the invoice server's own arithmetic. Lines go only on a draft; a sent change order that needs another line is voided and raised again, so the client's approval always refers to what they were sent, and a draft cannot be approved directly because approval is the client's answer to something they were sent. Once approved, the delta comes back as invoice_create items in major units and quote_create items in minor units in one call, and a changed line comes back as two items, the reversal and the revised line, never one net item, so both figures reproduce on a calculator from the change order the client signed. It creates no invoice and no quote of its own: the payload says posted false, and you run invoice_create in the invoice server.
The change orders live in the hosted store behind the token, so the five free open change orders and the CO-YYYY-NNNN numbers follow the key rather than the machine, and the invoice connector on that same token takes the payload this server builds with no local data directory to point at and no path to type. There is no network call inside the server on any route, so the delta, the VAT, the running contract value and both payloads are identical here and on a laptop, down to the minor unit, and no delta is stored on either route because every figure is derived from the lines on the call. Two things to carry across from the desktop route. The scale: change_order_invoice_payload hands back invoice_create arguments with unit_price in MAJOR units and quote_create arguments with unit_price_minor in MINOR units, exactly 100x apart, and each payload says which it is, so paste the one named for the connector you are about to call. And the shape: a changed line is a reversal and a revised line, two items the client can check, never one net item. change_order_document comes back as text and needs no download at all.
| You say | Tool |
|---|---|
| Raise a change order against Q-2026-0003 for Harbour Cafe, original value 2,000,000 minor units: second landing page, drop hosting, widen the audit. | change_order_create |
| Add two landing pages at 45,000 each, remove twelve months of hosting at 3,999, and the audit was three at 45,000 and is now five at 42,000. Then mark it sent on 2026-03-12. | change_order_add_line |
| They approved it on 2026-03-15. What is Q-2026-0003 worth now, and build the invoice payload for the delta. | contract_value |
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, which reproduces from nothing on the change order the client signed. The payload this server emits is a reversal, -3 x 450.00, and the revised line, 5 x 420.00; each reproduces on a calculator, and the invoice server's own computeTotals over both is the same +750.00, because its roundHalfUp is symmetric in sign. That same symmetry carries a removal as a negative quantity through invoice_create, and it is what quote_create refuses, so the quote payload carries a ready flag instead of a promise. The worked change order runs the whole way through: added 90,000, removed 47,988, changed +75,000, delta net 117,012, VAT 26,913 per item, delta gross 143,925, rounding drift zero, and the contract goes from 2,000,000 to 2,117,012 only on the day the client approves. The unit suite then feeds the quote payload's minor figure into the invoice engine as though it were major and asserts the net is exactly 100x, 11,701,200 against 117,012, re-derived from each payload's own items, so the day someone simplifies the payload to one net item or moves a field between the scales, the build says so instead of the customer.
https://mcp.zovo.one/mcp/connect mints an anonymous token and prints a URL per server, including this one, shaped like https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/change-order/t/<token>. That URL works with no headers: the token is in the path, not in an Authorization field this form does not have.
Idle anonymous tokens are swept after 30 days. Since this route has no filesystem, a file MCP Change Order generates comes back as a download link that expires after one hour. A Pro key can replace the token in the same URL and removes the free-tier limits.
On an individual Pro or Max plan you add the connector yourself from Customize, Connectors. On Team and Enterprise it is the other way round: only an Owner or Primary Owner can add a custom connector, at Organization settings, Connectors, and members then connect to what the Owner added rather than pasting their own URL.
Free: Five OPEN change orders, draft and sent, and 200 lines on each of them on every tier. The cap counts the ones the client has not answered rather than the ones ever raised, so approving, rejecting or voiding one frees its slot, and change_order_delete on a draft with no lines is free on every tier as well, because a way back that only a Pro key can reach is not a way back. contract_value is free on every tier: the running value is the thing the change orders exist to answer, and withholding it would withhold the record. A byte-identical change order is refused before the cap is even consulted, so a double-typed change names the id already stored rather than being met with an upgrade prompt, and burns neither a slot nor a CO number. Pro is $19 once, verified offline, and binds to the token after checkout.
No. Add custom connector offers an Advanced settings section with an OAuth Client ID and Client Secret, but the connect-by-URL route does not use it. Leave both blank: the token in the URL path is what authenticates.
That is documented, not a bug: on Team and Enterprise, only an Owner or Primary Owner can add a custom connector, at Organization settings, Connectors, Add, Custom, Web. After that, members connect to the URL the Owner added from Customize, Connectors.
Yes. The token segment of the URL from /mcp/connect can be replaced with a Pro key, which removes the free-tier limits on MCP Change Order for that connector.
The connector runs server-side with no filesystem of its own, so any file MCP Change Order produces is handed back as a download link that expires after one hour, rather than a path on disk.
MCP Change Order in detail · How connect-by-URL works · Every server for Claude.ai and Claude Desktop connectors · All clients · Claude.ai and Claude Desktop connectors docs · Buy Pro