Home · Setup · Claude.ai and Claude Desktop connectors
Goods receipt notes against purchase orders: what arrived, what was damaged, what never came. You raise a purchase order with whole-unit lines, then receive it as a goods-receipt note (GRN): one cell per PO line for units received and units damaged. Received is checked against the PO line's tolerance before the note opens, more lines and more units can be added as batches arrive, and grn_close freezes the note. grn_discrepancy lists every line not as ordered (damaged, declared shortage, or received under tolerance), the status report counts notes open, closed and discrepant, and the CSV export hands the whole ledger to the accounts side. GRN ids are sequential and never reissued; closing is the record, not deletion.
The POs, GRNs and lines live in the hosted store behind the token, so a receipt recorded here reads the purchase order raised through the purchase-requisition or invoice connectors on that same token. There is no network call inside the server on any route, so the quantity and value arithmetic is identical here and on a laptop, and grn_export's CSV comes back in the answer itself, because a hosted call has nowhere local to write it.
| You say | Tool |
|---|---|
| Raise a PO for 40 cases of glassware and 12 crates of bottle openers. | po_add |
| The glassware truck came: 38 cases fine, 2 broken. Open a GRN. | grn_add |
| What is still wrong across everything we received this month? | grn_discrepancy then grn_status_report |
The unit suite is 18 tests, 18 passing, 0 failing (node --test, node v22), covering tolerance checks on received, damage and shortage per line, and the close discipline. The contract suite asserts the snapshot rule on the raw store bytes, not only through the API.
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/goods-receipt/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 Goods Receipt 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: Purchase orders, receipt notes, line additions, the discrepancy list and the status report are all free and unlimited; the estate pattern caps nothing a warehouse needs day to day. Every read is free on every tier. 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 Goods Receipt for that connector.
The connector runs server-side with no filesystem of its own, so any file MCP Goods Receipt produces is handed back as a download link that expires after one hour, rather than a path on disk.
MCP Goods Receipt 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