Faceabot Exchange rates
Server Details
Exchange rates for about 150 currencies from central banks (ECB and others). Free, no key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one performs conversions, the other enumerates supported currencies and their sources. There is no realistic scenario where an agent would confuse the two.
Both names are snake_case and readable, but 'exchange_rate' is a noun while 'list_currencies' is a verb_noun pattern, a minor stylistic deviation. The set is small enough that this has no practical impact.
Two tools is thin but defensible for a narrowly scoped exchange-rate server—conversion plus a coverage-discovery tool is a sensible minimal surface. It sits just below the ideal range but nothing feels redundant.
Core workflows (convert with source bank and date, any past date since 2002, check coverage) are covered with no dead ends. A bulk historical time-series operation is absent, but agents can loop over dates to work around it.
Available Tools
2 toolsexchange_rateCurrency exchange rate and conversion (central banks, ~150 currencies)ARead-onlyIdempotentInspect
Converts an amount between currencies with official central-bank rates: European Central Bank, Bank of Russia, National Bank of Ukraine, National Bank of Poland. About 150 currencies: USD, EUR, JPY, GBP, CNY, INR, RUB, UAH, NGN, ARS, EGP, AED, SAR, PKR, VND, KES, TRY, BRL, KZT… Each result names its bank and date. Today or any past date since 2002. Use when: you need an exchange rate or to convert a price ("100 USD in RUB", "euro to yen today", "naira to dollar"). Not for: crypto prices, or the exact rate a bank will charge. Example: {"from":"USD","to":"RUB","amount":100}
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Currency to convert to, or a list of up to 15 currencies | |
| date | No | Optional past date YYYY-MM-DD (since 2002; default: latest rates). Weekend or holiday: the last rate in force before it. | |
| from | Yes | Currency to convert from: 3-letter ISO code (USD, EUR, RUB, JPY…) or a common name ("yen", "ruble", "naira") | |
| amount | No | Amount in the 'from' currency |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered; the description adds provenance (which central banks supply rates), the fact that each result names its bank and date, and historical reach back to 2002. It stops short of describing caching, staleness, or fallback behavior when a currency pair is unavailable, which is why it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core capability, then cleanly sectioned into 'Use when:', 'Not for:', and an example. The currency enumeration is long but earns its place by signaling supported-corridor breadth and common-name tolerance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no output schema, and no nested objects, the description covers sources, history depth, and partial return structure ('names its bank and date'). It leaves the exact response shape (field names, single vs. multi-target result layout) unstated, a minor gap for a read-only conversion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents ISO codes, common names, the array-of-up-to-15 targets, the amount default, and weekend/holiday date fallback. The description's example payload and currency list restate schema content rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (converts) plus resource (amount between currencies) and pins down the rate source and breadth (four named central banks, ~150 currencies). The scope is distinct enough from the lone sibling list_currencies that an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use when:' with concrete natural-language queries ('100 USD in RUB', 'naira to dollar') and an explicit 'Not for:' excluding crypto prices and actual bank-charged rates. Both the positive trigger and the exclusions are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_currenciesCurrencies covered (about 150, from 4 central banks)ARead-onlyIdempotentInspect
Lists every currency covered, with the central banks that publish it and the date of their latest rates. Use when: you need to know whether a currency is covered.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, open-world, and non-destructive behavior, so safety is covered. The description adds useful behavioral context by saying the list includes central banks and latest rate dates, which helps the agent understand what it gets back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is two tight sentences: the first states what the tool returns, and the second states the use case. Nothing is wasted, and the return content is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description provides the essential return content: all covered currencies, their central banks, and the latest rate dates. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a no-argument enumeration call, and there are no parameters needing semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Lists') and resource ('every currency covered') and explains the return contents: central banks and latest rate date. It is clear, but it does not explicitly differentiate itself from the sibling exchange_rate tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use it: 'you need to know whether a currency is covered.' That is clear usage context, though it offers no when-not-to-use guidance or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
exchange_rate - First observed
list_currencies
Related MCP Connectors
Official ECB euro reference rates for invoices and tax returns. $0.004/call via x402.
Live FX + official central-bank rates, 110+ sources. Hosted, keyless, nothing to install.
Official exchange rates from central banks: latest & historical rates plus currency conversion.
Latest and historical ECB foreign-exchange reference rates for 30+ currencies, via Frankfurter.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides live and historical foreign-exchange rates from the European Central Bank via Frankfurter API, enabling currency conversion, rate lookup, and trend analysis without API keys.51 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides National Bank of Romania (BNR) FX reference rates without API key.8 npmMIT
- AlicenseNot gradedqualityDmaintenanceReal-time currency exchange rates and crypto prices via MCP. Convert between 60+ fiat currencies and 30+ cryptocurrencies with multi-source failover. No API keys needed for upstream data.5 npmISC
- FlicenseNot gradedqualityDmaintenanceProvides real-time and historical foreign exchange rates for 31+ currencies, enabling currency conversion, historical rate lookups, and time series analysis using data from the Frankfurter API.-
Glama MCP Gateway
Add one secure layer between your agents and this server.