secedgar-mcp-server
Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP.
Install / Use
claude mcp add cyanheads -- npx -y github:cyanheads/secedgar-mcp-serverIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
MarketingSupported Platforms
Tags
Our assessment of secedgar-mcp-server
secedgar-mcp-server scores 81/100 on our quality scale, 545th of 595 Marketing skills we index.
Its MCP Server is 34 KB long, well organised into 40 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 6 days ago, so secedgar-mcp-server is actively maintained.
- Our last check on 2026-09-25 found the source still online.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
secedgar-mcp-server compared with similar skills
All 4 of these similar skills score higher than secedgar-mcp-server; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| secedgar-mcp-server (this skill)by cyanheads | 81 | 10 | 6d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 95.5k | 3d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 75.0k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.3k | 1d ago | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 86.7k | today | MCP Server |
Frequently asked questions
- How do I install secedgar-mcp-server?
- Run
claude mcp add cyanheads -- npx -y github:cyanheads/secedgar-mcp-server. The install tabs above show the steps for each supported agent. - Which AI agents does secedgar-mcp-server work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is secedgar-mcp-server safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is Apache-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is secedgar-mcp-server still maintained?
- The repository was last updated 6 days ago, so secedgar-mcp-server is actively maintained.
Skill content
View source on GitHubPublic Hosted Server: https://secedgar.caseyjhand.com/mcp
</div>Overview
SEC EDGAR filings, XBRL financials, and company ownership data, keyless aside from a required SEC User-Agent header. Resolve companies by ticker, name, or CIK, search filings back to 1993, pull XBRL financials and cross-company comparisons by concept, and trace ownership — insider transactions, 13F institutional holdings, 13D/13G blockholders, and fund holdings — from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
Tools
| Tool | Description |
|:---|:---|
| secedgar_company_search | Find companies and retrieve entity info with optional recent filings |
| secedgar_search_filings | Search EDGAR filings since 1993 — full-text (2001+) plus archive-backed browse for pre-2001 ranges |
| secedgar_get_filing | Fetch a specific filing's metadata and document content |
| secedgar_get_financials | Get historical XBRL financial data for a company |
| secedgar_get_snapshot | One-call financial profile — the latest value of every supported concept, grouped by statement |
| secedgar_get_material_events | 8-K filings with item codes decoded and filterable — earnings, officer changes, non-reliance |
| secedgar_get_insider_transactions | Form 4 / 4-A insider transactions (buys, sells, grants, exercises) parsed from ownership XML |
| secedgar_get_institutional_holdings | 13F-HR quarterly institutional holdings parsed from the information table |
| secedgar_find_holders | Reverse 13F lookup — which institutional managers reported holding an issuer |
| secedgar_get_beneficial_owners | 5%+ blockholders of an issuer, parsed from structured SCHEDULE 13D / 13G filings |
| secedgar_get_fund_holdings | ETF and mutual fund portfolio holdings from the quarterly NPORT-P report |
| secedgar_fetch_frames | Fetch SEC XBRL frames for one concept × one period across all reporting companies |
| secedgar_compare_companies | Compare named companies across several concepts, aligned on calendar periods |
| secedgar_search_concepts | Discover supported XBRL concept names or reverse-lookup a raw tag |
| secedgar_dataframe_describe | List canvas dataframes with provenance, TTL, and schema |
| secedgar_dataframe_query | Run a single-statement SELECT across dataframes |
| secedgar_dataframe_drop | Drop a canvas dataframe by name. Opt-in via EDGAR_DATAFRAME_DROP_ENABLED=true — off by default since TTL already handles cleanup, and uncallable until the flag is set |
Resources
| Resource | Description |
|:---|:---|
| secedgar://concepts | Common XBRL financial concepts grouped by statement, mapping friendly names to XBRL tags |
| secedgar://filing-types | Common SEC filing types with descriptions, cadence, and use cases, plus the full 8-K item-code decode tables for both numbering regimes |
Prompts
| Prompt | Description |
|:---|:---|
| secedgar_company_analysis | Guides a structured analysis of a public company's SEC filings: identify recent filings, extract financial trends, surface risk factors, and note material events |
Capability reference
secedgar_company_search <sub>tool</sub>
- Resolves ticker symbols, company names, or CIK numbers; a multi-class share ticker matches either form (
BRK-BorBRK.B), and current/former names both resolve (Facebook→ Meta Platforms,Square→ Block) - ETFs and mutual funds resolve by ticker via
company_tickers_mf.json; fund results carryseries_idandclass_id - Corporate suffix form need not match the registry (
Beacon Financial Corporation→Beacon Financial Corp), butCorp/Inc/Co/Ltdstay distinct — separate registrants can differ only by which one they use - Near-match suggestions on a zero-result name or ticker search (e.g.
Microsfot→MICROSOFT CORP / MSFT) - Optional recent filings inline, filtered by
forms(exact form match — list10-K/Ato include amendments);filed_after/filed_beforeand under-filled form filters page into the older submissions archive, reaching filings past the ~1000-entry recent window —history_scanned_throughreports the scan depth, and the full filtered history stages asdf_<id>when it exceedsfiling_limit - Returns entity metadata — SIC code, exchanges, fiscal year end, state of incorporation
secedgar_search_filings <sub>tool</sub>
- Full-text search (2001–present, the EFTS index floor) with exact phrases, boolean operators, wildcards, and inline entity targeting (
cik:320193/ticker:AAPL, either share-class form for multi-class tickers) — server-side scoped by CIK, so former-name filings on the same entity are included - Browse mode (omit
query) lists by form type and/or entity, optionally narrowed by date; a bare date range must pair with forms or entity targeting - Pre-2001 date ranges (back to 1993) route to the archives — entity-scoped reads the filer's full submissions history, unscoped browses the quarterly full-index; pre-2001 free-text search needs
ticker:/cik:entity scope, since it works by reading up to 50 candidate documents (scanreports candidates/scanned/matched, costing ~5s for a full scan) - A range crossing 2001-01-01 is split at the boundary and merged, each row tagged with its
source(efts/submissions/full-index);period_ending,ticker,file_description,sic, andlocationexist only oneftsrows - Filing-date range (
filed_after+filed_before, both inclusive, both required together) and form filtering (forms, amendments included), pagination up to 10,000 results; response includes form distribution for narrowing follow-up searches - The full result set stages as
df_<id>when it exceeds the inline limit
secedgar_get_filing <sub>tool</sub>
- Accepts accession numbers in dash or no-dash format; fetches the primary document or a specific exhibit by name
- Converts HTML filings to plain text; pre-2005 filings produce noisier output
- Configurable
content_limit(1K–200K characters, default 50K) - Binary entries (scanned pages, PDF exhibits, packaged archives/spreadsheets) are marked
binaryin the document catalog and rejected with abinary_documenterror rather than returned as decoded bytes - Offset paging for large documents (10-K, S-1/A can exceed 1M chars) — pass a truncated response's
next_offsetasoffsetto continue; first-page truncated responses include a detectedoutline(headings + offsets) sectionjumps directly to a named heading by substring match ignoring case, whitespace style, and quote style ("risk factors","item 7") — a miss returns the detected outline; extracted text is cached peraccession + document(bounded LRU, 8 entries) so paged calls are cheap
secedgar_get_financials <sub>tool</sub>
- Friendly names (
"revenue","net_income","eps_diluted") auto-resolve to XBRL tags, including historical tag changes (e.g. ASC 606 revenue recognition) — seesecedgar://conceptsfor the full mapping - Automatic deduplication to one value per standard calendar period; filter by
period_type(annual/quarterly/all) - Optional
limitcaps the inline series to the most-recent N periods; the full series stays queryable viadf_<id> caveatsnames every calendar quarter absent from the frame-tagged series — SEC reports fiscal Q4 as the 10-K residual, so the calendar quarter it spans carries no discrete quarterly value (calendar-year filers included), and a filer whose other fiscal quarters span non-calendar durations can lose a second quarter the same way- A separate
caveatsentry appears when the concept resolved to an XBRL tag SEC has retired from the taxonomy — that only happens when no current tag reports for the filer, and the series can then stop years short
secedgar_get_snapshot <sub>tool</sub>
- Reads the filer's complete companyfacts payload once and resolves every supported concept against it — one call instead of a run of
secedgar_get_financialscalls - Same frame dedup and tag priority as
secedgar_get_financials, so the two agree for any concept they both cover - Duration concepts (income statement, cash flow, per-share) report their latest full year and latest single quarter; balance-sheet and entity-info concepts report their latest point-in-time value
- Concepts the filer does not report are listed under
gapswith the XBRL tags that were tried — never zero-filled or interpolated - IFRS filers resolve through the mapped IFRS tag variants via
taxonomy: "ifrs-full", covering the income statement, balance sheet, cash flow, and per-share concepts; each line reports the taxonomy its value came from - Compact single-record profile, no dataframe — reach for
secedgar_get_financialswhen a time series is needed
secedgar_get_material_events <sub>tool</sub>
- Filter with
items(e.g.["2.02"]results of operations,["5.02"]officer departures,["4.02"]non-reliance) — the only surface that scopes by what the event actually was, sincesecedgar_search_filingsandsecedgar_company_searchcannot see item codes - Two numbering regimes are both accepted and decoded: the dotted scheme in force since 2004-08-23, and single integers before it (legacy
12is the ancestor of2.02,9of7.01); decoding keys off the code's shape so a filing straddling the changeover is never mis-decoded item_distributioncounts every code across the scanned window before the filter, so a zero-hit filter still surfaces the items that are present- A date window pages into the older submissions archive, reaching 8-K filings older than the
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
95.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
75.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.3kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
86.7k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
