Skip to main content
Glama
Exchange-RateAPI

@exchangerateapi/mcp-server

Official

get_rates

Fetch exchange rates for one source currency against multiple targets, at a specific past datetime, or over a date range grouped by day, week, or month.

Instructions

Use this for (a) one source against multiple targets in a single call ('USD vs EUR, GBP, JPY'), (b) the rate at a specific past datetime ('EUR/USD on 2025-03-14T12:00Z'), or (c) a custom date range optionally bucketed by day/week/month. Returns an array [{ rate, source, target, time }, ...] — one row per target × time bucket. For a single live pair use get_exchange_rate. For fixed lookback windows (1d/7d/30d/1y ending now) use get_historical_rates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoInclusive end of range, ISO 8601 UTC. Must be paired with `from`. Mutually exclusive with `time`.
fromNoInclusive start of range, ISO 8601 UTC (e.g. '2025-01-01T00:00:00Z'). Must be paired with `to`. Mutually exclusive with `time`.
timeNoSingle point-in-time ISO 8601 UTC timestamp (e.g. '2025-03-14T12:00:00Z'). Mutually exclusive with from/to. Omit for the latest rate.
groupNoAggregation bucket when using from/to. 'day' = one rate per day, 'week' = one per ISO week, 'month' = one per calendar month. Omit for raw points.
sourceYesISO 4217 currency code, uppercase 3 letters (e.g. 'USD', 'EUR', 'GBP', 'JPY'). For a source/target pair, the returned rate is how much 1 unit of source is worth in target. Fiat only — no crypto, no commodities. Call list_currencies if unsure whether a code is supported.
targetYesOne or more ISO 4217 codes, comma-separated, no spaces. Examples: 'EUR' (single) or 'EUR,GBP,JPY' (multi). Each target becomes a separate row in the response.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.0.2

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description must carry behavioral disclosure, and it does: it reveals the response is an array with one row per target×time bucket, defines the shape [{ rate, source, target, time }], and implies the operation is read-only. It does not cover potential rate limits or error behavior, but those are secondary for a straightforward retrieval tool.

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?

Every sentence carries information: use cases, output shape, and routing to siblings. It is front-loaded with the most important selection criteria and contains no filler or repetition of schema text.

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?

For a six-parameter tool with no output schema, the description covers the core usage modes, mutual exclusivity of parameters, grouping behavior, and response cardinality. It could also state ordering or time format of returned rows, but enough is present for an agent to call the tool correctly in the main scenarios.

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?

The schema already documents all six parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantics on top: it links the target multiplicity to row count, explains the output row format, and frames parameters in concrete usage scenarios like 'USD vs EUR, GBP, JPY'.

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 names a specific verb ('get rates') and enumerates three distinct use cases with concrete examples: multi-target queries, point-in-time rates, and custom date ranges. It also distinguishes itself from siblings by explicitly covering what this tool is for, rather than restating the tool's name.

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

Usage Guidelines5/5

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

Usage guidance is explicit and actionable: single live pairs should use get_exchange_rate, and fixed lookback windows should use get_historical_rates. It also references list_currencies for code validation, giving clear when-to-use and when-not-to-use direction.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Exchange-RateAPI/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server