{
  "ok": true,
  "name": "catalogue",
  "url": "https://mcp.zovo.one/mcp/catalogue",
  "protocol": "MCP streamable HTTP (2025-06-18)",
  "transport": "streamable-http",
  "build": "2026-09-06.1",
  "summary": "sku_set records a product with its unit and a price row carrying the day that price comes into force, per currency and per tier; sku_get and sku_list read the price in force on any date; rate_set and rate_get do the same for hourly labour rates by role; lines_resolve turns a list of sku and role lines into invoice_create-ready and quote_create-ready items priced as of each line's date; price_list_text and price_list_pdf print the list a customer is sent; catalogue_report names the rows in force, the rows a later row already replaces and the SKUs with no price in your default currency.",
  "tool_count": 12,
  "tools": [
    "sku_set",
    "sku_get",
    "sku_list",
    "sku_delete",
    "rate_set",
    "rate_get",
    "lines_resolve",
    "price_list_text",
    "price_list_pdf",
    "catalogue_report",
    "license_status",
    "license_activate"
  ],
  "free_limits": "25 SKUs, and one price tier; lines_resolve and price_list_text are free and unlimited on every tier, because pricing a line is the one thing the invoice and quote servers come here for and a catalogue nobody can read is not a catalogue. Deleting an unused SKU is free, so the cap is one you can get back under. price tiers other than standard, price_list_pdf and catalogue_report are Pro",
  "authentication": {
    "note": "This GET is public so a health check and a browser both get an answer. The JSON-RPC traffic is POST and still needs a token.",
    "get_a_free_token": "GET https://mcp.zovo.one/mcp/token",
    "ready_made_urls": "GET https://mcp.zovo.one/mcp/connect",
    "header_form": "Authorization: Bearer <token>",
    "url_form": "https://mcp.zovo.one/mcp/catalogue/t/<token>"
  },
  "index": "https://mcp.zovo.one/mcp",
  "source": "https://github.com/theluckystrike/mcp-servers"
}