One API, two doors –
REST for programs, MCP for agents.
Live SEC insider trading data over plain HTTPS. Works without a key; a free key from the alerts bot unlocks full history.
REST quickstart
No key, no signup – one line:
curl "https://api.insidergraph.com/v1/ownership?tickers=NVDA&limit=1"
{
"access": {
"tier": "anonymous",
"history_from": "2026-04-07",
"note": "anonymous tier serves the most recent 90 days; a free API
key unlocks full history - see /v1/coverage"
},
"data": [{
"issuer": "Nvidia Corp",
"ticker": "NVDA",
"insider": "Dabiri John",
"relationship": "director",
"date": "2026-06-25",
"code": "A",
"shares": 1211,
"is_10b5_1": false,
"filing_url": "https://www.sec.gov/Archives/edgar/data/1045810/..."
}],
"page": { "returned": 1, "limit": 1, "has_more": true, "next_cursor": "…" },
"source": { "name": "SEC EDGAR", "url": "https://www.sec.gov/..." }
}Every response says which tier served it and why. With a
key, add -H "Authorization: Bearer ig_…" to the
same call.
MCP setup
One endpoint for every client: https://api.insidergraph.com/mcp.
Listed in the official MCP registry as com.insidergraph/insidergraph.
Claude Code
claude mcp add insidergraph https://api.insidergraph.com/mcp -t http -H "Authorization: Bearer ig_YOUR_KEY"
Drop the -H flag to run without a key (90-day window).
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"insidergraph": {
"url": "https://api.insidergraph.com/mcp",
"headers": { "Authorization": "Bearer ig_YOUR_KEY" }
}
}
}VS Code
.vscode/mcp.json
{
"servers": {
"insidergraph": {
"type": "http",
"url": "https://api.insidergraph.com/mcp",
"headers": { "Authorization": "Bearer ig_YOUR_KEY" }
}
}
}claude.ai
Settings → Connectors → add https://api.insidergraph.com/mcp.
Web connectors can't send custom headers, so claude.ai runs on the
anonymous tier (90-day window).
Keys and tiers
Message @insidergraph_bot and send
/apikey – you get an ig_ bearer token, shown once.
Send it as Authorization: Bearer ig_….
| Tier | Data | Rate |
|---|---|---|
| Anonymous | Every endpoint, most recent 90 days, 500 rows/page | 1 req/s |
| Free key – free for now | All facts, full history, every signal endpoint | 10 req/s |
| Pro (coming) | Signal endpoints uncapped, market-wide screens | – |
Surface reference
Introspected from the running server – this list can never drift from what actually serves.
MCP tools (11)
| Tool | What it answers |
|---|---|
cluster_buys | Find issuers where multiple distinct insiders independently bought with their own money (code P) inside a window - a signal raw EDGAR cannot answer. |
company_profile | START HERE for any company question: one call returns the full insider picture for a ticker or company name - current 5%+ stakeholders (13D/13G), insider buy/sell activity (Form 4), announced sales (Form 144), and recent material events (8-K). |
describe_coverage | Orientation: what this server covers RIGHT NOW - per-feed live date ranges (coverage deepens daily toward the backfill horizon), your access tier, and an example question per tool. |
find_company | Resolve any company identifier to its EDGAR identity: ticker in any format (AAPL, NASDAQ:AAPL, $NVDA, BRK.B), company name, CIK number, US ISIN, or CUSIP. |
get_insider_trades | Search normalized insider transactions from SEC Forms 3/4/5 (US public companies). |
get_material_events | Search SEC 8-K material corporate events (bankruptcies, restatements, officer departures, delistings, cyber incidents, earnings, M&A...) normalized to item codes, with SEC filing links. |
get_planned_sales | Search SEC Form 144 notices - insiders' PROPOSED sales of restricted/control stock, filed BEFORE the sale executes (the Form 4 reports execution after). |
get_stakes | Search 5%+ beneficial-ownership stakes from Schedules 13D/13G. |
list_recent_filings | The firehose: recently ingested filings across ALL feeds (Forms 3/4/5, 8-K, 144, Schedules 13D/13G) with acceptance timestamps and SEC filing links, newest first. |
planned_vs_executed | Cross-feed signal: pair each Form 144 notice (an insider's ANNOUNCED sale) with the seller's actual Form 4 sale executions - same person, exact CIK identity, matched inside the notice's factual Rule 144 validity window (90 days from filing). |
trades_before_events | Cross-feed signal: for issuers that filed a material 8-K event, show SEC Form 4 insider transactions in the N days BEFORE the event - e.g. |
REST routes (12)
| Route | What it serves |
|---|---|
POST /mcp | MCP streamable-HTTP endpoint serving all tools above. |
GET /.well-known/glama.json | Registry maintainer manifest (Glama claim). |
GET /v1/coverage | Client coverage contract: feeds, live date ranges, tool guide. |
GET /v1/events | Material 8-K corporate events, item-coded. |
GET /v1/intents | Announced insider sales from Form 144. |
GET /v1/ownership | Insider transactions from Forms 3/4/5, filterable. |
GET /v1/ownership/filings | Recently ingested ownership filings. |
GET /v1/signals/cluster-buys | Issuers where multiple insiders bought with their own money inside a window. |
GET /v1/signals/company-profile | One-call company snapshot: holders, insider flow, planned sales with verdicts, events. |
GET /v1/signals/planned-vs-executed | Form 144 notices paired with actual executions inside the Rule 144 validity window. |
GET /v1/signals/trades-before-events | Insider transactions in the window before material 8-K events. |
GET /v1/stakes | 5%+ beneficial-ownership stakes from Schedules 13D/13G. |