Home · Setup · Claude.ai and Claude Desktop connectors

MCP Catalogue in Claude.ai and Claude Desktop connectors

One price list and one labour rate card, kept where the invoice and the quote can both read them, with the price on a date worked out on the call. You give a product a code, a name, a unit, an optional VAT rate and a price in minor units with the day that price comes into force, and you give a role an hourly rate the same way. Then you hand the catalogue a list of what a customer had, and it hands back the line items already priced. A SKU holds its price ROWS rather than a current price, and the price on a date is the latest valid-from at or before it, worked out on the call, so putting a price up in July does not rewrite what June was quoted at, and sku_get names the row it picked, how many rows it considered and any later row already booked, which turns a question about a figure on an old invoice into one line of one file rather than an argument. A date before every row has no price and that is a refusal naming the earliest row and the day it starts, because filling it with the earliest row reprices history: a job done in December 2024 would be billed at the January 2025 price and would reconcile perfectly against a price list that did not exist yet. One row per currency, tier and valid-from date, and setting that key again REPLACES the row and says what it was and what it became, because two rows on one key make the price that day a coin toss decided by array order. Nothing is invented: no fallback, no profile default rate, no nearest match. An unknown code, or a code with no price in the currency and tier you asked for, is refused by name, because the invented number would be printed on a document a customer pays from. It creates no invoice and no quote of its own: lines_resolve returns the arguments and says posted false, and you run invoice_create in the invoice server or quote_create in the quotes server.

The price list lives in the hosted store behind the token, so the 25 free SKUs and the price rows follow the key rather than the machine, and the invoice and quote connectors on that same token price their lines from the same catalogue 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 price on a date, the row it was picked from and both resolved payloads are identical here and on a laptop, down to the minor unit, and no current price is stored on either route because every figure is derived on the call. The one thing to carry across from the desktop route is the scale: lines_resolve 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. price_list_pdf comes back as a one-hour download link rather than a path, so download it in the same session you ask for it; price_list_text needs no download at all, and it is the one most customers actually get.

What you get

You sayTool
Add WEB-AUDIT, a fixed price site audit, 45,000 minor units from 2026-01-01, VAT 23 percent.sku_set
What was WEB-AUDIT priced at on 2026-03-15, and is there a later price already booked?sku_get
Senior developer 8,500 an hour and junior 4,500 from 2026-01-01. Then price three audits, twelve months of HOST-MO, seven and a half senior hours and three and a quarter junior hours as of 2026-03-15.lines_resolve

The two servers this catalogue feeds take the same price in different scales, and the gap is exactly 100x. invoice_create's item carries unit_price in MAJOR units, 90 for 90 EUR. quote_create's item carries unit_price_minor in MINOR units, 9000 for 90.00 EUR. Both fields are plain numbers, both are called the unit price, and neither tool can tell that the number it was handed was scaled for the other one: 45000 passed as unit_price is a perfectly valid invoice line for EUR 45,000.00, and it reconciles against itself. The unit suite measures the gap on the worked resolution: the correct payload nets 261,363 minor units, and the quote payload's field fed into the invoice engine nets 26,136,300, asserted as exactly 100x, and 1000x in a 3-decimal currency such as KWD. So the store holds MINOR units, which is the only lossless form, and lines_resolve builds BOTH payloads itself in one call with the scale printed against each. A catalogue that returned the price and let the caller choose the field would be wrong half the time, and wrong by two orders of magnitude when it was.

Connect it, no install

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/catalogue/t/<token>. That URL works with no headers: the token is in the path, not in an Authorization field this form does not have.

  1. Open https://mcp.zovo.one/mcp/connect and copy the URL printed for MCP Catalogue.
  2. There is no config file here: the Add custom connector form asks for a name and a Remote MCP server URL, with an Advanced settings section for an optional OAuth Client ID and Client Secret.
  3. Paste the URL as the Remote MCP server URL. Leave the optional OAuth Client ID and Client Secret blank; this endpoint does not use them.
  4. Click Connect, then turn the connector on for a conversation from the + button, Connectors.

Idle anonymous tokens are swept after 30 days. Since this route has no filesystem, a file MCP Catalogue 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.

Claude.ai and Claude Desktop connectors notes worth knowing first

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: 25 SKUs, the one standard price tier, unlimited rate cards, and every text answer including lines_resolve and price_list_text. A price list nobody can read is not a price list, and withholding lines_resolve would withhold the one thing the sibling servers came here for. sku_delete is free on every tier, and the resolution register is what makes that safe: every resolution updates one row per SKU and role it priced, so the register is bounded by the size of the catalogue rather than by traffic, and a code that has priced a line or that a rate card points at is refused by name with the times it was used and the last resolution id, because a code printed on a document somebody sent is a fact about that document. A byte-identical duplicate is refused before the free cap is even consulted, so a product filed twice names the code already stored rather than being met with an upgrade prompt, and burns neither a slot nor a place in the list. Pro is $19 once, verified offline, and binds to the token after checkout.

Questions

Does this need OAuth?

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.

I am on a Team or Enterprise plan and cannot add a connector.

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.

Can I use my Pro key instead of the free anonymous token?

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 Catalogue for that connector.

Why did a generated file come back as a link instead of opening?

The connector runs server-side with no filesystem of its own, so any file MCP Catalogue produces is handed back as a download link that expires after one hour, rather than a path on disk.

Related

MCP Catalogue 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