AllRatesToday exchange rates (hosted)

com.allratestodayPublished by allratestoday.comOfficial publisherv1.0.0Updated Oct 24, 2026

Live FX + official central-bank rates, 110+ sources. Hosted, keyless, nothing to install.

VerifiedStreamable HTTPWeb executableFinanceData & Analytics

Overview

AI-generated overview

Hosted MCP server giving an assistant live mid-market FX rates, historical series and official central-bank rates from 110+ sources.

What you can do
  • Convert between currencies and get current or historical rates for one pair or several targets at once
  • List supported ISO 4217 currencies and the covered central banks and tax authorities
  • Fetch official published rate tables and date-by-date official rate series from a named institution
  • Compare one currency pair across all covered institutions and check which dates a bank published
  • Get the once-a-day reference rate and self-issue a short-lived trial API key
When to use it
Useful when an assistant needs to answer currency conversion questions, quote citable official rates for invoicing, tax or audit, or build reproducible daily rate series for reports and research.
Requirements
Remote Streamable HTTP endpoint; nothing to install. Works without a key in a limited keyless mode. An optional API key is sent as an Authorization Bearer header (or an api_key query parameter). Historical series, point-in-time lookups and dated official tables need a paid plan.
Before you install
The Authorization key is a credential: prefer the header over putting it in the URL, where configs, logs and screenshots can expose it, and rotate it if leaked. Keyless use requires a visible attribution link to the provider. Free-tier quotas do not reset, and history and dated lookups require a paid subscription. Mid-market rates are not official rates for tax or audit purposes.

Installation

In SourceWeft

  1. Open AllRatesToday exchange rates (hosted) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.allratestoday%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "allratestoday-exchange-rates-hosted": {
      "type": "http",
      "url": "https://allratestoday.com/api/mcp"
    }
  }
}

README

AllRatesToday MCP Server — @allratestoday/mcp-server

Website: https://allratestoday.com · Hosted endpoint (no install): https://allratestoday.com/api/mcp · Docs: https://allratestoday.com/mcp/

[npm version] [npm downloads] [license] [MCP] [TypeScript]

English | 简体中文

Give your AI assistant a live window into the foreign-exchange market. A Model Context Protocol server that lets Claude Code, Cursor, Claude Desktop, Windsurf, and any MCP-compatible client fetch real-time currency rates, historical series, and multi-currency lookups from the AllRatesToday API.

After installation, your assistant can answer questions like:

  • "What's the current USD to EUR rate?"
  • "Show me how GBP/JPY moved over the last 30 days."
  • "Convert 250 USD into CAD at a real rate."
  • "Compare USD against EUR, GBP, and JPY simultaneously."

🚀 Why this server?

  • 📡 Live mid-market rates — 160+ ISO 4217 currencies, refreshed every ~60 seconds
  • 📈 Historical series built in — 1d / 7d / 30d / 1y windows with sensible granularity per period
  • 🧰 Eight focused tools — get_exchange_rate, get_historical_rates, get_rates_authenticated, list_currencies, list_central_banks, get_official_rates, get_reference_rate, request_trial_key; small surface, easy for the model to use correctly
  • 🔌 Works everywhere MCP does — stdio transport, MCP 1.x; Claude Code, Cursor, Claude Desktop, Windsurf, or any generic host
  • 🔓 Works with no API key — installs and answers out of the box from open official central-bank tables (ECB first, else the bank that issues one of the two currencies); a free key unlocks real-time rates for 160+ currencies
  • 🛡️ Honest about what it returned — every keyless answer says which rate it is and when it was published; API errors map to clear, actionable messages
  • 🔒 Nothing leaks — only the request parameters and your API key ever reach allratestoday.com; never conversation context

⚖️ Mid-market vs official central-bank rates

With a key, get_exchange_rate, get_historical_rates and get_rates_authenticated return a mid-market rate, refreshed every ~60 seconds — the right number for price display, conversion, and anything that should track the market. It is not the official rate a tax authority or auditor may require. For those, call get_official_rates: the latest table published by any of 122 central banks and 4 tax authorities (ECB, Fed, HMRC, US Treasury, Swiss BAZG, …), fixed once published and carrying the institution's own rate_date, no key needed. list_central_banks gives the codes. Dated official tables (a past date) need an API key on a paid plan — a free key gets 403 Historical central bank rates require a paid plan. Mid-market history (get_historical_rates, and time on get_rates_authenticated) is paid-plan too — free and trial keys get 403. See the central bank REST API and per-bank npm SDKs. The two can diverge by several percent, so pick by use case, not convenience.

