Skip to main content
Glama
nathanaelhub

open-finance-mcp

by nathanaelhub

open-finance-mcp

An MCP server that gives Claude free, citable financial data for comps and DCF work: standardized financials from SEC EDGAR XBRL filings, filing links, Treasury yields from FRED, and market prices and beta. Every number comes back with its source: the XBRL concept, the filing accession and a URL to the filing.

Why

Anthropic's financial-services plugins ship /comps, /dcf and earnings workflows whose skills tell Claude to pull data from MCP connectors first and to cite every hard-coded input. All of the bundled connectors are paid terminals (FactSet, S&P Capital IQ, PitchBook, Morningstar, …). Without a subscription, the skills fall back to web search, which they explicitly warn against.

This server fills that gap with public sources, and it is built around the skills' citation requirement instead of treating sources as an afterthought.

Related MCP server: Financial Modeling Prep MCP Server

Tools

Tool

Returns

lookup_company

Ticker, name, CIK and exchange for a ticker or name search

get_financials

Annual + LTM income statement, cash flow and balance sheet; derived EBITDA, FCF, total debt, net debt; per-value citations

get_filings

Recent 10-K / 10-Q / 8-K (etc.) with document and index URLs

get_market_data

Price, cover-page shares outstanding, market cap, 5-year monthly beta vs the S&P 500

get_treasury_yield

Latest constant-maturity Treasury yield (3M–30Y) from FRED

get_comps

Peer table: market cap, EV, LTM revenue/EBITDA/net income, EV/Revenue, EV/EBITDA, P/E, with median and mean

All tools are read-only. Nothing needs an API key.

Example: get_comps(["KO", "PEP", "KDP", "MNST"]), run 2026-09-29

Ticker

Period

Mkt cap ($B)

EV ($B)

EV/Rev

EV/EBITDA

P/E

Beta

KO

LTM to 2026-04-03

374

407

8.26

26.23

27.27

0.34

PEP

LTM to 2026-06-13

176

226

2.33

12.57

16.81

0.35

KDP

LTM to 2026-06-30

42

71

3.52

18.51

29.59

0.40

MNST

LTM to 2026-06-30

41

—

—

—

19.22

0.52

The notes that came back with those rows are the point of the design:

  • KO: EDGAR lists a 10-Q filed 2026-07-29 that the XBRL API does not include yet, so the figures stop at Q1. The tool says so instead of passing stale LTM off as current.

  • KDP: non-operating items of −1.3B exceed 25% of operating income, so the P/E is distorted and EV/EBITDA should carry more weight.

  • MNST: no debt concepts are reported, so EV is left null rather than assuming zero debt. A separately labeled enterprise_value_if_debt_free (37B) is offered, to use once the balance sheet confirms it.

Install

Requires uv. SEC requires automated clients to send a User-Agent with a contact, so you provide your name and email once.

As a Claude Code plugin (adds the server plus a skill on citing the data):

claude plugin marketplace add nathanaelhub/open-finance-mcp
claude plugin install open-finance@open-finance
# prompts for, or set with `claude plugin configure open-finance`: your SEC contact

It works alongside financial-analysis@claude-for-financial-services: the /comps and /dcf skills find an MCP data source and use it.

As a plain MCP server (Claude Code, Claude Desktop or any MCP client):

claude mcp add open-finance \
  -e SEC_USER_AGENT="Your Name you@example.com" \
  -- uvx --from git+https://github.com/nathanaelhub/open-finance-mcp open-finance-mcp

Responses are cached on disk (~/.cache/open-finance-mcp, or $OPEN_FINANCE_MCP_CACHE): company facts for a day, prices for 15 minutes. SEC requests are spaced to stay under the 10 requests/second fair-access limit.

How the numbers are built

