ECB Euro Foreign Exchange Reference Rates, Daily, Monthly and Annual
ecb/euro-exchange-rates
The European Central Bank's euro foreign exchange reference rate for one currency: how many units of that currency one euro buys, for the latest trading day, or on or before a date you give, or as the monthly or annual average. Pick the currency (36 codes, including USD, GBP, JPY, CHF, CNY and the ones the ECB has stopped quoting), the frequency (D daily, M monthly average, A annual average) and how many observations to return, newest last. Returns the ECB's SDMX-JSON response unchanged, with the date of each rate in the response's time axis. Days with no rate (weekends, TARGET holidays) are absent, and before May 2012 a holiday is a row with a null value. Source: European Central Bank (ECB), Euro foreign exchange reference rates (EXR), reused under the ECB's disclaimer and copyright notice; Eden Engine is not an official ECB product and the ECB is not responsible for it. This data may be obtained free of charge through the ECB Data Portal (https://data.ecb.europa.eu).
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
Source: European Central Bank (ECB), Euro foreign exchange reference rates (EXR). Reused under the ECB's disclaimer and copyright notice, which permits free use with the ECB cited as the source. This data may be obtained free of charge through the ECB Data Portal (https://data.ecb.europa.eu). Served unchanged by Eden Engine; not an official ECB product, and the ECB is not responsible for it.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "ecb/euro-exchange-rates" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "ecb/euro-exchange-rates" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "ecb/euro-exchange-rates", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "ecb/euro-exchange-rates", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"currency"
],
"properties": {
"as_of": {
"type": "string",
"pattern": "^(?:(?:200[1-9]|20[1-9][0-9])-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)-(?:0[1-9]|[12][0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-8]))|20(?:0[48]|[2468][048]|[13579][26])-02-29)$",
"description": "A calendar date, YYYY-MM-DD from 2001-01-01. The observations returned end on or before this date: a weekend or holiday returns the previous trading day, dated in the response, and a date in the future returns the latest available. For M and A only periods that have ended by this date are returned. Omit for the latest observations."
},
"last_n": {
"type": "integer",
"default": 1,
"maximum": 260,
"minimum": 1,
"description": "How many observations to return, counting back from the latest (or from as_of). 1 (default) is the single latest rate; 260 is about a year of daily rates, 12 a year of monthly averages. The count includes holiday rows with a null value before May 2012."
},
"currency": {
"enum": [
"USD",
"GBP",
"JPY",
"CHF",
"CNY",
"AUD",
"CAD",
"NZD",
"SEK",
"NOK",
"DKK",
"PLN",
"CZK",
"HUF",
"RON",
"TRY",
"ISK",
"ILS",
"ZAR",
"BRL",
"MXN",
"INR",
"IDR",
"KRW",
"MYR",
"PHP",
"SGD",
"THB",
"HKD",
"BGN",
"HRK",
"RUB",
"ARS",
"DZD",
"MAD",
"TWD"
],
"type": "string",
"description": "The ISO 4217 code of the currency to quote against the euro. The rate is units of this currency per ONE euro (USD 1.1225 means 1 EUR = 1.1225 USD; divide to convert dollars to euro). Series that have ended: BGN to 2025-12-31, HRK to 2022-12-30, RUB to 2022-03-01, ARS, DZD, MAD and TWD to 2020-10-30; asking for their latest rate returns that last old observation, dated in the response."
},
"frequency": {
"enum": [
"D",
"M",
"A"
],
"type": "string",
"default": "D",
"description": "D daily reference rate (default; one value per trading day, rounded by the ECB to 2 to 5 decimals depending on the currency); M the average of the daily rates over a calendar month; A the average over a calendar year. M and A count only complete months and years and are not rounded."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"header",
"dataSets",
"structure"
],
"properties": {
"header": {
"type": "object",
"description": "Response envelope: id, prepared (timestamp), and sender.id, which is ECB.",
"additionalProperties": true
},
"dataSets": {
"type": "array",
"items": {
"type": "object",
"required": [
"series"
],
"properties": {
"series": {
"type": "object",
"description": "The series, keyed by position string such as 0:0:0:0:0. Its observations map a time-axis position to [value, OBS_STATUS, OBS_CONF, OBS_PRE_BREAK, OBS_COM]: value is a number, or null on a holiday row before May 2012; OBS_STATUS is a position into THIS response's structure.attributes.observation, which lists only the codes present (A normal value, H missing value; holiday or weekend), so never read 0 as normal without checking; OBS_COM, when not null, is a position of the comment (Indicative rate).",
"additionalProperties": true
}
},
"additionalProperties": true
},
"description": "One data set. Its `series` object holds the single requested series: `attributes` (positions into structure.attributes.series, among them TITLE, UNIT and DECIMALS) and `observations`."
},
"structure": {
"type": "object",
"description": "The legend that decodes dataSets: dimensions.series (code lists), dimensions.observation[0].values (the time axis, one entry per observation returned, each with its date `id`), attributes.series (TITLE, UNIT, DECIMALS ...) and attributes.observation (the status legend).",
"additionalProperties": true
}
},
"description": "The ECB's SDMX-JSON 1.0 response, unchanged. Each key in dataSets[0].series is a colon-joined list of positions into structure.dimensions.series (FREQ, CURRENCY, CURRENCY_DENOM, EXR_TYPE, EXR_SUFFIX); each key in a series' observations is a position into structure.dimensions.observation[0].values, whose `id` is the date (YYYY-MM-DD, YYYY-MM or YYYY).",
"additionalProperties": true
}