# AllRatesToday exchange rates (hosted)

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

- name: com.allratestoday/mcp
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 92/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.allratestoday%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/com.allratestoday%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "allratestoday": {
      "type": "http",
      "url": "https://allratestoday.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${ALLRATESTODAY_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${ALLRATESTODAY_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 99
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-96% ~updated-37d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 11 tools declare all four hints; missing: get_exchange_rate (idempotentHint); get_historical_rates (idempotentHint); get_official_rates (idempotentHint); …
- pass `tools.token_cost`: about 2,941 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,941 tokens to load them all
- tool set hash: 216015a03668a3fba58b24b850e42bb4
- tools last changed: 2026-10-16T17:42:34.746Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.allratestoday/mcp.svg)](https://protogrid.dev/servers/com.allratestoday/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `get_rates_authenticated` changed (description)
  - before: 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).
  - after: 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).
- 2026-10-16 `get_historical_rates` changed (description)
  - before: 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 (free tier). For a specific past datetime use get_rates_authenticated with `time`.
  - after: 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`.
- 2026-10-11 `request_trial_key` added
  - 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, 300 calls) or see https://allratestoday.com/pricing.
- 2026-10-11 `get_reference_rate` added
  - 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.
- 2026-09-27 `list_central_banks` changed (description)
  - before: 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 — 117 central banks plus 3 tax authorities (HMRC, US Treasury, Swiss BAZG) — 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.
  - after: 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 — 121 central banks plus 3 tax authorities (HMRC, US Treasury, Swiss BAZG) — 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.
- 2026-09-27 `list_central_banks` changed (description)
  - before: 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 — 116 central banks plus 3 tax authorities (HMRC, US Treasury, Swiss BAZG) — 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.
  - after: 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 — 117 central banks plus 3 tax authorities (HMRC, US Treasury, Swiss BAZG) — 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.

Full history: https://api.protogrid.dev/v1/servers/com.allratestoday%2Fmcp/changes

## Remotes

- https://allratestoday.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.9649123)

## Packages

_none_

## Tools (11)

- `compare_official_rates`: 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/
- `get_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.
- `get_historical_rates`: 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`.
- `get_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.
- `get_official_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`.
- `get_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`.
- `get_rates_authenticated`: 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).
- `get_reference_rate`: 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.
- `list_central_banks`: 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 — 121 central banks plus 3 tax authorities (HMRC, US Treasury, Swiss BAZG) — 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.
- `list_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.
- `request_trial_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, 300 calls) or see https://allratestoday.com/pricing.
