fxpeek
Server Details
Historical reference exchange rates with a source link per row. Tools: get_latest_rate, get_history.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: get_latest_rate returns the current rate, while get_history returns dated historical rates. Description wording explicitly separates them, so an agent cannot confuse them.
Both tools follow the same get_<noun> pattern (get_history, get_latest_rate), which is predictable and readable. No convention mixing.
Only 2 tools is thin for an FX reference-rate domain; a single-purpose service can be small, but even the minimal rate workflow typically warrants a bit more surface. It is borderline rather than clearly wrong.
Core rate retrieval (latest and historical) is covered, but obvious adjacent operations are missing: no currency conversion, no listing of supported currency pairs, and no multi-date/range query beyond a day-count parameter. Agents can work around these but will hit dead ends.
Available Tools
2 toolsget_historyAInspect
Get dated historical reference rates for a currency pair for a number of days, or a single date. Use for invoices, reports and reconciliation.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ISO 4217 target currency code | |
| date | No | Optional single date YYYY-MM-DD | |
| days | No | Number of days back (default 365) | |
| from | Yes | ISO 4217 base currency code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It says the data is 'historical' and 'reference' rates, which gives some context, but it omits whether the operation is read-only (though implied), authentication needs, rate limits, data source, timezone, or return format. For a no-annotation tool this is a significant gap.
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?
Two tight sentences with no wasted words. The core purpose is front-loaded, and the usage examples follow naturally.
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 simple retrieval tool with full parameter documentation and no output schema, the description is nearly complete. It could better mention the sibling alternative or return shape, but it gives enough context to invoke correctly.
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%, so the schema already documents every parameter. The description adds only that 'from'/'to' form a currency pair and that 'days' versus 'date' represent alternative retrieval modes, which is useful but not beyond the schema's baseline.
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 states a specific verb ('Get'), resource ('historical reference rates for a currency pair'), and scope ('for a number of days, or a single date'). It implicitly distinguishes itself from the sibling get_latest_rate by saying 'historical' rather than 'latest', though it does not name the sibling.
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 gives clear usage context ('Use for invoices, reports and reconciliation') but does not state when not to use it or explicitly direct the agent to get_latest_rate for current rates. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_rateAInspect
Get the latest available source-linked reference exchange rate for a currency pair (e.g. USD to CNY). Reference data, not a transaction quote.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ISO 4217 target currency code, e.g. CNY | |
| from | Yes | ISO 4217 base currency code, e.g. USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that data is source-linked reference data rather than a transaction quote, which is meaningful context. However, it omits freshness/latency details (how 'latest' is defined), error behavior for unsupported pairs, and whether the response needs further interpretation.
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?
A single compact sentence front-loads the core action and ends with the key disambiguation ('Reference data, not a transaction quote'). Zero waste.
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 simple 2-param read tool this is nearly adequate, but with no annotations and no output schema, the description should say more about what 'latest' means (timestamp/freshness) and how errors are surfaced. It does not.
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%, so the schema already documents 'from' and 'to' as ISO 4217 codes with examples. The description adds only the example pair (USD to CNY), which duplicates the schema examples. 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 (get) and resource (latest exchange rate) with scope (reference, not transaction quote) and an example pair. It does not name or contrast with the sibling get_history, which is the natural alternative for historical vs. latest data.
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?
Implies usage via 'latest available' and 'reference data, not a transaction quote,' but never states when to use this tool versus get_history. No explicit when/when-not guidance or alternative routing.
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
get_history - First observed
get_latest_rate
Related MCP Connectors
Historical FX rates for 100+ currencies vs USD from IMF and World Bank data, 1940-present.
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.
Live and historical FX rates (ECB via Frankfurter) — paid per call (x402/credits), 2 tools
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides 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.8MIT
- AlicenseNot gradedqualityCmaintenanceProvides National Bank of Romania (BNR) FX reference rates without API key.1MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to fetch official published exchange rates from 60+ central banks and tax authorities, with point-in-time lookup, history, and cross-bank comparison.51181MIT
- 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.-