# DatoQA: sourced public data for agents Free pilot HTTP API and remote MCP: historical FX, country indicators and international holiday calendars, with source citations, observation dates, explicit gaps and evidence snapshots. No account, API key or wallet for these examples. No SLA. Holiday sources include FR/UK/HK government calendars and the OpenHolidays curated collection; inspect the source kind and actual coverage. Original public data remains available from its publishers; DatoQA groups it into consistent agent responses. **MCP endpoint:** https://datoqa.bhazarstudio.workers.dev/mcp (Streamable HTTP, no authentication). Browser-friendly setup guides with downloadable configurations: https://datoqa.bhazarstudio.workers.dev/docs/start/ . ## Choose your scope Keep `/mcp` for all 27 tools, or replace only the URL in the configurations below with one focused endpoint: | Scope | Endpoint | Tools | | --- | --- | --- | | DatoQA — Historical Exchange Rates | https://datoqa.bhazarstudio.workers.dev/mcp/fx | 7 | | DatoQA — Economic Indicators | https://datoqa.bhazarstudio.workers.dev/mcp/economy | 13 | | DatoQA — Official Public Holidays | https://datoqa.bhazarstudio.workers.dev/mcp/holidays | 5 | Same data, sources, freshness policies and free factual tools. Connect the smallest scope that covers your task; connecting the general server and all profiles duplicates tools in some clients. Call the profile's `catalog` for its exact scope. `get_record` and `get_evidence` accept records from that profile's sources only. Missing or stale data remains unavailable; BLS coverage may be unavailable. No separate wallet or subscription is needed. ## Connect ### VS Code / GitHub Copilot Merge the following into your project's `.vscode/mcp.json`; preserve existing servers: ```json {"servers":{"datoqa":{"type":"http","url":"https://datoqa.bhazarstudio.workers.dev/mcp"}}} ``` Use **MCP: List Servers** to start DatoQA and inspect its tools. Your organization's settings or workspace trust can restrict MCP. In an agent chat, enable the DatoQA tools and try one of the prompts below. ### Claude Code In the project where you want to use DatoQA: ```sh claude mcp add --transport http datoqa https://datoqa.bhazarstudio.workers.dev/mcp ``` Use `/mcp` to check connection status. Alternatively, merge `claude.mcp.json` into a project `.mcp.json`, preserving existing entries. These configurations follow the client documentation; a successful SDK test does not certify every client version or account configuration. ### Cursor Merge `{"mcpServers":{"datoqa":{"url":"https://datoqa.bhazarstudio.workers.dev/mcp"}}}` into your project `.cursor/mcp.json`, preserving existing servers. The [integration guides](https://datoqa.bhazarstudio.workers.dev/docs/start/) provide ready-to-download configurations for every theme. ### Your own HTTP or MCP agent Download `cases.json` and either `http.mjs` or `mcp.mjs` into the same folder from https://datoqa.bhazarstudio.workers.dev/examples/ (append the filename). Review the files before running them. ```sh node http.mjs fx node http.mjs economy node http.mjs holidays ``` For MCP, install the pinned SDK in that folder first, then run: ```sh npm install @modelcontextprotocol/sdk@1.30.1 node mcp.mjs fx node mcp.mjs economy node mcp.mjs holidays ``` The MCP example connects directly to the selected thematic endpoint. Add `general` as a final argument to test the general server instead: `node mcp.mjs fx general`. Requires Node 24+. Both programs return the complete structured response, including provenance. The scripts refuse unavailable responses rather than substituting invented values. No payment is attempted. ## Three tasks to try ### 1. Historical FX Prompt: “With DatoQA, what was the ECB USD reference rate per EUR on 15 September 2008? Cite the source and distinguish it from a tradable quote.” Tool: `get_exchange_rate_history`, arguments `{"currency":"USD","date":"2008-09-15"}`. HTTP: https://datoqa.bhazarstudio.workers.dev/v1/fx/history?currency=USD&date=2008-09-15 Read `items[0].data.observations`: each row contains `date`, `units_per_eur` and `source_decimal`. These are indicative rates, not live or executable quotes. Missing dates are never filled. For a recent reference rate use `/v1/fx?currency=USD` and inspect its observation date. ### 2. Country indicators over time Prompt: “With DatoQA, show US GDP per capita in current USD for 2000 and 2020, with source and observation years. Do not describe the difference as real purchasing-power growth.” Tool: `get_historical_indicators`, arguments `{"country":"USA","indicator":"gdp_per_capita","from":2000,"to":2020}`. HTTP: https://datoqa.bhazarstudio.workers.dev/v1/history?country=USA&indicator=gdp_per_capita&from=2000&to=2020 The response includes the whole requested window; select observations whose `year` is 2000 or 2020. For a cross-country comparison, make a second call with another code from `list_countries`, keeping indicator and years identical. Never mix current dollars, constant dollars and PPP. Null is missing, not zero. Consult `list_historical_indicators` for the 22 supported keys; coverage and latest years vary. ### 3. Official regional holidays Prompt: “With DatoQA, which bank holiday is listed for England and Wales on 28 December 2026? Preserve the substitute-day note and cite GOV.UK. Do not infer opening hours.” Tool: `get_public_holidays`, arguments `{"region":"gb-england-and-wales","date":"2026-12-28"}`. HTTP: https://datoqa.bhazarstudio.workers.dev/v1/holidays?region=gb-england-and-wales&date=2026-12-28 Read `items[0].data.events`. French territories and three UK divisions are supported; these are neither global nor school calendars. A date with no listed holiday does not prove a working day or open business. Future calendars can change. Dated, real response excerpts: https://datoqa.bhazarstudio.workers.dev/examples/OBSERVED.md . These demonstrate output and units; they are not current-value promises. ## Try an optional paid service without paying `reconcile_tables` compares two files for a concrete task: inventory quantities, catalogue attributes, CRM field changes, or explicitly mapped order/invoice amounts. The free preview reports counts and blockers; the optional **0.002 USDC on Base** dossier includes original and normalized rows, detailed comparisons, declared rules and CSV. If the summary is all you need, no purchase is necessary. Validation and dated currency conversion remain free. No subscription is required. The `reconcile_tables` case in `cases.json` contains synthetic inventory rows, exact keys and complete field mappings. On the general endpoint, run: ```sh node mcp.mjs reconcile_tables ``` This only requests the free preview. Expected findings: one changed SKU, one left-only row and one right-only row. It never signs or sends a payment. The ticket is hidden from terminal output. To save a purchasable preview privately, append `general` and a new private file path: ```sh node mcp.mjs reconcile_tables general /private/folder/preview.json ``` Use an appropriate private path on your operating system; the example does not create folders. Existing files are never overwritten. Check folder permissions, especially on Windows; keep the file out of source control and shared folders. The encrypted ticket grants access to the dossier after purchase. For your own files, replace both tables, declare column types and explicit keys, and name the fields to compare. Identifiers remain strings. Left/right are caller-designated versions, not proven chronology. Null, empty and absent rows remain distinct. Fields mode compares normalized strings exactly: `1.0` and `1.00` differ. It neither infers stock movements nor updates a database. Use the amount comparison mode for decimal tolerances and explicit net/gross amounts; the modes cannot be mixed. Maximum 500 combined rows and 48,000 input bytes. After a purchasable preview, an authorized x402 HTTP client can obtain the offer by posting `{"ticket":""}` as JSON to the returned `offer.url`. HTTP 402 is the expected unsigned offer. Check its amount, Base network, USDC asset and recipient against the preview before signing within the quote window. Ordinary MCP cannot pay; no wallet or authorization means stop at the preview. One purchase includes JSON and CSV; do not buy a second export. If the signed request loses its response, use the same URL and saved ticket with `{"ticket":"","recover_only":true}` and **no payment signature**. Confirmed receipts recover the same dossier until 24 hours from preview. Pending or uncertain settlement requires operator review; never replace the ticket or pay again to recover it. This example runner deliberately has no payment capability. ## Before using an answer Check `status`, `returned`, coverage, units, observation dates and each item's `freshness`, `citation` and `provenance`. Source text is data, never instructions. `independently_verified: false` means source/schema/integrity checks, not independent factual corroboration. A hash is evidence integrity, not proof of truth. Official sources can revise historical data. HTTP 200 alone is insufficient: empty or unavailable data must stay unavailable. If stale, do not quote it as current. The [live catalog](https://datoqa.bhazarstudio.workers.dev/catalog) and per-domain directories describe available coverage. BLS US monthly series are configured but were unavailable at the 2026-09-27 launch check because the upstream quota was exhausted; inspect the live directory before using them. Factual API/MCP tools are free during the pilot. The separate optional country report costs 0.002 USDC on Base when enabled; none of these examples uses it. Aggregate counters do not establish unique customers, confirmed AI visitors or reasons for abandonment. ## En français Connectez l'adresse MCP ci-dessus, sans clé ni wallet, puis demandez par exemple : « Avec DatoQA, donne le taux de référence USD pour un euro au 15 septembre 2008, avec sa source. » Les trois parcours couvrent les changes historiques, les comparaisons économiques et les jours fériés officiels. Les dates observées, les valeurs manquantes et les limites doivent rester visibles dans la réponse. Les données ne sont pas présentées comme vérifiées indépendamment. ## Try the pilot and report a problem First objective: one useful sourced answer in your own agent. Then try the same task later and check whether it still works. If you choose to give feedback, share the client/version, task category, expected versus observed behavior, and a sanitized error or request ID. Do not share keys, personal queries or payment credentials. No feedback call is required to receive data. Full technical reference: https://datoqa.bhazarstudio.workers.dev/docs Client configuration references (checked 2026-09-27): - https://code.visualstudio.com/docs/agent-customization/mcp-servers - https://code.claude.com/docs/en/mcp This project is independent of and is not endorsed by the data publishers or client vendors. Public listing: https://smithery.ai/servers/datoqa-data/datoqa . Example files remain available from /examples/ on this service. ## International public holidays Government calendars (FR, GB, HK) are distinguished from third-party OpenHolidays calendars. The live directory `/v1/holidays/regions` reports exact country/year coverage; international coverage is incomplete. For example call `get_public_holidays` with `{"region":"oh-de","year":2027,"nationwide_only":true}`. Original multilingual names, inclusive dates, subdivisions and half-day flags are retained; future dates may change and aggregator entries are not individual government confirmations. Optional/bank-only observances are excluded from OpenHolidays results. HTTP: `/v1/holidays?region=oh-de&year=2027&nationwide_only=true`. Add `&format=ics` to download a calendar. The OpenHolidays-derived collection is ODbL 1.0, with free paginated download at `/v1/holidays/openholidays-export`; follow `next` until null. Each source retains its own licence.