Skip to main content
Glama

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

Get Auditable Research File

get_research_file
Read-onlyIdempotent

Fetch the Auditable Research File behind one of the caller's own agent runs — the complete evidence chain an examiner asks for: the originating prompt, every tool the agent called in order, every fact_id it cited, every human approval, and which models were used. Assembled from the immutable audit ledger written as the run executed; nothing here is reconstructed or inferred. Name the subject EITHER way, and pass exactly one: report_id (a report you wrote or found — from create_report, list_my_reports or search_reports) or run_id (from list_agent_runs). Naming a REPORT is the richer call: it resolves the run behind that report AND adds two sections a run's ledger cannot carry — human_review (each figure a HUMAN verified, corrected, rejected or sourced externally, with who and when) and sources (the SEC filing, form, period and filed date behind each cited fact_id). It also echoes the resolved run_id. A run-keyed call omits both, because a run may produce several reports and 'the report for this run' has no honest answer; empty or absent there means NOT RESOLVED, never 'no sources'. format: "pdf" returns the SAME assembled file as a branded compliance PDF instead of inline JSON — a 15-minute presigned download URL (url + filename) for the human-facing artifact (cover with the completeness verdict, evidence chain table, provenance with clickable sec.gov links). The PDF is rendered fresh on every call — never cached — because an in-flight run's ledger can gain entries, and a stale 'complete' verdict is exactly the lie this document exists to prevent. ⚠️ ALWAYS READ completeness FIRST AND REPORT IT. completeness.complete is computed from the ledger, and completeness.gaps names every hole found — an irreversible action taken with no named approver, a state-changing action that cited no fact_id, an unrecorded model, a failed step. If you present this run as evidence, present the gaps too; a chain with holes that is quoted as if whole is the one thing this artifact exists to prevent. ⚠️ found: false IS NOT A FINDING ABOUT THE WORK. It is returned (not as an error) for an unknown id, an id belonging to another customer, and a report with no run on record — deliberately indistinguishable, so no caller can probe which. It means we hold no audit trail under that id. It does NOT mean the report is unaudited, unverified, or that the id does not exist, and it must never be reported that way. Tier: sp500+ (sample rejected).

Input Schema

NameRequiredDescriptionDefault
formatNojson (default) = the assembled file inline. pdf = a presigned download URL for the branded compliance PDF — the human-facing artifact; rendered fresh on every call, never cached.json
run_idNoRun identifier, as returned by list_agent_runs. Pass this OR report_id, not both.
report_idNoReport identifier — from create_report, list_my_reports or search_reports. Resolves the run behind that report and adds the human_review + sources sections. Pass this OR run_id, not both.

Output Schema

NameRequiredDescriptionDefault
urlNo
fileNo
_metaYesProvenance envelope — data lineage for every MCP response
foundYes
run_idNo
filenameNo
expires_atNo
size_bytesNo
content_typeNo
expires_in_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / basis / description
      Previous value: -"payg_charge = real charge (agent-pay or your balance). payg_rate_card = indicative price, not billed."New value: +"payg_charge = real pay-per-call charge (a card or MPP payment through agent-pay). payg_rate_card = indicative price, not billed."
  2. Changed2 schema fields changed
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / basis / description
      Previous value: -"payg_charge = real agent-pay charge. payg_rate_card = indicative price, not billed."New value: +"payg_charge = real charge (agent-pay or your balance). payg_rate_card = indicative price, not billed."
    • changedOutput schema / properties / _meta / properties / cost_usd / properties / billed / description
      Previous value: -"true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value; your plan already covers this call for free."New value: +"true = this amount was actually charged via PAYG for this call. false = indicative PAYG-equivalent value only: no charge was made for this call (it was within your plan)."
  3. Added
  4. Removed
  5. 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."
  6. Changed7 schema fields changed
    • addedInput schema / properties / format
      Added value: +{
      +  "default": "json",
      +  "description": "json (default) = the assembled file inline. pdf = a presigned download URL for the branded compliance PDF — the human-facing artifact; rendered fresh on every call, never cached.",
      +  "enum": [
      +    "json",
      +    "pdf"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / content_type
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / expires_at
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / expires_in_seconds
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / filename
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / size_bytes
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / url
      Added value: +{
      +  "type": "string"
      +}
  7. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: discloses the 15-minute presigned URL for PDF output, that the PDF is rendered fresh and never cached, that found:false is returned as a non-error and is deliberately indistinguishable across unknown/foreign/no-run cases, and the sp500+ tier requirement. These are exactly the facts that prevent misuse.

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-loaded with the purpose and the subject-selection rule, and the later warnings are the highest-risk semantics, so most sentences earn their place. It is on the long side and the PDF caching rationale echoes the schema field description, costing a bit of tightness.

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?

With an output schema present the description does not need to restate return shapes, yet it still supplies the interpretive rules an agent cannot infer: read completeness first, present gaps alongside evidence, and never report found:false as a finding about the work.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema does not: report-keyed calls resolve to a run and append human_review + sources, run-keyed calls omit them because a run may yield several reports, and absent sections mean NOT RESOLVED rather than 'no sources'.

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?

Names a specific verb+resource (fetch the Auditable Research File) and scopes it precisely to one of the caller's own agent runs, then enumerates the exact contents of the evidence chain so an agent knows this is not get_report or verify_fact_lineage. Sibling differentiation is explicit via the report_id/run_id source tools.

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?

States the selection rule unambiguously ('pass exactly one' of report_id or run_id), where each id comes from (create_report, list_my_reports, search_reports vs list_agent_runs), and which choice is richer and why. Also tells the agent when to reach for format:'pdf' (human-facing artifact) versus inline JSON.

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.