MCP server exposing 3 tools for congress-member-votes.
This URL is a JSON-RPC 2.0 endpoint over HTTP. Issue POST requests with a JSON-RPC body. Browsers and search crawlers land here on GET.
POST https://gateway.pipeworx.io/congress-member-votes/mcp
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
member_vote_positions — ANSWERS "how did Rep. X vote on bill Y" / "what were X's last 20 votes" / "did X vote against the budget resolution" -- one member's recorded position (Yea, Nay, Present, Not Voting, or not on the roll) on roll calls, newest first -- House members from the U.S. House Clerk's roll-call votes, senators (chamber "senate") from the Congressional Record, where the Senate's roll calls are printed. Filter by `bill` (e.g. "H R 1"), `question_contains` (matched against question, bill number and description) or a roll range. Quorum calls, Speaker elections and Senate rolls whose record could not be derived are left out unless include_non_recorded is true. Every response names its chamber, congress, session, the last roll it covers and data_as_of. An unknown member or a Congress/session not held returns a named reason, never an empty list.member_attendance_party_line — ANSWERS "how many votes did Rep. X miss", "how often does X vote with their party", "party unity score" -- attendance and party-line share for ONE member (House, or a senator with chamber "senate") over a session (or a roll range), computed from the U.S. House Clerk's roll-call votes or, for the Senate, the Congressional Record's printed roll calls. Nothing is returned as a bare percentage: attendance gives its denominator (recorded roll calls the member was on the roll for; quorum calls, Speaker elections and Senate rolls that could not be derived are excluded and counted; rolls before the member was seated or after they left are excluded and counted -- absence from the roll is NOT treated as Not Voting) and splits yea/nay, present and Not Voting. Party line gives two figures, each with its own denominator and exclusions: share of yea/nay votes cast with the member's party majority (a strict majority of that party's yea/nay voters; ties excluded and counted), and party unity (only the roll calls where a majority of Democrats opposed a majority of Republicans). If a figure cannot be computed from the rolls in range (member on none, no party-splitting votes, independent) it is null with a stated reason, never 0% or 100%. Independents (including the Senate's two caucusing independents) have no D-versus-R majority to compare against, so their party-line figure is null with that reason.roll_call_positions — ANSWERS "who voted against roll call 100", "how did Texas Republicans split on roll 250", "how many Democrats voted Yea" -- every member's position on ONE roll call (House: the U.S. House Clerk's roll-call votes; Senate: the Congressional Record) with Yea/Nay/Present/Not Voting tallies by party. Pass party (D/R/I), state or position (yea/nay/present/not_voting) to list matching members; with none of these only the tallies and the roll's question, result and bill are returned. A roll number that does not exist in that session returns a named reason.Code samples (curl / TypeScript / one-click client install), schemas, and the live playground are on the pack page:
https://pipeworx.io/packs/congress-member-votes/
Pipeworx is an open MCP gateway connecting AI agents to live data. pipeworx.io