XBRL data is messier than it looks. Each rule below exists because a real filer broke the simple version:

  • Concepts resolve per period, not per company. Tags change over time: Caterpillar's NetIncomeLoss stops in 2010 and continues as NetIncomeLossAvailableToCommonStockholdersBasic. Each metric has a priority list, the first concept with a value for that period wins, and the concept used is returned with the value.

  • Restatements win; labels come from the original 10-K. A 10-K repeats prior years as comparatives and may restate them. Values come from the most recent filing, and each value cites it. The fiscal-year label comes from the period's original 10-K, because a year-end date misleads for retailers (Home Depot's fiscal 2025 ends 1 Feb 2026).

  • LTM = FY + YTD − prior-year YTD, from one concept. JPMorgan tags annual revenue as Revenues and quarterly as RevenuesNetOfInterestExpense, so an LTM mixing concepts could combine different definitions. If no single concept covers all three periods, LTM is null. Labels give the exact end date, not "6M", because 52/53-week filers have 12- and 16-week quarters.

  • Total debt never double counts. DebtCurrent already includes commercial paper and the current portion of long-term debt; LongTermDebt already includes its current portion. The formula used is returned (e.g. ltd_noncurrent + ltd_current + commercial_paper), and matches Apple's FY2024 10-K to the dollar ($106.629B). Operating leases are excluded.

  • Missing is null, never zero. Caterpillar's 10-Qs tag debt only by segment, which the XBRL API omits, so LTM debt is null with a reason.

  • Share counts handle multiple classes. The cover-page count is summed across classes. Alphabet reports its cover page only per class, which the API drops, so the server falls back to the balance-sheet total and says the price is for one class.

  • Beta uses completed months. Yahoo's monthly series ends with the in-progress month; that partial "return" is dropped. Beta is OLS on the last 60 completed monthly returns against ^GSPC (a price index, no dividends).

  • Errors the model can act on. The MCP SDK hides unexpected exceptions behind "Error executing tool", so every anticipated failure is a readable tool error: an unknown ticker points to lookup_company, and a new registrant with no history (ExxonMobil's new holding company, CIK 2115436) is explained rather than returned as empty tables.

Limitations

  • US-GAAP SEC filers only. IFRS filers (20-F/40-F) are not supported.

  • The XBRL company-facts API excludes dimensional (segment/class) facts and can lag EDGAR by weeks. Both cases are flagged rather than hidden.

  • Prices come from Yahoo Finance's unofficial chart endpoint. They are labeled as unofficial so a model citing them says so; verify before publishing.

  • EBITDA is operating income + D&A as reported, not adjusted EBITDA.

Development

uv sync
uv run pytest            # 39 tests, offline: real filings trimmed into tests/fixtures
SEC_USER_AGENT="Name you@example.com" uv run python scripts/make_fixtures.py   # refresh fixtures

Tests run the tools through an in-process MCP client with HTTP mocked, and once over stdio as a subprocess, which is how Claude Code launches the server. CI covers Python 3.11–3.14.

Data: SEC EDGAR APIs, FRED. Not investment advice; outputs are drafts for review by a qualified person.

MIT licensed.

Available Tools

6 tools
get_compsB
Read-onlyIdempotent

Trading comparables: market cap, EV, LTM revenue/EBITDA/net income, EV/Revenue, EV/EBITDA, P/E.

EV = market cap + latest net debt. Multiples are null (with a reason) when an input is missing, negative, or not meaningful (financials).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely useful behavioral context beyond them: the EV construction formula and, importantly, the rule that multiples come back null with a reason when inputs are missing, negative, or not meaningful. That null-semantics disclosure is the kind of thing an agent needs to interpret results correctly.

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 tight sentences, front-loaded with the field list, plus a definition sentence that earns its place. No filler or redundant restatement of the name.

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?

With no output schema and only annotations covering safety, the description does list the return fields and null behavior, which is helpful. However it omits input semantics (tickers format/cardinality) and any routing guidance against the four sibling tools, leaving gaps for a look-up tool in a dense sibling set.

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 single parameter 'tickers' has 0% schema description coverage, and the description does not mention it at all. It never states that the input is an array of ticker symbols, whether they can be mixed across exchanges, or how many can be supplied in one call, so the description fails 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?

Names a specific resource (trading comparables) and enumerates the exact output fields it produces (market cap, EV, LTM revenue/EBITDA/net income, and the three multiples). An agent knows what it gets back, though the description never explicitly distinguishes this from get_financials or get_market_data, which overlap on raw financial metrics.

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?

No when-to-use, when-not-to-use, or prerequisite guidance is given, and no sibling tool is named. The agent must infer that this is the multi-ticker comparables tool versus get_financials or get_market_data on its own.

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

get_filingsB
Read-onlyIdempotent

Recent SEC filings with document links. forms filters, e.g. ["10-K", "10-Q", "8-K"].

ParametersJSON Schema
NameRequiredDescriptionDefault
formsNo
limitNo
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and repeatability are covered without description text. The description adds that results include document links, a small but real piece of return-content context; it says nothing about ordering, recency window, or coverage limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core purpose front-loaded and the filter detail second. Nothing here could be removed without losing information.

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?

An output schema exists, so return values need not be spelled out, and the annotations cover the safety profile. Still, for a 3-parameter tool at 0% schema coverage, the description leaves `limit` semantics and what 'recent' actually means undefined.

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?

With 0% schema description coverage the description must carry parameter meaning, and it does clarify `forms` with concrete example values (["10-K", "10-Q", "8-K"]), which is genuinely useful since no enums exist in the schema. However `limit` (page size, max value, offset behavior) and the `ticker` format are left entirely to inference, so the compensation is partial.

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 pair ('Recent SEC filings') and adds that results carry document links, which is more than a restatement of the name. It is distinguishable from get_financials and get_market_data by the 'filings' framing, though it never explicitly names a sibling to contrast with.

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 offers no when-to-use context, no prerequisites, and no routing to alternatives such as get_financials for reported numbers. The only usage hint is the `forms` filter example, which is a parameter note rather than selection guidance.

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

get_financialsA
Read-onlyIdempotent

Standardized annual (and LTM) financials from SEC XBRL filings.

Income statement, cash flow and balance-sheet items plus derived EBITDA, free cash flow, total debt and net debt. Every value carries its XBRL concept and filing accession; filings maps accessions to URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNo
tickerYes
include_ltmNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds useful behavioral context beyond that: values are sourced from SEC XBRL, each carries its concept and filing accession, and the `filings` map resolves accessions to URLs. It stops short of covering freshness or pagination, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and scope, then the payload contents. No filler and no repetition of the tool name.

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, the description carries the return-value burden and does so well by naming statement groups, derived metrics, and the accession/URL mapping. It is not fully complete because parameter behavior (notably `years`) goes unexplained and no usage routing is offered.

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 0%, so the description must compensate. It partially does: 'annual (and LTM)' maps to the include_ltm toggle, and 'filings' explains an output field. However, `years` (default 5) is never explained in scope or behavior, leaving a real gap in a 3-param tool.

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 states a specific verb+resource (standardized financials from SEC XBRL filings) and enumerates the exact contents (income statement, cash flow, balance sheet plus derived EBITDA, FCF, total/net debt). This clearly separates it from siblings like get_market_data, get_filings, and get_comps without the agent 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 Guidelines3/5

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

Usage is implied by the resource but there is no explicit when-to-use guidance or routing against siblings such as get_filings or get_comps. An agent can infer it is the financial-statement tool, but nothing states when to prefer an alternative.

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

get_market_dataB
Read-onlyIdempotent

Share price, SEC cover-page shares outstanding, market cap and 5-year monthly beta.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds value by disclosing the returned data content (share price, shares outstanding, market cap, beta), but says nothing about sourcing, latency, or freshness beyond the annotations. With annotations carrying the behavior burden, a 3 is appropriate.

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?

One tight sentence with no filler, and the most salient returned data is front-loaded. It is a fragment rather than a full sentence, but nothing is wasted.

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, the description correctly enumerates what is returned, and the read-only annotations cover safety. For a simple single-parameter retrieval tool this is nearly complete, only missing ticker format expectations and any usage context.

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 description coverage is 0% and the single required 'ticker' parameter is never mentioned in the description. Since the tool needs a ticker and the schema does not explain its format or expectations, the description should compensate but does not. Only the SEC reference hints tangentially at the domain.

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 lists the concrete data returned (share price, SEC cover-page shares outstanding, market cap, 5-year monthly beta), which distinguishes it from siblings like get_financials and get_filings. It is a noun-phrase field listing rather than a verb+resource sentence, and it never explicitly states 'retrieve market data,' but the content is specific enough for an agent to identify the tool.

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?

There is no guidance on when to use this tool versus lookup_company, get_comps, or get_financials, nor any prerequisites or conditions. The agent must infer usage purely from the returned-field list.

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

get_treasury_yieldB
Read-onlyIdempotent

Latest US Treasury constant-maturity yield from FRED (percent). 10Y is the usual DCF risk-free rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
maturityNo10Y

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds useful context (FRED as the upstream source, percent as the unit) but says nothing about freshness, caching, or failure behavior for an open-world network call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose and source front-loaded and a useful usage note second. No filler to trim.

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 a single-parameter read tool with a default in the schema and no output schema, the description covers source, unit, and default guidance adequately. The main gap is enumeration of valid maturity values, which an agent would need.

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 description coverage is 0% for the single 'maturity' parameter, so the description carries the burden. It mentions '10Y' only as the usual rate, never explains accepted maturity values, format (e.g., '3M', '2Y'), or what happens on unsupported maturities.

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 (get), resource (Treasury constant-maturity yield), source (FRED), and unit (percent). It is recognizable against siblings like get_market_data, though it does not explicitly state how it differs from the broader market-data tool.

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?

'10Y is the usual DCF risk-free rate' gives implied usage context for the default case, but there is no explicit when-to-use guidance, no alternatives named, and no explanation of when a different maturity would be appropriate.

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

lookup_companyB
Read-onlyIdempotent

Find SEC registrants by ticker or name. Returns ticker, name, CIK and exchange.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and reproducibility profile is covered. The description adds only that matching is on ticker or name; it says nothing about fuzzy vs exact matching, permissions, or result ordering beyond what structured fields provide.

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 short, front-loaded sentences with no filler; the purpose statement comes first and the return summary second. The return-field sentence is somewhat redundant given an output schema exists, keeping it just below full marks.

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?

An output schema already documents the returned fields and annotations cover safety, so the description need not explain return values. The remaining gaps are the meaning of 'limit' and matching behavior, which leave the definition only minimally adequate for a 2-parameter lookup tool.

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 0%, so the description carries the burden and does partially compensate by explaining that 'query' accepts a ticker or a name. However, 'limit' is left completely undefined in both the description and the schema beyond its default of 10.

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 ('Find SEC registrants') plus the two accepted lookup keys (ticker or name), which is more precise than the bare tool name. It is distinguishable from siblings like get_market_data or get_filings, though it never explicitly contrasts itself with them.

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?

The description implies the natural use case (resolving an entity by ticker or name) but gives no explicit when-to-use guidance, no prerequisites, and no mention of when an agent should prefer a sibling tool. Usage is inferable rather than stated.

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 observedget_comps
    • First observedget_filings
    • First observedget_financials
    • First observedget_market_data
    • First observedget_treasury_yield
    • First observedlookup_company

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a clearly distinct purpose: company lookup, market data, financial statements, SEC filings, Treasury yields, and trading comparables. Although get_market_data and get_comps both surface market cap, their scopes are well differentiated by the descriptions. No two tools appear to do the same thing.

Naming Consistency4/5

Most tools use a consistent get_<object> snake_case pattern, such as get_market_data, get_financials, and get_filings. lookup_company is the only deviation, using lookup_ instead of get_, but it still follows a readable verb_noun convention.

Tool Count5/5

Six tools is well-scoped for a focused open-finance data server. Each tool covers a distinct part of the financial-analysis workflow without redundancy. The count is neither bloated nor too thin.

Completeness4/5

The surface covers lookup, market data, financials, filings, risk-free rate, and comparables, which supports core fundamental workflows. Minor gaps remain, such as historical price series and quarterly financial statements, but agents can work around them with the available annual/LTM and current market data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to fetch live company data and news by ticker, including quotes, financials, analyst views, and historical data via Yahoo Finance.
    -
  • A
    license
    B
    quality
    B
    maintenance
    Provides access to Financial Modeling Prep's comprehensive financial data API, enabling real-time stock quotes, company fundamentals, financial statements, market insights, analyst data, and technical indicators directly in Claude Desktop.
    26
    63 npm
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to query US public company financial data from SEC filings, with tools for resolving tickers, listing filings, retrieving financial concepts, comparing companies, extracting filing sections, and full-text search. It surfaces data ambiguities like tag variations, restatements, and fiscal-year misalignment rather than hiding them.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to pull US stock financials, SEC filing timelines, ticker comparisons, screens, and fund profiles, with every value returned alongside the URL of the filing it came from. Answers are strictly filing-grounded and gaps come back as missing rather than estimated.
    66 npm
    MIT