Skip to main content
Glama
datakoot

Market Intel MCP

Market Intel MCP — by Datakoot

Live and historical foreign-exchange rates for AI agents — as MCP tools your agent can call mid-task. No API keys.

Tools

Tool

What it does

Source

fx_rates

Latest exchange rates for a base currency

ECB via Frankfurter

fx_convert

Convert an amount between two currencies at the latest ECB reference rate

ECB via Frankfurter

fx_historical

Exchange rates for a base currency on a specific past date

ECB via Frankfurter

fx_timeseries

Exchange-rate history over a date range, for trend analysis

ECB via Frankfurter

fx_currencies

Supported currencies and their names

ECB via Frankfurter

No API keys required for any tool.

fx_rates, fx_historical, and fx_currencies advertise an MCP outputSchema and return matching structuredContent on success. Error results stay errors and are not schema-validated. The JSON text body is unchanged.

Related MCP server: FX Currency MCP Server

Quick start

claude mcp add --transport http market-intel https://market.datakoot.com/mcp

Or point any MCP client at https://market.datakoot.com/mcp.

Try it in 10 seconds — no key, no signup

Paste this into a terminal:

curl -s https://market.datakoot.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "fx_rates", "arguments": {"base": "USD"}}}'

You get live USD foreign-exchange rates (European Central Bank reference data) — no API key, nothing to sign up for.

Or point any MCP client at the URL and just ask your agent, in plain language:

  • "Convert 500 USD to euros at today's rate."

  • "How has USD/JPY moved over the last month?"

Data & attribution

Rates are European Central Bank reference rates, served via the free, open-source Frankfurter API. ECB reference rates are published for information and are not intended for use as transaction benchmarks.

Looking for other data? For cryptocurrency prices see Base Intel, and for company financials and SEC filings see Filings Intel — both at datakoot.com.

Pricing

Free — 100 calls a day, keyless, no signup. Pro — $15/mo including 50,000 calls a month with no daily limit; one key unlocks all nine Datakoot servers. Go over the monthly allowance and you drop to free-tier speed for the rest of the month, or top up — never cut off, no metered overage. Full terms: datakoot.com/pricing.

A paid allowance is shared across all nine Datakoot servers rather than being nine separate buckets, and only a tools/call counts — connecting and listing tools are free. Full terms at datakoot.com/pricing.

Development

node --test

Part of Datakoot — keyless intelligence APIs for AI agents.

Available Tools

5 tools
fx_convertFX ConvertA
Read-onlyIdempotent
Inspect

Convert an amount from one currency to another at the latest ECB reference rate. Returns the rate, the converted result, and the rate date.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget 3-letter currency
fromYesSource 3-letter currency
amountYesAmount in the 'from' currency to convert. Send it as a number, not a string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toNo
dateNo
fromNo
rateNo
amountNo
resultNo
sourceNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds the ECB reference-rate source as the authoritative origin of the numbers, which is useful context, but says nothing about rate freshness, unsupported currencies, or error behavior.

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?

Two tight sentences with the core action front-loaded and the return payload summarized afterward; no filler or repetition.

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?

An output schema exists, so return values need not be detailed, and the parameters are fully documented in the schema. The description is complete for a simple conversion call, though a note on currency coverage or rate staleness would close the remaining gap.

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

Parameters3/5

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

Schema coverage is 100%, with the schema even specifying the numeric-format constraint for amount, so the schema carries the parameter burden. The description adds no syntax or format detail beyond what the schema already provides, making the baseline 3 appropriate.

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?

States a specific verb (Convert) and resource (currency amounts) plus the data source and rate vintage ('latest ECB reference rate'). The word 'latest' implicitly separates it from fx_historical and fx_timeseries, though siblings are never named explicitly.

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 implied: an agent can infer this is for current conversion rather than time-series or rate lookup, but the description never states when to prefer it over fx_rates or fx_historical, nor any prerequisites such as supported currency coverage.

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

fx_currenciesFX CurrenciesA
Read-onlyIdempotent
Inspect

