# DatoQA — Historical Exchange Rates

> Historical reference FX and dated conversions across 30 currencies, with source dates and evidence.

- name: dev.workers.bhazarstudio.datoqa/historical-exchange-rates
- version: 0.6.15
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 76/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.workers.bhazarstudio.datoqa%2Fhistorical-exchange-rates
- tools: https://api.protogrid.dev/v1/servers/dev.workers.bhazarstudio.datoqa%2Fhistorical-exchange-rates/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "historical-exchange-rates": {
      "type": "http",
      "url": "https://datoqa.bhazarstudio.workers.dev/mcp/fx"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% +updated-16d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 76/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,016 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 14 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 2,016 tokens to load them all
- tool set hash: b4f693cc04d89cd5acba9abcb6218805
- tools last changed: 2026-10-07T09:16:56.304Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.workers.bhazarstudio.datoqa/historical-exchange-rates.svg)](https://protogrid.dev/servers/dev.workers.bhazarstudio.datoqa/historical-exchange-rates)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-07 `catalog` changed (inputSchema)
- 2026-09-29 `convert_currency_batch` changed (description, inputSchema, outputSchema)
  - before: Free pilot: convert dated decimal-string amounts to EUR using exact-date ECB historical references. Up to 500 rows, eight currency/year snapshots, 48,000 UTF-8 argument bytes; start with small batches. Unique id per row. Half-even rounding by default, two decimals per line; total sums rounded lines. EUR uses identity, without a source quote. Preserve original amounts, rates and source evidence. Missing, stale or mismatched rates block complete export and total; never substitute another date. JSON by default; output_format=both includes CSV in the same result. ECB originals are free; indicative references are not executable prices or accounting/tax certification. Source checks are not independent verification. No transfer, customer-content retention or content logging.
  - after: Free pilot: convert dated decimal-string amounts to a target_currency chosen from 30 supported currencies, including EUR (default), USD, JPY, CNY, GBP, CHF, INR and KRW. Use exact-date ECB historical references; derived cross conversions use amount * target units per EUR / source units per EUR without intermediate rounding. Up to 500 rows, eight currency/year snapshots including target rates, 48,000 UTF-8 argument bytes; start small. Unique id per row. Half-even rounding by default, ISO 4217 minor-unit rounding per line: zero decimals for JPY/KRW/ISK, two for other supported targets; target_decimal_places reports precision; total_target sums rounded lines. amount_target is the result; legacy amount_eur/total_eur are null for non-EUR targets. Same-currency rows use identity without an external quote. Preserve originals and evidence for both currencies from the same source edition. Missing, stale or mismatched rates block complete export and total; never replace dates. JSON default; output_format=both includes CSV. ECB originals are free; indicative calculations are not executable prices or accounting/tax certification. No transfers, independent factual verification, customer-content retention or content logging.
- 2026-09-29 `convert_currency_batch` added
  - Free pilot: convert dated decimal-string amounts to EUR using exact-date ECB historical references. Up to 500 rows, eight currency/year snapshots, 48,000 UTF-8 argument bytes; start with small batches. Unique id per row. Half-even rounding by default, two decimals per line; total sums rounded lines. EUR uses identity, without a source quote. Preserve original amounts, rates and source evidence. Missing, stale or mismatched rates block complete export and total; never substitute another date. JSON by default; output_format=both includes CSV in the same result. ECB originals are free; indicative references are not executable prices or accounting/tax certification. Source checks are not independent verification. No transfer, customer-content retention or content logging.
- 2026-09-29 `get_exchange_rate_history` changed (inputSchema)
- 2026-09-28 `get_evidence` changed (inputSchema, outputSchema)
- 2026-09-28 `get_record` changed (inputSchema, outputSchema)
- 2026-09-28 `get_exchange_rate_history` changed (inputSchema, outputSchema)
- 2026-09-28 `list_exchange_rate_history` changed (outputSchema)
- 2026-09-28 `get_exchange_rates` changed (inputSchema, outputSchema)
- 2026-09-28 `catalog` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Get the scope, allowed tool names, source IDs, endpoint and access policy for this thematic MCP. Call with no arguments when setting up this connection; skip it when the desired data tool and inputs are known. Use the listed domain directories only to resolve missing identifiers or coverage. This static catalog does not guarantee current availability; inspect the data response status and freshness.
  - after: Inspect this connection’s scope, tools and access policy. With no arguments returns the usual catalog. On the general or economy connection, optionally supply report_countries (1–10 World Bank codes) for a FREE live preview of the optional paid country comparison: population/GDP/inflation by default, or up to six selected historical indicators over ten years, aligned JSON and CSV, definitions and source evidence. Preview reports price, missing cells, availability and the exact HTTP purchase path; it never signs or pays. Existing data tools remain free. Buying requires an authorized x402 HTTP client, not just MCP. Source/schema checks are not independent factual verification.

Full history: https://api.protogrid.dev/v1/servers/dev.workers.bhazarstudio.datoqa%2Fhistorical-exchange-rates/changes

## Remotes

- https://datoqa.bhazarstudio.workers.dev/mcp/fx (streamable-http, auth none, reachable true, uptime30d 0.9550562)

## Packages

_none_

## Tools (7)

- `catalog`: Inspect this connection’s scope, tools and access policy. With no arguments returns the usual catalog. On the general or economy connection, optionally supply report_countries (1–10 World Bank codes) for a FREE live preview of the optional paid country comparison: population/GDP/inflation by default, or up to six selected historical indicators over ten years, aligned JSON and CSV, definitions and source evidence. Preview reports price, missing cells, availability and the exact HTTP purchase path; it never signs or pays. Existing data tools remain free. Buying requires an authorized x402 HTTP client, not just MCP. Source/schema checks are not independent factual verification.
- `convert_currency_batch`: Free pilot: convert dated decimal-string amounts to a target_currency chosen from 30 supported currencies, including EUR (default), USD, JPY, CNY, GBP, CHF, INR and KRW. Use exact-date ECB historical references; derived cross conversions use amount * target units per EUR / source units per EUR without intermediate rounding. Up to 500 rows, eight currency/year snapshots including target rates, 48,000 UTF-8 argument bytes; start small. Unique id per row. Half-even rounding by default, ISO 4217 minor-unit rounding per line: zero decimals for JPY/KRW/ISK, two for other supported targets; target_decimal_places reports precision; total_target sums rounded lines. amount_target is the result; legacy amount_eur/total_eur are null for non-EUR targets. Same-currency rows use identity without an external quote. Preserve originals and evidence for both currencies from the same source edition. Missing, stale or mismatched rates block complete export and total; never replace dates. JSON default; output_format=both includes CSV. ECB originals are free; indicative calculations are not executable prices or accounting/tax certification. No transfers, independent factual verification, customer-content retention or content logging.
- `get_evidence`: Retrieve the source JSON snapshot and SHA-256 digest for a currently available record. The digest proves snapshot integrity, not factual truth.
- `get_exchange_rate_history`: ECB historical daily reference rates for one currency against EUR. Provide year (1999 onward) or an exact date, not both. Default: current year. Returns one year at most, original decimals, missing values and evidence. No weekend carry-forward, interpolation, current quote for discontinued currencies, cross rates or executable prices.
- `get_exchange_rates`: ECB indicative daily currency reference rates against EUR. Not real-time or executable prices; inspect observation_date. Original rates freely available at the cited ECB source.
- `get_record`: Get an unexpired record with provenance and its explicit verification level. Source/schema validation is not independent factual verification.
- `list_exchange_rate_history`: List available currencies, annual snapshots since 1999 and explicit gaps in ECB daily reference FX history. Some currencies have been discontinued. Units per EUR; original data freely available at ECB.
