AllRatesToday exchange rates (hosted)

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
85%
Naming quality
96%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin compare_official_rates
  • MEDIUMTool description contains URL to non-standard domainin request_trial_key

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,270Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (2.55% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://allratestoday.com/api/mcp"
    }
  }
}

Remote endpoints

https://allratestoday.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_exchange_rate(source, target)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    }
  },
  "required": [
    "source",
    "target"
  ]
}
🟢get_historical_rates(source, target, period)

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`.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "period": {
      "type": "string",
      "enum": [
        "1d",
        "7d",
        "30d",
        "1y"
      ],
      "description": "Lookback window ending now. Defaults to '7d'."
    }
  },
  "required": [
    "source",
    "target"
  ]
}
🟢get_rates_authenticated(source, target, time, group)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}(,[A-Za-z]{3})*$",
      "description": "One or more ISO 4217 codes, comma-separated, no spaces: 'EUR' or 'EUR,GBP,JPY'."
    },
    "time": {
      "type": "string",
      "description": "ISO 8601 UTC timestamp, e.g. '2025-03-14T12:00:00Z'. Omit for latest."
    },
    "group": {
      "type": "string",
      "enum": [
        "hour",
        "day",
        "week",
        "month"
      ],
      "description": "Aggregation bucket. Omit for raw output."
    }
  },
  "required": [
    "source",
    "target"
  ]
}
🟢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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢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 — 123 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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_official_rates(bank, date, source, target)

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`.

Input Schema

{
  "type": "object",
  "properties": {
    "bank": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{2,20}$",
      "description": "Bank/authority code as returned by list_central_banks (lowercase, e.g. 'ecb', 'fed', 'boj', 'hmrc', 'cbsl'). Codes are short abbreviations of the institution, not country codes."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Optional YYYY-MM-DD. Omit for the latest table."
    },
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Optional. With target, narrows to one pair."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "Optional. With source, narrows to one pair."
    }
  },
  "required": [
    "bank"
  ]
}
🟢get_official_rate_history(bank, symbol, source, target, from, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "bank": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{2,20}$",
      "description": "Bank/authority code as returned by list_central_banks (lowercase, e.g. 'ecb', 'fed', 'boj', 'hmrc', 'cbsl'). Codes are short abbreviations of the institution, not country codes."
    },
    "symbol": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "One currency vs the bank's home currency, e.g. 'USD'. Alternative to source+target."
    },
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date. Defaults to one year ago."
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End date. Defaults to today."
    }
  },
  "required": [
    "bank"
  ]
}
🟢compare_official_rates(source, target)

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/

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    }
  },
  "required": [
    "source",
    "target"
  ]
}
🟢get_publication_calendar(bank, year, from, to)

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`.

Input Schema

{
  "type": "object",
  "properties": {
    "bank": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{2,20}$",
      "description": "Bank/authority code as returned by list_central_banks (lowercase, e.g. 'ecb', 'fed', 'boj', 'hmrc', 'cbsl'). Codes are short abbreviations of the institution, not country codes."
    },
    "year": {
      "type": "string",
      "pattern": "^\\d{4}$",
      "description": "Whole calendar year, e.g. '2026'."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Calendar date, YYYY-MM-DD."
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Calendar date, YYYY-MM-DD."
    }
  },
  "required": [
    "bank"
  ]
}
🟢get_reference_rate(source, target, date)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "target": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "description": "ISO 4217 currency code, 3 letters, case-insensitive (e.g. 'USD', 'EUR', 'GBP'). Fiat only — no crypto, no commodities."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Optional past business day, YYYY-MM-DD (API key, paid plan). Omit for the latest table."
    }
  }
}
🟡request_trial_key(agent, purpose)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "agent": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional: the agent or product requesting the key."
    },
    "purpose": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional: one line on what the rates are for."
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools