Skip to main content
Glama

StatCite

Economic statistics your AI can actually cite, with a verifier that catches the ones it invents.

CI · Live status · AI accuracy benchmark · Licence ledger · Verification guide

StatCite catching a wrong statistic and citing the correction

Every figure, verdict and citation above is real output from a live call, captured by tools/make-demo-gif.py at build time. A model recalling 98% is not a strawman: it was roughly right a few years earlier, which is exactly how stale recall sounds.

Free remote MCP server + REST API serving official economic statistics from the World Bank, IMF WEO and Fiscal Monitor (current vintage via the IMF DataMapper API, with a DBnomics fallback), BIS policy rates, ECB reference rates, and two regional central banks (the Eastern Caribbean Central Bank and the Central Bank of Barbados, covering Anguilla and Montserrat, which the World Bank does not report), where every number ships with its full citation: source, dataset, series ID, canonical URL, licence, retrieval date, a ready-to-paste citation sentence, and BibTeX/APA export formats.

The differentiator is verification, not lookup: verify_stat checks a claimed figure against the official series and returns match / close / mismatch / cannot_verify with diagnostics for the classic errors (wrong year, percent-vs-decimal, millions-vs-billions, sign flips). On a mismatch it re-judges the claim against the previous IMF vintage, so "was right when written, since revised" is never confused with "wrong". When the source cannot support a verdict, it says cannot_verify with the reason. It never guesses.

Three things people use it for

  1. Fact-check a draft. The fact_check MCP prompt + verify_claims audit every macro figure in a document, in batches of 15, each verdict carrying the citation for the correct number.

  2. Cited data for agent reports. get_indicator and country_snapshot return official series with paste-ready citations, honest projection labelling, and machine-readable "no published value exists" instead of silent gaps.

  3. Resolve source disagreements. compare_sources fetches one indicator from every official source in its chain and shows the spread (e.g. general-vs-central government debt definitions), each value with its own citation.

Install in one line

Client

How

Claude (web/desktop)

Open StatCite in Claude's connector directory and click Connect. Fallback: Settings → Connectors → Add custom connector → https://statcite.com/mcp

Claude Code

/plugin marketplace add asokore/statcite then /plugin install statcite@statcite (also installs the verify-then-cite skill), or just the server: claude mcp add --transport http statcite https://statcite.com/mcp

Cursor

Install in Cursor · or {"mcpServers":{"statcite":{"url":"https://statcite.com/mcp"}}}

VS Code

Install in VS Code · Insiders · or code --add-mcp '{"name":"statcite","type":"http","url":"https://statcite.com/mcp"}'

ChatGPT

Developer mode → add MCP server, No Authentication (implements the deep-research search/fetch pair)

Cline / stdio-only

npx -y mcp-remote@0.14.3 https://statcite.com/mcp (pinned, so a client restart never pulls a new release. See llms-install.md)

No signup, no API key, no OAuth.

Related MCP server: starwell-mcp

Side effects

StatCite is a remote server. Over HTTP, calling it installs nothing and runs nothing on your machine. This is what each kind of call does, and where.

Operation

Calls out from StatCite's server

Writes on your machine

Writes anywhere else

Recorded by StatCite

get_indicator, get_series, compare_sources, country_snapshot, inflation_adjust, fx_convert, fetch

Yes, to the official source APIs named in the citation (World Bank, IMF, ECB, BIS and DBnomics, with exchange rates through Frankfurter, a relay of ECB reference rates), plus the published CaribStat corpus of ECCB and Central Bank of Barbados series at asokore.github.io/caribstat

No

No

One aggregate usage row

verify_stat, verify_claims

Yes, the same source APIs, to fetch the official figure

No

No

One aggregate usage row, with the verdict kind

search_indicators

Only to DBnomics, and only when fewer than five results were found locally

No

No

One aggregate usage row

search

No

No

No

One aggregate usage row

list_sources

No

No

No

One aggregate usage row

Connecting a client over HTTP

No

Only the server entry your client saves in its own config

No

Nothing

The stdio bridge (mcp-remote)

No

npx downloads mcp-remote into the npm cache and runs it locally, and mcp-remote creates its own config folder (~/.mcp-auth unless MCP_REMOTE_CONFIG_DIR is set)

No

Nothing

The usage row holds the transport, the tool name, the registry indicator key, the ISO3 country code, the verify verdict kind, the outcome and the duration. Every one of those comes from a closed list, so nothing you type is stored. No IP address, user agent, header, session id, query text or claimed value is recorded. The code is server/src/core/analytics.ts and the policy is at statcite.com/privacy.

