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

NameTypeRequiredDescription
from_rollnumbernoFirst roll number of the range (default 1).
to_rollnumbernoLast 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

FieldTypeDescription
foundboolean
sourcestring
chamberstring
congressnumber
sessionnumber
data_as_ofstring
rolls_coveredobject
live_topupobject
memberobject
rangeobject
definitionsobject
rolls_in_rangenumber
excluded_rollsobject
attendanceobject
party_lineobject
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.

Regenerated from source · build October 23, 2026