Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Verify Report Figures

verify_report_figures
Read-onlyIdempotent

Check EVERY number in one of your own reports against the filing it cites, in one call. Returns a verdict per figure: matches (the prose quotes the filing's own rendered string), differs (positive evidence the filing says something else — the report is wrong), or not_checkable (no comparison was possible). CALL THIS BEFORE publish_report OR sign_off_report. publish_report REFUSES a report carrying an unreviewed differs, so running this first is how you find out what to fix instead of being refused. TO FIX A differs: rewrite the figure by quoting verdict.display character-for-character (or verdict.derived_quarterly_display if you meant the quarter rather than the year-to-date number) with update_report, then call this again. A non-empty verdict.scope means the citation points at the WRONG FILING — re-quoting will not fix that; correct the citation. If the report's number is right and the comparison is not (an external source, a deliberate restatement), record a human disposition with save_figure_review — a reviewed figure no longer blocks publishing. ⚠️ not_checkable IS NOT A PASS AND IS NOT A RETRY. It means nobody compared anything — a figure with no fact, a fact with no rendered string, a lookup that failed. Report it as unverified; do not call the tool again expecting a different answer, and never present it as verified. Expect it to be a large share of any real report. untraced is counted separately from not_checkable on purpose: a figure that never had a source is a different finding from one whose source could not be read. Nothing here is stored — a verdict is recomputed every call, because a later filing can restate a number and an edit changes a figure's identity. Only the report's author can verify it; a report that is not yours is indistinguishable from one that does not exist. Tier: sp500+ (sample rejected). Free — provenance calls are never charged.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
report_idYesIdentifier of the report to verify, as returned by create_report / list_my_reports / save_freeform_report. Must be authored by the calling customer.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
_metaYesProvenance envelope — data lineage for every MCP response
figuresYesOne entry per distinct figure in the report's prose. An empty array means the report states no numbers.
lineageYesEvery lineage that resolved, keyed by fact_id — the filing behind each figure, so you can cite it without a second call. A fact that did NOT resolve is absent; its figure's verdict already says why.
summaryYes
versionYesThe report version verified. Null when unrecorded — a version we could not read is not version zero.
coverageYes
report_idYesThe report these verdicts describe.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / _meta / properties / fundamentals_as_of / description
      Previous value: -"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt. Use THIS — not `last_updated` — when telling a user how current the fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to."New value: +"ISO timestamp when the FINANCIAL STATEMENTS were last rebuilt in bulk. Use THIS — not `last_updated` — when telling a user how current the cross-sectional fundamentals are. The snapshot is republished on every weekday price refresh while the statements are carried forward unchanged, so `last_updated` can be far more recent than the numbers it sits next to. It is a floor for a single filer, not a ceiling: a filer with a live partition receives its filing, facts and ratios intraday (minutes after EDGAR dissemination), so an entity-scoped read may carry a filing newer than this; cross-sectional ranks (factor scores, earnings signals) refresh with the weekly bulk export."
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, openWorldHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavioral context: verdicts are recomputed every call, nothing is stored, later filings can restate numbers, and editing changes a figure's identity. It also clarifies the semantic distinction between not_checkable and untraced, and what scope means for wrong citations. This goes far beyond the structured annotations and no contradiction exists.

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?

The description is long but every clause earns its place — it packs verdict semantics, workflow sequencing, error handling, and caveats. It is front-loaded with the core action and verdict definitions, then moves to procedural guidance. While dense, the length is justified given the tool's complexity; it avoids redundant filler.

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 complex verification tool, the description is exceptionally complete. It explains not only what the tool returns (verdicts) but also how to interpret each outcome, what to do next, what not to do, and the tool's stateless, recompute-on-call behavior. The existence of an output schema further relieves the need to document return structure, and the description covers all remaining operational context an agent needs.

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?

The single parameter report_id already has 100% schema description coverage, including its source formats and the authoring constraint. The description reinforces this by stating 'Only the report's author can verify it' but does not add new format or syntax details. Per the rubric, when schema coverage is high, the baseline is 3, and the described behavior matches the schema without adding further parameter-level meaning.

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?

The description begins with a specific verb and resource: 'Check EVERY number in one of your own reports against the filing it cites, in one call.' It enumerates the three verdict types (matches, differs, not_checkable), making the tool's function unmistakable. It also differentiates itself from related workflow tools by explicitly naming publish_report, update_report, and save_figure_review, and its focus on report figures vs. generic fact checking is clear from the sibling context.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'CALL THIS BEFORE publish_report OR sign_off_report' and explains the consequence of not doing so (publish_report REFUSES an unreviewed differs). It also provides clear post-conditions and alternatives: use update_report to fix a differs, save_figure_review for human disposition, and do NOT retry on not_checkable. The author-only constraint and free-tier note further refine usage.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.