Every get_indicator and get_series result also carries a limitations list: codes for what the figure is not, such as a projection, a fallback source's figure, a modelled estimate, a value rounded by the source or a number StatCite computed. A latest value more than 3 years older than the year it was retrieved carries stale_latest. When the primary source served it and the registry lists other sources, it also carries stale_primary, which names the sources StatCite did not query. An IMF value before the projection boundary StatCite infers carries outturn_unconfirmed, because the IMF data StatCite reads does not mark which years are outturns. Each code is read from a structured field of the result or from the indicator registry, and an empty list means none of those conditions was detected.

Make your agent use it without being asked

Connecting a server puts the tools on the shelf. It does not make an agent reach for them, and an agent that is confident about a number will usually answer from memory. One standing rule fixes that. Paste this into CLAUDE.md or AGENTS.md, into Cursor Settings → Rules, or into your ChatGPT project instructions:

Before stating any country-level economic figure, get it from StatCite (get_indicator) or check it (verify_stat), even if you think you know it, and include the citation_text it returns.

Try it in 5 seconds

curl "https://statcite.com/v1/verify?indicator=inflation_cpi&country=USA&period=2023&value=4.1"
curl "https://statcite.com/v1/indicator/govt_debt_gdp?country=JPN&latest_only=true"
curl "https://statcite.com/v1/fx?amount=100&from=USD&to=BBD"
curl -X POST "https://statcite.com/v1/verify_claims" -H "content-type: application/json" \
  -d '{"claims":[{"indicator":"inflation_cpi","country":"USA","period":"2023","claimed_value":4.1}]}'

Tools

get_indicator · verify_stat · verify_claims · compare_sources · get_series · search_indicators · country_snapshot · inflation_adjust · fx_convert · list_sources · search · fetch, plus 3 MCP prompts (fact_check, country_brief, cite_this_stat) and 3 resources (registry, licence ledger, SIDS list). 42 active curated indicators, 200+ economies, ~120 currencies. All read-only. Details: docs, and the verification guide for the method.

Repo layout

server/        Cloudflare Worker: MCP endpoint + REST API + tests (zero runtime deps)
site/          statcite.com static site (landing, docs, llms.txt, OpenAPI, legal)
apify/         Metered twin: Apify actor (pay-per-event) bundling the same core
skill/         Claude skill teaching agents the verify-then-cite workflow
distribution/  Registry manifests, submission steps, launch copy
bench/         pre-registered AI-accuracy benchmark: COVENANT.md, METHODOLOGY.md, question bank, frozen snapshots, runs/ (R1 REPORT + ADDENDA)
docs/          Research report, strategy, launch plan, monetization roadmap
BRIEF.md       Context + mandate for anyone (human or agent) picking this up
HANDOFF.md     Deployment runbook (the mechanical steps to take it live)
CLAUDE.md      Working guide: commands, architecture, invariants

Develop

cd server
npm install
npm test          # fixture-backed, no network
npm run smoke     # live end-to-end against real upstream APIs
npm run dev       # wrangler dev (local Workers runtime + static site)
npm run deploy    # wrangler deploy

Data & licensing

