2,360,000 Form 4 transactions across 5,450 companies: open-market buys and sells separated from awards and option noise, insiders deduped, the multi-insider cluster-buy signal precomputed. Every line item traced to the filing.
Companies where 2+ distinct insiders bought on the open market, straight off this API (insider.clusters).
What Form 4 data actually takes to acquire and keep clean
| The trapped part | DIY from the source | With Arkolith |
|---|---|---|
| The XML zoo | Form 4 XML has footnotes, derivative vs non-derivative tables, and a decade of format drift to parse. | Clean line items: transaction code, shares, price, value, all classified and normalized. |
| Signal vs noise | Most Form 4 volume is awards, vesting and option exercises, not conviction. You must classify every code. | Open-market buys/sells (P/S) separated from the noise; query just the conviction trades. |
| Identity | The filer is the insider, the subject is the issuer; names collide and CIKs need resolving across filings. | Insiders deduped and resolvable; query by ticker or by person. |
| The cluster signal | The high-conviction pattern (several distinct insiders buying the same window) needs a market-wide scan you'd build and rerun yourself. | insider.clusters ships it precomputed, market-wide, any window. |
Live from the MCP catalog, also available as REST endpoints
insider.transactions1 crInsider (SEC Form 4) transactions — open-market buys/sells, awards, option exercises — for a company (by ticker) or a person (by insider name). Pass `signal: true` to restrict to open-market buys/sells (codes P/S), the tradeable subset. Pass `since` to diff only new filings.
insider.filing1 crOne SEC Form 4 filing by accession number: the reporting insider, issuer, and every transaction in it (non-derivative + derivative), with net open-market flow and a link to the original SEC document. The full-filing follow-up when insider.transactions or events.latest hands you an accession_number.
insider.company3 crNet insider activity for one company over a window: open-market buy vs sell value/shares and distinct buyer/seller counts. Answers 'are insiders net buying or selling this name right now?'
insider.clusters5 crMarket-wide insider cluster scan: companies where several distinct insiders made open-market buys (or sells) inside a window — the high-conviction cluster signal. Returns tickers ranked by distinct-insider count and total value.
signal.crowding5 crCross-fund 'smart money' consensus from every tracked fund's latest 13F: the securities the MOST funds are collectively holding (mode='held'), buying this quarter (mode='bought' — NEW/ADDED cluster-buys), or selling (mode='sold' — REDUCED). The inverse of stock.owners: surfaces WHAT to look at, ranked by how many funds agree.
signal.confluence10 crThe moat join — where do informed INSIDERS (Form 4 open-market buys), institutional SMART MONEY (13F cluster-buys), and CONGRESS (US House STOCK Act trades) AGREE? Pass a `ticker` for all three legs on one name (insider + fund + congress net buy/sell + a verdict that escalates to triple_confluence_buy when all three are buying). Omit `ticker` for the market-wide ranked list — insider×fund names, surfaced first when Congress is buying too (triple_confluence). Joined on ticker — never a fuzzy name match. Each leg carries source provenance; congress $ are amount-range midpoints (approximate).
provenance.get: anti-hallucination grounding for agents
Any figure your agent quotes can be traced to the primary source: the origin URL, the fetch timestamp, and the parser version that produced it. Your agent cites the filing. It doesn't hallucinate one. That audit trail is first-class on every tool, REST and MCP.
> provenance.get { datapoint: "form4:0001234567-26-000123" }
{
"source_url": "https://www.sec.gov/Archives/edgar/data/...",
"fetched_at": "2026-06-05T11:42:51Z",
"parser": "edgar-form4 v1.9.0",
"license": "public domain (SEC EDGAR)"
}Mint a key, add one line to Claude Code (or any MCP client), and your agent can answer money questions against the live dataset. Metered per call, with a one-time grant of 500 evaluation credits to verify the data first.
claude mcp add --transport http arkolith \ https://arkolith.com/api/mcp \ --header "Authorization: Bearer YOUR_API_KEY"
REST too: curl -H "Authorization: Bearer KEY" https://arkolith.com/api/v1/… · full docs