Skip to main content
Glama

fx_rate_history

Get the historical reference exchange-rate series for a currency pair.

Returns series (the daily rates) plus the metadata needed to describe it honestly. READ series_coverage BEFORE CHARACTERISING THE PERIOD. days is the window we look back over, NOT a promise of how much history exists: our series start at different dates per currency, so a 365-day request routinely returns five months. series_coverage.first_date/last_date are what the numbers actually span, and series_coverage.truncated is true when that is shorter than you asked for. Say "the ~N months we hold", never "over the past year", and never fill the gap from your own knowledge.

CHECK source BEFORE ATTRIBUTING PROVENANCE. "ecb" = official ECB euro reference fixings, weekdays only. "market" = an indicative market data feed for a currency the ECB does not publish (AED, QAR, SAR, KWD, NGN, PKR, VND, KZT, RUB, UAH and ~20 more). A market series is NOT an ECB series and must never be described as one. Where a pair mixes the two, series_coverage reports the dates lost to aligning them.

peg_context appears when either currency is pegged, including when the peg is against some third currency: it names the anchor and the pair whose movement you are really looking at. Take the peg date from there rather than from memory.

An uncovered pair returns an error naming the missing leg instead of an empty series. Report that we hold no history rather than describing the rate as stable or range-bound.

BOTH currencies are required. Always pass the exact pair you intend. There is no implicit EUR/USD default: an omitted or mis-named currency errors rather than returning the wrong pair's history.

Args: base: Base currency (ISO 4217, e.g., "EUR") target: Target currency (ISO 4217, e.g., "USD") days: Lookback window in days (1-365, default 90). A ceiling on the window, not a guarantee of the number of points returned.

Examples: fx_rate_history("EUR", "USD", 30) fx_rate_history("GBP", "CHF", 365)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseYes
daysNo
targetYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It openly explains that `days` is a ceiling not a guarantee, that series start at different dates per currency, that `series_coverage` reports what is actually spanned, that market data is not ECB, that peg context includes third-currency pegs, and that errors name the missing leg. This is exceptionally transparent about edge cases and potential misinterpretations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence serves a purpose. It uses paragraphs, bolded warnings, and a clear separation between the main description, args, and examples. The structure makes important caveats prominent without being verbose or repetitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (source distinctions, data gaps, peg context) and the absence of annotations, this description is remarkably complete. It covers return values, error handling, historical coverage semantics, and user precautions. The presence of an output schema reduces the need to explain return structure, but the description still covers all important behavioral aspects, making it fully adequate for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no descriptions (0% coverage), so the description must compensate. It does so thoroughly in the Args section: base and target are defined as ISO 4217 codes, and days is explained as a lookback window with a default of 90 and a clear caveat that it is a ceiling, not a guarantee. The inclusion of examples further clarifies parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the historical reference exchange-rate series for a currency pair.' It uses a specific verb ('Get'), identifies the resource ('historical reference exchange-rate series'), and distinguishes itself from the sibling 'fx_rate' tool by emphasizing 'historical'. This makes it unambiguous and differentiates it from other rate-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance, including that both currencies are required, there is no implicit EUR/USD default, and how to interpret `series_coverage` and `source` fields. It also gives strong when-not guidance (e.g., never describe a market series as ECB, never fill gaps from memory). However, it does not explicitly mention alternatives or when to use this tool versus sibling tools like `fx_rate` or `fx_volatility`, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlapping areas (goods_classify vs hs_code_lookup vs eccn_lookup; fx_rate vs fx_rate_history vs fx_volatility) require close reading of descriptions to select correctly. The detailed descriptions help, but the shear number of lookup tools creates mild ambiguity.

Naming Consistency3/5

Names mix verb-first (track_payment, mcp_verify) and noun-first patterns (iban_validate, fx_rate, ssi_lookup), with some phrase-like names (banks_using_correspondent, is_business_day_check). While readable, there is no single consistent convention.

Tool Count3/5

33 tools is heavy, but the server's broad scope (payments, FX, sanctions, export controls, company registries, SWIFT) justifies most of them. A few marginal tools (mcp_register, mcp_verify, company_search_result) add bulk without core value.

Completeness5/5

The tool set covers the payment lifecycle end-to-end: tracking, settlement, FX, compliance, sanctions, and company due diligence. There are no obvious dead ends; the tools chain together via next_steps and search_id flows.

Resources