LegiScan MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LEGISCAN_API_KEY | Yes | Your LegiScan API key obtained from https://legiscan.com/legiscan |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| legiscan_get_legislator_votesA | Get how a legislator voted on specific bills. Use find_legislator first to get people_id from a name. Returns vote positions (Yea/Nay/NV/Absent) for each bill with roll call details. |
| legiscan_get_primary_authoredA | Get only bills where a legislator is the PRIMARY author, not co-sponsor. Use find_legislator first to get people_id from a name. Filters out co-sponsored bills automatically. |
| legiscan_find_legislatorA | Find a legislator's people_id by searching their name. Useful as a first step before other queries. Supports partial name matching. |
| legiscan_get_billA | Get detailed bill information including sponsors, full history, votes, texts, amendments, and supplements. This is the primary tool for bill research. |
| legiscan_get_roll_callA | Get roll call vote details including individual legislator votes. Get roll_call_id by calling get_bill first. |
| legiscan_find_bill_by_numberA | Find a bill by its number within a state's current session or specific session. Handles format variations (AB 858, AB858, AB-858). Returns bill summary if found, null if not. |
| legiscan_get_personA | Get legislator information including party, role, district, and third-party IDs (VoteSmart, OpenSecrets, Ballotpedia, FollowTheMoney). |
| legiscan_get_session_peopleA | Get all legislators active in a legislative session. Returns list of people with their roles, parties, and districts. |
| legiscan_searchA | Full-text search across bill texts. Returns 50 results per page with relevance scores, bill summaries, and URLs. Use for interactive searches. |
| legiscan_get_session_listA | Get list of available legislative sessions. Returns sessions with session_id, years, and state info. Use session_id for subsequent bill lookups. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct resource or action (bills, legislators, sessions, votes, search) with clear boundaries. Even related tools like get_legislator_votes and get_roll_call serve different purposes (individual legislator vs. specific roll call).
All tool names follow a consistent 'legiscan_verb_noun' pattern using lowercase with underscores. Verbs are limited to 'find', 'get', and 'search', making the set predictable.
10 tools is well-scoped for a legislative tracking server. Each tool addresses a core need without unnecessary duplication or omission.
The tool surface covers the primary lifecycle for legislative data: discovering sessions, searching bills, retrieving details, and accessing legislator info and votes. No obvious gaps for a read-only MCP server.