EdgarParser MCP
PYPI · EDGAR-MCP · SCANNED SEP 20
MCP stdio server for source-backed SEC EDGAR financial data from the hosted EdgarParser API.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 20 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7377 tokens (~237/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
- Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage74
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 9% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 31 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the EdgarParser MCP server?
EdgarParser MCP runs locally as a PyPI package, launched with uvx edgar-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · edgar-mcp
claude mcp add henrysouchien-edgar-mcp -- uvx edgar-mcp
{
"mcpServers": {
"henrysouchien-edgar-mcp": {
"command": "uvx",
"args": [
"edgar-mcp"
]
}
}
} {
"servers": {
"henrysouchien-edgar-mcp": {
"command": "uvx",
"args": [
"edgar-mcp"
]
}
}
} codex mcp add henrysouchien-edgar-mcp -- uvx edgar-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"henrysouchien-edgar-mcp": {
"type": "local",
"command": [
"uvx",
"edgar-mcp"
],
"enabled": true
}
}
} openclaw mcp add henrysouchien-edgar-mcp --command uvx --arg edgar-mcp
mcp_servers:
henrysouchien-edgar-mcp:
command: "uvx"
args: ["edgar-mcp"] {
"McpServers": {
"henrysouchien-edgar-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"edgar-mcp"
]
}
}
} assistant mcp add henrysouchien-edgar-mcp -t stdio -c uvx -a edgar-mcp
{
"mcpServers": {
"henrysouchien-edgar-mcp": {
"command": "uvx",
"args": [
"edgar-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −4
- Stability: pass → 0.77 functional
- 19 Sept 26 +1
- Stability: 0.97 → pass security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 −2
- Stability: fail → 0.80 functional
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 88 to 92.
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 82 to 85.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/edgar-mcp@1.0.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 20 packages
| Packages resolved | 20 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
cite_concept Cite Concept ~374
Cite a registry-backed concept by returning the canonical concept value and the filing prose around that value from MD&A, notes, risk factors, and optional cached extraction spans. Use `cite_concept` for metric-anchored narrative joins (concept value first → find the prose around it). For question-shaped narrative retrieval (no anchoring concept), use `get_filing_evidence` instead. The two tools are sharply distinguished: `cite_concept` ALWAYS resolves a canonical concept value and returns the narrative around it; `get_filing_evidence` runs a source-pack planner and surfaces evidence for an arbitrary query. Discovery: choose concept_name from the v1 concept registry (data/concept_registry_v1.json) or from get_statement output, then pass the canonical name exactly. Each citation includes corpus_coverage. Use Edgar mint fields only when corpus_coverage="gap". Treat corpus_coverage="unknown" exactly like "covered": attempt the corpus excerpt service, then fall back to unverified if the corpus cannot resolve it. For gap citations, corpus_content_hash is sha256 over the ENTIRE content stream named by locator.content/locator.content_norm (whole cached filing markdown or whole flattened document text), not over the cited span; recompute that full stream and use locator to select the span within it.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_stale_extractions | boolean | – | – |
| concept_name | string | yes | – |
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| include_extractions | boolean | – | – |
| max_narrative_spans_per_source | integer | – | – |
| narrative_sources | – | – | – |
| quarter | integer | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
compare_concept Compare Concept ~152
Compare one registry-backed concept across a caller-provided list of filers. This is cross-filer comparison, not search: caller ticker order is preserved, and partial coverage is returned per row with available=false. Discovery: choose concept_name from the v1 concept registry (data/concept_registry_v1.json) or from a prior get_statement/get_concept call, then reuse that exact canonical name for every ticker.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_name | string | yes | – |
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| quarter | integer | yes | – |
| source | string | – | – |
| ticker_periods | – | – | – |
| tickers | array | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
compare_filing_tables Compare Filing Tables ~115
Compare structured filing tables across caller-provided tickers in one response. Preserves ticker order and returns per-ticker availability, matching table metadata, and optionally hydrated table rows.
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | – |
| form_type | – | – | – |
| include_full_tables | boolean | – | – |
| limit_per_ticker | integer | – | – |
| period_from | – | – | – |
| period_to | – | – | – |
| section_key | – | – | – |
| source | string | – | – |
| table_type | – | – | – |
| tickers | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
concept_trend Concept Trend ~220
Return a cache-only time series for a registry-backed concept over a period range. v1 uses the latest filing's reported series and has no restatement awareness: it does not return restated or original_value fields. Discovery: choose concept_name from the v1 concept registry (data/concept_registry_v1.json), get_statement output, or a successful get_concept call before requesting the trend.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_name | string | yes | – |
| date_type | – | – | – |
| period_from | string | yes | Inclusive concept period bound in FYyyyy, YYYY-FY, or YYYY-Qn format, for example FY2024, 2024-FY, or 2024-Q4. ISO dates are not accepted. |
| period_to | string | yes | Inclusive concept period bound in FYyyyy, YYYY-FY, or YYYY-Qn format, for example FY2024, 2024-FY, or 2024-Q4. ISO dates are not accepted. |
| source | string | – | – |
| ticker | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
describe_filing Describe Filing ~67
Show cached data availability for one filing across XBRL, sections, tables, extraction schemas, and markdown. Read-only; does not populate caches.
| Name | Type | Req | Description |
|---|---|---|---|
| quarter | integer | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
extract_filing_file Extract Filing File ~110
Resolve a short-lived artifact handle issued by get_filing_sections and run scratch extraction for the requested schema via /api/documents/scratch-extract, without creating a canonical filing identity. Discovery: choose schema_name from list_extraction_schemas and pass the artifact_handle returned by get_filing_sections(output="file"). Local file paths and unregistered bytes are never accepted.
| Name | Type | Req | Description |
|---|---|---|---|
| artifact_handle | string | yes | – |
| schema_name | string | yes | – |
| sections_filter | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_concept Get Concept ~149
Get a registry-backed financial concept value from cached XBRL financials. v1 resolves tag-backed concepts only and returns available=false for derivation or unsupported concepts. It never warms caches; call get_financials first when cache_status is cold. Discovery: choose concept_name from the v1 concept registry (data/concept_registry_v1.json) or from statement rows returned by get_statement. Pass the canonical concept name exactly.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_name | string | yes | – |
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| quarter | integer | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_event_filings Get Event Filings ~237
Discover SEC event filings by ticker/CIK, filing-date range, and form type. Use this for deal, financing, proxy, filed-communication, and status-update materials that are not tied to a fiscal quarter's 10-K/10-Q. Do not pass 10-K or 10-Q here; use get_filings for periodic filing discovery, or get_filing_document/get_filing_sections when periodic filing content is needed. Event-form examples include 8-K, 425, proxy forms, S-3/S-3ASR, S-4, FWP, 424B*, 8-A12B, CERT, and SC 13D. Returns accession, issuer CIK, form, filing date, primary document URL, and deterministic event_type labels; it does not perform broad corpus search.
| Name | Type | Req | Description |
|---|---|---|---|
| cik | – | – | – |
| filing_date_from | – | – | – |
| filing_date_to | – | – | – |
| form_types | – | – | – |
| limit | integer | – | – |
| query | – | – | – |
| related_tickers | – | – | – |
| sort_order | string | – | – |
| ticker | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_extraction_series Get Extraction Series ~226
Periodized counts (and optional hits) for langextract spans across a YYYY-Qn/YYYY-FY period range. ISO dates are not accepted. Cache read only. For raw cross-filing hits, use search_extractions.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_stale | boolean | – | – |
| attributes | – | – | – |
| class_ | – | – | – |
| form_type | – | – | – |
| include_candidates | boolean | – | – |
| include_hits | boolean | – | – |
| limit_hits_per_period | integer | – | – |
| period_from | string | yes | Inclusive period bound in YYYY-Qn or YYYY-FY format, for example 2024-Q4 or 2024-FY. ISO dates such as 2024-12-31 are not accepted. |
| period_to | string | yes | Inclusive period bound in YYYY-Qn or YYYY-FY format, for example 2024-Q4 or 2024-FY. ISO dates such as 2024-12-31 are not accepted. |
| schema | string | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_cover_facts Get Filing Cover Facts ~117
Get exact cover-page DEI facts from a 10-K/10-Q, including citation-ready source metadata. Use this for outstanding-share questions instead of balance-sheet common-stock rows or weighted-average share metrics. Related tools: get_filing_document for markdown, get_filing_evidence for qualitative evidence, and get_filing_extractions for cached structured spans.
| Name | Type | Req | Description |
|---|---|---|---|
| fact_name | string | – | – |
| quarter | integer | yes | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_document Get Filing Document ~497
Get a SEC filing as readable markdown. Returns sectioned markdown with ## SECTION: headers. Supports section filtering and pagination via char range or max_chars cap. Pass accession plus cik/form_type/primary_document from get_event_filings to read an exact event filing without falling back to the latest filing for a fiscal quarter. Period-keyed reads are cache backed; exact-accession reads are fetched live. sections accepts canonical keys such as item_1a, item_7, item_7a, item_8, part1_item1, part1_item2, earnings_release, and proxy_statement; Item notation such as "Item 7" is also accepted. Common aliases include MD&A, Risk Factors, Financial Statements, Notes, Debt, Leases, Non-GAAP reconciliation / non_gaap_reconciliation, Director Compensation, Voting Rights, Election of Directors, and Proposal 1. For narrow topical phrases inside a filing section, call search_filing_text first and then read the returned section key or char range with get_filing_document. Related tools: get_filing_evidence plans evidence retrieval, get_filing_cover_facts reads exact DEI facts, and get_filing_extractions returns cached structured spans. char_start/char_end are always full-document offsets; offset_frame="document" or offset_frame="auto" is accepted for compatibility and ignored. Do not use offset_frame="scoped" here; use corpus filings_read for section-scoped offsets. The top-level response includes corpus_coverage; document_id, corpus_content_hash, and locator are emitted only for parser-owned gaps. Treat corpus_coverage="unknown" exactly like "covered": attempt the corpus excerpt service, then fall back to unverified if unresolved. For gap responses, corpus_content_hash is sha256 over the ENTIRE content stream named by locator.content/locator.content_norm, not over the returned slice; recompute that full stream and use locator to select the slice within it.
| Name | Type | Req | Description |
|---|---|---|---|
| accession | – | – | – |
| char_end | – | – | – |
| char_start | – | – | – |
| cik | – | – | – |
| form_type | – | – | – |
| max_chars | integer | – | – |
| offset_frame | – | – | – |
| primary_document | – | – | – |
| quarter | – | – | – |
| sections | – | – | – |
| source | string | – | – |
| ticker | – | – | – |
| year | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_evidence Get Filing Evidence ~460
Plan and retrieve filing evidence in one call for a qualitative SEC filing question. The source planner is internal; inspect its output by setting include_planner_trace=true, or by reading the X-Edgar-Planner-Trace response header when using the HTTP route directly. For metric-anchored joins from a concept value to supporting prose, use cite_concept instead once that Phase 6 tool is shipped. Supported task_intent values include regulatory_risk, concentration_risk, acquisition_strategy, revenue_disaggregation, debt_terms, deal_status, security_offering_terms, and guidance_actuals; deal_terms is accepted as a deal_status alias for merger/acquisition-status questions. For event backed intents, pass filing_date_from/to and form_types when known. Related tools: get_filing_document for source markdown, get_filing_cover_facts for exact cover facts, and get_filing_extractions for cached structured spans. Evidence rows include corpus_coverage. Use document_id, corpus_content_hash, and locator only on rows where corpus_coverage="gap". Treat corpus_coverage="unknown" exactly like "covered": attempt the corpus excerpt service, then fall back to unverified if unresolved. For gap rows, corpus_content_hash is sha256 over the ENTIRE content stream named by locator.content/locator.content_norm (whole cached filing markdown or whole flattened document text), not over the cited span; recompute that full stream and use locator to select the span within it. For table-kind rows, top-level char_start/char_end are a legacy table-ordinal anchor retained for compatibility, not character offsets; the locator object is authoritative for table rows.
| Name | Type | Req | Description |
|---|---|---|---|
| filing_date_from | – | – | – |
| filing_date_to | – | – | – |
| form_types | – | – | – |
| include_full_sections | boolean | – | – |
| include_planner_trace | boolean | – | – |
| max_hits | integer | – | – |
| quarter | integer | yes | – |
| query | string | yes | – |
| related_tickers | – | – | – |
| source | string | – | – |
| task_intent | – | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_extractions Get Filing Extractions ~120
Return cached langextract spans for one filing, or fetch the filing and run extraction on cache miss. Use this for ticker/year/quarter-keyed filings. Related tools: get_filing_document reads markdown, get_filing_evidence plans qualitative evidence, and get_filing_cover_facts returns DEI facts.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_stale | boolean | – | – |
| quarter | integer | yes | – |
| schema | string | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_sections Get Filing Sections ~579
Parse qualitative sections from one filing resolved by ticker/year/quarter. Required call shape: `get_filing_sections(ticker="MSCI", year=2025, quarter=4, sections=["item_1", "item_7"])`. This tool does not accept accession-only calls. If you only have an accession, call get_filing_document for readable markdown, or recover the ticker/year/quarter with get_filings/get_event_filings before requesting sections. Do not pass `form_types`, `forms`, `limit`, `years`, or `period`. Section filters accept canonical keys like "item_1" and "part1_item2", or filing headings like "Item 1. Business". Use source='8k' for 8-K earnings release sections or source='proxy' for DEF 14A proxy statements. Use source='20f' or source='6k' for foreign private issuer filings exposed as whole-document sections. get_filings does not list proxy filings; use this routed access path directly. Do not use as the first step for broad qualitative questions; prefer corpus search (research-corpus-mcp.filings_search) when available, or search_filing_text once it lands. Pass explicit sections only after evidence discovery has identified them. Related tools: get_filing_document for readable markdown, get_filing_evidence for question-shaped evidence, and get_filing_cover_facts for exact DEI cover-page facts.
| Name | Type | Req | Description |
|---|---|---|---|
| fallback | boolean | – | – |
| format | string | – | – |
| include_tables | boolean | – | – |
| max_words | – | – | – |
| output | string | – | – |
| quarter | integer | yes | Fiscal quarter number 1-4 for the one filing period to retrieve. Use quarter=4 for annual 10-K/full-year context. Do not pass quarter=0 or period='annual'. |
| sections | – | – | Optional section keys or headings, for example ['item_1', 'item_7'] for a 10-K or ['part1_item2'] for a 10-Q. Omit to list available sections for the resolved filing. |
| source | – | – | Optional filing family override. Omit or use auto for ordinary 10-K/10-Q filings; use 8k for earnings releases, proxy for DEF 14A proxy statements, or 20f/6k for foreign issuer filings. |
| tables_only | boolean | – | – |
| ticker | string | yes | Company ticker symbol, for example MSCI or PCTY. Required for periodic filing tools. |
| year | integer | yes | Fiscal year for the one filing period to retrieve, for example 2025. Do not pass years=5 or period='annual'; call the periodic tool once per target fiscal period. |
Structured output declared, but exposes no named fields.
No examples provided.
get_filing_tables Get Filing Tables ~189
Fetch structured filing tables. Listing modes return metadata only; supplying table_id returns a single table with full row data. Pass accession to require the returned table cache to match a specific resolved filing identity. Omit source or use source='auto' for ordinary 10-K/10-Q tables. Use source='proxy' for DEF 14A proxy tables; use source='20f' or source='6k' with accession to target a specific foreign issuer filing from get_filings. Related tools: get_filing_document reads markdown, get_filing_evidence finds prose evidence, and get_filing_cover_facts returns exact cover-page DEI facts.
| Name | Type | Req | Description |
|---|---|---|---|
| accession | – | – | – |
| quarter | integer | yes | – |
| section | – | – | – |
| source | – | – | – |
| table_id | – | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_filings Get Filings ~351
Fetch SEC filing metadata for one fiscal period. Required call shape: `get_filings(ticker="MSCI", year=2025, quarter=4)`. This is not a recent-filings/list/search endpoint. Do not pass `form_types`, `forms`, `limit`, `years`, or `period`. For annual 10-K discovery use quarter=4. For quarterly 10-Q discovery use the target fiscal quarter. Defaults to 10-Q, 10-K, and 8-K earnings release filings. Use source='20f' or source='6k' to list foreign issuer filings and discover accessions for targeted table retrieval. Do not use source='proxy' here: get_filings does not list DEF 14A proxy filings. For proxy discovery, call get_event_filings with form_types=['DEF 14A'] and a filing-date range. For proxy content, call get_filing_document, get_filing_sections, or get_filing_tables with source='proxy' and quarter=4 because DEF 14A is annual.
| Name | Type | Req | Description |
|---|---|---|---|
| quarter | integer | yes | Fiscal quarter number 1-4 for the one filing period to retrieve. Use quarter=4 for annual 10-K/full-year context. Do not pass quarter=0 or period='annual'. |
| source | string | – | – |
| ticker | string | yes | Company ticker symbol, for example MSCI or PCTY. Required for periodic filing tools. |
| year | integer | yes | Fiscal year for the one filing period to retrieve, for example 2025. Do not pass years=5 or period='annual'; call the periodic tool once per target fiscal period. |
Structured output declared, but exposes no named fields.
No examples provided.
get_financials Get Financials ~401
Extract all financial facts from one fiscal filing. Required call shape: `get_financials(ticker="MSCI", year=2024, quarter=4, full_year_mode=True)`. This is not a multi-year/list endpoint. Do not pass `years`, `period`, `limit`, `statement`, `forms`, or `form_types`. For a five-year history, call this tool once per target fiscal period, or use get_statement range mode when a bulk template-backed statement is acceptable. Returns structured JSON with income statement, balance sheet, and cash flow data. If returned, `scope_warnings` flag mixed-scope cash-flow facts. `scope_bridges` are returned only when distinct, period-aligned continuing- or discontinued-operations CFO facts support a same-scope candidate; otherwise the warning reports `bridge_status="unavailable"` and the raw filing facts remain authoritative.
| Name | Type | Req | Description |
|---|---|---|---|
| full_year_mode | boolean | – | True only when retrieving full-year/annual facts such as a 10-K period. Keep false for quarterly 10-Q or quarterly 8-K pulls, including Q4 quarter-only work. |
| output | string | – | Use file for large fact sets; inline only for small/debug reads. |
| quarter | integer | yes | Fiscal quarter number 1-4 for the one filing period to retrieve. Use quarter=4 for annual 10-K/full-year context. Do not pass quarter=0 or period='annual'. |
| source | string | – | Use auto for normal 10-Q/10-K lookup, or 8k for earnings-release facts. |
| ticker | string | yes | Company ticker symbol, for example MSCI or PCTY. Required for periodic filing tools. |
| year | integer | yes | Fiscal year for the one filing period to retrieve, for example 2025. Do not pass years=5 or period='annual'; call the periodic tool once per target fiscal period. |
Structured output declared, but exposes no named fields.
No examples provided.
get_issuer_submissions_meta Get Issuer Submissions Meta ~90
Fetch an issuer's SEC submissions header by CIK. Returns the issuer name, tickers, exchanges, and fiscal year end directly from the public SEC submissions JSON. This tool does not require EDGAR_API_KEY. CIK must contain at most 10 digits; shorter values are zero-padded to the SEC's 10-digit format.
| Name | Type | Req | Description |
|---|---|---|---|
| cik | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_metric Get Metric ~327
Get a specific financial metric by common name or XBRL tag and return current/prior values with YoY comparison. For guessed or user-facing names, call search_metrics or list_metrics first and pass an exact discovered metric_name into this tool; do not retry near-miss names blindly. Optional role filters accept friendly statement roles such as ["cash_flow"] or ["balance_sheet"]. If the response says the cache is cold, call warm_metric_cache with warm_hint.body.items, poll warm_metric_cache_status, then retry get_metric. Cash-flow metrics may include `scope_warnings` and `scope_bridges`; treat bridges as adjustment candidates for same-scope analysis, not replacements for reported facts. Filing-native operational KPI misses include a remediation hint for get_operational_kpi_drivers when the name looks like a non-XBRL operating metric. Scope bridges require direct, period-aligned CFO-scope facts; component-level wind-down or working-capital facts remain evidence and do not create calculated continuing-operations CFO. Discovery: call list_metrics or search_metrics for the same ticker, year, quarter, source, and date_type before choosing metric_name. Use get_metric for one period and get_metric_series when the same metric is needed across periods.
| Name | Type | Req | Description |
|---|---|---|---|
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| metric_name | string | yes | – |
| quarter | integer | yes | – |
| role | – | – | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_metric_series Get Metric Series ~499
Fetch one metric across multiple periods in a single call, using cache-first execution and per-period status reporting. Optional role filters are applied per period before the best match is selected. Pass `axis_key` exactly as returned by search_metrics/list_metrics when the user needs a dimensional fact such as product revenue. For FCF, FCF margin, cash conversion, or trend questions, inspect per-period `scope_warnings` and `scope_bridges`. Bridges require direct, period-aligned CFO-scope facts; when a warning instead reports `bridge_status="unavailable"`, present the raw trend and underlying evidence without manufacturing a same-scope value. `metric_name` must be an exact discovered metric name, not a natural-language description. If the metric label came from the user, a filing heading, or your own shorthand, call `search_metrics` or `list_metrics` for the ticker/period first and pass the returned `metric_name`/`metric_id` exactly. Do not guess nearby names such as `Revenues`, `capital expenditures`, `cash flow from operations`, or `GrossBookingValue`; use discovered values such as `Revenue`, `NetCashProvidedByUsedInOperatingActivities`, or `PaymentsToAcquirePropertyPlantAndEquipment` when those are the returned matches. Required parameters are `metric_name`, `end_year`, and `end_quarter`; do not use `metric`, `years`, or `period`. If the result says "Metric series has no values," treat it as a metric-name miss and retry after discovery unless the message explicitly says uncached. If the message says uncached, call `warm_metric_cache` with `warm_hint.body.items`, poll `warm_metric_cache_status`, then retry this tool. Discovery: call list_metrics or search_metrics for the same ticker, period, source, and date_type to choose metric_name. Use get_metric for a single period and get_metric_series for multi-period retrieval.
| Name | Type | Req | Description |
|---|---|---|---|
| axis_key | – | – | – |
| cached_only | boolean | – | – |
| date_type | – | – | – |
| end_quarter | integer | yes | – |
| end_year | integer | yes | – |
| full_year_mode | boolean | – | – |
| metric_name | string | yes | – |
| periods | integer | – | – |
| role | – | – | – |
| source | string | – | – |
| ticker | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_operational_kpi_driver_rows Get Operational Kpi Driver Rows ~218
Return the strict producer-owned operational-KPI driver row DTO from `/api/operational-kpis/drivers`. Use these versioned, calculation-ready rows for programmatic consumers and cross-transport interoperability. `topic` optionally scores rows against a requested metric. Set `filter_to_topic=true` to exclude rows with no positive topic match. `include_non_numeric` preserves explicitly non-numeric observations when the producer has them. The MCP transport returns the HTTP data payload unchanged and does not infer missing semantic fields. For exploratory filing research that needs narrative change amounts, constant-currency driver commentary, or filing-local label discovery, use `get_operational_kpi_drivers`; that distinct research tool is not a mirror of this DTO.
| Name | Type | Req | Description |
|---|---|---|---|
| filter_to_topic | boolean | – | – |
| include_non_numeric | boolean | – | – |
| quarter | integer | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| topic | – | – | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_operational_kpi_drivers Get Operational Kpi Drivers ~190
Return structured operational KPI values and driver growth rates from a filing's MD&A/earnings discussion. Use this for non-XBRL operating metrics such as Gross Bookings, MAPCs, Trips, customer counts, revenue driver bridges, take-rate inputs, segment growth rates, constant-currency growth, and volume-vs-price decomposition. It discovers candidate labels from the filing document and returns citation-ready rows with snippets; it does not run the slower generic KPI catalog extractor. For the strict producer-owned operational-KPI row DTO mirrored from HTTP, use get_operational_kpi_driver_rows instead.
| Name | Type | Req | Description |
|---|---|---|---|
| max_chars | integer | – | – |
| quarter | integer | yes | – |
| sections | – | – | – |
| source | string | – | – |
| ticker | string | yes | – |
| topic | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_statement Get Statement ~247
Return a bulk structured statement (income statement, balance sheet, or cash flow statement) from a deterministic v1 statement template and the v1 concept registry. Supports single-period mode with year+quarter and range mode with period_from+period_to; the two modes are mutually exclusive. v1 templates contain tag-kind concepts only, so computed or derivation rows such as margins and ratios belong in separate concept_trend calls. Note for model_build / AI-excel-addin populator consumers: this tool is NOT pre-approved as a model_build input. Production model_build flows must continue to use `/api/financials` + `/api/metric/series` until model_build explicitly accepts this tool's contract, provenance shape, error semantics, and `concept_registry_version` pinning. `get_statement` is additive and opt-in for ad-hoc use, FinanceBench harness, and standalone Edgar product.
| Name | Type | Req | Description |
|---|---|---|---|
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| period_from | – | – | – |
| period_to | – | – | – |
| quarter | – | – | – |
| source | string | – | – |
| statement | string | yes | – |
| ticker | string | yes | – |
| year | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_extraction_schemas List Extraction Schemas ~23
List the document extraction schemas available through the EDGAR API.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_metrics List Metrics ~164
List available metric tags for a filing period so an agent can choose an exact metric_name before calling get_metric. Cash-flow candidates may carry `scope_warning` and `scope_bridge_ids`; validate those before using CFO in margin or trend formulas. Debt candidates may carry `debt_component_kind` values such as `instrument_principal`, `coupon_rate`, `finance_lease`, `other_notes`, or `total_debt_rollup`; consumers own any source-basis sum.
| Name | Type | Req | Description |
|---|---|---|---|
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| include_values | boolean | – | – |
| limit | integer | – | – |
| quarter | integer | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_extractions Search Extractions ~210
Search cached langextract spans across filings using structured filters. Periods must use YYYY-Qn or YYYY-FY, not ISO dates. Read-only; cache misses are reported and never trigger LLM extraction.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_stale | boolean | – | – |
| attributes | – | – | – |
| class_ | – | – | – |
| form_type | – | – | – |
| include_candidates | boolean | – | – |
| limit | integer | – | – |
| period_from | string | yes | Inclusive period bound in YYYY-Qn or YYYY-FY format, for example 2024-Q4 or 2024-FY. ISO dates such as 2024-12-31 are not accepted. |
| period_to | string | yes | Inclusive period bound in YYYY-Qn or YYYY-FY format, for example 2024-Q4 or 2024-FY. ISO dates such as 2024-12-31 are not accepted. |
| schema | string | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_filing_tables Search Filing Tables ~123
Cross-filing search over an Edgar table index for a ticker. Matches on table description, table_type, and section. Returns metadata only; use get_filing_tables with the table_id to fetch full table contents. Use search_filing_text for same-filing prose search.
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | – |
| form_type | – | – | – |
| limit | integer | – | – |
| period_from | – | – | – |
| period_to | – | – | – |
| section_key | – | – | – |
| source | string | – | – |
| table_type | – | – | – |
| ticker | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_filing_text Search Filing Text ~244
Search cached markdown within one SEC filing keyed by ticker, year, quarter, and source. Read-only: cold caches return cache_status='cold' and are not warmed. CC5 prefix exception: although search_* usually denotes cross-filing search, search_filing_text is intentionally same-filing only and requires the per-filing ticker/year/quarter inputs. Use search_filing_tables for cross-filing table metadata search. Hits include corpus_coverage. Mint fields appear only when Edgar is the authoritative parser-side source for the cited span. Treat corpus_coverage="unknown" exactly like "covered": attempt the corpus excerpt service, then fall back to unverified if unresolved. For gap hits, corpus_content_hash is sha256 over the ENTIRE content stream named by locator.content/locator.content_norm (whole cached filing markdown), not over the hit span; recompute that full stream and use locator to select the span within it.
| Name | Type | Req | Description |
|---|---|---|---|
| quarter | integer | yes | – |
| query | string | yes | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_metrics Search Metrics ~183
Search available filing metrics by natural-language query and return ranked candidates. Optional role filters accept friendly statement roles such as ["cash_flow"], ["balance_sheet"], or ["income_statement"]. Cash-flow matches may carry mixed-scope warnings and bridge IDs; inspect the returned top-level `scope_bridges` before using CFO in FCF-style formulas. Debt refinance/tranche queries surface structured XBRL components with `debt_component_kind`; this tool does not pre-sum refinanceable debt.
| Name | Type | Req | Description |
|---|---|---|---|
| date_type | – | – | – |
| full_year_mode | boolean | – | – |
| include_values | boolean | – | – |
| limit | integer | – | – |
| quarter | integer | yes | – |
| query | string | yes | – |
| role | – | – | – |
| source | string | – | – |
| ticker | string | yes | – |
| year | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
warm_metric_cache Warm Metric Cache ~57
Enqueue async cache warming for metric periods. Paid/internal API tiers only. Each item requires ticker, year, quarter, and optional full_year_mode. Returns a job_id for warm_metric_cache_status polling.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
warm_metric_cache_status Warm Metric Cache Status ~45
Poll an async metric cache warming job by job_id. Discovery: job_id is returned by warm_metric_cache; do not invent one.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
What is the EdgarParser MCP server?
EdgarParser MCP is listed in the public MCP registry as io.github.henrysouchien/edgar-mcp. MCP stdio server for source-backed SEC EDGAR financial data from the hosted EdgarParser API. This page covers its PyPI package (edgar-mcp).
Is the EdgarParser MCP server safe to use?
EdgarParser MCP scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the EdgarParser MCP server expose?
EdgarParser MCP exposes 31 tools: get_filings, get_event_filings, get_issuer_submissions_meta, get_financials, describe_filing, and 26 more. Their descriptions and schemas cost roughly 6,984 tokens of context every time the server is loaded.
Is the EdgarParser MCP server still maintained?
EdgarParser MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.