Congressional stock-trade reports and the President's OGE reports, each row linked to its filing.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Live coverage counts (rows, filers, per-source totals) measured from the serving views at request time.
This tool takes no arguments.
Live coverage counts (rows, filers, per-source totals) measured from the serving views at request time.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Every observed version of one disclosure, oldest first. The change stream is append-only, so an amendment supersedes rather than overwrites -- the before and after of a restated filing are both here, each with its own change block and receipt.url. restated=true means content changed after first publication; each version records what changed and when.
| Argument | Type | Description |
|---|---|---|
| disclosure_id* | string | Permanent disclosure_id from search_disclosures. Identifiers survive restatement and are never reused. |
{
"type": "object",
"required": [
"disclosure_id"
],
"properties": {
"disclosure_id": {
"type": "string",
"description": "Permanent disclosure_id from search_disclosures. Identifiers survive restatement and are never reused."
}
},
"additionalProperties": false
}Source freshness and bulk-snapshot health. This endpoint downgrades itself when its own arithmetic says stale — it never guesses green. When state is 'degraded', degraded_reasons names each cause with its measurement; sources[].index_reconciliation says whether the government's own index lists filings not yet served; bulk_export.merkle_root is the day's commitment over every row's content_hash, for verifying a bulk download.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List filers with official identity (congressional filers carry their Bioguide ID; executive-branch filers return null with an explanation — identifiers are never invented). Filter by bioguide, by the exact member_id a disclosure row carries, or by a substring of the name as filed. A name search can match several filers; each result carries member_id and bioguide for an exact match.
| Argument | Type | Description |
|---|---|---|
| name | string | Case-insensitive substring of the filer's full name, e.g. pelosi |
| bioguide | string | Official Bioguide ID, e.g. P000197 |
| member_id | string | Exact filer identifier from a disclosure row, e.g. nancy-pelosi |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Case-insensitive substring of the filer's full name, e.g. pelosi"
},
"bioguide": {
"type": "string",
"description": "Official Bioguide ID, e.g. P000197"
},
"member_id": {
"type": "string",
"description": "Exact filer identifier from a disclosure row, e.g. nancy-pelosi"
}
},
"additionalProperties": false
}Search receipt-linked US government financial disclosures: both chambers of Congress under the STOCK Act, plus executive-branch OGE filings (chamber 'executive', which holds the President's disclosures). Every row carries receipt.url, the government's own document for that row: a PDF page for House and OGE filings, or the Senate eFD report page, which the Senate site opens behind its own access agreement (receipt.access 'gated'). Supports point-in-time reconstruction via as_of (rows observed on or before that timestamp; no look-ahead bias) and change polling via updated_since. Results are paged; page.next_cursor continues the listing.
| Argument | Type | Description |
|---|---|---|
| as_of | string | ISO timestamp: only rows first observed on/before this instant |
| limit | number | Rows per page: 10 when omitted; up to 25 without a key and 1000 with a licensed key. A larger request returns the maximum, not an error. |
| cursor | string | Opaque page.next_cursor from a previous call |
| ticker | string | Filter by ticker symbol, e.g. NVDA |
| chamber | string | Filter by filing body. 'house' and 'senate' are STOCK Act periodic transaction reports; 'executive' is executive-branch OGE filings, which is where the President's disclosures are. Omit to search all. |
| member_id | string | Filter to one filer by slug, e.g. donald-trump or nancy-pelosi. The same slug appears as member.member_id on every row. |
| updated_since | string | ISO timestamp: only rows first observed after this instant |
| min_delay_days | number | Only rows filed at least this many days after the transaction. The STOCK Act window is 45 days, so 46 returns filings outside it. Rows without a computed delay are excluded, not guessed at. |
| within_statutory_window | boolean | false returns only filings made outside the statutory window that applies to that row (served as statutory_window_days); true returns only filings inside it. Unlike min_delay_days, the boundary is each row's own window rather than a supplied number. Annual reports have no window and are excluded by either value. |
{
"type": "object",
"properties": {
"as_of": {
"type": "string",
"description": "ISO timestamp: only rows first observed on/before this instant"
},
"limit": {
"type": "number",
"description": "Rows per page: 10 when omitted; up to 25 without a key and 1000 with a licensed key. A larger request returns the maximum, not an error."
},
"cursor": {
"type": "string",
"description": "Opaque page.next_cursor from a previous call"
},
"ticker": {
"type": "string",
"description": "Filter by ticker symbol, e.g. NVDA"
},
"chamber": {
"enum": [
"house",
"senate",
"executive"
],
"type": "string",
"description": "Filter by filing body. 'house' and 'senate' are STOCK Act periodic transaction reports; 'executive' is executive-branch OGE filings, which is where the President's disclosures are. Omit to search all."
},
"member_id": {
"type": "string",
"description": "Filter to one filer by slug, e.g. donald-trump or nancy-pelosi. The same slug appears as member.member_id on every row."
},
"updated_since": {
"type": "string",
"description": "ISO timestamp: only rows first observed after this instant"
},
"min_delay_days": {
"type": "number",
"description": "Only rows filed at least this many days after the transaction. The STOCK Act window is 45 days, so 46 returns filings outside it. Rows without a computed delay are excluded, not guessed at."
},
"within_statutory_window": {
"type": "boolean",
"description": "false returns only filings made outside the statutory window that applies to that row (served as statutory_window_days); true returns only filings inside it. Unlike min_delay_days, the boundary is each row's own window rather than a supplied number. Annual reports have no window and are excluded by either value."
}
},
"additionalProperties": false
}