🔑 Get your API key (free)

A key unlocks real-time mid-market rates across 160+ currencies and multi-target lookups. The free tier is enough for development and trying it out — no credit card required. Historical series, point-in-time lookups and dated official and reference-rate tables need a paid plan from €4.99/month.

  1. Register at allratestoday.com/register — 30 seconds
  2. Verify your email
  3. Copy your key from the dashboard (format: art_live_xxxxx)
  4. Use it as ALLRATES_API_KEY in the configs below

Without one the server prints a short summary of keyless mode (below) on stderr and keeps running — it never exits, because an MCP server that exits breaks the host client's whole configuration.

🔓 Keyless mode — what works with no setup

Install it with no configuration at all and it starts, connects, and answers:

ToolKeylessWhat you get
get_exchange_rate✅An official central-bank rate: the ECB reference table first, else the central bank that issues the target or source currency (USD/GBP → Bank of England, USD/INR → Reserve Bank of India). The response carries bank, rate_date, derived and a note saying so, so the assistant never passes it off as a live quote. Only pairs one bank publishes, or their inverses (flagged derived: true), work keyless; other crosses are refused with a pointer to the key.
list_currencies✅All 160+ supported ISO 4217 codes.
list_central_banks✅Codes, names and latest publication date of all 122 central banks and 4 tax authorities.
get_official_rates✅Latest official table (or one pair) published by any of them. A dated table needs a paid-plan key.
get_reference_rate✅The Daily Reference Rate: one never-revised table per business day, fixed at 16:00 London. A past date needs a paid-plan key.
request_trial_key✅Self-issues a 100-call, 7-day key with no account and adopts it for the session.
get_historical_rates🔑Returns one sentence explaining how to get a key. Needs a paid plan.
get_rates_authenticated🔑Same.

The keyless path reads the open, edge-cached /api/open/central-bank/{bank} endpoints — no upstream cost, no rate limit to trip over, nothing to sign up for.

Attribution. Keyless use requires a visible, followable link to AllRatesToday wherever the rates are shown (a footer, an about page, a README). With an API key it is appreciated but not required.

html
<a href="https://allratestoday.com">Exchange rates by AllRatesToday</a>

