SkillAgentSearch skills...

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-server

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

81/100

Category

Marketing

Supported Platforms

Claude Code
Claude Desktop

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.

Substance
30/30
Structure
20/20
Description
12/15
Adoption
4/20
Freshness
15/15

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 found

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.

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.

SkillScoreStarsUpdatedFormat
secedgar-mcp-server (this skill)by cyanheads81106d agoMCP Server
Agent-Reachby Panniantong10095.5k3d agoCLAUDE.md
headroomby headroomlabs-ai10075.0ktodayCLAUDE.md
CowAgentby zhayujie10047.3k1d agoCLAUDE.md
Scraplingby D4Vinci10086.7ktodayMCP 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.
<div align="center"> <h1>@cyanheads/secedgar-mcp-server</h1> <p><b>Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.</b> <div>16 Tools (+1 opt-in) • 2 Resources • 1 Prompt</div> </p> </div> <div align="center">

npm License Docker MCP SDK TypeScript Bun

</div> <div align="center">

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

</div> <div align="center">

Public 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-B or BRK.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 carry series_id and class_id
  • Corporate suffix form need not match the registry (Beacon Financial Corporation → Beacon Financial Corp), but Corp/Inc/Co/Ltd stay 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 — list 10-K/A to include amendments); filed_after/filed_before and under-filled form filters page into the older submissions archive, reaching filings past the ~1000-entry recent window — history_scanned_through reports the scan depth, and the full filtered history stages as df_<id> when it exceeds filing_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 (scan reports 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, and location exist only on efts rows
  • 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 binary in the document catalog and rejected with a binary_document error 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_offset as offset to continue; first-page truncated responses include a detected outline (headings + offsets)
  • section jumps 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 per accession + 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) — see secedgar://concepts for the full mapping
  • Automatic deduplication to one value per standard calendar period; filter by period_type (annual/quarterly/all)
  • Optional limit caps the inline series to the most-recent N periods; the full series stays queryable via df_<id>
  • caveats names 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 caveats entry 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_financials calls
  • 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 gaps with 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_financials when 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, since secedgar_search_filings and secedgar_company_search cannot 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 12 is the ancestor of 2.02, 9 of 7.01); decoding keys off the code's shape so a filing straddling the changeover is never mis-decoded
  • item_distribution counts 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

View on GitHub
GitHub Stars10
CategoryMarketing
Updated6d ago
Forks4

Languages

TypeScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low1 info