member_attendance_party_line
Pack: congress-member-votes · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/member_attendance_party_line for the schema, then POST the same URL with its arguments for the data.
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 House member over a session (or a roll range), computed from the U.S. House Clerk’s roll-call votes. Nothing is returned as a bare percentage: attendance gives its denominator (recorded roll calls the member was on the roll for; quorum calls and Speaker elections 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%. House only; the Senate returns a named reason.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
from_roll | number | no | First roll number of the range (default 1). |
to_roll | number | no | Last roll number of the range (default: last roll covered). |
Example call
Arguments
{
"bioguide_id": "P000197",
"congress": 119,
"session": 2
}
curl
curl -X POST https://gateway.pipeworx.io/congress-member-votes/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"member_attendance_party_line","arguments":{"bioguide_id":"P000197","congress":119,"session":2}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('member_attendance_party_line', {
"bioguide_id": "P000197",
"congress": 119,
"session": 2
});
Response shape
| Field | Type | Description |
|---|---|---|
found | boolean | |
source | string | |
chamber | string | |
congress | number | |
session | number | |
data_as_of | string | |
rolls_covered | object | |
live_topup | object | |
member | object | |
range | object | |
definitions | object | |
rolls_in_range | number | |
excluded_rolls | object | |
attendance | object | |
party_line | object |
Full JSON Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"source": {
"type": "string"
},
"chamber": {
"type": "string"
},
"congress": {
"type": "number"
},
"session": {
"type": "number"
},
"data_as_of": {
"type": "string"
},
"rolls_covered": {
"type": "object",
"properties": {
"first": {
"type": "number"
},
"last": {
"type": "number"
},
"count": {
"type": "number"
}
},
"additionalProperties": true
},
"live_topup": {
"type": "object",
"properties": {
"rolls_added_beyond_stored_table": {
"type": "number"
},
"stored_table_through_roll": {
"type": "number"
}
},
"additionalProperties": true
},
"member": {
"type": "object",
"properties": {
"bioguide_id": {
"type": "string"
},
"name": {
"type": "string"
},
"party": {
"type": "string"
},
"state": {
"type": "string"
},
"note": {
"type": "string"
}
},
"additionalProperties": true
},
"range": {
"type": "object",
"properties": {
"from_roll": {
"type": "number"
},
"to_roll": {
"type": "number"
}
},
"additionalProperties": true
},
"definitions": {
"type": "object",
"properties": {
"attendance": {
"type": "string"
},
"with_party_majority": {
"type": "string"
},
"party_unity": {
"type": "string"
},
"party_basis": {
"type": "string"
}
},
"additionalProperties": true
},
"rolls_in_range": {
"type": "number"
},
"excluded_rolls": {
"type": "object",
"properties": {
"quorum_calls": {
"type": "number"
},
"election_rolls": {
"type": "number"
}
},
"additionalProperties": true
},
"attendance": {
"type": "object",
"properties": {
"denominator": {
"type": "number"
},
"voted_yea_or_nay": {
"type": "number"
},
"answered_present": {
"type": "number"
},
"not_voting": {
"type": "number"
},
"not_on_roll_excluded": {
"type": "number"
},
"attended_pct": {
"type": "number"
},
"missed_pct": {
"type": "number"
}
},
"additionalProperties": true
},
"party_line": {
"type": "object",
"properties": {
"party": {
"type": "string"
},
"with_party_majority": {
"type": "object",
"properties": {
"denominator": {
"type": "number"
},
"agreed": {
"type": "number"
},
"pct": {
"type": "number"
},
"not_in_denominator": {
"type": "object",
"properties": {
"not_voting_or_present": {
"type": "number"
},
"party_position_tied": {
"type": "number"
},
"not_on_roll": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"party_unity": {
"type": "object",
"properties": {
"denominator": {
"type": "number"
},
"agreed": {
"type": "number"
},
"pct": {
"type": "number"
},
"party_unity_rolls_in_range": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Connect
Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:
{
"mcpServers": {
"pipeworx": {
"url": "https://pipeworx.io/mcp"
}
}
}
Connect to just the congress-member-votes pack
{
"mcpServers": {
"congress-member-votes": {
"url": "https://gateway.pipeworx.io/congress-member-votes/mcp"
}
}
}
See Getting Started for client-specific install steps.