io.github.theluckystrike/catalogue
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
A price list and rate card the quotes and invoice servers read by SKU.
| Author | io.github.theluckystrike |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 3298 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"catalogue": {
"url": "https://mcp.zovo.one/mcp/catalogue",
"transport": "streamable-http"
}
}
}
Measured tools (12)
sku_setAdd a catalogue line or reprice one: a code, a name, a unit, an optional VAT rate, and price_minor in whole minor units for one currency, tier and valid_from. A repriced line keeps its old rows. Free: 25 SKUs, one tier.
Parameters:
sku(required) — string — The code, e.g. WEB-AUDIT. Upper case, no spaces. This is what an invoice line is filed undername(required) — string — What it is on the customer's document, e.g. Website auditprice_minor(required) — integer — The price of ONE, in whole minor units. 45000 is EUR 450.00. Never a decimalnote— stringtier— string — Price tier, e.g. trade or list. Default standard. A second tier is Prounit— string — What one of it is: each, hour, month, 1000 words. Default each. Required the first timecurrency— string — ISO code this price is in. Defaults to the shared business profile's currencyvat_rate— number — VAT percent for this product, overriding the shared profile's default on a resolved linevalid_from— string — The first day this price applies, YYYY-MM-DD. Default todayduplicate_ok— boolean — Add it even though another code already carries the same product at the same price. Default false
Hints: read-only no · destructive no · idempotent no · open-world no
sku_getread-onlyShow the price of one SKU as of a date, in one currency and tier: the row picked is the latest valid_from at or before that date, and the answer names the row and any later one already booked. Free.
Parameters:
sku(required) — string — The SKU code, e.g. WEB-AUDIT, or the product name when only one product carries itdate— string — The day the price is wanted for, YYYY-MM-DD. Default todaytier— string — Price tier. Default standardcurrency— string — Defaults to the shared business profile's currency
Hints: read-only yes · destructive no · idempotent yes · open-world no
sku_listread-onlyList catalogue lines with the price in force today, filtered by code prefix, by currency and by tier. A SKU with no price in that currency and tier is listed and said to have none. Free.
Parameters:
date— string — Show the price in force on this day instead of today, YYYY-MM-DDtier— string — Price tier. Default standardlimit— integer — Maximum rows returned, default and ceiling 500prefix— string — Only codes starting with this, e.g. HOST- for every hosting linecurrency— string — The currency the price in force is shown in. Defaults to the profile's
Hints: read-only yes · destructive no · idempotent yes · open-world no
sku_deletedestructiveDelete a catalogue line no rate card points at and that never priced a resolved line, freeing a free-tier slot. Otherwise it is refused, naming what depends on it: reprice it to withdraw it instead.
Parameters:
sku(required) — string — The SKU code, e.g. WEB-AUDIT, or the product name when only one product carries it
Hints: read-only no · destructive yes · idempotent no · open-world no
rate_setSet the hourly charge-out rate on a labour card: role, currency, hourly_minor in whole MINOR units and the day it starts. The same role, currency and date REPLACES that row rather than adding one. Free.
Parameters:
role(required) — string — The role charged for, e.g. senior developer. Lower case, this is what an hours line is priced fromhourly_minor(required) — integer — The hourly rate in whole minor units. 8500 is EUR 85.00 an hour. Never a decimalsku— string — A catalogue code this role bills under, so a resolved hours line carries the SKU's name and VAT ratenote— stringcurrency— string — ISO code this rate is in. Defaults to the shared business profile's currencyvalid_from— string — The first day this rate applies, YYYY-MM-DD. Default today
Hints: read-only no · destructive no · idempotent no · open-world no
rate_getread-onlyShow the hourly rate for a role as of a date and currency: the row picked is the latest valid_from at or before that date, and the answer names it. With no role given, lists every card. Free.
Parameters:
date— string — The day the rate is wanted for, YYYY-MM-DD. Default todayrole— string — The role, e.g. senior developer. Omit to list every rate cardcurrency— string — Defaults to the shared business profile's currency
Hints: read-only yes · destructive no · idempotent yes · open-world no
lines_resolveread-onlyTurn a list of sku or role lines into invoice_create-ready and quote_create-ready items priced from the catalogue as of each line's date. An unknown code is refused by name and never priced. Free.
Parameters:
lines(required) — array — The lines to price, each a sku with a quantity or a role with hoursdate— string — The day the whole list is priced as of, YYYY-MM-DD. Default todaytier— string — Price tier for every line. Default standardclient— string — Client name or id, copied into both payloads. invoice_create and quote_create both need onecurrency— The currency for every line. Defaults to the shared business profile'stax_rate— number — VAT percent for lines whose SKU carries no rate of its own, overriding the shared profile
Hints: read-only yes · destructive no · idempotent yes · open-world no
price_list_textread-onlyPrint the price list as plain text: every SKU with its unit, the price in force on a date and any later price booked, then the labour rate cards, under your business name. Also a .txt download link valid one hour. Free; price_list_pdf writes the A4 page.
Parameters:
date— string — The day the list is in force, YYYY-MM-DD. Default todaytier— string — One tier, or omit for standard. Pass all for every tier, which is Procurrency— string — Defaults to the shared business profile's currency
Hints: read-only yes · destructive no · idempotent yes · open-world no
price_list_pdfread-onlyCall this tool to render the price list for one currency and tier as an A4 HTML document laid out for print-to-PDF (this hosted endpoint has no PDF renderer) and return a download link valid for one hour: every SKU with its unit, its price in force and the day that price started. Pro.
Parameters:
date— string — The day the list is in force, YYYY-MM-DD. Default todaytier— string — One tier. Default standardcurrency— string — Defaults to the shared business profile's currencyout_path— string — Name for the downloaded file, e.g. trade-prices-april. Defaults to price-list-<currency>-<tier>-<date>; the list comes back as a download link valid for one hour
Hints: read-only yes · destructive no · idempotent yes · open-world no
catalogue_reportread-onlyReport the catalogue as at date: how many SKUs there are, how many price rows are in force, which rows a later row already replaces, and which SKUs carry no price in the profile's default currency. Reads only. Pro.
Parameters:
date— string — The day the report is in force, YYYY-MM-DD. Default todaylimit— integer — Maximum rows listed in each section, default and ceiling 500
Hints: read-only yes · destructive no · idempotent yes · open-world no
license_statusread-onlyReport this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Hints: read-only yes · destructive no · idempotent yes · open-world no
license_activateTurn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Parameters:
key(required) — string — License key from checkout, MCPL1.<payload>.<signature>
Hints: read-only no · destructive no · idempotent no · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.