41,367 parsed trade line items from 8,290 STOCK Act disclosures across 419 members: buy/sell, disclosed amount range, trade and notification dates, self/spouse owner. The disclosures are PDFs behind a daily index; there is no official API. We parse them so your agent can query them.
Tickers members are net-buying, by disclosed amount-range midpoint, straight off this API (congress.trades).
Values are amount-range midpoints. The STOCK Act discloses buckets, not exact sizes. Every figure traces to the member's filed PTR via provenance.get.
What congressional trade data actually takes to acquire and keep clean
| The trapped part | DIY from the source | With Arkolith |
|---|---|---|
| PDFs, not data | House disclosures are PDFs behind a daily XML index; Senate adds a session gate and scanned images needing OCR. | Parsed line items: member, ticker, side, amount range, dates, owner. |
| No incumbent API | There is no official STOCK Act API. You build the scraper, the parser, and the retry logic, then maintain them forever. | congress.trades: query by member or ticker, today. |
| Normalization | Free-text asset names → tickers, amount buckets → comparable values, self vs spouse vs dependent ownership. | Tickers resolved, ranges normalized, owner classified, joinable against 13F and Form 4. |
| The cross-source join | The real signal is agreement: Congress AND insiders AND funds on the same name. That is three pipelines to build. | signal.confluence joins all three legs in one call. |
Live from the MCP catalog, also available as REST endpoints
congress.disclosures.listfreeList the US House financial-disclosure filing INDEX for a year (STOCK Act). filingType 'P' = Periodic Transaction Report (stock trades). Returns one row per filing with a link to the source PDF — this is the index, NOT parsed trades. Parsed line-items (member, ticker, buy/sell, amount range) are available via congress.trades (US House live; Senate being added). Public-domain US House Clerk data.
congress.member.searchfreeFind US House representatives who filed financial disclosures in a year, by name (filing index — parsed trades available via congress.trades, US House live; Senate being added).
congress.tradesfreeParsed STOCK Act transaction line-items: actual congressional stock trades by ticker or by member — buy/sell, the disclosed amount range, trade + notification dates, and owner (self/spouse). Each row links to its source PTR PDF. US House (e-filed) is live; Senate is being added. Pass `ticker` OR `member`.
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: "congress:2026-PTR-..." }
{
"source_url": "https://disclosures-clerk.house.gov/...",
"fetched_at": "2026-06-05T09:30:14Z",
"parser": "congress-ptr v1.3.2",
"license": "public domain (US House Clerk)"
}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