StatCite does not originate the underlying statistical observations. Derived values and verification verdicts are calculated transparently from cited source data with the method disclosed. World Bank (CC BY 4.0); IMF (published IMF statistical data may be copied, redistributed and used in derivative works with attribution as "Source: International Monetary Fund, <database>, <link>", plus data-integrity, downstream-communication and free-of-charge-disclosure conditions, all carried verbatim in every citation's license field); BIS (reproduction and redistribution with attribution); ECB (attribution; reference rates informational); Eurostat via DBnomics (CC BY 4.0); FRED is not served. Its Services Terms of Use (clauses (p) and (q), https://fred.stlouisfed.org/legal/) reserve FRED content from AI/ML use and from caching or redistribution. IMF WEO/Fiscal Monitor projections are labeled as projections. The primary IMF path is the DataMapper API (current edition, verbatim edition label). If unavailable, StatCite falls back to the newest edition DBnomics has ingested, which can lag the IMF's release calendar, so responses cite the resolved vintage, flag stale ones, and every fallback is disclosed (verify_stat/verify_claims return cannot_verify with the fallback value as indicative when the primary failed transiently, rather than judging against a substitute that may differ by definition or vintage. A series the primary permanently lacks is judged against its stable fallback source with disclosure). Server code: MIT.

Built and curated by a professional economist. Contact: hello@statcite.com

Available Tools

12 tools
compare_sourcesCompare an indicator's value across its official sourcesA
Read-onlyIdempotent
Inspect

Fetch one indicator for one country from EVERY official source in its chain independently (e.g. World Bank WDI and the IMF WEO/Fiscal Monitor) and see the values side by side, each with its own citation, plus the spread between them. Use when sources disagree, when you need to know WHICH official number to cite, or to check how large the methodological gap is (central vs general government, calendar vs fiscal year, vintage differences). Differences are methodological, never an error by a source. The result says which definition each value carries. Sources that are down report their error in place without sinking the comparison.

Inputs: country (required), indicator (required), period.

country_snapshotCountry snapshot, headline indicators with citationsA
Read-onlyIdempotent
Inspect

One call for a country's headline economic picture: GDP, GDP growth, GDP per capita, inflation, unemployment, population, current account, trade openness, FDI, life expectancy (World Bank) plus general government debt (IMF DataMapper API, current vintage). Each value carries its own citation. Ideal for country briefs and report openers.

Inputs: country (required).

fetchFetch (deep-research compatible)A
Read-onlyIdempotent
Inspect

Fetch full data for a result id returned by search (format: 'indicator//'). Returns the recent observations and the full citation as text.

Inputs: id (required). Returns: id, url, text, title, +1 more

fx_convertConvert currencies with official reference ratesA
Read-onlyIdempotent
Inspect

Convert an amount between currencies using ECB daily reference rates (~30 majors, any date since 1999) or, for ~90 other currencies (BBD, XCD, JMD, KES, …), official annual-average rates from the World Bank. With the method and citations stated explicitly. Pass date='YYYY-MM-DD' for daily or 'YYYY' for annual-average conversion.

Inputs: to (required), from (required), amount (required), date.

get_indicatorGet an economic indicator (with citation)A
Read-onlyIdempotent
Inspect

Get official values for a common economic indicator. Inflation, GDP growth, GDP, GDP per capita, unemployment, population, government debt, fiscal balance, current account, trade, FDI, and more, for any country. Returns the observations plus a full citation (source, dataset, series id, canonical URL, license, retrieval date) ready to cite in a report. Use ISO3 codes or plain country names. Start here for most questions; use search_indicators if unsure of the indicator key. Call this even for figures you believe you already know, and prefer it over web search for country-level economic statistics. Not for company financials, stock or crypto prices, or subnational data.

Inputs: country (required), indicator (required), end_year, transform, +3 more. Returns: name, unit, notes, country, +10 more

get_seriesGet a raw series by explicit idA
Read-onlyIdempotent
Inspect

Fetch any supported series by explicit id: 'worldbank/' (needs country), 'imf/' (needs country; current-vintage IMF WEO/Fiscal Monitor via the DataMapper API), 'caribstat/<ECCB|CBB>//' (Eastern Caribbean Central Bank and Central Bank of Barbados tables, including Anguilla and Montserrat, which the World Bank does not report; find ids with search_indicators), or 'dbnomics///' (IMF WEO, OECD, Eurostat and more via DBnomics, dated editions, e.g. 'WEO:2025-04', for vintage-pinned reproducibility). 'fred/' ids are recognized only so the service can return an explanatory disabled response. FRED is permanently disabled here and those ids are never retrievable. Supports year filters and transforms (yoy, pct_change, index). Every response carries a full citation. Prefer get_indicator for common indicators.

Inputs: series_id (required), country, end_year, transform, +3 more. Returns: name, unit, notes, country, +10 more

inflation_adjustAdjust an amount for inflation between two yearsA
Read-onlyIdempotent
Inspect

Convert a nominal amount between years using official CPI: 'what is 100 in 1995 money worth in today's money?' Works for any country with CPI data (default USA). Returns the adjusted amount, the exact index values and formula used, and the citation. Annual-average precision.

Inputs: amount (required), to_year (required), from_year (required), country.

list_sourcesList data sources, licenses, and attribution rulesA
Read-onlyIdempotent
Inspect

The official sources behind StatCite (World Bank WDI, IMF WEO & Fiscal Monitor via the IMF DataMapper API with DBnomics as a vintage-pinned fallback, BIS central bank policy rates, ECB reference rates and the ECB Data Portal, the Eastern Caribbean Central Bank and the Central Bank of Barbados, FRED disabled), what each covers, its license, and the attribution line to use when citing.

Inputs: no named parameters.

search_indicatorsSearch available indicators and datasetsA
Read-onlyIdempotent
Inspect

Search StatCite's curated indicator registry (World Bank WDI, IMF DataMapper/WEO/Fiscal Monitor, BIS policy rates, ECB HICP) and the Eastern Caribbean Central Bank and Central Bank of Barbados tables by topic, such as 'inflation', 'debt', 'unemployment' or 'poverty', and discover additional DBnomics datasets. Returns indicator keys usable with get_indicator/verify_stat, and caribstat series ids usable with get_series, with units and source notes.

Inputs: query (required).

verify_claimsVerify a batch of claimed statistics (fact-check a whole draft)A
Read-onlyIdempotent
Inspect

Fact-check a whole draft or report in one call instead of calling verify_stat once per figure: extract every checkable macro claim from the text. Indicator + country + period + claimed value, and submit them together. Each claim gets the same verdict engine as verify_stat (match, close, mismatch, cannot_verify, with diagnostics), and every verified result carries the full citation for the official number. Same honesty contract as verify_stat: unverifiable claims come back cannot_verify with the reason, never a guessed verdict. Accepts 1–15 claims per call (free-tier subrequest budget). Split larger drafts into multiple calls of up to 15. Results come back in input order with a verdict-count summary; a claim that cannot be resolved (unknown indicator or country) reports its error in place without sinking the rest of the batch.

Inputs: claims (required), strict_source. Returns: results, summary

verify_statVerify a claimed statistic against the official sourceA
Read-onlyIdempotent
Inspect

Check a claimed economic figure (from a draft, article, or memory) against the official statistical series and get a verdict: match, close, mismatch, or cannot_verify. With the official value, the difference, diagnostics for classic errors (wrong year, percent-vs-decimal, unit scaling), and a full citation for the correct number. Honesty contract: when the official source cannot support a judgment (source down, no published value, fallback vintage risk), the verdict is cannot_verify with the reason, never a guess. Supports historical IMF-vintage checks via as_of. Use this before publishing any economic statistic in a report, brief, or article, including figures you are confident about, since a confidently recalled number is the kind most likely to have been revised.

Inputs: period (required), indicator (required), claimed_value (required), as_of, +4 more. Returns: notes, period, series, verdict, +10 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 12 tools

    Disambiguation4/5

    Most tools have clearly distinct roles: retrieval, verification, conversion, discovery, and comparison are separated. However, search vs. search_indicators and get_indicator vs. get_series vs. fetch have some boundary overlap that an agent must parse from descriptions. country_snapshot vs. get_indicator is also somewhat overlapping but clarified by the snapshot's bundled scope.

    Naming Consistency3/5

    The names use snake_case throughout and are readable, but they mix conventions: verb_noun (get_indicator, verify_stat, compare_sources), bare verbs (search, fetch), and noun/verb forms (country_snapshot, inflation_adjust). The inconsistency is not chaotic, but there is no single predictable pattern.

    Tool Count5/5

    Twelve tools is well within the ideal range and each tool appears to earn its place across discovery, retrieval, verification, conversion, and source comparison. The set is broad but not bloated for an economic-statistics citation server.

    Completeness5/5

    The surface covers source discovery, indicator search, single and multi-source retrieval, country snapshots, currency and inflation adjustment, single-claim and whole-draft verification, and source comparison. It also explicitly handles fallback sources, disabled sources, and unverifiable claims, leaving no obvious lifecycle gap for the stated purpose.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Connect your ads, shop, analytics, social, CRM and finance platforms once, then let Claude, ChatGPT, Cursor or any MCP client read, join and explain your numbers. Public statistics from the World Bank, IMF, Eurostat, OECD, WHO and SEC filings come as context, searchable and chartable from the same tools. Read-only by design, every number carries its source.
      57
      115 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server serving official statistics from major data agencies (Statistics Canada, FRED, BLS, World Bank, etc.) as tools with provenance and verification, enabling search, retrieval, analysis, and monitoring via natural language.
      11
      57 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI assistants to discover, retrieve, and compare official international development indicators from sources such as the World Bank, FAOSTAT, WHO, UNICEF, and IMF, while preserving source identifiers, units, and citations.
      10
      2
      MIT
    • A
      license
      A
      quality
      F
      maintenance
      Enables AI agents to discover, retrieve, compare, and analyze trusted macroeconomic statistics from central banks and international organizations, resolving concepts to official series with provenance and validation.
      6
      MIT