Skip to content

cyanheads/secedgar-mcp-server

v0.17.0Apache-2.0

Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP.

Changelog

All notable changes to this project. Each entry links to its full per-version file in changelog/.

0.17.0 — 2026-10-26

Publishes the secedgar-guide Agent Skill over MCP, escapes caller and SEC text inside notices, corrects dataframe join-key and TTL descriptions, and moves to mcp-ts-core 0.13.18 and DuckDB 2.

0.16.0 — 2026-10-25 · ⚠️ Breaking

Over-cap limits are served at the cap behind EDGAR_CLAMP_OVERSIZED_LIMITS, 13F-HR/A amendments are composed into secedgar_get_institutional_holdings, and secedgar_dataframe_query now refuses an unqualified current_schema (breaking).

0.15.15 — 2026-10-24

Correct ownership attribution and holdings disclosure, preserve numeric text and fund denominations, and provide holder-search continuation guidance.

0.15.14 — 2026-10-23

A cancelled tool call stops sending SEC requests and a call is bounded by a 40 s SEC failure budget; response bodies are read inside the retry ladder; secedgar_search_filings accepts filed_after or filed_before alone; get_filing section and heading detection fixes.

0.15.13 — 2026-10-18 · 🛡️ Security

get_filing's section lands on body headings ahead of table-of-contents rows and matches 20-F sub-items and NBSP-led 8-K Items; SEC calls that get no HTTP response retry, then fail as retryable sec_unreachable.

0.15.12 — 2026-10-14

compare_companies and get_financials read annual balance-sheet values at fiscal-year ends, get_filing finds more headings and sections, company_search serves filing_limit above 50, and dataframe_query rejects more SQL via mcp-ts-core 0.13.15.

0.15.11 — 2026-10-04

search_filings counts filings rather than matching documents, company names resolve to their exact match, and legacy plain-text filings keep their line structure for outlines and section navigation.

0.15.10 — 2026-10-04

Framework mcp-ts-core 0.13.6 → 0.13.11. Multi-arch Docker images now install each architecture's DuckDB binding without relying on the OTel step (#150) and drop unused musl bindings; tool errors carry their request ID; server.json's HTTP entry selects the HTTP transport.

0.15.9 — 2026-09-25

Annual XBRL values no longer come from a proxy statement's pay-versus-performance figure or a 10-Q's trailing-twelve-month total. Adds ppe_net, pretax_income, and shares_diluted, successor tags for capex and interest_expense, early unknown_concept errors with suggestions, and a taxonomy input on secedgar_fetch_frames.

0.15.8 — 2026-09-24

secedgar_get_insider_transactions takes a filed_after / filed_before window reading Form 4 history back to mid-2003, and secedgar_get_institutional_holdings finds quarters older than the recent submissions window. Fixes fund-ticker resolution after a failed or mirror-served load, deeply nested filings overflowing the stack, and archive paging.

0.15.7 — 2026-09-21

After a 429, calls are refused locally for SEC's cool-down instead of each reaching SEC and restarting its block. company/filed_after/filed_before/forms replace ticker_or_cik/start_date/end_date/form_types, old spellings accepted as aliases. secedgar_dataframe_query fixes a backslash-escaping bug and gains a fuller SQL error contract.

0.15.6 — 2026-09-16 · 🛡️ Security

Adopts mcp-ts-core through 0.13.2: HTTP sessions resolve stateless by default, shutdown closes the EDGAR mirror, and a linear-time SQL comment stripper replaces a regex a crafted query could hang on. Plugin manifests now deliver EDGAR_USER_AGENT correctly, and an empty or placeholder value fails startup instead of running blank.

0.15.5 — 2026-09-09

Registers the gated dataframe-drop tool as discoverable-but-disabled, adds a describe-then-query pointer across every dataframe-producing tool, and fixes secedgar_dataframe_query's row_limit-bound truncation disclosure with a new row_count_capped field.

0.15.4 — 2026-09-09

Fixes secedgar_get_filing's heading outline and section matching: 20-F filings with bare Item markers and running page headers now produce a full outline of all Items and Parts, and section now resolves headings whose whitespace or quote style differs from the caller's input.

0.15.3 — 2026-09-09

Fixes four EDGAR resolution gaps: corporate-suffix name matching, dotted share-class tickers, ticker near-match suggestions, and a 429 that retried into SEC's ten-minute rate-limit block. Adopts mcp-ts-core 0.12.8 plus dependency refresh.

0.15.2 — 2026-09-02

