Skip to main content
Glama

fxapi Exchange Rates MCP Server

How rates changed between two dates

getFluctuation

Returns, for every requested currency, its rate at the end of date_from and of date_to and how much it changed in between, in absolute terms and in percent. Both days are UTC days back to 1999-01-01; the newest allowed is yesterday.

The JSON response also has the high, low and average of the daily closes from date_from to date_to (null when the two days are more than 1830 days apart or the span has no data). The CSV keeps its columns.

Input Schema

NameRequiredDescriptionDefault
typeNoFilter the returned currencies by type.
formatNo`json` (default), `csv` or `xlsx`. CSV has a header line and one row per currency (and point in time), values without exponent notation. `xlsx` is the same table as an Excel workbook (one sheet, bold frozen header row, numbers as numbers), sent as a download named after the endpoint, e.g. `latest.xlsx`.
date_toYesLast day (`YYYY-MM-DD`), on or after `date_from`.
date_fromYesFirst day (`YYYY-MM-DD`).
currenciesNoComma-separated list of currency codes to include (e.g. `EUR,USD,CAD`). The array form `currencies[]=EUR&currencies[]=USD` is also accepted. By default all supported currencies are returned.
base_currencyNoThe base currency that all returned values are relative to. Defaults to `USD`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / format / description
      Previous value: -"`json` (default) or `csv`. CSV has a header line and one row per currency (and point in time), values without exponent notation."New value: +"`json` (default), `csv` or `xlsx`. CSV has a header line and one row per currency (and point in time), values without exponent notation. `xlsx` is the same table as an Excel workbook (one sheet, bold frozen header row, numbers as numbers), sent as a download named after the endpoint, e.g. `latest.xlsx`."
    • changedInput schema / properties / format / enum
      Previous value: -[
      -  "json",
      -  "csv"
      -]New value: +[
      +  "json",
      +  "csv",
      +  "xlsx"
      +]
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

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

With only a title annotation, the description carries real disclosure value: end-of-day semantics, valid date window, and the precise condition under which `high`/`low`/`average` come back null (>1830 day span or no data). It does not cover error behavior, default currency set, or throttling, so it falls short of fully self-sufficient.

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

Conciseness4/5

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

Two short paragraphs, front-loaded with the returned values, then constraints and response-shape caveats. Every sentence is doing work; only 'The CSV keeps its columns' is terse to the point of being cryptic.

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

Completeness4/5

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

Six parameters, no output schema and no behavioral annotations, so the description must explain returns — and it does at a conceptual level (per-currency end rates, absolute and percent change, plus high/low/average aggregates with their null rule). It stops short of giving field names or the exact JSON/CSV shape, which an agent composing a downstream parse would still want.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantics the schema lacks: the values are taken at the *close* of each date, both are UTC days, and the span cap of 1830 days governs the aggregate fields. It adds nothing about `type`, `format` or `base_currency`, which the schema already documents thoroughly.

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

Purpose4/5

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

The first sentence names a specific verb-and-result ('Returns ... its rate at the end of `date_from` and of `date_to` and how much it changed ... in absolute terms and in percent'), which is materially different from siblings like getLatest or getHistorical. It never explicitly contrasts itself with nearby tools such as getRange or getAverage, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

Usage is only implicit: the description supplies hard constraints (UTC days back to 1999-01-01, newest allowed is yesterday, date_to on or after date_from) but never says when to pick this over getRange, getHistorical or getAverage. There are no exclusions or alternative-routing sentences.

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.

Resources