Coldpine: Congressional Stock Disclosures

Read-only U.S. congressional stock trade disclosures (STOCK Act filings), parsed and source-linked.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "congress-disclosures": {
      "url": "https://coldpine.io/api/mcp"
    }
  }
}

Remote endpoints

https://coldpine.io/api/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢whats_new(since, limit)

The newest STOCK Act Periodic Transaction Reports filed by members of Congress, newest first. Use this to answer 'what did Congress just disclose' or to poll for new filings: pass `since` (YYYY-MM-DD) to get only reports filed after that date. Returns one row per report: filing_id, filed_date, member name/id, chamber, party, state, trade count, buys, sells, distinct tickers, whether any trade was reported past the 45-day window, the top tickers, and the coldpine.io URL of the report and the member. Looks at the 100 most recent reports; for older ones page through list_recent_filings, and for the trades inside one report call get_filing. Access: no key or account needed. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "since": {
      "description": "Only filings filed AFTER this date (YYYY-MM-DD). Omit for the latest 25.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "limit": {
      "default": 25,
      "description": "How many reports to return, 1 to 50. Default 25.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_members(query, chamber, limit)

Find members of the U.S. House or Senate who have disclosed stock trades, by full or partial name. Start here whenever a question names a person: it returns the member_id that get_member and list_transactions take. Each match carries name, chamber, party, state, trade and filing counts, buy/sell split, the disclosed dollar volume range and the member's coldpine.io page. total_matches tells you when the list was cut by `limit`. To rank all members rather than look one up, use congress_leaderboard. Access: no key or account needed. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Part of the member's name, e.g. 'Pelosi' or 'Tuberville'."
    },
    "chamber": {
      "description": "Restrict matches to one chamber. Omit to search both.",
      "type": "string",
      "enum": [
        "house",
        "senate"
      ]
    },
    "limit": {
      "default": 10,
      "description": "Maximum matches to return, 1 to 25. Default 10.",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_member(member_id)

One member of Congress: profile, aggregate trading stats (counts, volume range, average disclosure lag, most-traded tickers), the 20 most recent disclosed trades with links to the original government filing, the member's 5 most recent Periodic Transaction Reports, and the one sample scored trade the public page shows. Use it for 'what has this member been trading'. Get the member_id from search_members first. For more than 20 trades, page list_transactions with the same member_id. Returns a not-found error for an unknown id. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "member_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Coldpine member id (from search_members or any coldpine.io/politicians URL, the trailing number)."
    }
  },
  "required": [
    "member_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_stock(ticker)

Every member of Congress who disclosed trading a ticker: totals, buy/sell split, disclosed volume range, first and last trade dates, the members who traded it most, the 20 most recent disclosed trades with source-filing links, and the one sample scored trade the public page shows. Use it for 'who in Congress trades this stock'. For the full trade history of a ticker, page list_transactions with the same ticker; for stocks several members bought or sold together, use cluster_trades. Returns a not-found error when no member has disclosed a trade in the symbol. Access: no key or account needed. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "minLength": 1,
      "maxLength": 12,
      "description": "Stock symbol, case-insensitive, e.g. NVDA. One symbol per call."
    }
  },
  "required": [
    "ticker"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_transactions(ticker, member_id, limit, offset)

Individual disclosed congressional stock trades, newest disclosure first. The paging tool: use it when get_member or get_stock's 20 most recent trades are not enough, or to walk the whole record. Filter by ticker, by member_id, by both (one member's trades in one stock), or by neither (every trade). Each row has the ticker and asset name, purchase/sale/exchange, trade date, disclosure date, days between them, whether that passed the 45-day STOCK Act window, the reported amount range, the owner (self, spouse, dependent child), the member, and a link to the original House Clerk PDF or Senate eFD filing. `total` is the full match count, so keep raising `offset` by `limit` until you reach it. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "ticker": {
      "description": "Only trades in this stock symbol, e.g. NVDA. Case-insensitive. Omit for all tickers.",
      "type": "string",
      "minLength": 1,
      "maxLength": 12
    },
    "member_id": {
      "description": "Only trades by this member (id from search_members). Combine with ticker to narrow further. Omit for all members.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 25,
      "description": "Rows per page, 1 to 50. Default 25.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "description": "Rows to skip, for paging: 0 for the first page, then add `limit` each time. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_recent_filings(page)

The newest Periodic Transaction Reports (STOCK Act filings) with parsed trades, newest filed date first, 25 per page: member, chamber, filed date, trade count, buy/sell split, tickers, and how many trades were reported more than 45 days after the trade (late_45). Mirrors coldpine.io/filings. Use it to browse the archive of reports page by page; `coverage` in the response gives the total number of reports, members and the date span, so you know how many pages exist. For just the latest reports or polling by date, whats_new is lighter and needs no token; for the trades inside one report, pass its id to get_filing. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "description": "Page number, 25 reports per page, 1 is the newest. Default 1. A page past the end returns an empty list.",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_filing(filing_id)

A single STOCK Act Periodic Transaction Report: who filed it and when, the roll-up (trade count, buy/sell split, tickers, amount range, longest disclosure lag, trades past the 45-day window, trades by spouse or dependent child), every trade it disclosed, a link to the original government document, and the one sample scored trade the public page shows. Use it after whats_new, list_recent_filings or get_member has given you a filing id and the question is about what that one report contained. Returns a not-found error for an unknown id. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "filing_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Coldpine filing id (the trailing number in any coldpine.io/filings URL, or from list_recent_filings / get_member)."
    }
  },
  "required": [
    "filing_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cluster_trades(direction, window_days, min_members, limit)

Stocks that several members of Congress traded in the same direction inside a rolling window (Coldpine's cluster detection, same definition as the bot). Returns ticker, direction, distinct member count, trade count, date span, summed disclosed amount range and the member names. Same data as coldpine.io/research/biggest-cluster-buys-in-congress. Use it for 'what are several members buying (or selling) at once'; for everyone who ever traded one given stock use get_stock instead. The window counts back from the most recent trade date on record, not from a date you choose, and clusters come back largest first by distinct members. A person is counted once per cluster however many trades they made. Overlap in timing is a description of the filings, not evidence of coordination. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "direction": {
      "default": "purchase",
      "description": "Which side to cluster: 'purchase' for stocks several members bought, 'sale' for stocks several sold. Default 'purchase'. One direction per call.",
      "type": "string",
      "enum": [
        "purchase",
        "sale"
      ]
    },
    "window_days": {
      "default": 90,
      "description": "Length of the look-back window in days, 1 to 365, ending at the latest trade date on record. Default 90. A longer window finds more and larger clusters.",
      "type": "integer",
      "minimum": 1,
      "maximum": 365
    },
    "min_members": {
      "default": 3,
      "description": "Smallest number of distinct members that makes a cluster, 2 to 20. Default 3. Raise it to keep only the broadest overlaps.",
      "type": "integer",
      "minimum": 2,
      "maximum": 20
    },
    "limit": {
      "default": 10,
      "description": "Maximum clusters to return, 1 to 50. Default 10.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢congress_leaderboard(sort, chamber, party, limit)

Members of Congress ranked by disclosed trading activity: trade count, disclosed dollar volume (sum of amount-range midpoints), average trade size, or disclosure speed. Optional chamber and party filters. Same data as coldpine.io/leaderboard. Use it for 'who trades the most in Congress' style questions. Each row has the member, chamber, party, state, trade count, disclosed volume, average trade size, average days from trade to disclosure and the member's coldpine.io page; total_members is the count after filters. This ranks activity only. For returns against the S&P 500 use members_vs_market, and for late filing use stock_act_compliance. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "sort": {
      "default": "trades",
      "description": "Ranking: 'trades' = most disclosed trades, 'volume' = largest disclosed dollar volume (amount-range midpoints), 'avg_size' = largest average trade, 'speed' = shortest average gap between trade and disclosure. Always best-first. Default 'trades'.",
      "type": "string",
      "enum": [
        "trades",
        "volume",
        "avg_size",
        "speed"
      ]
    },
    "chamber": {
      "description": "Restrict to one chamber. Omit for both.",
      "type": "string",
      "enum": [
        "house",
        "senate"
      ]
    },
    "party": {
      "description": "Restrict to one party: 'D', 'R' or 'I' (the words Democrat, Republican, Independent are accepted too). Omit for all.",
      "type": "string",
      "maxLength": 16
    },
    "limit": {
      "default": 25,
      "description": "Members to return, 1 to 100. Default 25.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢members_vs_market(min_trades, limit)

Per-member 90-day return on disclosed stock purchases versus the S&P 500 over the same windows (alpha), with the 30-day alpha and hit rate. Only members with at least min_trades priced purchases that have a full 90-day window. Most members do not beat the market; this is the measured record. Same data as coldpine.io/research/members-who-beat-the-market. Use it when the question is about performance; congress_leaderboard ranks activity and carries no returns. Rows come back highest 90-day alpha first, each with the number of purchases measured, the average 90-day return, the S&P 500 average over the same windows, the 90-day and 30-day alpha, the share of purchases that beat the index, and the member's page. The response states the method. These are measured past outcomes on disclosed purchases only (sales and trades younger than 90 days are excluded), not a forecast and not a reason to trade. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "min_trades": {
      "default": 5,
      "description": "Smallest number of priced purchases a member needs to be included, 1 to 100. Default 5. Low values let one or two lucky trades top the list; raise it for a steadier record.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "limit": {
      "default": 50,
      "description": "Members to return, 1 to 300, highest 90-day alpha first. Default 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 300
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢stock_act_compliance(sort, limit)

How quickly Congress reports its trades against the STOCK Act's 45-day window: the site-wide summary (median lag, share late, House vs Senate) and the per-member board (trades dated, average and median lag, trades past 45 and 90 days, share late). Where a member has at least 5 priced purchases, the average pre-disclosure move of those purchases is given WITH the S&P 500 move over the same windows (avg_lag_excess); never quote one without the other. Same data as coldpine.io/research/congress-stock-act-late-filers. Use it for 'who files late' and 'how late is Congress overall'; the site-wide `summary` comes back on every call whatever the sort. For one member's lag on individual trades, read disclosure_lag_days in get_member or list_transactions. A late report is a fact about the filing date; it is not a finding of wrongdoing. Access: needs the agent token from a free Coldpine account, sent as 'Authorization: Bearer <token>'; without it the call returns setup steps instead of data. Read-only, cached for up to an hour.

Input Schema

{
  "type": "object",
  "properties": {
    "sort": {
      "default": "pct_late",
      "description": "Ranking, always highest first: 'pct_late' = share of trades reported past 45 days, 'late_45' = count past 45 days, 'egregious_90' = count past 90 days, 'avg_lag' / 'median_lag' / 'max_lag' = days from trade to disclosure, 'tx_dated' = number of trades with both dates. Default 'pct_late'.",
      "type": "string",
      "enum": [
        "pct_late",
        "late_45",
        "egregious_90",
        "avg_lag",
        "median_lag",
        "max_lag",
        "tx_dated"
      ]
    },
    "limit": {
      "default": 25,
      "description": "Members to return, 1 to 250. Default 25.",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools