Toolstem SEC EDGAR MCP server
✓ VerifiedProvides AI agents with pre-computed SEC EDGAR signals including insider activity, activist risk, and material event digests.
Also known as toolstem/toolstem-sec-mcp-server
- Stars
- 1
- Tools
- 6
- Downloads, 30 days
- —
- Latest version
- 0.1.9
- Last commit
- Jun 22, 2026
- License
- MIT
What is Toolstem SEC EDGAR MCP?
Toolstem SEC EDGAR provides AI agents with pre-computed SEC EDGAR signals including insider activity, activist risk, and material event digests. It exposes 6 tools, such as filing_velocity, material_event_count_90d, disclosure_volume_trend.
Summary generated from the project's README
About Toolstem SEC EDGAR MCP server
Financial analysts and AI agents can access pre-computed SEC EDGAR signals to monitor corporate filings and market risks. This server provides structured JSON data derived from public submissions, covering insider activity, institutional movements, and material event digests. It is designed for use with MCP clients like Claude Desktop or LangChain.js, either via a hosted endpoint or through self-hosting.
Users can connect to the hosted service without an SEC API key or complex infrastructure setup. Instead of traditional subscriptions, the system uses the x402 protocol, allowing an agent's wallet to pay for tool calls directly in USDC on the Base mainnet. While discovery tools like initialize and tools/list are free, specific data retrieval tools are tiered by cost.
Concrete tools include get_company_filings_summary for filing velocity, get_insider_signal for Form 3 and 4 activity, and get_material_events_digest for severity-ranked 8-K summaries. For comparative analysis, compare_disclosure_signals allows users to evaluate up to five companies simultaneously to identify activist targets or disclosure trends.
What you can do with it
- 1Monitor material corporate eventsAn agent can summarize recent 8-K filings to identify high-severity risks like bankruptcy or cybersecurity incidents.
- 2Track insider trading activityA developer can instruct an AI to check for recent Form 4 filings to see if company insiders are active.
- 3Identify activist investor risksAn AI client can scan for SC 13D filings to determine if a company is facing potential activist pressure.
- 4Compare company disclosure trendsA user can request a side-by-side comparison of multiple tickers to find which companies have the most red flags.
Written from the project's README. Every use case is checked against a quote from it.
How to install Toolstem SEC EDGAR MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Toolstem SEC EDGAR MCP in Claude Code
$ claude mcp add toolstem-sec-mcp-server -- npx -y toolstem-sec-mcp-serverInstall Toolstem SEC EDGAR MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"toolstem-sec-mcp-server": {
"command": "npx",
"args": [
"-y",
"toolstem-sec-mcp-server"
]
}
}
}Install Toolstem SEC EDGAR MCP in VS Code
.vscode/mcp.json
{
"servers": {
"toolstem-sec-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"toolstem-sec-mcp-server"
]
}
}
}Install Toolstem SEC EDGAR MCP in VS Code CLI
$ code --add-mcp '{"name":"toolstem-sec-mcp-server","type":"stdio","command":"npx","args":["-y","toolstem-sec-mcp-server"]}'Install Toolstem SEC EDGAR MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"toolstem-sec-mcp-server": {
"command": "npx",
"args": [
"-y",
"toolstem-sec-mcp-server"
]
}
}
}Install Toolstem SEC EDGAR MCP in Codex
$ codex mcp add toolstem-sec-mcp-server -- npx -y toolstem-sec-mcp-serverInstall Toolstem SEC EDGAR MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.toolstem-sec-mcp-server] command = "npx" args = ["-y", "toolstem-sec-mcp-server"]
Install Toolstem SEC EDGAR MCP in Gemini CLI
$ gemini mcp add -s user toolstem-sec-mcp-server npx -- -y toolstem-sec-mcp-serverInstall Toolstem SEC EDGAR MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"toolstem-sec-mcp-server": {
"command": "npx",
"args": [
"-y",
"toolstem-sec-mcp-server"
]
}
}
}Toolstem SEC EDGAR MCP tools 6
Detected from the READMEfiling_velocitymaterial_event_count_90ddisclosure_volume_trendlatest_form_typesactivist_risk_flagrecent_13d_filings
| filing_velocity | — | |
| material_event_count_90d | — | |
| disclosure_volume_trend | — | |
| latest_form_types | — | |
| activist_risk_flag | — | |
| recent_13d_filings | — |
Configuration
ALLOW_REMOTESEC_USER_AGENT_CONTACTContact email embedded in the SEC EDGAR User-Agent (required by SEC fair-access policy). Defaults to admin@toolstem.com.
| Name | Description | |
|---|---|---|
| ALLOW_REMOTE | — | |
| SEC_USER_AGENT_CONTACT | Contact email embedded in the SEC EDGAR User-Agent (required by SEC fair-access policy). Defaults to admin@toolstem.com. |
Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachabletoolstem/toolstem-sec-mcp-server is public and reachablegithub.com/toolstem/toolstem-sec-mcp-server ↗Pass
- Package names this repository as its sourcetoolstem-sec-mcp-server names toolstem/toolstem-sec-mcp-server as sourcenpmjs.com/package/toolstem-sec-mcp-server ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-06-22github.com/toolstem/toolstem-sec-mcp-server ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from toolstem-sec-mcp-serverPass
- No critical advisory in the package or its dependencies272 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model6 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubSEC 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.
Quickstart — hosted endpoint (recommended)
Point your MCP client or agent at the hosted endpoint. No API key, no infra, no setup. Billing is per-call via x402 — the agent's wallet pays directly in USDC on Base mainnet.
https://mcp.toolstem.com/mcp/sec
- No SEC API key, no signup, no marketplace account — the agent's wallet pays directly.
- No infrastructure — nothing to install, host, or keep running.
- No setup — connect an MCP client and call a tool.
initializeandtools/listare free (discovery and schema introspection).tools/callis tiered per tool (see Pricing below).
Claude Desktop
Drop this into your claude_desktop_config.json:
{
"mcpServers": {
"toolstem-sec": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.toolstem.com/mcp/sec"
]
}
}
}
Restart Claude Desktop, then ask: "Has TSLA disclosed any material 8-K events in the last 90 days?"
Any MCP client (LangChain.js)
The official @langchain/mcp-adapters library connects directly to the hosted URL:
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?" });
LangChain quick-start (langchain-toolstem)
The langchain-toolstem wrapper handles x402 payment for you — pass a funded wallet key and the SEC tools are included automatically:
import { createToolstemTools } from 'langchain-toolstem';
const tools = await createToolstemTools({ walletPrivateKey: process.env.WALLET_KEY });
// SEC tools included automatically — agents pay per call in USDC
Prefer to run the server yourself over stdio/HTTP? See Advanced: self-host at the bottom.
Try the tools live in the Toolstem playground.
Pricing
- MCP
initializeandtools/listare free — discover the server and its tool surface without paying anything. tools/callis tiered per tool, paid in USDC on Base mainnet via x402. No API key, no signup, no marketplace account — agents pay directly from their own wallet.
| Tier | Price per call | Tools |
|---|---|---|
| Cheap | $0.005 | get_company_filings_summary |
| Standard | $0.05 | get_insider_signal, get_institutional_signal |
| Premium | $0.50 | get_material_events_digest, compare_disclosure_signals |
Per-tool breakdown:
| Tool | Tier | Per call |
|---|---|---|
get_company_filings_summary |
Standard | $0.005 USDC |
get_insider_signal |
Standard | $0.05 USDC |
get_institutional_signal |
Standard | $0.05 USDC |
get_material_events_digest |
Premium | $0.50 USDC |
compare_disclosure_signals |
Premium | $0.50 USDC |
How billing works
Toolstem 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.
See the live pricing page on toolstem.com/sec/ for current rates.
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 (price/call) |
|---|---|---|---|---|
| 1 | get_company_filings_summary |
ticker_or_cik (string) |
— | Cheap ($0.005) |
| 2 | get_insider_signal |
ticker_or_cik (string) |
lookback_days (int 1–730, default 90) |
Standard ($0.05) |
| 3 | get_institutional_signal |
ticker_or_cik (string) |
quarters_back (int 1–20, default 4) |
Standard ($0.05) |
| 4 | get_material_events_digest |
ticker_or_cik (string) |
lookback_days (int 1–1825, default 365) |
Premium ($0.50) |
| 5 | compare_disclosure_signals |
tickers_or_ciks (string[2..5]) |
— | Premium ($0.50) |
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 — $0.50 USDC per call on Base mainnet, settled via x402. See the live pricing page on toolstem.com/sec/ for current rates.
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" }
}
Advanced: self-host
Most users should use the hosted endpoint 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).
Claude Desktop (self-hosted over stdio)
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-server
toolstem-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 |
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
License & author
MIT License — see LICENSE.
Toolstem SEC EDGAR MCP questions
How do I add Toolstem SEC EDGAR MCP to Claude Code?
Run claude mcp add toolstem-sec-mcp-server -- npx -y toolstem-sec-mcp-server in your terminal. Add --scope user to make it available in every project.
How do I add Toolstem SEC EDGAR MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does Toolstem SEC EDGAR MCP provide?
It exposes 6 tools, including filing_velocity, material_event_count_90d, disclosure_volume_trend, latest_form_types, activist_risk_flag.
Do I need an SEC API key to use this?
No, the server sources data directly from SEC EDGAR's public submissions API and includes a built-in rate limiter.