Skip to main content
Glama

stockonomy-mcp

An MCP server (stdio, Python 3.9+, standard library only) that checks a stated company figure against the SEC filing it came from. Each verdict (matches_filing, first_filed_differently, contradicted, not_on_file, refused, absent_in_read) names the filing accession it was read from. A verdict compares a number with a filing; it says nothing about whether the number or the company is sound.

Tools: point_in_time (what a filer's 10-K and 10-Q filings showed on a date; works with no key for AAPL, MSFT, AMZN, TSLA, GOOGL and NVDA), pit_changes (every row filed since a date, flagged restated or new; needs a key), pit_fields (the data dictionary, 50+ line items), recasts_free, check_figure_free (one figure, no account, limited per address) and check_claims (up to 20 claims about one ticker, writes a receipt on a hash chain you can verify offline; needs an API key).

{"mcpServers": {"stockonomy": {"command": "uvx", "args": ["stockonomy-mcp"],
  "env": {"STOCKONOMY_API_KEY": "<optional>"}}}}

Docs: https://stockonomy.net/developers · OpenAPI: https://stockonomy.net/openapi.json · Error record: https://stockonomy.net/record/series

Install: pip install stockonomy-mcp, then run stockonomy-mcp.

mcp-name: io.github.InvestmentLLM/stockonomy-mcp

Available Tools

6 tools
check_claimsA

Check up to 20 claims about one ticker against the SEC filings, in one call that writes a receipt on the key owner's hash chain. Needs STOCKONOMY_API_KEY. A verdict compares the stated figure with the SEC filing it names and says nothing about whether the figure or the company is sound. Verdicts: matches_filing, first_filed_differently, contradicted, not_on_file, refused, absent_in_read.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimsYes
tickerYes
referenceNoYour own tag for the receipt, such as an adviser seat or a document id.

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses a side effect (a receipt written on the key owner's hash chain), an auth requirement (STOCKONOMY_API_KEY), and the semantic boundary of a verdict ('says nothing about whether the figure or the company is sound'). It does not explain receipt retrieval or failure behavior, so not a 5.

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 core action and scope, then prerequisites, then verdict semantics. Dense and largely waste-free, though the trailing verdict enumeration is a long list that could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description rightly enumerates the possible verdicts, which IS the return-value contract. Combined with the auth note and receipt side effect, it is nearly complete for a rigid, bounded call; only receipt contents and refusal mechanics remain unexplained.

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

Parameters2/5

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

Schema coverage is only 33% and the description barely compensates: it repeats the 20-claim and one-ticker limits already in the schema, and never explains the three distinct claim shapes (figure / growth-margin / no_* assertions) or the 'reference' receipt tag. An agent must read the schema alone to build a valid claim.

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

Purpose4/5

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

States a concrete verb+resource: check up to 20 claims about one ticker against SEC filings, producing a verdict. The 'writes a receipt on the key owner's hash chain' clause differentiates it from the other check/pit/recast siblings, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Implies usage via the 'up to 20 claims', one-ticker scope, and the API key prerequisite, but never states when to prefer this over check_figure_free or the point_in_time family. No exclusions or alternatives are named.

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

check_figure_freeA

Check one stated figure against its SEC filing with no account; writes no receipt. Limited per address. A verdict compares the stated figure with the SEC filing it names and says nothing about whether the figure or the company is sound. Verdicts: matches_filing, first_filed_differently, contradicted, not_on_file, refused, absent_in_read.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesUS dollars (shares for diluted_shares)
memberNoWith concept segment_revenue: the XBRL member name as filed
periodNoA quarter or year to date; name period_end with it. Without it the figure is read as a fiscal year.
tickerYes
conceptYes
period_endNo
rounded_toNoThe precision the writer rounded to, for example 1e7
fiscal_yearNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses no-account use, no receipt written (read-only), an address-based rate limit, and explicitly scopes what a verdict does and does not claim ('says nothing about whether the figure or the company is sound'). The enumerated verdict values further clarify behavior.

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 core action and scope, then layers constraints and verdicts. The verdict enumeration is long but genuinely informative rather than filler, so every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, no-annotation tool with no output schema, the description usefully explains the return semantics through the verdict list and discloses the safety/rate-limit profile. The main remaining gap is how the numerous optional parameters interact.

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 coverage is 50%, so half the parameters (member, period, rounded_to, fiscal_year) depend on either schema text or description for meaning. The description says 'the SEC filing it names' but adds no detail on how ticker/concept/period/fiscal_year combine, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: 'Check one stated figure against its SEC filing.' The scope ('one stated figure') and the verdict-based nature are clear. It does not explicitly distinguish itself from the sibling check_claims, so sibling differentiation is left implicit.

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

Usage Guidelines3/5

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

Gives conditions via 'with no account', 'writes no receipt', and 'Limited per address', which imply when the tool is appropriate. However, it never states when to use this versus check_claims or the point_in_time siblings, leaving usage to inference.

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

pit_changesA

The daily update: every row filed after since across all filers, with the same columns as point_in_time plus restated (true when an earlier filing already stated that line item for that period, so the value is a restatement; false when the period is new). through is the date to send as since next time. Needs STOCKONOMY_API_KEY. It compares nothing and does not say why a value changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceYesThe `through` of your last pull, or latest_filed from the coverage record.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations the description carries the full behavioral burden. It discloses the auth requirement, the column structure, the incremental cursor (`through`), and explicit limits on what it does (no comparison, no causal explanation), which is solid. It still omits rate limits, pagination/volume expectations, and error behavior for an unannotated data-feed tool.

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 core purpose is front-loaded ('The daily update...'), and the sentences carry distinct payloads: column shape, `restated` semantics, cursor handoff, auth, and limits. The long first sentence with an embedded parenthetical is dense but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does substantial work: it defines the returned column shape (parity with point_in_time plus `restated`), the cursor contract, and negative capability limits. What remains missing is volume/rate/error context, but for a one-parameter feed tool it is close to callable.

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% and there is a single required parameter, so the schema already documents `since` fully. The description's `through`-as-next-`since` line reinforces the cursor loop but largely restates what the schema text says. Baseline 3 for high-coverage schemas is appropriate.

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

Purpose4/5

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

It states a specific resource and scope: a daily delta feed of every row filed after `since` across all filers, with column parity to point_in_time plus `restated`. The `stre restated` semantics are defined inline. It stops short of explicitly contrasting itself with the siblings (recasts_free, check_claims), so it is clear but not fully differentiated by name.

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?

The usage pattern is spelled out: pull daily, then feed `through` back as the next `since`, and it notes the auth prerequisite (STOCKONOMY_API_KEY). It also states a limitation ('compares nothing and does not say why a value changed'), which functions as a when-not-to-use signal, but no alternative sibling is named for the 'why did it change' case.

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

pit_fieldsA

The data dictionary for point_in_time: every line item with its unit, period type (instant, duration or derived), definition and, for derived figures, the formula. It compares nothing; no account and no request.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it discloses that the call takes no request or account (a pure zero-input metadata read) and previews the returned content structure. It does not mention auth requirements or whether the dictionary is versioned/cached, but for a static zero-parameter lookup the disclosure is reasonably complete.

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?

Two sentences, purpose front-loaded, and the second sentence preempts a plausible misuse. The phrasing 'It compares nothing; no account and no request' is terse to the point of being cryptic, costing a little on readability for an otherwise waste-free description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and no parameters, the description must convey what comes back — and it does by listing the per-line-item fields (unit, period type, definition, formula). It stops short of describing the shape (flat list, keyed by line item) or how derived vs. instant/duration rows differ in practice.

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?

The tool has zero parameters, so the baseline is 4. The description reinforces this by stating there is 'no account and no request,' confirming the agent cannot scope the lookup — which is meaningful given that sibling tools do take account arguments.

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 names the resource precisely ('the data dictionary for point_in_time') and enumerates what each line item carries: unit, period type (instant/duration/derived), definition, and formula for derived figures. It explicitly distinguishes itself from the sibling point_in_time by stating 'It compares nothing; no account and no request,' so an agent can separate it from the comparison tool without opening a schema.

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?

'It compares nothing; no account and no request' functions as a negative-use signal, steering agents that want comparison data toward point_in_time. It gives clear context for when this metadata lookup applies, though it never names the alternative sibling explicitly, so routing is inferred rather than stated.

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

point_in_timeA

What the 10-K and 10-Q filings dated on or before as_of showed for one filer, per line item and period, as rows (columns named in the answer). recast=true returns only the figures whose value changed in a later filing, each vintage with the date it was first filed. This tool compares nothing and says nothing about which value is right. Works without STOCKONOMY_API_KEY for AAPL, MSFT, AMZN, TSLA, GOOGL and NVDA (the demo key); any other filer needs a key.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoA date (the whole day) or an ISO timestamp such as 2020-02-01T21:00:00Z: only filings EDGAR had accepted by then. Default today.
fieldsNoKeep only these line items.
recastNo
tickerNoOne filer; or give tickers for several.
conceptNoA line item; pit_fields lists each with its unit, period type and definition.
historyNoEvery value the SEC showed, each with the filing date it first appeared, its accession and the instant EDGAR accepted it.
tickersNoSeveral filers in one call, rows led by cik and ticker; each ticker counts against the rate limits.
originalNoEach period's first-filed value instead of the newest.
period_endNoOnly the period ending on this date; with history, every revision of it filed on or before as_of.
period_typeNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does add genuine behavioral context: recast=true returns only changed figures each tagged with the filing it first appeared in, output is rows with columns 'named in the answer,' and 6 tickers work without a key. It omits operational traits like rate limits (only in the schema) and pagination.

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?

Core behavior is front-loaded in the first sentence and each subsequent sentence adds distinct value (recast mode, the 'compares nothing' caveat, the auth constraint). Sentences are dense and slightly run-on, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no annotations and no output schema, the description covers purpose, auth and recast but leaves the result shape only vaguely defined ('columns named in the answer'), and says nothing about rate limits or how multiple tickers affect output. Adequate, but not complete enough to call the tool blind.

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 80%, so the baseline is 3, and the description adds real meaning where the schema is thin: recast=true is defined behaviorally (only values later restated) even though the schema gives it no description. as_of and ticker semantics are left to the schema.

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

Purpose4/5

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

It states a specific verb+resource: as-reported figures from 10-K/10-Q filings accepted on or before as_of, returned as rows. It also carves out its niche against the comparison siblings with 'This tool compares nothing.' It never names pit_changes/pit_fields, so differentiation is inferential rather than explicit.

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

Usage Guidelines3/5

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

Usage is implied by 'compares nothing and says nothing about which value is right,' which nudges the agent elsewhere for comparisons, and the demo-key note is a real calling constraint. But there is no explicit when-to-use/when-not or named alternative, so the agent must infer routing from sibling names.

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

recasts_freeB

Annual figures a filer originally reported that a later filing reports differently by more than 2%, with both accession numbers; no account. It compares the two filed values only and does not say why they differ.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses the >2% threshold, that both accession numbers are included, that only two filed values are compared, and that no explanation is provided. It still omits permissions, return structure, and pagination behavior, preventing a 5.

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?

Two sentences with no wasted words; the core purpose is front-loaded in the first sentence and the comparison limitation follows immediately. The phrasing is slightly dense and lacks an explicit verb, but it remains appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no annotations and no output schema, the description covers the data scope and known limitations well. It does not document the required ticker parameter or return format, so some context an agent needs to call it confidently is missing.

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

Parameters2/5

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

The input schema has 0% description coverage for the only parameter, ticker, and the description never mentions the parameter at all. The schema's type and example give minimal meaning, but the description adds nothing to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific resource (annual figures recast by more than 2%) and output detail (both accession numbers), so an agent can tell what data the tool surfaces. However, it does not explicitly name or distinguish itself from any sibling tool such as check_figure_free or pit_changes, leaving the boundary to be inferred from the tool name.

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

Usage Guidelines2/5

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

The description explains what the tool returns but not when to use it instead of alternatives. There is no explicit guidance like 'use this when you need recasts only' or 'for explanations, use X instead,' so the agent must infer usage from the purpose statement.

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedcheck_claims
    • First observedcheck_figure_free
    • First observedpit_changes
    • First observedpit_fields
    • First observedpoint_in_time
    • First observedrecasts_free

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation3/5

check_claims and check_figure_free both verify a stated figure against SEC filings, differing mainly in bulk (20 vs 1), auth, and receipt-writing, so an agent could easily pick the wrong one. Similarly, point_in_time (recast=true), pit_changes (restated), and recasts_free all surface restated/changed values, creating conceptual overlap that takes careful reading to separate.

Naming Consistency3/5

There are partial families (check_claims/check_figure_free, pit_changes/pit_fields) and a recurring _free suffix, which helps. But point_in_time breaks the pit_ prefix convention, and the set mixes verb_noun (check_claims) with noun/noun_phrase styles (point_in_time, recasts_free), so no single predictable pattern holds throughout.

Tool Count5/5

Six tools is well-scoped for the SEC-filings domain, with each tool mapping to a distinct capability (verification, point-in-time query, changefeed, dictionary, recast detection). No obvious redundancy in count or missing slots that warrant more tools.

Completeness4/5

The surface covers claim verification, point-in-time figures, a daily change feed, a data dictionary, and recast detection, which is strong lifecycle coverage for this domain. Minor gaps remain: no tool to discover supported filers/tickers or to fetch the underlying filing text/document referenced by the verdicts.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables deep analysis of SEC EDGAR filings through universal company search, document content extraction, and advanced filing search capabilities. Provides AI-ready access to business descriptions, risk factors, financial statements, and full-text search across any public company's SEC documents.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    SEC-filed financial statements back to 1985 for US-listed companies, plus global coverage, every number cited to its filing with an accession number. 59 tools for income statements, balance sheets, cash flow, growth rates, valuation (DCF, reverse DCF, comparables, fair-value range), SEC filing and earnings-call search, supply chains, 13F holders, options positioning and thesis monitoring.
    MIT