{
  "markdown": "# SEC EDGAR MCP Server — Insider Signals, 13D Activist Risk & Filing Intelligence\n\n[![npm version](https://img.shields.io/npm/v/toolstem-sec-mcp-server)](https://www.npmjs.com/package/toolstem-sec-mcp-server)\n[![npm downloads](https://img.shields.io/npm/dw/toolstem-sec-mcp-server)](https://www.npmjs.com/package/toolstem-sec-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)\n\n**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.\n\n> **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.\n\n---\n\n## Quickstart — hosted endpoint (recommended)\n\nPoint your MCP client or agent at the hosted endpoint. **No API key, no infra, no setup.** Billing is per-call via [x402](https://www.x402.org) — the agent's wallet pays directly in USDC on Base mainnet.\n\n```\nhttps://mcp.toolstem.com/mcp/sec\n```\n\n- **No SEC API key, no signup, no marketplace account** — the agent's wallet pays directly.\n- **No infrastructure** — nothing to install, host, or keep running.\n- **No setup** — connect an MCP client and call a tool.\n- `initialize` and `tools/list` are **free** (discovery and schema introspection).\n- `tools/call` is **tiered per tool** (see [Pricing](#pricing) below).\n\n### Claude Desktop\n\nDrop this into your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"toolstem-sec\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://mcp.toolstem.com/mcp/sec\"\n      ]\n    }\n  }\n}\n```\n\nRestart Claude Desktop, then ask: *\"Has TSLA disclosed any material 8-K events in the last 90 days?\"*\n\n### Any MCP client (LangChain.js)\n\nThe official [`@langchain/mcp-adapters`](https://www.npmjs.com/package/@langchain/mcp-adapters) library connects directly to the hosted URL:\n\n```ts\nimport { MultiServerMCPClient } from \"@langchain/mcp-adapters\";\nimport { ChatOpenAI } from \"@langchain/openai\";\nimport { createReactAgent } from \"@langchain/langgraph/prebuilt\";\n\nconst client = new MultiServerMCPClient({\n  toolstem_sec: {\n    transport: \"http\",\n    url: \"https://mcp.toolstem.com/mcp/sec\",\n    // Add your x402-signing middleware via headers, OR run an x402\n    // proxy locally and point url at it. See https://www.x402.org/clients.\n  },\n});\n\nconst tools = await client.getTools();\nconst agent = createReactAgent({ llm: new ChatOpenAI({ model: \"gpt-4o-mini\" }), tools });\nawait agent.invoke({ messages: \"Has TSLA disclosed any material 8-K events in the last 90 days?\" });\n```\n\n### LangChain quick-start (`langchain-toolstem`)\n\nThe [`langchain-toolstem`](https://www.npmjs.com/package/langchain-toolstem) wrapper handles x402 payment for you — pass a funded wallet key and the SEC tools are included automatically:\n\n```typescript\nimport { createToolstemTools } from 'langchain-toolstem';\nconst tools = await createToolstemTools({ walletPrivateKey: process.env.WALLET_KEY });\n// SEC tools included automatically — agents pay per call in USDC\n```\n\nPrefer to run the server yourself over stdio/HTTP? See [Advanced: self-host](#advanced-self-host) at the bottom.\n\nTry the tools live in the [Toolstem playground](https://www.toolstem.com/playground/).\n\n---\n\n## Pricing\n\n- **MCP `initialize` and `tools/list` are free** — discover the server and its tool surface without paying anything.\n- **`tools/call` is tiered per tool**, paid in USDC on Base mainnet via [x402](https://www.x402.org). No API key, no signup, no marketplace account — agents pay directly from their own wallet.\n\n| Tier | Price per call | Tools |\n|------|----------------|-------|\n| Cheap | **$0.005** | `get_company_filings_summary` |\n| Standard | **$0.05** | `get_insider_signal`, `get_institutional_signal` |\n| Premium | **$0.50** | `get_material_events_digest`, `compare_disclosure_signals` |\n\nPer-tool breakdown:\n\n| Tool | Tier | Per call |\n|------|------|----------|\n| `get_company_filings_summary` | Standard | $0.005 USDC |\n| `get_insider_signal` | Standard | $0.05 USDC |\n| `get_institutional_signal` | Standard | $0.05 USDC |\n| `get_material_events_digest` | Premium | $0.50 USDC |\n| `compare_disclosure_signals` | Premium | $0.50 USDC |\n\n### How billing works\n\nToolstem uses the x402 payment protocol. Agents pay per call in USDC on Base — no API keys, no subscriptions, no invoices. The agent's wallet settles each call automatically via EIP-3009.\n\nSee the live pricing page on [toolstem.com/sec/](https://toolstem.com/sec/) for current rates.\n\n---\n\n## The five tools\n\nAll 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`.\n\n| # | Tool | Required input | Optional input (default) | Tier (price/call) |\n|---|------|----------------|--------------------------|-------------------|\n| 1 | `get_company_filings_summary` | `ticker_or_cik` (string) | — | Cheap ($0.005) |\n| 2 | `get_insider_signal` | `ticker_or_cik` (string) | `lookback_days` (int 1–730, **default 90**) | Standard ($0.05) |\n| 3 | `get_institutional_signal` | `ticker_or_cik` (string) | `quarters_back` (int 1–20, **default 4**) | Standard ($0.05) |\n| 4 | `get_material_events_digest` | `ticker_or_cik` (string) | `lookback_days` (int 1–1825, **default 365**) | **Premium ($0.50)** |\n| 5 | `compare_disclosure_signals` | `tickers_or_ciks` (string[2..5]) | — | **Premium ($0.50)** |\n\n---\n\n### 1. `get_company_filings_summary`\n\nOverview of a company's filing activity: last 20 filings + computed signals.\n\n| Signal | Description |\n|--------|-------------|\n| `filing_velocity` | `ACCELERATING` / `NORMAL` / `SLOWING` vs. trailing 365-day average |\n| `material_event_count_90d` | Count of 8-K filings in the last 90 days |\n| `disclosure_volume_trend` | `RISING` / `STABLE` / `FALLING` based on 10-K size comparison |\n| `latest_form_types` | Unique form types filed in the last 90 days |\n\n**Example output (abbreviated):**\n```json\n{\n  \"ticker\": \"AAPL\",\n  \"cik\": \"0000320193\",\n  \"company_name\": \"Apple Inc.\",\n  \"signals\": {\n    \"filing_velocity\": \"NORMAL\",\n    \"material_event_count_90d\": 4,\n    \"disclosure_volume_trend\": \"RISING\",\n    \"latest_form_types\": [\"8-K\", \"4\", \"DEF 14A\"]\n  },\n  \"meta\": { \"source\": \"sec_edgar_direct\", \"data_delay\": \"live\" }\n}\n```\n\n---\n\n### 2. `get_insider_signal`\n\nProbes Form 3 / 4 / 4/A insider filing activity within a configurable lookback window. Required: `ticker_or_cik`. Optional: `lookback_days` (1–730, default 90).\n\nReturns: `recent_insider_filings[]` (accession numbers + SEC URLs), `net_transaction_count`, `buy_count`, `sell_count`, and `insider_signal`.\n\n> **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_signal` is `null` when filings exist in the window (direction unknown) and `\"NEUTRAL\"` when no insider filings exist (verified absence). `buy_count` / `sell_count` are `0` in v0.1.\n\n**Example output (abbreviated):**\n```json\n{\n  \"ticker\": \"MSFT\",\n  \"cik\": \"0000789019\",\n  \"company_name\": \"MICROSOFT CORP\",\n  \"lookback_days\": 90,\n  \"insider_signal\": null,\n  \"net_transaction_count\": 0,\n  \"buy_count\": 0,\n  \"sell_count\": 0,\n  \"recent_insider_filings\": [\n    {\n      \"accession_number\": \"0001127602-26-001234\",\n      \"filing_date\": \"2026-04-15\",\n      \"sec_url\": \"https://www.sec.gov/Archives/edgar/data/789019/000112760226001234/0001127602-26-001234-index.htm\"\n    }\n  ],\n  \"meta\": { \"source\": \"sec_edgar_direct\", \"data_delay\": \"live\" }\n}\n```\n\n---\n\n### 3. `get_institutional_signal`\n\nProbes for activist investor activity via SC 13D / 13D/A filings. Required: `ticker_or_cik`. Optional: `quarters_back` (1–20, default 4 ≈ 1 year).\n\n| Field | Description |\n|-------|-------------|\n| `activist_risk_flag` | `true` if any SC 13D or 13D/A was filed in the last 365 days |\n| `recent_13d_filings` | List of 13D filings with form type, date, and SEC URL |\n\n> **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 produces `institutional_signal` (`ACCUMULATING` / `HOLDING` / `DISTRIBUTING`) and `recent_13f_count` — **ships in v0.2**. Today those two fields are `null` / `0`.\n\n**Example output (abbreviated):**\n```json\n{\n  \"ticker\": \"NVDA\",\n  \"cik\": \"0001045810\",\n  \"company_name\": \"NVIDIA CORP\",\n  \"quarters_back\": 4,\n  \"institutional_signal\": null,\n  \"recent_13f_count\": 0,\n  \"activist_risk_flag\": false,\n  \"recent_13d_filings\": [],\n  \"meta\": { \"source\": \"sec_edgar_direct\", \"data_delay\": \"live\" }\n}\n```\n\n---\n\n### 4. `get_material_events_digest` ⚡ **Premium tier**\n\n> **Premium tier — $0.50 USDC per call** on Base mainnet, settled via x402. See the live pricing page on [toolstem.com/sec/](https://toolstem.com/sec/) for current rates.\n\nSeverity-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).\n\n| Severity | Examples |\n|----------|---------|\n| 🔴 RED | Cybersecurity incident (1.05), restatement (4.02), bankruptcy (1.03), delisting (3.01) |\n| 🟡 YELLOW | Acquisition (2.01), new debt (2.03), executive departure (5.02) |\n| 🟢 GREEN | Earnings release (2.02), Reg FD (7.01), shareholder vote (5.07) |\n\nReturns: `events[]` (sorted newest-first), `redflag_count`, `category_counts`.\n\n**Example output (abbreviated):**\n```json\n{\n  \"ticker\": \"TSLA\",\n  \"cik\": \"0001318605\",\n  \"company_name\": \"Tesla, Inc.\",\n  \"lookback_days\": 180,\n  \"redflag_count\": 1,\n  \"category_counts\": { \"RED\": 1, \"YELLOW\": 3, \"GREEN\": 7 },\n  \"events\": [\n    {\n      \"accession_number\": \"0001628280-26-005678\",\n      \"filing_date\": \"2026-04-10\",\n      \"form\": \"8-K\",\n      \"items\": [\n        { \"code\": \"4.02\", \"label\": \"Non-Reliance on Previously Issued Financial Statements\", \"category\": \"financial\", \"severity\": \"RED\" }\n      ],\n      \"sec_url\": \"https://www.sec.gov/Archives/edgar/data/1318605/000162828026005678/0001628280-26-005678-index.htm\"\n    }\n  ],\n  \"meta\": { \"source\": \"sec_edgar_direct\", \"data_delay\": \"live\" }\n}\n```\n\n---\n\n### 5. `compare_disclosure_signals`\n\nSide-by-side comparison of 2–5 companies across all key disclosure signals. Required: `tickers_or_ciks` (string[2..5]). All lookups run in parallel.\n\nReturns per-company: `filing_velocity`, `material_event_count_90d`, `redflag_count_365d`, `activist_risk_flag`, `last_filing_date`.\n\nReturns winners (as **CIKs**, not tickers — cross-reference with the `companies[]` array): `quietest_disclosure`, `most_active`, `most_redflags`, `activist_targets`.\n\n**Example output (abbreviated):**\n```json\n{\n  \"companies\": [\n    {\n      \"ticker\": \"AAPL\",\n      \"cik\": \"0000320193\",\n      \"filing_velocity\": \"NORMAL\",\n      \"material_event_count_90d\": 4,\n      \"redflag_count_365d\": 0,\n      \"activist_risk_flag\": false,\n      \"last_filing_date\": \"2026-04-25\"\n    },\n    {\n      \"ticker\": \"MSFT\",\n      \"cik\": \"0000789019\",\n      \"filing_velocity\": \"ACCELERATING\",\n      \"material_event_count_90d\": 7,\n      \"redflag_count_365d\": 0,\n      \"activist_risk_flag\": false,\n      \"last_filing_date\": \"2026-04-26\"\n    }\n  ],\n  \"winners\": {\n    \"quietest_disclosure\": \"0000320193\",\n    \"most_active\": \"0000789019\",\n    \"most_redflags\": null,\n    \"activist_targets\": []\n  },\n  \"meta\": { \"source\": \"sec_edgar_direct\", \"data_delay\": \"live\" }\n}\n```\n\n---\n\n## Advanced: self-host\n\n> **Most users should use the [hosted endpoint](#quickstart--hosted-endpoint-recommended) above** — it needs no API key, no infrastructure, and no setup. This section is for users who specifically want to run the server themselves. When self-hosting you are responsible for running the process and for supplying an EDGAR fair-access contact (`SEC_USER_AGENT_CONTACT`).\n\n### Claude Desktop (self-hosted over stdio)\n\nRun locally over stdio — no x402 charges, you bring your own EDGAR fair-access contact:\n\n```json\n{\n  \"mcpServers\": {\n    \"toolstem-sec\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"toolstem-sec-mcp-server\"],\n      \"env\": {\n        \"SEC_USER_AGENT_CONTACT\": \"you@yourorg.com\"\n      }\n    }\n  }\n}\n```\n\n### npm (MCP stdio transport)\n\n```bash\nnpm install -g toolstem-sec-mcp-server\ntoolstem-sec-mcp-server\n```\n\n### Self-hosted HTTP\n\nThree modes:\n\n**Local-only (default — safest):**\n```bash\ntoolstem-sec-mcp-server --http\n# Binds 127.0.0.1:3000 — reachable only from this machine\n```\n\n**Remote with auth:**\n```bash\nALLOW_REMOTE=1 MCP_AUTH_TOKEN=my-secret toolstem-sec-mcp-server --http\n# Binds 0.0.0.0:3000 — requires Bearer token on every /mcp request\n```\n\n**Remote without auth (use at your own risk):**\n```bash\nALLOW_REMOTE=1 MCP_AUTH_DISABLED=1 toolstem-sec-mcp-server --http\n# Binds 0.0.0.0:3000 — no authentication\n```\n\n| Variable | Description |\n|----------|-------------|\n| `PORT` | HTTP port (default `3000`) |\n| `ALLOW_REMOTE` | Set to `1` to bind `0.0.0.0` instead of `127.0.0.1` |\n| `MCP_AUTH_TOKEN` | Bearer token for `/mcp` routes (required when `ALLOW_REMOTE=1`) |\n| `MCP_AUTH_DISABLED` | Set to `1` to skip auth even with `ALLOW_REMOTE=1` (not recommended) |\n| `SEC_USER_AGENT_CONTACT` | Contact email for SEC EDGAR User-Agent header |\n\n---\n\n## SEC EDGAR fair-access policy\n\nAll 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:\n\n```bash\nSEC_USER_AGENT_CONTACT=you@yourorg.com toolstem-sec-mcp-server\n```\n\nViolating SEC's fair-access policy can result in your IP being blocked. This server is designed to stay compliant automatically.\n\n---\n\n## v0.2 roadmap\n\n- **Form 4 XML parsing** — direction-aware insider signals (`STRONG_BUYING` / `BUYING` / `NEUTRAL` / `SELLING` / `STRONG_SELLING`) with net share counts\n- **13F XBRL parsing** — quarterly institutional flow signals (`ACCUMULATING` / `HOLDING` / `DISTRIBUTING`) with institution count\n- **8-K text extraction** — natural-language summaries of each material event from the filing's primary HTML document\n\n---\n\n## License & author\n\nMIT License — see [LICENSE](./LICENSE).\n\nBuilt by [Toolstem](https://toolstem.com/sec/). Data sourced directly from [SEC EDGAR](https://www.sec.gov/developer).\n",
  "bytes": 14612,
  "sha": "6f1bce189392726b3fec763501636a97a2a5520c276fcf7d68199f8e27ffeb80",
  "repo_slug": "toolstem/toolstem-sec-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_toolstem_toolstem_sec_mcp_serv_dfa79880/readme"
}