{"openapi":"3.1.0","info":{"title":"DatoQA","version":"0.6.0","description":"Pilot sourced data: World Bank annual history, Eurostat monthly/quarterly economics, ECB reference FX, ten US NWS forecasts, global USGS past-week earthquakes and latest twenty French product recalls. Inspect /v1/topics and each response coverage. Official-source checks are not independent verification."},"servers":[{"url":"/"}],"paths":{"/mcp-profiles":{"get":{"summary":"Discover the three focused MCP endpoints and their tool scopes","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/us/economy/indicators":{"get":{"summary":"BLS US monthly CPI-U index, unemployment rate and total nonfarm employment: units, adjustments, periods and freshness","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/us/economy":{"get":{"summary":"Original BLS monthly series with decimal strings, notes and evidence; rolling ten calendar years","responses":{"200":{"description":"Monthly observations or explicit no_numeric_data_in_period","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid indicator, limit or period combination","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Period outside published coverage","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Source missing or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"indicator","required":true,"schema":{"type":"string","enum":["consumer_price_index","unemployment","nonfarm_employment"]}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":120,"default":12,"description":"Last monthly periods; mutually exclusive with period"}},{"in":"query","name":"period","schema":{"type":"string","pattern":"^[0-9]{4}-(0[1-9]|1[0-2])$","description":"Exact published month; mutually exclusive with limit"}}]}},"/v1/interest-rates/series":{"get":{"summary":"Bank of Canada: two monetary policy rate series, available years since 2010, latest publication and freshness","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/interest-rates":{"get":{"summary":"Canadian overnight target or Bank rate, percent; latest by default, optional year or exact date","responses":{"200":{"description":"Published daily rate observations with decimals and provenance; missing dates not filled","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid series/year/date","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Year not covered","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Source expired or unavailable","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"series","required":true,"schema":{"type":"string","enum":["overnight_target","bank_rate"]}},{"in":"query","name":"year","schema":{"type":"integer","minimum":2010,"description":"Mutually exclusive with date"}},{"in":"query","name":"date","schema":{"type":"string","format":"date","description":"Exact observation date, not announcement date. Mutually exclusive with year."}}]}},"/v1/holidays/regions":{"get":{"summary":"Official holiday calendars: available French and UK territories, years and retrieval status","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/holidays":{"get":{"summary":"Holidays listed in the official regional source for one year or exact local date; does not determine business opening hours","responses":{"200":{"description":"Source titles, local dates and notes, coverage and evidence; no_holiday_listed_for_date is not proof of a working day","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid region/year/date combination","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Year outside source coverage","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Source unavailable or expired","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"region","required":true,"schema":{"type":"string","description":"Region id from /v1/holidays/regions"}},{"in":"query","name":"year","schema":{"type":"integer","minimum":2000,"description":"Default current year, mutually exclusive with date"}},{"in":"query","name":"date","schema":{"type":"string","format":"date","description":"Exact local civil date, mutually exclusive with year"}}]}},"/v1/fx/history/currencies":{"get":{"summary":"ECB daily historical FX: currencies, available years since 1999, counts and freshness gaps","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/fx/history":{"get":{"summary":"One currency and year of ECB EUR-based reference rates, or an exact observation date; no carry-forward","responses":{"200":{"description":"Daily decimal rates, nulls, source evidence and coverage; no_numeric_data_in_period when unavailable on the requested date","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid currency/year/date combination","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Year or currency unavailable or expired; consult directory","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"currency","required":true,"schema":{"type":"string","pattern":"^[A-Z]{3}$","description":"Currency from /v1/fx/history/currencies; EUR is the base, not a quoted series"}},{"in":"query","name":"year","schema":{"type":"integer","minimum":1999,"description":"Default current year. Mutually exclusive with date."}},{"in":"query","name":"date","schema":{"type":"string","format":"date","description":"Exact source date only, mutually exclusive with year. No prior-day substitution."}}]}},"/v1/topics":{"get":{"summary":"Browse DatoQA data themes, coverage and tools","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/economy/indicators":{"get":{"summary":"Eurostat monthly/quarterly series, supported EU/EFTA country codes, units and collection status","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/economy":{"get":{"summary":"Eurostat inflation, unemployment or real GDP growth since 2020 through latest published periods","responses":{"200":{"description":"Observations with nulls, source flags, definitions and provenance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Series unavailable or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"country","required":true,"schema":{"type":"string","description":"Eurostat two-letter code from /v1/economy/indicators; Greece = EL"}},{"in":"query","name":"indicator","required":true,"schema":{"enum":["inflation","unemployment","gdp_growth"]}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":240,"default":24,"description":"Last N periods, including null values"}},{"in":"query","name":"language","schema":{"enum":["en","fr"],"default":"en"}}]}},"/v1/earthquakes":{"get":{"summary":"USGS global M2.5+ earthquakes in the past-week feed, cached hourly; not an early-warning service","responses":{"200":{"description":"Recent events with source review status, magnitude type, time, coordinates, evidence and feed coverage","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Snapshot unavailable or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"min_magnitude","schema":{"type":"number","minimum":2.5,"maximum":10,"default":2.5}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}]}},"/v1/history/indicators":{"get":{"summary":"List twenty-two World Bank historical indicators and collection status","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/history":{"get":{"summary":"Annual World Bank historical series since 1960; nulls retained, not independently verified","responses":{"200":{"description":"Series with units, definitions, years and provenance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Series unavailable or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"country","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9]{3}$"}},{"in":"query","name":"indicator","required":true,"schema":{"type":"string","description":"Key from /v1/history/indicators"}},{"in":"query","name":"from","schema":{"type":"integer","minimum":1960}},{"in":"query","name":"to","schema":{"type":"integer","minimum":1960}},{"in":"query","name":"language","schema":{"enum":["en","fr"],"default":"en"}}]}},"/v1/weather/locations":{"get":{"summary":"Supported US city grid points for official NWS forecasts; directory does not guarantee fresh availability","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/weather":{"get":{"summary":"NWS forecast, Celsius day/night periods; not current observations","responses":{"200":{"description":"Forecast with source update, periods, grid point, provenance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Missing or invalid city","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unsupported city","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Forecast unavailable or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"city","required":true,"schema":{"type":"string","description":"Slug from /v1/weather/locations, e.g. oklahoma-city"}}]}},"/v1/fx":{"get":{"summary":"ECB indicative exchange reference rates against EUR; original data freely available from ECB","responses":{"200":{"description":"Rates with source date and provenance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid currency","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Currency not in this snapshot","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Source unavailable or stale","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"currency","schema":{"type":"string","pattern":"^[A-Z]{3}$"}}]}},"/v1/countries":{"get":{"summary":"List the current World Bank country and territory catalog","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/paid/country-report":{"get":{"summary":"Country report plus source evidence: 0.002 USDC on Base if enabled","responses":{"200":{"description":"Report after settlement","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"x402 v2 PAYMENT-REQUIRED header","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unsupported country","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Report or payments unavailable; no charge","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"country","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9]{3}$"}},{"in":"query","name":"language","schema":{"enum":["en","fr"],"default":"en"}}]}},"/v1/indicators":{"get":{"summary":"Annual World Bank population, GDP and CPI inflation: countries and territories worldwide, five completed years","responses":{"200":{"description":"Scoped annual series, definitions, units, footnotes, citations and freshness. Null is missing, not zero; inspect status.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Unsupported country, indicator or language","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"country","schema":{"type":"string","pattern":"^[A-Z0-9]{3}$","description":"World Bank code from /v1/countries","default":"FRA"}},{"in":"query","name":"indicator","schema":{"type":"string","enum":["population","gdp","inflation"]}},{"in":"query","name":"language","schema":{"type":"string","enum":["en","fr"],"default":"en"}}]}},"/health":{"get":{"summary":"Service and D1 health","responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/catalog":{"get":{"summary":"Discover capabilities and record availability","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/sources":{"get":{"summary":"List approved sources","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}]}},"/v1/records/{id}":{"get":{"summary":"Read a verified record with provenance","responses":{"200":{"description":"Record and provenance","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid identifier","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"No available record","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}]}},"/v1/payments/status":{"get":{"summary":"Separate x402 testnet and mainnet configuration status","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/recalls":{"get":{"summary":"Search the latest 20 RappelConso notices; partial coverage","responses":{"200":{"description":"Inspect status and coverage before using results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecallSearch"}}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Service unavailable","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"query","name":"q","schema":{"type":"string","maxLength":80}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":20,"default":20}}]}},"/v1/records/{id}/evidence":{"get":{"summary":"Source snapshot and SHA-256 integrity digest","responses":{"200":{"description":"Evidence","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unavailable","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}]}},"/v1/admin/sync/rappelconso":{"post":{"summary":"Refresh the bounded RappelConso snapshot","security":[{"adminToken":[]}],"responses":{"200":{"description":"Imported atomically","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object"}}}},"409":{"description":"Already syncing","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Source or storage unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/testnet/paid-demo":{"get":{"summary":"Synthetic x402 demo on Base Sepolia only","responses":{"200":{"description":"Synthetic demo after verified test payment","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"type":"object"}}},"headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string"},"description":"Base64-encoded x402 v2 requirements"}}},"503":{"description":"Testnet payments not configured or unavailable","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/admin/status":{"get":{"summary":"Administrative diagnostics","responses":{"200":{"description":"Diagnostics","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Not configured","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"adminToken":[]}]}},"/mcp":{"post":{"summary":"MCP Streamable HTTP endpoint (stateless, JSON responses)","description":"Use an MCP client supporting Streamable HTTP. Tools: catalog, list_sources, get_record, search_recalls, get_indicators, list_countries, get_evidence, get_exchange_rates, get_weather, list_weather_locations, list_topics, list_economic_indicators, get_economic_indicators, get_earthquakes, list_historical_indicators, get_historical_indicators. Send Accept: application/json, text/event-stream.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Notification accepted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Origin rejected","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Request too large","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"adminToken":{"type":"http","scheme":"bearer"}},"schemas":{"RecallSearch":{"type":"object","required":["schema_version","status","as_of","items","returned","coverage","interpretation"],"properties":{"schema_version":{"const":"1.1"},"status":{"enum":["source_unavailable","source_stale","matches_in_partial_coverage","no_match_in_partial_coverage"]},"as_of":{"type":"string","format":"date-time"},"items":{"type":"array","maxItems":20,"items":{"type":"object","required":["id","data","provenance","freshness","citation"]}},"returned":{"type":"integer","minimum":0,"maximum":20},"coverage":{"type":"object","required":["complete","stale","collection_degraded"],"properties":{"complete":{"const":false},"stale":{"type":"boolean"},"collection_degraded":{"type":"boolean"},"age_seconds":{"type":["integer","null"],"minimum":0},"max_age_seconds":{"const":86400}}},"interpretation":{"type":"object","properties":{"proves_no_recall":{"const":false},"proves_product_safe":{"const":false},"independently_verified":{"const":false}}}}}}}}