Adopts @cyanheads/mcp-ts-core 0.12.5. An SEC 5xx now classifies as ServiceUnavailable rather than InternalError, a caller disconnect as RequestCancelled, and server identity resolves from the served package instead of the launching client's working directory. No changes to this server's own source.

0.15.1 — 2026-08-22

Adopts @cyanheads/mcp-ts-core 0.12.3: tool inputs are strict, so an undeclared argument key is rejected by name instead of silently dropped. .env.example now defaults MCP_SESSION_MODE to stateless, and the three tools that cap their inline results disclose the cap through enrichment.

0.15.0 — 2026-07-27

Two new tools — secedgar_get_beneficial_owners (SCHEDULE 13D/13G blockholders) and secedgar_get_fund_holdings (NPORT-P fund portfolios) — plus bounded pre-2001 full-text and straddling-range merge for secedgar_search_filings.

0.14.0 — 2026-07-26

Two new tools — secedgar_find_holders (reverse 13F lookup, issuer to the managers reporting it) and secedgar_get_material_events (8-K filings filtered by decoded item code). Series-staleness caveats now cover a current tag whose series simply ends, and ifrs-full stock_based_compensation picks its element per filer by coverage.

0.13.1 — 2026-07-26

revenue no longer resolves through a tag SEC retired in 2018, and any concept falling through to a retired tag says so in caveats. The missing-quarter detector names every absent quarter instead of at most one, binary filing documents are rejected rather than decoded, and ifrs-full coverage goes 3 to 31 of 33 concepts.

0.13.0 — 2026-07-26

Two new tools — secedgar_get_snapshot (one-call company profile) and secedgar_compare_companies (2-10 companies aligned on calendar periods). Frame dedup and fiscal-period caveats move into shared modules, the local mirror now serves companyfacts, and the fiscal-Q4 caveat is corrected and extended to per-filer series.

0.12.5 — 2026-07-26

secedgar_get_filing now renders every document filename into content[] and embeds a categorized catalog in its not-found errors; fetch_frames and get_institutional_holdings gain offset paging; bare-CIK 404s return declared errors instead of a raw SEC URL; the insider tool's Form 3/5 coverage claim is corrected to Form 4 / 4-A.

0.12.4 — 2026-07-09

secedgar_search_filings now serves pre-2001 date ranges (back to 1993) from the SEC archives — entity-scoped submissions history or a quarterly full-index browse — tagging every result row with its source (efts/submissions/full-index); straddling or unscoped pre-2001 full-text ranges are rejected with a recovery hint.

0.12.3 — 2026-07-09

secedgar_company_search pages into the older submissions archive for date-filtered or under-filled form scans and discloses scan depth; secedgar_search_filings adds a query-optional browse mode; secedgar_dataframe_query's non-SELECT rejection now carries a recovery hint; and secedgar://filing-types lists the current SCHEDULE 13D/13G form names.

0.12.2 — 2026-07-09

secedgar_get_institutional_holdings resolves institutional names via EDGAR entity-autocomplete search, reports ambiguous matches instead of guessing, stops leaking the SEC URL on a bare-CIK 404, and routes operating-company CIKs to the right tools; secedgar_company_analysis routes ownership-focused requests through the insider and 13F tools.

0.12.1 — 2026-07-06

Adopts @cyanheads/mcp-ts-core 0.10.14 and refreshes dependencies: a bunfig supply-chain install guard (3-day release-age hold plus the Socket install scanner), an oven/bun:1.3.14 Dockerfile pin with BuildKit install-cache mounts, a SECURITY.md disclosure policy, and .gitattributes normalization.

0.12.0 — 2026-07-02 · ⚠️ Breaking

Breaking: get_financials dataframe columns fiscal_year/fiscal_period renamed to source_filing_fy/source_filing_fp; heading detection covers mixed-case Item/Part headings on styled filings; section-miss errors render the detected outline in the message

0.11.3 — 2026-07-02

Canvas-bridge register_as clash pre-check with contract recovery hints; EFTS degraded-2xx shape guard and typed ticker:/cik: validation in search_filings; insider-transactions canvas scan floor with truthful dataset.truncated; get_institutional_holdings docs drop the unimplemented issuer-to-holders lookup; .env.example dataframe settings

0.11.2 — 2026-07-02 · 🛡️ Security

secedgar_get_filing hardening: accession/CIK validation before network I/O, exhibit filename-fallback classification without headers, sentinel-framed upstream filing text; mcp-ts-core ^0.10.10 + lock re-resolve clears bun audit from 8 vulnerabilities to 0 (hono, js-yaml)

0.11.1 — 2026-06-20

