{"serverId":"mcp-registry/dev.exchangerate/mcp","tools":[{"name":"convert","fixed":{"name":"convert","description":"Convert an amount from one currency to another at the current rate. Indicative developer-grade reference rates (live market data + public reference rates), not for settlement or trading.","inputSchema":{"type":"object","required":["from","to","amount"],"properties":{"to":{"type":"string"},"from":{"type":"string"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}]}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":134,"tokensAfter":134},{"name":"get_official_rate","fixed":{"name":"get_official_rate","description":"Get the exchange rate a government authority published for a date (tax, customs, central bank), with the period it is valid for. These are the published values, not market rates. Every plan gets the rate valid today; a past date needs a paid plan. Pairs the authority does not publish are refused.","inputSchema":{"type":"object","required":["country","rate_type","base","quote"],"properties":{"base":{"type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"quote":{"type":"string"},"country":{"type":"string"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"rate_type":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"get_range","fixed":{"name":"get_range","description":"Get a daily time-series of exchange rates over a date range (business days). Capped at 366 rows per call; when has_more is true, pass next_cursor as the cursor parameter to fetch the next page. Indicative developer-grade reference rates (live market data + public reference rates), not for settlement or trading.","inputSchema":{"type":"object","required":["base","symbols","start_date","end_date"],"properties":{"base":{"type":"string"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"symbols":{"type":"string"},"end_date":{"type":"string"},"start_date":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":184,"tokensAfter":184},{"name":"get_rate","fixed":{"name":"get_rate","description":"Get the current (or, with date, historical) exchange rate from one currency to another. Indicative developer-grade reference rates (live market data + public reference rates), not for settlement or trading. Rates update ~60s for real-time currencies through the trading week when the live feed is active; the source field on every response is the authoritative freshness indicator (live | ecb_daily | market_daily); rates fall back to official daily reference data during market closures or data-sour","inputSchema":{"type":"object","required":["base","quote"],"properties":{"base":{"type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"quote":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":211,"tokensAfter":211},{"name":"get_usd_index","fixed":{"name":"get_usd_index","description":"Get the latest independently calculated USD index. dxy-reconstructed uses the published six-currency basket formula but is not the official index. usd-strength is the versioned exchangerate.dev equal-weight 13-currency index, with 2026-01-02 = 100. Both require a complete, time-aligned basket.","inputSchema":{"type":"object","required":["index"],"properties":{"index":{"enum":["dxy-reconstructed","usd-strength"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"list_currencies","fixed":{"name":"list_currencies","description":"List all supported currencies with name, decimal precision, minor units, and whether the pair is derived (triangulated). Use this before other tools to discover valid currency codes.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":84,"tokensAfter":84},{"name":"list_official_rate_tables","fixed":{"name":"list_official_rate_tables","description":"List the countries and rate types with government-published exchange rates (for example IDN tax, GBR customs, USA government-reporting). Country codes are ISO 3166-1 alpha-3; use them with get_official_rate.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"search_docs","fixed":{"name":"search_docs","description":"Search the exchangerate.dev FAQ corpus via BM25. Returns the top-K matching questions and answers with relevance scores. Use before answering how-to / pricing / data-sourcing questions so you cite the canonical text instead of guessing from training data.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","default":5},"query":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"start_checkout","fixed":{"name":"start_checkout","description":"Open a billing URL for an explicitly selected eligible plan. After human confirmation, a Free account without a subscription receives a one-hour Stripe Checkout URL; an existing subscriber receives Stripe billing management instead. Plans not offered to the account are refused. Cancellation creates nothing and account identifiers are never accepted from the model.","inputSchema":{"type":"object","required":["plan"],"properties":{"plan":{"enum":["basic","plus","pro"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156}],"toolsChanged":9,"tokensSaved":0,"todo":[{"tool":"convert","params":["to","from","amount"]},{"tool":"get_official_rate","params":["base","date","quote","country","direction","rate_type"]},{"tool":"get_range","params":["base","cursor","symbols","end_date","start_date"]},{"tool":"get_rate","params":["base","date","quote"]},{"tool":"get_usd_index","params":["index"]},{"tool":"search_docs","params":["limit","query"]},{"tool":"start_checkout","params":["plan"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}