MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

io.github.cyanheads/congressgov-mcp-server

Access U.S. congressional data (bills, votes, members, committees) via MCP.

Checks passed
14 / 22

0 failed · 8 not measured

Median response
1059 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
12

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1059 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name congressgov-mcp-server.

  • Pass
    Lists tools

    tools/list returned 12 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1059 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1059 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    109 of 109 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Pass
    Repo owner matches

    The GitHub repository owner matches the namespace login.

  • Pass
    Recently updated

    Updated 2026-11-04T05:09:08.753375Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using io.github.cyanheads/congressgov-mcp-server

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http io-github-cyanheads-congressgov-mcp-server https://congressgov.caseyjhand.com/mcp

Capabilities

Tools 12

congressgov_amendment_lookup

Browse and retrieve U.S. congressional amendments from Congress.gov — House (hamdt), Senate (samdt), and Senate unprinted (suamdt, 97th and 98th Congresses only). An amendment is addressed by congress + amendmentType + amendmentNumber, the identifiers other tools return: congressgov_bill_lookup 'amendments' rows (type and number), House votes from congressgov_roll_votes (amendmentType and amendmentNumber), and amendment rows from congressgov_member_lookup 'sponsored'/'cosponsored' (amendmentNumber, with the type in the row's url); either letter case is accepted. Use 'list' to browse one congress, optionally one amendmentType (newest update first; fromDateTime/toDateTime filter on update date), 'get' for the record (sponsor, purpose, description, the bill or amendment it amends, latest action), or drill in with 'actions', 'cosponsors', 'amendments' (amendments to this amendment), or 'text'. 'text' lists the published text versions — the Congressional Record pages that print the amendment, often alongside the surrounding floor proceedings — and 'content' reads one version's HTML as plain text, a bounded character window at a time. On that page a Senate amendment is printed under 'SA {number}' or 'Amendment No. {number}'; a House amendment is not printed under its HAMDT number — find it at the Record page its 'actions' rows cite ('text: CR H3582-3583' is the '[[Page H3582]]' marker) or under 'Amendment No. N Offered by', where N is the number the description from 'get' gives it ('An amendment numbered 64 printed in House Report 118-142'). An 'actions' row that records a roll call vote carries rollVote — the chamber, congress, session, and voteNumber congressgov_roll_votes takes to return that vote and each member's position.

Discovered
congressgov_bill_lookup

Browse and retrieve U.S. legislative bill data from Congress.gov. Discover bills by filtering on congress, bill type, and date range — there is no keyword search. Use 'list' to browse (requires congress, defaults to most-recently-updated first), 'get' for full bill detail (sponsor, policy area, CBO estimates, law info), or drill into a specific bill with 'actions', 'amendments', 'cosponsors', 'committees', 'subjects', 'summaries', 'text', 'titles', or 'related' (each requires congress + billType + billNumber). 'text' lists the published versions and their format URLs; 'content' then reads one version's actual text, a bounded character window at a time. 'summaries' takes an optional versionCode selector and returns each row's text a bounded character window at a time — a row past the window carries textTotalCharacters/textTruncated/textNextOffset, and characterOffset reads on from there. An 'actions' row that records a roll call vote carries rollVote — the chamber, congress, session, and voteNumber congressgov_roll_votes takes to return that vote and each member's position. An 'amendments' row's type and number, with congress, are the amendmentType and amendmentNumber congressgov_amendment_lookup takes to return that amendment's sponsor, actions, cosponsors, and text.

Discovered
congressgov_bill_summaries

Browse recent CRS (Congressional Research Service) bill summaries — plain-language summaries of bills at each legislative stage, useful for answering "what's happening in Congress?". The fromDateTime/toDateTime filters apply to the summary's update time, not the bill's action date, so results include recently rewritten summaries of older bills. Defaults to summaries updated in the last 7 days. Each item shows both the bill's action date and the summary update date. A page returns limit rows, and a summary longer than the per-row window arrives as an exact character window carrying textTotalCharacters/textTruncated/textNextOffset; pagination.nextOffset continues the page and a row's textNextOffset continues its text. For summaries of one specific bill — and to read a windowed summary to the end — use congressgov_bill_lookup with operation='summaries' instead.

Discovered
congressgov_committee_lookup

Browse congressional committees and their legislation, reports, and nominations. Committee codes follow the pattern chamber-prefix (h/s/j) + abbreviation + 2-digit number — use 'list' (with optional 'filter' for name→code resolution) to discover codes, then 'get' or drill into 'bills', 'reports', or 'nominations' ('nominations' is Senate-only). 'get' and sub-resources only need committeeCode (chamber is inferred from the prefix, or read from the committee roster when the prefix's chamber does not hold the code); pass chamber explicitly to override. The 'bills' sub-resource defaults to 'recent' order (newest update-date first); pass order='oldest' for ascending update-date order. Upstream omits bill titles from the 'bills' sub-resource — rows carry only {congress, billType, billNumber, actionDate, relationshipType, url}; chain 'congressgov_bill_lookup get' per row to retrieve titles and policy area.

Discovered
congressgov_committee_reports

Browse and retrieve committee reports from Congress.gov — reports accompany legislation reported out of committee and explain the bill's purpose, committee amendments, dissenting views, and the committee vote. Report types are 'hrpt' (House), 'srpt' (Senate), and 'erpt' (Executive). 'list' is not ordered by date; it takes fromDateTime/toDateTime, which filter on the date Congress.gov last updated a report record, and conference, which selects conference reports — list rows carry no conference field. 'text' lists the published format URLs; 'content' then reads the report's actual text, a bounded character window at a time. A multi-part report (Part 2, Book 3) is filed as one record per part under one report number: 'get', 'text', and 'content' serve Part 1 unless part names another, and list every part number in parts.

Discovered
congressgov_crs_reports

Browse, retrieve, and read CRS (Congressional Research Service) reports — nonpartisan policy analyses by subject-matter experts at the Library of Congress, covering policy areas, legislative proposals, and legal questions. Report IDs are letters then digits (R40097, RL33612, IF12345) or, for older reports, two digit groups joined by a hyphen (96-548). Use 'list' to browse available reports, newest update first, 'get' for full detail (authors, topics, summary, download formats), or 'content' to read the report itself — its HTML version as plain text, a bounded character window at a time; feed nextOffset back as characterOffset to read on. The oldest reports publish only a PDF, which 'content' cannot read; the error names its URL. 'list' takes fromDateTime/toDateTime, which filter on the date Congress.gov last updated a report — not its publication date — so a window finds reports added or revised in it.

Discovered
congressgov_daily_record

Browse the daily Congressional Record — floor speeches, debates, and legislative text published each day Congress is in session. Navigation is hierarchical: volumes (via 'list') → issues (via 'issues') → articles (via 'articles'). Use 'list' to find recent volumes, 'issues' to see what's in a volume, and 'articles' to access individual speeches and debate sections. 'articles' lists each article and its format URLs; 'content' then reads one article's actual text, a bounded character window at a time.

Discovered
congressgov_enacted_laws

Browse enacted public and private laws from Congress.gov by congress and law type ('pub' for public laws, 'priv' for private). 'list' filters by enactment status and law type — the discovery path 'bill_lookup' does not offer. 'get' returns the origin bill record (sponsor, actions, summaries, text), with the public/private law citation on the bill's 'laws' array (e.g. {"number":"118-2","type":"Public Law"}).

Discovered
congressgov_member_lookup

Discover congressional members and their legislative activity. No name search. For 'list', filter by stateCode (optionally with district), by congress, or by both together (e.g., 118th Congress + CA, or CA district 12 in the 118th). Add currentMember=true to restrict to currently serving members. Once you have a bioguideId, use 'get' for full profile or 'sponsored'/'cosponsored' for their legislative portfolio. A 'sponsored'/'cosponsored' row that is an amendment carries amendmentNumber, with its amendment type in the row's url (/amendment/{congress}/{type}/{number}); pass congress, amendmentType, and amendmentNumber to congressgov_amendment_lookup for its sponsor, actions, and text.

Discovered
congressgov_roll_votes

Retrieve U.S. congressional roll call votes and individual member voting positions for either chamber. Set 'chamber' to 'house' (default, from the Congress.gov API — Congress.gov publishes House roll call votes from the 115th Congress (2017) onward) or 'senate' (from the Senate's official LIS feed — the Senate publishes roll call votes from the 101st Congress (1989) onward). When the LIS feed can't be read (senate.gov refuses automated requests), Senate calls are answered from Voteview's published vote files instead, and 'source' names Voteview and its latest vote; a later vote is not found until Voteview adds it. Use 'list' to find votes by congress and session (newest first by default), 'get' for vote details (question, result, tallies, party breakdown, associated bill/nomination/amendment), or 'members' for how each member voted. 'members' narrows the roster by bioguideId (House only), stateCode, and party before paging, so one member's or one delegation's position takes one call. A bill action that records a roll call carries rollVote in congressgov_bill_lookup 'actions' — pass its chamber, congress, session, and voteNumber here. A House vote on an amendment carries amendmentType and amendmentNumber; pass them, with congress, to congressgov_amendment_lookup for the amendment's sponsor, actions, cosponsors, and text.

Discovered
congressgov_search_bills

Keyword-search U.S. bills by title and CRS summary text — the discovery path the Congress.gov API itself lacks (it has no keyword search). Backed by a local full-text index over a bounded window of congresses, which every response names in mirroredCongresses; title and summary are indexed, but policy area and full bill text are not. Returns BM25-ranked matches, each with the bill's derived id (congress/billType/billNumber) for follow-up congressgov_bill_lookup calls and a truncated summary preview. Narrow with the optional congress, billType, and originChamber filters; a congress outside mirroredCongresses returns an empty result with a notice, not a no-match. Searches the local mirror, not the live API — if the mirror has not finished its initial build it returns an empty result with a notice, not an error.

Discovered
congressgov_senate_nominations

Browse presidential nominations to federal positions and track the Senate confirmation process. Use 'list' to browse, 'get' for nomination detail, 'actions'/'committees'/'hearings' for confirmation pipeline data, or 'nominees' to retrieve individual appointees in a multi-nominee batch. Nominations use 'PN' (Presidential Nomination) numbering. Most nominations carry confirmation activity on the parent (e.g., PN1000); multi-part parents (e.g., PN851) carry no activity of their own — their actions, committees, hearings, and nominees live on partitioned children (PN851-1, PN851-2, …). 'get' on a parent that has no `nominees` array signals the partitioned form is needed for everything below it. nominationNumber takes either form bare or as its citation (1000 or PN1000, 730-2 or PN730-2). 'list' runs newest update first and takes fromDateTime/toDateTime, which filter on the date Congress.gov last updated a nomination record — not its received date or latest action date. An action that cites its own Senate record vote — an `actions` row, or `latestAction` on `list` and `get` — carries `rollVote`, the congressgov_roll_votes arguments for that vote.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1059 ms12