Adopt mcp-ts-core ^0.10.9: dataframe_describe filtered-table binder fix and dataframe_query SELECT-shaped prepare failures now classified invalid_sql with DuckDB binder detail; plugin-manifest devcheck lint, synced skills, dependency refresh

0.11.0 — 2026-06-11

Dataframe-query error reclassification and register_as fix (#52, #53, #54); company_search and search_filings whitespace + pagination fixes (#55, #56, #57, #58); get_filing offset paging, section targeting, and extract cache (#59)

0.10.5 — 2026-06-11

mcp-ts-core ^0.10.6: post-pack bundle cleaner, packaging linter checks 8-9, skill syncs, websiteUrl removed from createApp()

0.10.4 — 2026-06-11

Server identity: name and title now use the machine name secedgar-mcp-server (was 'SEC EDGAR MCP Server')

0.10.3 — 2026-06-11

DataCanvas adoption: framework TTL, denySystemCatalogs, inferSchemaFromRows always-nullable; ctx.enrich.truncated() on 5 list tools; server identity fields; mcp-ts-core ^0.10.1 → ^0.10.5

0.10.2 — 2026-06-08

Fix get_financials frame collisions (Spotify IFRS Revenue 26× undercount), instant-period first-call fallback, fetch_frames no_data for empty tags, dataframe_query structured missing_table/invalid_sql, company_search MF fund tickers on mirror, insider shares_traded now unsigned with direction.

0.10.1 — 2026-06-08 · 🛡️ Security

Security: DataCanvas SQL gate fails closed on non-SELECT statements and denies pragma_* table functions; stringbool env-boolean parsing; .mcpbignore dev-dir anchoring; actionable node-cron peer error.

0.10.0 — 2026-06-08

secedgar_company_search: ETF/fund ticker resolution, former-name lookup (Facebook→Meta, Square→Block), near-match suggestions on zero-result name queries, and robustness fixes for private/pre-IPO filers

0.9.0 — 2026-06-08

Ownership tools now register full parsed results to the canvas; fetch_frames surfaces alternate-definition XBRL tags that cover a meaningful share of filers for the base concept.

0.8.4 — 2026-06-04

get_filing error data now returns categorized documents instead of a flat list; search_filings notes Form 3/4/5 index limitations

0.8.3 — 2026-06-02

Adopt @cyanheads/mcp-ts-core ^0.9.21 — per-request log context fix, secret-stripped error messages, and fail-fast retry behavior

0.8.2 — 2026-06-02

mirror:init/verify/refresh commands ship in the production Docker image; docker exec now a supported lever for mirror bootstrap and re-ingest

0.8.1 — 2026-06-01

search_filings cik:/ticker: now scopes server-side via EFTS ciks param; date/period validators; dataframe_query register_as preserves real DuckDB types; get_financials limit param

0.8.0 — 2026-06-01 · ⚠️ Breaking

get_institutional_holdings: whole-USD market values, distinct-position consolidation, working quarter targeting

0.7.4 — 2026-06-01

Gate cross-company frames on a full-coverage completion marker (falling back to live while the store is partial or re-syncing); fix the companyfacts ingester to checkpoint only after the full archive drains so an interrupted ingest re-streams on the next refresh.

0.7.3 — 2026-06-01

Declare node-cron dependency so EDGAR_MIRROR_REFRESH_CRON works in the published package and Docker image; wrap scheduler init in try/catch so a scheduling fault degrades gracefully instead of crashing startup.

0.7.2 — 2026-05-31

Opt-in local SQLite mirror of company_tickers and XBRL company-facts via MirrorService; routed lookups hit SQLite with live-API fallback. Adds EDGAR_MIRROR_* env vars, mirror:init/refresh/verify scripts, and Node/Bun-only Workers guard.

0.7.1 — 2026-05-30

Empty strings now rejected for required string fields — company/concept on secedgar_get_financials and concept/period on secedgar_fetch_frames return a clean ValidationError instead of reaching the handler.

0.7.0 — 2026-05-30

Insider transactions (Form 3/4/5), institutional holdings (13F), IFRS friendly-name resolution, ambiguous-company guard, and system_catalog_access error contract

0.6.3 — 2026-05-30

enrichment adoption — search/concept tools surface query echoes and empty-result guidance via typed enrichment block

0.6.2 — 2026-05-28 · 🛡️ Security

mcp-ts-core ^0.9.9 → ^0.9.13: HTTP body cap (413), session-init gate, quieter 401/403/400/404 logs, GET /mcp keywords; @biomejs/biome ^2.4.15 → ^2.4.16; plugin metadata files; code-simplifier skill.

0.6.1 — 2026-05-25

mcp-ts-core ^0.9.6 → ^0.9.9: git-wrapup skill, ctx.elicit/ctx.fail/ctx.notifyPromptListChanged/ctx.notifyToolListChanged docs, release artifact verification, structured tag annotation format; @duckdb/node-api ^1.5.3-r.1 → ^1.5.3-r.2; stdio/streamable-http npm keywords added.

0.6.0 — 2026-05-25

Concept catalog 16 → 33; get_financials companyfacts probe on no_concept_data; FY bracket label dropped; get_filing primary_document preserved on exhibit fetches; search_filings form_distribution fixed for forms filter; fiscal_year_end formatted MM-DD.

0.5.2 — 2026-05-23

@cyanheads/mcp-ts-core ^0.9.1 → ^0.9.6. RequestContextLike canvas cast removed. zod added as explicit dependency. manifest.json + .mcpbignore scaffolded for MCPB bundle support. Install badges added to README.

0.5.1 — 2026-05-17

secedgar_fetch_frames flags fiscal-Q4 silent dropout on CY####Q[1-4] periods via a new caveats field. Ticker enrichment now resolves multi-class CIKs to common stock (JPM, BAC, C) instead of preferred-share variants (JPM-PA, BAC-PS, C-PR).

0.5.0 — 2026-05-17 · ⚠️ Breaking

In-conversation SQL analytics over SEC EDGAR. secedgar_search_filings, secedgar_get_financials, and the new secedgar_fetch_frames (renamed from secedgar_compare_metric) now materialize their full upstream response as a DuckDB-backed df_<id> dataframe, queryable via three new secedgar_dataframe_* tools.

0.4.5 — 2026-05-16

Adopt framework ^0.9.1 — server now publishes a top-level instructions orientation string on every MCP initialize response. Definition linting moves to build-time only (lint:mcp / devcheck), no longer gates startup. Devcheck bun outdated parser fix and the 350-char changelog summary cap come along for the ride.

0.4.4 — 2026-05-08

secedgar_search_filings reports form_distribution consistent with total under entity targeting; framework ^0.8.13 → ^0.8.19, Node engine ≥24, schema descriptions tightened across all tools and resources.

0.4.3 — 2026-05-04

secedgar_search_filings adds sort (filing_date_desc default); secedgar_get_filing categorizes documents into primary/exhibits/auxiliary/xbrl from SEC headers and gates XBRL artifacts behind include_xbrl. Closes #3, #5.

0.4.2 — 2026-05-04

Framework bump to @cyanheads/mcp-ts-core 0.8.13; secedgar_get_filing now routes its three contract reasons through ctx.fail in the archive-resolution helper for full lint conformance.

0.4.1 — 2026-04-30

Framework upgrade to @cyanheads/mcp-ts-core 0.8.7 with full typed-error-contract adoption, two domain bug fixes against issues #1 and #2, and skill / script syncs.

0.4.0 — 2026-04-24

Framework upgrade to @cyanheads/mcp-ts-core 0.7.0, shared SEC fetch path with retry on filing document downloads, and the lint-warning cleanup that framework 0.6.16 surfaced.

0.3.0 — 2026-04-20

Framework upgrade, content parity across tools, and cleaner entity names.

0.2.0 — 2026-04-17

Concept discovery, filing lookup resilience, and framework sync.

0.1.11 — 2026-03-30

Dependency updates and package metadata improvements.

0.1.10 — 2026-03-28

Framework upgrade, enhanced skills, and MCP linter improvements.

0.1.9 — 2026-03-24

Description and metadata updates.

0.1.8 — 2026-03-24

Tool annotation improvements and agent protocol updates.

0.1.7 — 2026-03-24

Packaging, documentation, and code formatting cleanup.

0.1.6 — 2026-03-24

Fixes for taxonomy resolution, date validation, HTTP retry resilience, and Bun version bump.

0.1.5 — 2026-03-24

Improved entity-targeted search, better error diagnostics, and documentation overhaul.

0.1.4 — 2026-03-24

Dependency updates and code style fixes.

0.1.3 — 2026-03-24

Data quality and resilience fixes for filing text conversion, XBRL financials, and EFTS search results.

0.1.2 — 2026-03-24

Bug fixes for EFTS full-text search, improved error handling, and full test coverage.

0.1.1 — 2026-03-24

Metadata, documentation, and packaging polish — no functional changes.

0.1.0 — 2026-03-24

Initial release. MCP server for SEC EDGAR — company lookups, filing search/retrieval, XBRL financial data, and cross-company comparison.