List the currencies supported for exchange-rate lookups, with their full names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of supported currencies
sourceYes
currenciesYesISO 4217 codes mapped to currency names

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only that full names are included in the result, a modest return-content hint; with an output schema present, little more behavioral disclosure is warranted.

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?

A single front-loaded sentence with no filler; the verb and resource lead, and the result detail trails. Nothing is wasted.

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 zero-parameter enumeration tool with full annotation coverage and an output schema, the description is essentially sufficient. Return format is delegated to the output schema, which is the correct division of labor, though a note on how these currency codes feed into the sibling tools would have closed the loop.

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 tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. The schema cannot add meaning here, and the description correctly does not invent any.

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?

States a specific verb ('List') and resource ('currencies supported for exchange-rate lookups'), which an agent can distinguish from the rate/conversion siblings fx_convert, fx_rates, fx_historical, and fx_timeseries. It stops short of explicitly naming those siblings as alternatives, but the resource itself is unambiguous.

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?

The phrase 'supported for exchange-rate lookups' implies this is a discovery/enumeration step before calling the rate tools, but the description never states when to use it versus the siblings or any prerequisites. Usage is inferable rather than stated.

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

fx_historicalFX HistoricalA
Read-onlyIdempotent
Inspect

Get foreign-exchange rates for a base currency on a specific past date (YYYY-MM-DD). ECB publishes rates on business days; a weekend/holiday date returns the most recent prior business day.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNo3-letter base (default USD)
dateYesThe date to look up, YYYY-MM-DD (MM/DD/YYYY is also accepted). Weekends and holidays return the previous business day's ECB rates.
symbolsNoOptional comma-separated targets

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYesISO 4217 base currency actually used
dateYesECB rate date actually used YYYY-MM-DD
ratesYesQuote currencies mapped to the ECB reference rate
sourceYes
requested_dateYesCaller-requested date YYYY-MM-DD

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld/destructive=false, so the safety profile is handled. The description adds genuinely non-obvious behavior: ECB publishes only on business days and weekend/holiday dates resolve to the most recent prior business day. Return format is not described, but an output schema exists.

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?

Two sentences, zero filler, with the core purpose front-loaded and the ECB business-day caveat second. Every clause earns its place.

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?

A simple read-only lookup with a fully documented schema, rich annotations, and an output schema, so return values need no explanation. The one behavior an agent could get wrong — non-business-day dates — is explicitly addressed.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (base, date, symbols) are already documented, including the default USD and accepted date formats. The description restates the date format and base-currency notion without adding syntax or constraints beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb (get), resource (foreign-exchange rates), and scope (a specific past date) — clearly a point-in-time lookup. It implicitly separates itself from fx_rates (current) and fx_timeseries (range) via 'a specific past date', though it never names a sibling explicitly.

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?

The phrase 'on a specific past date' implies the usage context, and the weekend/holiday note hints at edge-case handling. But there is no explicit when-to-use vs when-not guidance and no named alternative among fx_convert, fx_currencies, fx_rates, or fx_timeseries.

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

fx_ratesFX RatesA
Read-onlyIdempotent
Inspect

Get the latest foreign-exchange rates for a base currency (default USD), optionally limited to specific target currencies. Source: European Central Bank reference rates.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNo3-letter base currency, e.g. USD, EUR (default USD)
symbolsNoOptional comma-separated targets, e.g. EUR,GBP,JPY

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYesISO 4217 base currency actually used
dateYesECB rate date YYYY-MM-DD
ratesYesQuote currencies mapped to the ECB reference rate
sourceYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds genuine value beyond that by disclosing the data source (ECB reference rates), which tells the agent about provenance and update cadence. It stops short of stating freshness or rate limits.

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?

Two tightly written sentences, front-loaded with the core action and following with the optional narrowing and data source. No filler or redundancy.

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 simple zero-required-parameter read tool with a full schema and an output schema (so return values need not be explained), the description covers purpose, default, filter, and source adequately. Only the absence of routing guidance against the four siblings keeps it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (base, symbols) are fully documented in the schema, including the USD default and comma-separated format. The description restates the same defaults and target-currency concept without adding syntax or constraints beyond the schema.

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?

