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 · MCP setup · Keys & tiers · Reference

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_….

TierDataRate
AnonymousEvery endpoint, most recent 90 days, 500 rows/page1 req/s
Free key – free for nowAll facts, full history, every signal endpoint10 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)
ToolWhat it answers
cluster_buysFind issuers where multiple distinct insiders independently bought with their own money (code P) inside a window - a signal raw EDGAR cannot answer.
company_profileSTART 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_coverageOrientation: 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_companyResolve 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_tradesSearch normalized insider transactions from SEC Forms 3/4/5 (US public companies).
get_material_eventsSearch 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_salesSearch SEC Form 144 notices - insiders' PROPOSED sales of restricted/control stock, filed BEFORE the sale executes (the Form 4 reports execution after).
get_stakesSearch 5%+ beneficial-ownership stakes from Schedules 13D/13G.
list_recent_filingsThe 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_executedCross-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_eventsCross-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)
RouteWhat it serves
POST /mcpMCP streamable-HTTP endpoint serving all tools above.
GET /.well-known/glama.jsonRegistry maintainer manifest (Glama claim).
GET /v1/coverageClient coverage contract: feeds, live date ranges, tool guide.
GET /v1/eventsMaterial 8-K corporate events, item-coded.
GET /v1/intentsAnnounced insider sales from Form 144.
GET /v1/ownershipInsider transactions from Forms 3/4/5, filterable.
GET /v1/ownership/filingsRecently ingested ownership filings.
GET /v1/signals/cluster-buysIssuers where multiple insiders bought with their own money inside a window.
GET /v1/signals/company-profileOne-call company snapshot: holders, insider flow, planned sales with verdicts, events.
GET /v1/signals/planned-vs-executedForm 144 notices paired with actual executions inside the Rule 144 validity window.
GET /v1/signals/trades-before-eventsInsider transactions in the window before material 8-K events.
GET /v1/stakes5%+ beneficial-ownership stakes from Schedules 13D/13G.