io. github. theluckystrike/ currency-converter-ecb-rates-daily-keyless
by theluckystrike · remote · local (mcpb) · no sign-in to list tools · v0.22.6 · published by GitHub user theluckystrike
Convert currencies on the daily European Central Bank reference rates. No API key, no signup.
10 tools: 4 do something that can't be undone, 3 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone4Claude Code: ask: see these tools
- Changes things3Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http currency-converter-ecb-rates-daily-keyless https://mcp.zovo.one/mcp/currency --header 'Authorization: <your-authorization>'Findings
Matches of fixed checks, with the text they matched.
- Warnrates_latest
The server marks "rates_latest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Can't be undone 4Claude Code: ask
convertCall this tool to convert an amount between any two ECB-quoted currencies, today or on a past date.No findings
Why it is in this group
- The name "convert" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Call this tool to convert an amount between any two ECB-quoted currencies, today or on a past date. Returns the converted amount, the cross rate to 6 decimals, the rounding applied and the rate date used.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
convert_manyConvert one amount into many currencies off the SAME ECB rate date, each rounded to its own minor units.No findings
Why it is in this group
- The name "convert_many" says "convert": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Convert one amount into many currencies off the SAME ECB rate date, each rounded to its own minor units. For several lines at once (mixed-currency invoice lines), call it once per line: every line then shares one rate date. Unknown targets are listed, never failed.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
rate_historyCall this tool for the ECB rate of one currency pair across a window.No findings
Why it is in this group
- The description's first verb is "call": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Call this tool for the ECB rate of one currency pair across a window. Returns one row per published day plus the min, max, average and the change. A window wider than the free 90 days is shortened, not refused.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
rate_onCall this tool for the ECB rate of one pair on one date.No findings
Why it is in this group
- The description's first verb is "call": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Call this tool for the ECB rate of one pair on one date. Returns both directions and the rate date, so a reciprocal is never reported as the published figure. A date beyond the free window is shortened, never refused.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 3Claude Code: ask
fx_rates_forCall this tool when a rebill or an invoice spans more than one currency, instead of asking the user for rates.No findings
Why it is in this group
- The description's first verb is "call": a word for a change.
Description, as the server wrote it Call this tool when a rebill or an invoice spans more than one currency, instead of asking the user for rates. Returns the fx_rates object expense_to_invoice takes, plus the rate date to write on the invoice.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
license_activateTurn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
rates_latestCall this tool for the latest ECB daily reference rates against any base: 1.0812 for USD means 1 base = 1.0812 USD.1 finding
Why it is in this group
- The description's first verb is "call": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "rates_latest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "call": a word for a change.
Description, as the server wrote it Call this tool for the latest ECB daily reference rates against any base: 1.0812 for USD means 1 base = 1.0812 USD. Crosses go through the euro. Returns the ECB rate date and the cache age.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 3Claude Code: allow
cache_statusReport the ECB rate cache here: which dates are held, how old they are and when they refresh.No findings
Why it is in this group
- The name "cache_status" says "status": a word for reading.
Description, as the server wrote it Report the ECB rate cache here: which dates are held, how old they are and when they refresh. Reads only. Check it before trusting a rate after time offline; a cache that no longer parses is quarantined and named.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
currencies_listEvery currency in the ECB daily set with its rate against the euro and its decimal places.No findings
Why it is in this group
- The name "currencies_list" says "list": a word for reading.
Description, as the server wrote it Every currency in the ECB daily set with its rate against the euro and its decimal places. This is the whole domain: a code not on this list cannot be converted, quoted or historised here.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
license_statusReport this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL.No findings
Why it is in this group
- The name "license_status" says "status": a word for reading.
Description, as the server wrote it Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.22.6. Values in angle brackets are yours to fill in.
claude mcp add --transport http currency-converter-ecb-rates-daily-keyless https://mcp.zovo.one/mcp/currency --header 'Authorization: <your-authorization>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__currency-converter-ecb-rates-daily-keyless__currencies_list",
"mcp__currency-converter-ecb-rates-daily-keyless__cache_status",
"mcp__currency-converter-ecb-rates-daily-keyless__license_status"
],
"ask": [
"mcp__currency-converter-ecb-rates-daily-keyless__rates_latest",
"mcp__currency-converter-ecb-rates-daily-keyless__convert",
"mcp__currency-converter-ecb-rates-daily-keyless__convert_many",
"mcp__currency-converter-ecb-rates-daily-keyless__fx_rates_for",
"mcp__currency-converter-ecb-rates-daily-keyless__rate_history",
"mcp__currency-converter-ecb-rates-daily-keyless__rate_on",
"mcp__currency-converter-ecb-rates-daily-keyless__license_activate"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as currency-converter-ecb-rates-daily-keyless. Review it before you use it.