States a specific verb and resource ('Get the latest foreign-exchange rates') plus scope (base currency, optional targets). 'Latest' implicitly distinguishes it from fx_historical/fx_timeseries, but no sibling is named explicitly, so differentiation is inferred rather than stated.

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 implied by 'latest' spot rates and the optional target filter, which contrasts with time-series siblings, but the description never states when to choose this over fx_convert, fx_historical, or fx_timeseries. No explicit alternatives or exclusions are given.

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

fx_timeseriesFX TimeseriesA
Read-onlyIdempotent
Inspect

Get a time series of exchange rates for a base currency over a date range (max ~1 year), useful for trend analysis. Provide start and end as YYYY-MM-DD and one or more target currencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesEnd date, YYYY-MM-DD (MM/DD/YYYY is also accepted).
baseNo3-letter base (default USD)
startYesStart date, YYYY-MM-DD (MM/DD/YYYY is also accepted). Range up to about one year.
symbolsYesComma-separated targets, e.g. EUR,GBP

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseNo
ratesNo
sourceNo
end_dateNo
provenanceNoWhere this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at.
start_dateNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description's only added behavioral fact is the ~1-year range ceiling, which is already repeated in the schema's 'start' description, so marginal new context; no rate limits, auth needs, or data-freshness caveats are disclosed.

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?

A single tight sentence with the core action and its scope front-loaded, followed by the input-format reminder. Nothing is wasted, though it is slightly dense and could split the format guidance.

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?

With an output schema present, return values need not be explained, and annotations carry the safety profile. The description covers scope, date format, range limit, and multi-target input, leaving only the sibling-routing question unanswered.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the YYYY-MM-DD format and that one or more target currencies are expected, but adds no syntax or constraint detail beyond what the schema already documents for start, end, base, and symbols.

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?

States a specific verb and resource ('Get a time series of exchange rates') plus scope (base currency, date range, max ~1 year) and a purpose hint (trend analysis). This is clear, but it never differentiates itself from near-siblings like fx_historical or fx_rates, which likely also return rate data over dates.

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?

'useful for trend analysis' implies the use case, but the description never says when to pick this over fx_historical, fx_rates, or fx_convert. Usage is inferable rather than stated, and no exclusions or prerequisites are given.

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.

  1. 5 tool updatesv2.1.0
    • First observedfx_convert
    • First observedfx_currencies
    • First observedfx_historical
    • First observedfx_rates
    • First observedfx_timeseries

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct time-scope or operation: fx_rates (latest snapshot), fx_historical (single past date), fx_timeseries (date range), fx_convert (arithmetic conversion), and fx_currencies (metadata listing). The descriptions explicitly clarify the 'latest' vs 'specific past date' vs 'range' boundaries, so an agent can select reliably.

Naming Consistency5/5

All five tools share a consistent fx_ prefix with predictable descriptive suffixes (rates, convert, historical, timeseries, currencies). Mixing a verb (convert) among nouns is coherent given it describes an action, and the pattern is fully predictable.

Tool Count5/5

Five tools is well-scoped for a focused FX-reference server, with no redundancy and no thin coverage. Every tool maps to a distinct, needed capability.

Completeness4/5

The surface covers the full practical lifecycle: listing supported currencies, latest rates, conversion, historical lookup, and trend time series. Minor gaps remain (no direct pair-rate lookup separate from conversion, no data freshness/provenance endpoint), but agents can work around these easily.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides access to currency exchange rates and conversion tools using the Frankfurter API, including latest rates, historical data, and time series from sources like the European Central Bank.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables fetching real-time exchange rates between currencies and listing supported currency codes using the Frankfurter API.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Wraps the Frankfurter API to enable currency exchange rate queries and conversions through natural language.
    10 npm
    MIT