open-finance-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@open-finance-mcpBuild a comps table for KO, PEP, KDP and MNST with sources cited"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Ticker, name, CIK and exchange for a ticker or name search |
| Annual + LTM income statement, cash flow and balance sheet; derived EBITDA, FCF, total debt, net debt; per-value citations |
| Recent 10-K / 10-Q / 8-K (etc.) with document and index URLs |
| Price, cover-page shares outstanding, market cap, 5-year monthly beta vs the S&P 500 |
| Latest constant-maturity Treasury yield (3M–30Y) from FRED |
| 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 contactIt 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-mcpResponses 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
NetIncomeLossstops in 2010 and continues asNetIncomeLossAvailableToCommonStockholdersBasic. 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
Revenuesand quarterly asRevenuesNetOfInterestExpense, 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.
DebtCurrentalready includes commercial paper and the current portion of long-term debt;LongTermDebtalready 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 fixturesTests 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 toolsget_compsBRead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes |
TDQS
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.
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.
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.
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.
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.
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_filingsBRead-onlyIdempotent
Recent SEC filings with document links. forms filters, e.g. ["10-K", "10-Q", "8-K"].
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | ||
| limit | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_financialsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | ||
| ticker | Yes | ||
| include_ltm | No |
TDQS
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.
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.
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.
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.
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.
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_dataBRead-onlyIdempotent
Share price, SEC cover-page shares outstanding, market cap and 5-year monthly beta.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
TDQS
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.
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.
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.
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.
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.
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_yieldBRead-onlyIdempotent
Latest US Treasury constant-maturity yield from FRED (percent). 10Y is the usual DCF risk-free rate.
| Name | Required | Description | Default |
|---|---|---|---|
| maturity | No | 10Y |
TDQS
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.
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.
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.
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.
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.
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_companyBRead-onlyIdempotent
Find SEC registrants by ticker or name. Returns ticker, name, CIK and exchange.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
get_comps - First observed
get_filings - First observed
get_financials - First observed
get_market_data - First observed
get_treasury_yield - First observed
lookup_company
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
Read-only public-company financials, KPIs, benchmarks, filings, and insider activity.
Agent-native SEC filing data: statements assembled, filings read and synthesized. No API key.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables Claude to fetch live company data and news by ticker, including quotes, financials, analyst views, and historical data via Yahoo Finance.-
- AlicenseBqualityBmaintenanceProvides 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.2663 npm2MIT
- AlicenseAqualityBmaintenanceEnables 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.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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 npmMIT