SEC EDGAR MCP Server — Insider Trades, 8-K & 13F
Pricing
from $5.00 / 1,000 sec edgar queries
SEC EDGAR MCP Server — Insider Trades, 8-K & 13F
Insider trading signals, 8-K severity alerts & 13F holdings from SEC EDGAR for AI agents. No API key required.
Pricing
from $5.00 / 1,000 sec edgar queries
Rating
0.0
(0)
Developer
Toolstem
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
14 days ago
Last modified
Categories
Share
SEC EDGAR MCP Server — Insider Signals, 13D Activist Risk & Filing Intelligence
SEC EDGAR intelligence for AI agents. Five composite tools that pre-compute high-value signals directly from SEC EDGAR's public submissions API, returned as structured JSON.
No SEC API key required. Data is sourced directly from SEC EDGAR's public submissions API. A built-in sliding-window rate limiter keeps traffic under SEC's 10 rps fair-access ceiling automatically.
Free vs. paid
- MCP
initializeandtools/listare free — discover the server and its tool surface without paying anything. tools/callcosts $0.01 USDC on Base mainnet per invocation, paid via x402. No API key, no signup, no marketplace account — agents pay directly from their own wallet.- The premium tool (
get_material_events_digest) is currently billed at the same $0.01 flat rate while the tiered-pricing rollout is in progress; its per-call price will move higher post-launch.
The five tools
All five tools are composite/curated (they compute derived signals or aggregate across multiple EDGAR endpoints — no raw passthroughs). Annotations: readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true.
| # | Tool | Required input | Optional input (default) | Tier |
|---|---|---|---|---|
| 1 | get_company_filings_summary | ticker_or_cik (string) | — | Standard |
| 2 | get_insider_signal | ticker_or_cik (string) | lookback_days (int 1–730, default 90) | Standard |
| 3 | get_institutional_signal | ticker_or_cik (string) | quarters_back (int 1–20, default 4) | Standard |
| 4 | get_material_events_digest | ticker_or_cik (string) | lookback_days (int 1–1825, default 365) | Premium |
| 5 | compare_disclosure_signals | tickers_or_ciks (string[2..5]) | — | Standard |
1. get_company_filings_summary
Overview of a company's filing activity: last 20 filings + computed signals.
| Signal | Description |
|---|---|
filing_velocity | ACCELERATING / NORMAL / SLOWING vs. trailing 365-day average |
material_event_count_90d | Count of 8-K filings in the last 90 days |
disclosure_volume_trend | RISING / STABLE / FALLING based on 10-K size comparison |
latest_form_types | Unique form types filed in the last 90 days |
Example output (abbreviated):
{"ticker": "AAPL","cik": "0000320193","company_name": "Apple Inc.","signals": {"filing_velocity": "NORMAL","material_event_count_90d": 4,"disclosure_volume_trend": "RISING","latest_form_types": ["8-K", "4", "DEF 14A"]},"meta": { "source": "sec_edgar_direct", "data_delay": "live" }}
2. get_insider_signal
Probes Form 3 / 4 / 4/A insider filing activity within a configurable lookback window. Required: ticker_or_cik. Optional: lookback_days (1–730, default 90).
Returns: recent_insider_filings[] (accession numbers + SEC URLs), net_transaction_count, buy_count, sell_count, and insider_signal.
v0.1 limitation — counts only. v0.1 returns counts and Form 4 references only; direction-aware buy/sell signals ship in v0.2 (Form 4 XML parsing). Today,
insider_signalisnullwhen filings exist in the window (direction unknown) and"NEUTRAL"when no insider filings exist (verified absence).buy_count/sell_countare0in v0.1.
Example output (abbreviated):
{"ticker": "MSFT","cik": "0000789019","company_name": "MICROSOFT CORP","lookback_days": 90,"insider_signal": null,"net_transaction_count": 0,"buy_count": 0,"sell_count": 0,"recent_insider_filings": [{"accession_number": "0001127602-26-001234","filing_date": "2026-04-15","sec_url": "https://www.sec.gov/Archives/edgar/data/789019/000112760226001234/0001127602-26-001234-index.htm"}],"meta": { "source": "sec_edgar_direct", "data_delay": "live" }}
3. get_institutional_signal
Probes for activist investor activity via SC 13D / 13D/A filings. Required: ticker_or_cik. Optional: quarters_back (1–20, default 4 ≈ 1 year).
| Field | Description |
|---|---|
activist_risk_flag | true if any SC 13D or 13D/A was filed in the last 365 days |
recent_13d_filings | List of 13D filings with form type, date, and SEC URL |
v0.1 limitation — activist flag only. v0.1 ships the live
activist_risk_flag(from 13D/13D-A) and a list of 13D filings. Quarterly 13F XBRL parsing — which producesinstitutional_signal(ACCUMULATING/HOLDING/DISTRIBUTING) andrecent_13f_count— ships in v0.2. Today those two fields arenull/0.
Example output (abbreviated):
{"ticker": "NVDA","cik": "0001045810","company_name": "NVIDIA CORP","quarters_back": 4,"institutional_signal": null,"recent_13f_count": 0,"activist_risk_flag": false,"recent_13d_filings": [],"meta": { "source": "sec_edgar_direct", "data_delay": "live" }}
4. get_material_events_digest ⚡ Premium tier
Premium tier. Currently billed at the same flat $0.01 USDC per call as the standard tools while tiered pricing is being rolled out. Per-call price will move higher post-launch — see the live pricing page on toolstem.com/sec/ for the current rate.
Severity-ranked digest of all 8-K and 8-K/A filings within a configurable lookback window. Each item code is mapped to a plain-English label and severity rating. Required: ticker_or_cik. Optional: lookback_days (1–1825, default 365).
| Severity | Examples |
|---|---|
| 🔴 RED | Cybersecurity incident (1.05), restatement (4.02), bankruptcy (1.03), delisting (3.01) |
| 🟡 YELLOW | Acquisition (2.01), new debt (2.03), executive departure (5.02) |
| 🟢 GREEN | Earnings release (2.02), Reg FD (7.01), shareholder vote (5.07) |
Returns: events[] (sorted newest-first), redflag_count, category_counts.
Example output (abbreviated):
{"ticker": "TSLA","cik": "0001318605","company_name": "Tesla, Inc.","lookback_days": 180,"redflag_count": 1,"category_counts": { "RED": 1, "YELLOW": 3, "GREEN": 7 },"events": [{"accession_number": "0001628280-26-005678","filing_date": "2026-04-10","form": "8-K","items": [{ "code": "4.02", "label": "Non-Reliance on Previously Issued Financial Statements", "category": "financial", "severity": "RED" }],"sec_url": "https://www.sec.gov/Archives/edgar/data/1318605/000162828026005678/0001628280-26-005678-index.htm"}],"meta": { "source": "sec_edgar_direct", "data_delay": "live" }}
5. compare_disclosure_signals
Side-by-side comparison of 2–5 companies across all key disclosure signals. Required: tickers_or_ciks (string[2..5]). All lookups run in parallel.
Returns per-company: filing_velocity, material_event_count_90d, redflag_count_365d, activist_risk_flag, last_filing_date.
Returns winners (as CIKs, not tickers — cross-reference with the companies[] array): quietest_disclosure, most_active, most_redflags, activist_targets.
Example output (abbreviated):
{"companies": [{"ticker": "AAPL","cik": "0000320193","filing_velocity": "NORMAL","material_event_count_90d": 4,"redflag_count_365d": 0,"activist_risk_flag": false,"last_filing_date": "2026-04-25"},{"ticker": "MSFT","cik": "0000789019","filing_velocity": "ACCELERATING","material_event_count_90d": 7,"redflag_count_365d": 0,"activist_risk_flag": false,"last_filing_date": "2026-04-26"}],"winners": {"quietest_disclosure": "0000320193","most_active": "0000789019","most_redflags": null,"activist_targets": []},"meta": { "source": "sec_edgar_direct", "data_delay": "live" }}
Installation
Hosted server (recommended — no setup, agent pays via x402)
The hosted endpoint is the fastest path to try the tools. It is gated by x402 on Base mainnet:
https://mcp.toolstem.com/mcp/sec
initializeandtools/listare free.- Each
tools/callcosts $0.01 USDC on Base mainnet, settled via x402 directly from the agent's wallet. - No SEC API key. No signup. No marketplace account.
Claude Desktop config
Use the hosted endpoint (no local install):
{"mcpServers": {"toolstem-sec": {"command": "npx","args": ["-y","mcp-remote","https://mcp.toolstem.com/mcp/sec"]}}}
Or run locally over stdio (no x402 charges, you bring your own EDGAR fair-access contact):
{"mcpServers": {"toolstem-sec": {"command": "npx","args": ["-y", "toolstem-sec-mcp-server"],"env": {"SEC_USER_AGENT_CONTACT": "you@yourorg.com"}}}}
npm (MCP stdio transport)
npm install -g toolstem-sec-mcp-servertoolstem-sec-mcp-server
Self-hosted HTTP
Three modes:
Local-only (default — safest):
toolstem-sec-mcp-server --http# Binds 127.0.0.1:3000 — reachable only from this machine
Remote with auth:
ALLOW_REMOTE=1 MCP_AUTH_TOKEN=my-secret toolstem-sec-mcp-server --http# Binds 0.0.0.0:3000 — requires Bearer token on every /mcp request
Remote without auth (use at your own risk):
ALLOW_REMOTE=1 MCP_AUTH_DISABLED=1 toolstem-sec-mcp-server --http# Binds 0.0.0.0:3000 — no authentication
| Variable | Description |
|---|---|
PORT | HTTP port (default 3000) |
ALLOW_REMOTE | Set to 1 to bind 0.0.0.0 instead of 127.0.0.1 |
MCP_AUTH_TOKEN | Bearer token for /mcp routes (required when ALLOW_REMOTE=1) |
MCP_AUTH_DISABLED | Set to 1 to skip auth even with ALLOW_REMOTE=1 (not recommended) |
SEC_USER_AGENT_CONTACT | Contact email for SEC EDGAR User-Agent header |
Use with LangChain.js (hosted, agent pays via x402)
The official @langchain/mcp-adapters library connects directly to the hosted endpoint:
import { MultiServerMCPClient } from "@langchain/mcp-adapters";import { ChatOpenAI } from "@langchain/openai";import { createReactAgent } from "@langchain/langgraph/prebuilt";const client = new MultiServerMCPClient({toolstem_sec: {transport: "http",url: "https://mcp.toolstem.com/mcp/sec",// Add your x402-signing middleware via headers, OR run an x402// proxy locally and point url at it. See https://www.x402.org/clients.},});const tools = await client.getTools();const agent = createReactAgent({ llm: new ChatOpenAI({ model: "gpt-4o-mini" }), tools });await agent.invoke({ messages: "Has TSLA disclosed any material 8-K events in the last 90 days?" });
SEC EDGAR fair-access policy
All outbound traffic goes through a shared sliding-window rate limiter (8 rps target, 4 rps safety margin below SEC's 10 rps hard cap). Every request includes a User-Agent header identifying the package and a contact email per SEC policy. Override the contact email via:
$SEC_USER_AGENT_CONTACT=you@yourorg.com toolstem-sec-mcp-server
Violating SEC's fair-access policy can result in your IP being blocked. This server is designed to stay compliant automatically.
v0.2 roadmap
- Form 4 XML parsing — direction-aware insider signals (
STRONG_BUYING/BUYING/NEUTRAL/SELLING/STRONG_SELLING) with net share counts - 13F XBRL parsing — quarterly institutional flow signals (
ACCUMULATING/HOLDING/DISTRIBUTING) with institution count - 8-K text extraction — natural-language summaries of each material event from the filing's primary HTML document
- Tiered pricing for the premium digest tool (currently flat-priced at $0.01/call during launch)
License & author
MIT License — see ./LICENSE.