Markdown: Exchange rates by [AllRatesToday](https://allratestoday.com). Full wording: https://allratestoday.com/terms/#attribution.

🧩 Easiest install: the Claude Code plugin

If you use Claude Code, install the plugin instead of configuring this server by hand — it bundles both AllRatesToday MCP servers, two skills, and five slash commands (/rate, /convert, /official-rate, /fx-history, /add-currency-support):

/plugin marketplace add AllRates-Today/claude-code-plugin/plugin install allratestoday@allratestoday

Everything below still applies for other MCP clients.

☁️ Hosted endpoint — nothing to install

The same tools also run as a hosted Streamable HTTP MCP server, which lists 11 tools: the 8 of this stdio package plus get_official_rate_history, compare_official_rates and get_publication_calendar from the sibling central-bank server. Paste the URL into any client that supports remote MCP — Claude.ai and Claude Desktop connectors, ChatGPT, Cursor, VS Code, Codex, Gemini CLI:

https://allratestoday.com/api/mcp
bash
claude mcp add --transport http allratestoday https://allratestoday.com/api/mcp

Works keyless. With a key, send Authorization: Bearer art_live_… or, where the client only takes a URL, connect to https://allratestoday.com/api/mcp?api_key=art_live_…. That puts the key in the URL, where client configs, logs and screenshots can expose it: prefer the header when your client supports it, never share or commit that URL, and rotate the key at https://allratestoday.com/profile if it leaks. Registry name: com.allratestoday/mcp. One-click Cursor / VS Code buttons: https://allratestoday.com/mcp/#hosted

📦 Installation

The simplest install is zero-install via npx, which is what every config below uses:

bash
# Run without installing (recommended)npx -y @allratestoday/mcp-server
bash
# Or install globallynpm install -g @allratestoday/mcp-serverallratestoday-mcp

Both commands launch the stdio MCP server and wait for a client to connect — they're not meant to be run interactively from your shell; your MCP client launches them as a subprocess.

🏁 Quick setup per client

Each client reads MCP servers from a different config file. Pick yours below.

Claude Code

The fastest path uses the built-in CLI:

bash
claude mcp add allratestoday -- npx -y @allratestoday/mcp-serverclaude mcp env allratestoday ALLRATES_API_KEY=art_live_xxxxx

Restart Claude Code. Verify by asking it: "What's the current USD to EUR rate?"

Cursor

Edit ~/.cursor/mcp.json (or .cursor/mcp.json inside your project for project-scoped servers):

json
{  "mcpServers": {    "allratestoday": {      "command": "npx",      "args": ["-y", "@allratestoday/mcp-server"],      "env": {        "ALLRATES_API_KEY": "art_live_xxxxx"      }    }  }}

Restart Cursor. The eight tools should appear in the MCP tool picker.

Claude Desktop

Edit the config file (path depends on OS):

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
json
{  "mcpServers": {    "allratestoday": {      "command": "npx",      "args": ["-y", "@allratestoday/mcp-server"],      "env": {        "ALLRATES_API_KEY": "art_live_xxxxx"      }    }  }}

Fully quit and reopen Claude Desktop (Cmd+Q on macOS, right-click tray icon → Exit on Windows). Closing the window alone keeps the old config loaded.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json with the same mcpServers block as above, then restart Windsurf.

Generic stdio MCP client

Any MCP host that supports stdio transport works. The launch command is:

npx -y @allratestoday/mcp-server

…with the environment variable ALLRATES_API_KEY set. The protocol version is MCP 1.x.

✅ Verify it works

After configuring your client, test in this order:

  1. Server starts — open the client. The server starts with or without a key (no key ⇒ keyless mode), so a red dot or "failed to connect" means the client could not launch it — usually npx or Node ≥18 (see Troubleshooting below). A wrong key does not stop it starting; calls then return Invalid AllRatesToday API key.
  2. Tools are listed — most clients have a "tools" or "MCP" panel showing the eight tools.
  3. A live call returns a number — ask: "What's the current USD to EUR rate?" The assistant should call get_exchange_rate(source: "USD", target: "EUR") and reply with a real rate. If it fabricates a number without a tool call, the server isn't connected.

More prompts that exercise the other tools:

  • "What was the ECB's official USD rate on the latest published table?" → get_official_rates
  • "Give me today's 16:00 London reference rate for EUR, GBP and JPY." → get_reference_rate
  • "Which central banks can you get official rates from?" → list_central_banks
  • "Convert 250 USD to CAD." → get_exchange_rate

🧪 Test with MCP Inspector

To check the server on its own, without any AI client in the way, run it under the official MCP Inspector:

bash
npx @modelcontextprotocol/inspector npx -y @allratestoday/mcp-server
  1. Open the URL it prints and click Connect. The Tools tab should list the eight tools.
  2. Call get_exchange_rate with source: USD, target: EUR — it answers keyless with an official rate.
  3. Set ALLRATES_API_KEY in the Inspector's environment panel, reconnect, and call it again — now it returns the live mid-market rate.

If this works but your client doesn't, the problem is the client's config (path to npx, Node version, JSON syntax), not the server.

📚 Tools reference

get_historical_rates and get_rates_authenticated require ALLRATES_API_KEY; the other six of the eight work keyless. History (get_historical_rates, and time on get_rates_authenticated) needs a paid plan.


get_exchange_rate

Current mid-market rate between two currencies.

Input

FieldTypeRequiredDescription
sourcestringyes3-letter ISO 4217 code, e.g. USD
targetstringyes3-letter ISO 4217 code, e.g. EUR

Example call

json
{ "source": "USD", "target": "EUR" }

Response (with a key):

json
{ "rate": 0.888889, "source": "mid-market" }

Response (keyless — USD → GBP, not in the ECB table, so the Bank of England table answers):

json
{  "rate": 0.7598784195,  "source": "Bank of England official rate (keyless mode)",  "bank": "boe",  "rate_date": "2026-10-14",  "derived": true,  "note": "Keyless mode: this is the Bank of England official rate published on 2026-10-14, not a live mid-market quote. For real-time rates across 160+ currencies set ALLRATES_API_KEY — free tier at https://allratestoday.com/register."}

derived: true means the bank publishes the inverse (GBP→USD) and the rate was inverted. A pair no single bank publishes is refused keyless with No keyless official source covers … and a pointer to the key.

get_historical_rates

Time-series data points for a currency pair over a fixed period. Needs an API key on a paid plan (free and trial keys get a 403).

Input

FieldTypeRequiredDescription
sourcestringyesSource currency code
targetstringyesTarget currency code
periodstringno (default 7d)One of 1d, 7d, 30d, 1y

Granularity by period

periodData points
1dHourly (24 points)
7dDaily (7 points)
30dDaily (30 points)
1yWeekly (52 points)

Example call

json
{ "source": "USD", "target": "INR", "period": "30d" }

Response (truncated):

json
{  "source": "USD",  "target": "INR",  "period": "30d",  "data": [    { "date": "2026-09-17", "rate": 96.1006, "timestamp": 1789603200000 },    { "date": "2026-09-18", "rate": 95.8142, "timestamp": 1789689600000 },    "...",    { "date": "2026-10-16", "rate": 94.9643, "timestamp": 1792108800000 }  ]}

get_rates_authenticated

Multiple targets in one call, with optional historical timestamp or grouping window.

Input

FieldTypeRequiredDescription
sourcestringyesSource currency code
targetstringyesOne or more codes, comma-separated (EUR,GBP,JPY)
timestring (ISO 8601)noHistorical point in time (paid plans)
groupstringnoOne of hour, day, week, month

Example call

json
{ "source": "USD", "target": "EUR,GBP,JPY" }

Response:

json
{  "rates": [    { "rate": 0.888889, "source": "USD", "target": "EUR", "time": "2026-10-16T12:16:01+0000" },    { "rate": 0.749766, "source": "USD", "target": "GBP", "time": "2026-10-16T12:16:01+0000" },    { "rate": 157.985, "source": "USD", "target": "JPY", "time": "2026-10-16T12:16:01+0000" }  ]}

list_currencies

All supported currencies with codes, names, and symbols. Cached upstream for 24 hours — cheap to call for validating user input before the other tools.

Input — none.

Response (truncated):

json
{  "currencies": [    { "code": "USD", "name": "US Dollar", "symbol": "$" },    { "code": "EUR", "name": "Euro", "symbol": "€" },    { "code": "GBP", "name": "British Pound", "symbol": "£" },    "..."  ],  "count": 163}

list_central_banks

Every official source the server can quote — 122 central banks plus HMRC, the US Treasury, Swiss BAZG and India's CBIC — with the code that get_official_rates takes as bank, the institution's name, its latest publication date, age_days, its publication cadence and a stale flag when it is behind its own schedule. Keyless.

Input — none.

Response (truncated):

json
{  "sources": [    { "code": "ecb", "name": "European Central Bank", "latest": "2026-10-15", "age_days": 1, "stale": false, "cadence": "daily" },    { "code": "fed", "name": "US Federal Reserve (H.10)", "latest": "2026-10-09", "age_days": 7, "stale": false, "cadence": "weekly" },    "..."  ],  "stale_count": 3,  "checked_at": "2026-10-16T12:16:46.232Z"}

get_official_rates

The fixed, citable rate an institution published — for invoices, VAT and tax returns, customs, transfer pricing and audit. Not a live market rate.

Input:

FieldTypeRequiredDescription
bankstringyesSource code from list_central_banks, e.g. ecb, fed, boe, rbi, hmrc
datestringnoYYYY-MM-DD. Omit for the latest table (keyless). Needs an API key on a paid plan — a free key gets 403 Historical central bank rates require a paid plan. Weekends/holidays roll back to the last published date.
sourcestringnoWith target, narrows to one pair
targetstringnoWith source, narrows to one pair

Response (one pair):

json
{  "bank": "ecb",  "rate_date": "2026-10-15",  "source": "EUR",  "target": "USD",  "rate": 1.1208,  "rate_type": "reference",  "derived": false,  "method": "published",  "age_days": 1,  "stale": false,  "cadence": "daily",  "attribution": { "source": "Official rates published by ECB, served by AllRatesToday", "url": "https://allratestoday.com/central-bank-rates-api/ecb/", "terms": "Free to use with visible attribution linking to allratestoday.com" }}

Omit source/target for the whole table as rates: [{ base, quote, type, value }]. Keyless, only pairs the bank publishes and their inverses (flagged derived: true) are served; other crosses are refused. With a key, pairs the bank does not publish directly are cross-computed inside its own table and flagged derived: true. Always cite rate_date.


get_reference_rate

AllRatesToday's Daily Reference Rate: the per-currency median of samples taken in a five-minute window centred on 16:00 London, published once per business day and never revised. Use it when a report, index or research series needs one reproducible rate per day. It is not the WM/Refinitiv fix and not a registered benchmark; every response carries a disclaimer and the rate_date.

Input

FieldTypeRequiredDescription
sourcestringnoWith target, narrows to one pair (crossed via USD, flagged derived)
targetstringnoSee above
datestringnoPast business day YYYY-MM-DD (API key on a paid plan). Omit for the latest table

Output — { rate_date, base, time, rates } for the table, or { rate_date, source, target, rate, derived } for a pair, plus method and disclaimer. Keyless for the latest table. Docs: https://allratestoday.com/reference-rate/


request_trial_key

Self-issues an API key with 100 lifetime calls, valid 7 days, with no account and no email, and switches this server to it for the rest of the session. The reply tells the user to copy the key into the MCP config as ALLRATES_API_KEY to keep it across restarts. Capped at 3 keys per IP per day.

Input — agent (string, optional), purpose (string, optional).

Output — { key, calls, expires_at, adopted, note }.


⚙️ Environment variables

VariableDefaultRequiredPurpose
ALLRATES_API_KEY—noYour API key, sent as Authorization: Bearer. Unset ⇒ keyless mode (see above); set ⇒ real-time rates and multi-target lookups (the historical tools need a paid-plan key).
ALLRATES_BASE_URLhttps://allratestoday.com/apinoOverride for self-hosted or staging deployments.

Set these in your MCP client's config (in the env block) — not in your shell — because MCP servers are launched as subprocesses with isolated environments.

💳 Plans

A free tier and paid plans are available — see allratestoday.com/pricing for current quotas. The free tier covers real-time rates and multi-target lookups. All history and dated rates — mid-market history, point-in-time lookups, dated official and reference-rate tables — need a paid plan (free and trial keys get 403 historical_requires_paid_plan). The Official Rates plan covers official central-bank and tax-authority rates only (no market rates).

🛠️ Troubleshooting

SymptomLikely causeFix
Client shows "MCP server failed to start" or red dotNot a missing key — 0.5.0+ starts fine without one. Usually npx cannot reach the registry, or Node is older than 18Run npx -y @allratestoday/mcp-server in a shell and read stderr
Rates look like yesterday's, response mentions "keyless mode"No key set, so answers come from an official central-bank table (see bank and rate_date)Set ALLRATES_API_KEY for real-time mid-market rates
No keyless official source covers X/YKeyless mode, and no single central bank publishes that pair or its inverseSet ALLRATES_API_KEY (free)
HTTP 403 — Historical rates require a paid planget_historical_rates, or time on get_rates_authenticated, on a free or trial keyUpgrade at /pricing — history is paid-only
HTTP 403 — Historical central bank rates require a paid plandate given to get_official_rates / get_reference_rate on a free keyOmit date for the latest table, or upgrade at /pricing
Every call returns "Invalid AllRatesToday API key"Key is malformed (missing prefix, truncated, or revoked)Copy a fresh key from the dashboard
Tools return "AllRatesToday API quota exceeded"Quota used up — the free tier does not reset; paid plans are monthlyUpgrade at /pricing
Historical tool returns "Bad request"Invalid period or unknown currency codePeriod must be 1d/7d/30d/1y; codes must be 3 letters
Server starts but tools never appearClient didn't reload after config changeFully quit (not just close) and reopen the client
npx runs but hangs foreverThe server is waiting for an MCP client to connect — normal when run from a shellLet your MCP client launch it

To inspect what the server is doing, run it manually with the key set:

bash
ALLRATES_API_KEY=art_live_xxxxx npx -y @allratestoday/mcp-server

No output means healthy (stdio is reserved for the MCP protocol); errors print to stderr.

🛡️ Error reference

The server maps API errors to clear, actionable messages the assistant can relay to the user:

HTTP statusMeaningTool error message
200Success(rate returned)
400Bad request — usually unknown currency codeBad request — possibly an unknown currency code
401Invalid API key (a missing key does not cause this — the server runs keyless)Invalid AllRatesToday API key
403Plan does not include it (e.g. a dated official table on a free key)HTTP 403 — <upstream message>
404 (keyless)No keyless official source covers the pairNo keyless official source covers X/Y. …
429Quota exceededAllRatesToday API quota exceeded
5xxServer-side issue at allratestoday.comHTTP 5xx — <upstream message>

❓ FAQ

Is the free plan really enough for normal use? For trying it out and light dev use. It does not reset monthly; regular use or production needs a paid tier. Keyless mode costs nothing and has no quota.

Do you store my conversation or query data? No. Only your API key and the request parameters (source, target, period, time) are sent to allratestoday.com — never the LLM's conversation context.

What happens to my API key? It's only sent as a Bearer token in the Authorization header on requests to the AllRatesToday API. It's never logged or transmitted elsewhere.

Why is my first call slow? Cold-start of npx (first run downloads the package) plus the initial cache miss. Subsequent calls are typically <200ms.

Can I run this without npm/Node? Not currently — Node ≥18 is required. If a standalone binary matters to you, open an issue.

Is there a self-hosted option? Set ALLRATES_BASE_URL to your own AllRatesToday instance. Contact [email protected] for self-hosted licensing.

Does this work with ChatGPT? Yes, through the hosted endpoint: add https://allratestoday.com/api/mcp as a connector (custom MCP / remote server) in ChatGPT. This npm package is the local stdio server, for clients that launch a command — Claude Code, Cursor, Claude Desktop, Windsurf.

👩‍💻 Development

bash
git clone https://github.com/AllRates-Today/mcp-server.gitcd mcp-servernpm installnpm run buildALLRATES_API_KEY=art_live_xxxxx node dist/index.js

The server runs on stdio and waits for an MCP client to connect; Ctrl+C to exit. npm run dev watches and rebuilds. To test against a local AllRatesToday instance:

bash
ALLRATES_BASE_URL=http://localhost:8080/api ALLRATES_API_KEY=test_key node dist/index.js

Project structure

src/├── index.ts      # MCP server, tool registration, request handlers├── client.ts     # HTTP client for AllRatesToday API + error mapping└── home-banks.ts # currency → issuing central bank, for the keyless get_exchange_rate fallbackdist/             # Compiled JS (gitignored)server.json       # MCP registry manifest

Contributing — issues and PRs welcome at github.com/AllRates-Today/mcp-server. Before opening a PR: npm run build must succeed, test against a real API key, and update the tool descriptions in src/index.ts plus this README's tools reference if you change tool behavior.

📝 Changelog

Recent changes. Full history: GitHub Releases.

  • 0.7.9 — README: changelog trimmed to the 0.7.x line
  • 0.7.8 — README: MCP Inspector test guide, example prompts for every tool, hosted ?api_key= security note, ChatGPT FAQ and 401 row corrected, history consistently paid-plan
  • 0.7.6 — Keyless get_rates_authenticated with time now says a paid plan is needed; README: free tier no longer listed as covering history, source example is mid-market
  • 0.7.4 — Keyless get_exchange_rate falls back from the ECB table to the central bank that issues the target or source currency (USD/GBP, GBP/JPY, USD/INR now answer keyless), same as the hosted endpoint; response adds bank. Dated-table errors say a paid plan is needed. README: real response shapes, tool counts, lifetime free tier
  • 0.7.0 — get_reference_rate (Daily Reference Rate, 16:00 London, keyless latest table) and request_trial_key (self-issued 100-call trial key adopted for the session)

🔗 Links

📜 License

MIT — see LICENSE.

Source: README.md at commit 933351b

Tools

11

get_exchange_rate

Get live exchange rate

Use this when the user asks 'what is X in Y?', 'convert X to Y', 'current rate of EUR/USD', or any single fiat-to-fiat exchange rate question. Returns { rate, source } meaning 1 source = rate target. Without an API key it answers from the official ECB daily reference table (~30 majors) and says so in `note` — relay the `rate_date`. With a key it is the real-time mid-market rate for 160+ currencies. For several targets at once use get_rates_authenticated; for a time series use get_historical_rates; for a specific institution's official rate use get_official_rates.

Parameterssourcerequiredtargetrequired

get_historical_rates

Get historical rate time-series

Fixed-window time series ending now: 'how has EUR/USD moved this week', 'last month of GBP/JPY', '1-year AUD/USD'. Returns { source, target, period, data: [{ date, rate, timestamp }] }. Sampling: 1d=hourly, 7d/30d=daily, 1y=weekly. Requires an API key on a paid plan; free and trial keys get a 403. For a specific past datetime use get_rates_authenticated with `time`.

Parametersperiodsourcerequiredtargetrequired

get_rates_authenticated

Get multi-target or point-in-time rates

One source against several targets in a single call ('USD vs EUR, GBP, JPY'), or the rate at a specific past datetime, optionally bucketed by hour/day/week/month. Returns { rates: [{ rate, source, target, time }] }. Requires an API key (free tier for latest rates; a past datetime needs a paid plan).

Parameterstimegroupsourcerequiredtargetrequired

list_currencies

List supported currencies

Call this when unsure whether a currency code is supported, or for 'what currencies do you support?' / 'what is the symbol for X?'. Returns { currencies: [{ code, name, symbol }], count } for 150+ ISO 4217 fiat currencies. No API key needed; cheap to call.

Takes no parameters.

list_central_banks

List covered central banks & tax authorities

Call this FIRST when you need a bank code, or for 'which central banks do you cover?' / 'do you have rates from X?'. Returns every covered source — 122 central banks plus 4 tax authorities (HMRC, US Treasury, Swiss BAZG, India's CBIC) — with `code` (what every other official-rates tool takes as `bank`), name, latest publication date and whether it is behind schedule. No API key needed.

Takes no parameters.

get_official_rates

Get a bank's official published rates

OFFICIAL rates a named institution published — 'what is the ECB rate for USD?', 'Bank of Japan rate on 2026-03-14', 'HMRC rate for invoicing'. These are the fixed, citable rates for compliance, tax, customs and accounting — NOT live market rates. Omit `date` for the newest published table (no API key needed); give `date` (API key, paid plan) for the table in force that day — weekends/holidays roll back to the last published date and the response's `rate_date` says which. Omit source/target for the full table; give both for one pair — cross-computed inside the bank's own table when not directly published, flagged `derived`. Always cite the returned `rate_date`.

Parametersbankrequireddatesourcetarget

get_official_rate_history

Get a bank's official rate history

Date-by-date series of one bank's OFFICIAL rates — 'ECB USD rate for every day of 2025', 'how did the CBSL rate move last quarter'. Returns { series: [{ date, rate, rate_type, derived, method }] }. Give either `symbol` (vs the bank's home currency) or a source+target pair; from/to default to the last year. API key with a paid plan, BILLED BY VOLUME: one call per month of history covered — keep ranges narrow. For publication dates without values use get_publication_calendar.

Parameterstobankrequiredfromsourcesymboltarget

compare_official_rates

Compare one pair across every bank

One currency pair across ALL institutions at once — 'what does each central bank say USD/EUR is?', 'spread between official USD/LKR rates'. Returns every covered bank's latest official rate for the pair plus { min, max, median, spread_bps } over fresh sources. Banks are never mixed: derived rates are cross-computed within each bank's own table. API key required (free tier). Methodology: https://allratestoday.com/official-rates-methodology/

Parameterssourcerequiredtargetrequired

get_publication_calendar

Get a bank's publication calendar

Which dates a bank actually published a rate table — 'did the ECB publish on 2026-01-01?', 'how often does the US Treasury publish?'. Dates only, no values, so it is on every plan (API key required, free tier). Give `year` or a from/to range; large ranges are capped and flagged `truncated`.

Parameterstobankrequiredfromyear

get_reference_rate

Get the Daily Reference Rate (16:00 London)

AllRatesToday's once-a-day, never-revised mid-market rate: the per-currency median of five samples in a five-minute window centred on 16:00 London, published each business day. Use it when the user needs ONE reproducible rate per day — index levels, return series, research datasets, month-end reports — rather than a live quote (get_exchange_rate) or an institution's official rate (get_official_rates). Keyless: returns the latest table, or one pair with source/target (cross via USD, flagged derived). With a key, `date` returns the table for a past business day. Not the WM/Refinitiv fix and not a registered benchmark — relay the disclaimer and the rate_date.

Parametersdatesourcetarget

request_trial_key

Request a trial API key

Self-issue an AllRatesToday API key with 100 lifetime calls, valid 7 days, with no account and no email. Use it when another tool answered "needs an API key" and the user wants real-time rates, history, dated central-bank tables or cross-bank comparison right now. The key is returned once — store it, then reconnect to https://allratestoday.com/api/mcp?api_key=<key> (or send `Authorization: Bearer <key>`); this stateless server cannot adopt the key mid-session. Capped at 3 keys per IP per day. For a lasting key, register at https://allratestoday.com/register (free) or see https://allratestoday.com/pricing.

Parametersagentpurpose

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Allratestoday integrations