Skip to main content
Glama

Verify a claimed statistic against the official source

verify_stat
Read-onlyIdempotent

Check a claimed economic figure against official World Bank, IMF, or ECB series to get a verdict—match, close, mismatch, or cannot_verify—with the correct value and citation.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_ofNoHistorical IMF-vintage verification: judge the claim against the dated IMF WEO edition resolved from this date, e.g. '2019-04', '2019', instead of today's live data. Resolution is a conservative month calendar (editions flip May 1 / Nov 1, not the IMF's exact release days) and always verifies against a dated WEO edition even when the indicator's live primary is World Bank WDI or the IMF Fiscal Monitor. The response's as_of object and notes disclose both, so present results as 'matched the IMF WEO {vintage} edition', never 'was true at the time'. Recent editions serve from the IMF's own dated vintage dataflows (api.imf.org) directly, with DBnomics's dated editions as the deep archive, the citation names which one served. Only supported for the six WEO-dated registry indicators (gdp_growth, current_account_gdp, govt_debt_gdp, fiscal_balance_gdp, govt_revenue_gdp, govt_expenditure_gdp); rejects with advice otherwise, and impossible calendar dates are rejected.
periodYesPeriod of the claim, usually a year: '2024'.
countryNoCountry for registry indicators / World Bank series.
indicatorYesRegistry key ('inflation_cpi', 'gdp_growth', …) or explicit series id ('worldbank/FP.CPI.TOTL.ZG', 'imf/NGDP_RPCH', 'dbnomics/IMF/WEO:latest/USA.NGDP_RPCH.pcent_change').
claimed_valueYesThe value as claimed (in the series' own units).
strict_sourceNoReproducibility mode: never verify against a fallback source, error instead if the primary source fails. Default false; without it, a verify served from a transient-failure fallback returns cannot_verify with the fallback value as indicative (fallback_used=true), while a fallback for a series the primary permanently lacks (e.g. Taiwan in WDI) is judged normally with disclosure.
tolerance_absNoOptional absolute tolerance in series units (e.g. 0.1 percentage points).
tolerance_pctNoOptional relative tolerance in percent.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesYes
periodYes
seriesYes
verdictYes
citationYes
differenceYes
diagnosticsYes
explanationYes
claimed_valueYes
is_projectionYes
status_methodYes
official_valueYes
observation_statusYes
relative_difference_pctYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.11.3
    • changedInput schema / properties / as_of / description
      Previous value: -"Historical IMF-vintage verification: judge the claim against the dated IMF WEO edition resolved from this date — e.g. '2019-04', '2019' — instead of today's live data. Resolution is a conservative month calendar (editions flip May 1 / Nov 1, not the IMF's exact release days) and always verifies against a dated WEO edition even when the indicator's live primary is World Bank WDI or the IMF Fiscal Monitor — the response's as_of object and notes disclose both, so present results as 'matched the IMF WEO {vintage} edition', never 'was true at the time'. Recent editions serve from the IMF's own dated vintage dataflows (api.imf.org) directly, with DBnomics's dated editions as the deep archive — the citation names which one served. Only supported for the six WEO-dated registry indicators (gdp_growth, current_account_gdp, govt_debt_gdp, fiscal_balance_gdp, govt_revenue_gdp, govt_expenditure_gdp); rejects with advice otherwise, and impossible calendar dates are rejected."New value: +"Historical IMF-vintage verification: judge the claim against the dated IMF WEO edition resolved from this date, e.g. '2019-04', '2019', instead of today's live data. Resolution is a conservative month calendar (editions flip May 1 / Nov 1, not the IMF's exact release days) and always verifies against a dated WEO edition even when the indicator's live primary is World Bank WDI or the IMF Fiscal Monitor. The response's as_of object and notes disclose both, so present results as 'matched the IMF WEO {vintage} edition', never 'was true at the time'. Recent editions serve from the IMF's own dated vintage dataflows (api.imf.org) directly, with DBnomics's dated editions as the deep archive, the citation names which one served. Only supported for the six WEO-dated registry indicators (gdp_growth, current_account_gdp, govt_debt_gdp, fiscal_balance_gdp, govt_revenue_gdp, govt_expenditure_gdp); rejects with advice otherwise, and impossible calendar dates are rejected."
    • changedInput schema / properties / strict_source / description
      Previous value: -"Reproducibility mode: never verify against a fallback source — error instead if the primary source fails. Default false; without it, a verify served from a transient-failure fallback returns cannot_verify with the fallback value as indicative (fallback_used=true), while a fallback for a series the primary permanently lacks (e.g. Taiwan in WDI) is judged normally with disclosure."New value: +"Reproducibility mode: never verify against a fallback source, error instead if the primary source fails. Default false; without it, a verify served from a transient-failure fallback returns cannot_verify with the fallback value as indicative (fallback_used=true), while a fallback for a series the primary permanently lacks (e.g. Taiwan in WDI) is judged normally with disclosure."
  2. Changed2 schema fields changedv1.11.0
    • changedInput schema / properties / as_of / description
      Previous value: -"Historical IMF-vintage verification: judge the claim against the dated IMF WEO edition resolved from this date — e.g. '2019-04', '2019' — instead of today's live data. Resolution is a conservative month calendar (editions flip May 1 / Nov 1, not the IMF's exact release days) and always uses the WEO archive even when the indicator's live primary is World Bank WDI or the IMF Fiscal Monitor — the response's as_of object and notes disclose both, so present results as 'matched the IMF WEO {vintage} edition', never 'was true at the time'. Only supported for registry indicators with a dated IMF DBnomics definition (gdp_growth, current_account_gdp, govt_debt_gdp, fiscal_balance_gdp, govt_revenue_gdp, govt_expenditure_gdp); rejects with advice otherwise, and impossible calendar dates are rejected."New value: +"Historical IMF-vintage verification: judge the claim against the dated IMF WEO edition resolved from this date — e.g. '2019-04', '2019' — instead of today's live data. Resolution is a conservative month calendar (editions flip May 1 / Nov 1, not the IMF's exact release days) and always verifies against a dated WEO edition even when the indicator's live primary is World Bank WDI or the IMF Fiscal Monitor — the response's as_of object and notes disclose both, so present results as 'matched the IMF WEO {vintage} edition', never 'was true at the time'. Recent editions serve from the IMF's own dated vintage dataflows (api.imf.org) directly, with DBnomics's dated editions as the deep archive — the citation names which one served. Only supported for the six WEO-dated registry indicators (gdp_growth, current_account_gdp, govt_debt_gdp, fiscal_balance_gdp, govt_revenue_gdp, govt_expenditure_gdp); rejects with advice otherwise, and impossible calendar dates are rejected."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "citation": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "claimed_value": {
      +      "type": "number"
      +    },
      +    "diagnostics": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "difference": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "explanation": {
      +      "type": "string"
      +    },
      +    "is_projection": {
      +      "type": "boolean"
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "observation_status": {
      +      "type": "string"
      +    },
      +    "official_value": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "period": {
      +      "type": "string"
      +    },
      +    "relative_difference_pct": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "series": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "status_method": {
      +      "type": "string"
      +    },
      +    "verdict": {
      +      "enum": [
      +        "match",
      +        "close",
      +        "mismatch",
      +        "cannot_verify"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "verdict",
      +    "claimed_value",
      +    "official_value",
      +    "is_projection",
      +    "observation_status",
      +    "status_method",
      +    "period",
      +    "difference",
      +    "relative_difference_pct",
      +    "explanation",
      +    "diagnostics",
      +    "series",
      +    "citation",
      +    "notes"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing the honesty contract (cannot_verify with reason rather than a guess), fallback-source behavior for transient vs. permanent source gaps, and the conservative month-calendar vintage resolution caveat. These are exactly the behavioral traits an agent needs and that annotations cannot convey.

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?

Front-loads the verdict outcome and value-add, then layers the honesty contract and usage trigger. It is a dense block of long sentences — slightly verbose for what it conveys — but each sentence carries distinct information with minimal waste.

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?

For a verification tool with an output schema already present, the description covers purpose, verdict semantics, error/diagnostic behavior, fallback caveats, and historical-mode limits — nothing material to correct invocation is missing.

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 schema already carries detailed semantics for as_of, strict_source, tolerances, etc. The description reinforces the historical as_of capability and diagnostic outputs, but adds little parameter detail the schema lacks — the appropriate baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') and resource ('a claimed economic figure') against the 'official statistical series,' and even enumerates the outcome space (match, close, mismatch, cannot_verify). This cleanly separates it from retrieval siblings (get_indicator, get_series) and from the batch-oriented verify_claims.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear, actionable usage context — 'Use this before publishing any economic statistic in a report, brief, or article' — and adds a non-obvious trigger ('including figures you are confident about, since a confidently recalled number is the kind most likely to have been revised'). It does not, however, explicitly distinguish itself from the sibling verify_claims or explain when the single-stat path is preferred over the plural one.

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