# Congress Trade Alerts

> Congressional stock-trade disclosures (House + Senate PTRs) with each filing's lateness vs 45 days

- name: com.congresstradealerts/cta
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.congresstradealerts%2Fcta
- tools: https://api.protogrid.dev/v1/servers/com.congresstradealerts%2Fcta/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "cta": {
      "type": "http",
      "url": "https://congresstradealerts.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-98% +updated-11d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 70/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 75 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_aggregate_stats (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_party_breakdown (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_ticker_buyers (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,149 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 50 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 12, about 2,149 tokens to load them all
- tool set hash: b81bc4bffc96eac74e2cda4be1192bba
- tools last changed: 2026-11-03T10:11:38.468Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.congresstradealerts/cta.svg)](https://protogrid.dev/servers/com.congresstradealerts/cta)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-03 `search_members_and_tickers` changed (description)
  - before: Case-insensitive substring search over member names, ticker symbols, and company names. Returns up to `limit` matching members and up to `limit` matching tickers, each ordered by trade count. Use it to turn a common or partial name into the exact stored name that get_member_trades and get_member_profile require. A member who filed under several spellings appears once, under one of them, with trade_count summed across all of them, so get_member_trades on that name can return fewer trades. It matches substrings only and does not correct misspellings.
  - after: Case-insensitive substring search over member names, ticker symbols, and company names. Returns up to `limit` matching members and up to `limit` matching tickers, each ordered by trade count. Use it to turn a common or partial name into the exact stored name that get_member_trades and get_member_profile require. A member who filed under several spellings appears once, under one of them, with trade_count summed across those spellings, so get_member_trades on that name can return fewer trades. It matches substrings only and does not correct misspellings.
- 2026-11-03 `get_aggregate_stats` changed (description)
  - before: Get high-level database stats: total trades (all-time + 30/60/90d), total members tracked, avg filing delay, sector breakdown.
  - after: Get high-level stats on CTA's records: trades recorded (since records began + 30/60/90d), members with recorded trades, avg filing delay, sector breakdown.
- 2026-11-03 `get_chamber_breakdown` changed (description) **meaning changed**
  - before: Get trade counts broken down by chamber (House vs Senate), with optional date filter.
  - after: Get counts of the trades in CTA's records broken down by chamber (House vs Senate), with optional date filter. Senate counts since October 23, 2026 are partial (see the server instructions).
- 2026-11-03 `get_party_breakdown` changed (description)
  - before: Get trade counts broken down by party (D/R/I), with optional date filter.
  - after: Get counts of the trades in CTA's records broken down by party (D/R/I), with optional date filter.
- 2026-11-03 `get_top_tickers` changed (description)
  - before: Get the most-traded stock tickers by Congress in the last N days. Set tx_type='Purchase' for most-bought tickers, or tx_type='Sale' for most-sold. Omit tx_type to rank on all trades (default).
  - after: Get the tickers with the most congressional trades in CTA's records for the last N days. Set tx_type='Purchase' for most-bought tickers, or tx_type='Sale' for most-sold. Omit tx_type to rank purchases and sales together (default).
- 2026-11-03 `get_ticker_buyers` changed (description)
  - before: Get every Congress member who bought a specific ticker in the last N days, aggregated per politician.
  - after: Get the members of Congress with a recorded purchase of a specific ticker in CTA's records for the last N days, aggregated per politician.
- 2026-11-03 `get_trades_by_ticker` changed (description)
  - before: Get all congressional trades for a specific stock ticker symbol.
  - after: Get the congressional trades in CTA's records for a specific stock ticker symbol, newest first.
- 2026-11-03 `get_member_profile` changed (description)
  - before: Returns a trading profile for one member of Congress: total trades, buys and sells, first and last trade dates, average disclosure lag, party, chamber, state, and committee assignments. member_name must exactly match the stored member name (the STOCK Act filer name with honorifics removed, often a legal name); a name that does not match returns total_trades 0 and no error, so resolve names with search_members_and_tickers first. The profile covers only trades filed under that exact spelling.
  - after: Returns a trading profile for one member of Congress from CTA's records: trade count, buys and sells, first and last trade dates, average disclosure lag, party, chamber, state, and committee assignments. member_name must exactly match the stored member name (the STOCK Act filer name with honorifics removed, often a legal name); a name that does not match returns total_trades 0 and no error, so resolve names with search_members_and_tickers first. The profile covers only trades filed under that exact spelling.
- 2026-11-03 `get_trade_feed` changed (description)
  - before: Get recent congressional stock trades with optional filters for politician, ticker, party, chamber, and transaction type.
  - after: Get recently disclosed congressional stock trades from CTA's records, with optional filters for politician, ticker, party, chamber, and transaction type.
- 2026-11-03 `get_top_traders` changed (description)
  - before: Returns the most active stock traders in Congress by trade count, optionally filtered by chamber (House or Senate) and date window.
  - after: Returns the members of Congress with the most trades in CTA's records, by trade count, optionally filtered by chamber (House or Senate) and date window.

Full history: https://api.protogrid.dev/v1/servers/com.congresstradealerts%2Fcta/changes

## Remotes

- https://congresstradealerts.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.97727275)

## Packages

_none_

## Tools (12)

- `get_aggregate_stats`: Get high-level stats on CTA's records: trades recorded (since records began + 30/60/90d), members with recorded trades, avg filing delay, sector breakdown.
- `get_chamber_breakdown`: Get counts of the trades in CTA's records broken down by chamber (House vs Senate), with optional date filter. Senate counts since October 23, 2026 are partial (see the server instructions).
- `get_committee_trading`: For a given congressional committee, returns which members have stock trades in CTA's records for the last N days, their trade counts, and the percentage of the committee with at least one recorded trade.
- `get_member_profile`: Returns a trading profile for one member of Congress from CTA's records: trade count, buys and sells, first and last trade dates, average disclosure lag, party, chamber, state, and committee assignments. member_name must exactly match the stored member name (the STOCK Act filer name with honorifics removed, often a legal name); a name that does not match returns total_trades 0 and no error, so resolve names with search_members_and_tickers first. The profile covers only trades filed under that exact spelling.
- `get_member_trades`: Returns stock trades disclosed by one member of Congress, newest trade first, with optional ticker and date-window filters. member_name must exactly match the member name as stored: the STOCK Act filer name with honorifics removed, which is often a legal name rather than the name the member is commonly known by. A name that does not match returns count 0 and no error, so resolve a common or partial name with search_members_and_tickers first. Only trades filed under that exact spelling are returned; for a member who filed under more than one spelling, use get_trade_feed with a partial name to include the other spellings.
- `get_party_breakdown`: Get counts of the trades in CTA's records broken down by party (D/R/I), with optional date filter.
- `get_ticker_buyers`: Get the members of Congress with a recorded purchase of a specific ticker in CTA's records for the last N days, aggregated per politician.
- `get_top_tickers`: Get the tickers with the most congressional trades in CTA's records for the last N days. Set tx_type='Purchase' for most-bought tickers, or tx_type='Sale' for most-sold. Omit tx_type to rank purchases and sales together (default).
- `get_top_traders`: Returns the members of Congress with the most trades in CTA's records, by trade count, optionally filtered by chamber (House or Senate) and date window.
- `get_trade_feed`: Get recently disclosed congressional stock trades from CTA's records, with optional filters for politician, ticker, party, chamber, and transaction type.
- `get_trades_by_ticker`: Get the congressional trades in CTA's records for a specific stock ticker symbol, newest first.
- `search_members_and_tickers`: Case-insensitive substring search over member names, ticker symbols, and company names. Returns up to `limit` matching members and up to `limit` matching tickers, each ordered by trade count. Use it to turn a common or partial name into the exact stored name that get_member_trades and get_member_profile require. A member who filed under several spellings appears once, under one of them, with trade_count summed across those spellings, so get_member_trades on that name can return fewer trades. It matches substrings only and does not correct misspellings.
