va-lis-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIS_API_KEY | Yes | Your LIS API key (a GUID). Required for all requests. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_sessionA | The General Assembly's current working session. During the interim this is the upcoming session, not the one that just ended; continued bills and new prefiles accumulate there. For retrospective work on a finished session, pass that session's code to the other tools instead of relying on this default. |
| list_sessionsA | Legislative sessions for a calendar year. Returns each session's code, e.g. 20261 = 2026 Regular Session and 20262 = 2026 Special Session I. The reference list reaches back to 1994. |
| list_billsA | List bills in a session, optionally filtered by a search term.
|
| get_billA | Full detail for one bill: title, status, dates, patrons, session lineage.
|
| get_bill_patronsA | Every patron of a bill with their member ids, in LIS display order.
|
| get_bill_summariesB | Plain-text summaries of a bill (as introduced, as passed, ...). The entry with |
| get_bill_textA | Full text of one bill version, HTML stripped to plain text.
|
| get_bill_historyA | Chronological action history for a bill, from prefiling to governor action. Passage dates live here (the bill detail's passage date fields are always
null in LIS): look for events with |
| get_bill_votesA | Every recorded vote on a bill, in both chambers, in chronological order. Floor, committee, and subcommittee votes all appear. |
| get_roll_callA | Who voted which way on a bill, with party and district, one entry per vote. Members are grouped under |
| get_member_votesA | Every vote one member cast in a session, or their votes on one bill. Floor, committee, and subcommittee votes all appear, in LIS order. A row
is one (vote, bill) pair: a block vote that disposed of 105 bills appears
105 times, each with |
| list_membersA | The session's member roster, searchable by name.
|
| get_memberA | One member's roster record: name, chamber, party, district, status, contact. Reads the session roster, which is the authoritative source (LIS's by-id endpoint answers nothing for some sitting members). Use get_member_committees for seats, get_member_bills for patronage, and get_member_votes for the voting record. |
| get_member_billsA | Every bill a member patrons in a session, in any role. The session bill list names only chief patrons, so this is the route to
a member's co-patronage. |
| get_member_committeesA | Every committee seat one member holds in a session, with the role. LIS has no member-first committee endpoint, so this reads every seat list in the member's chamber: 14 requests cold for a House member, 67 with subcommittees, all cached afterwards. |
| list_committeesA | The standing committees of one or both chambers, optionally with subcommittees. The list is not session scoped: it describes the committees that exist
now. Who sits on them is session scoped; see get_committee. Use a
committee's |
| get_committeeA | A committee's roster for a session: each member's role, party, and district.
|
| list_meetingsA | Meetings on the master schedule in a date range: committees, floor, caucuses. Dates are |
| list_docketsA | A Senate committee's dockets for a session: each meeting and the bills on it. Dockets are the Senate's committee agendas, newest first as LIS lists
them. The House keeps none in the API: read a House bill's committee from
get_bill_history and the committee's meetings from list_meetings.
|
| list_floor_calendarsA | A chamber's floor calendars for a session, one per sitting. A floor calendar is the day's order of business: the bills up for a
reading or a vote. Pass a |
| get_floor_calendarA | One floor calendar: the bills up for action, by section, with the votes taken.
|
| check_api_keyA | Validate the configured LIS API key. LIS heartbeat endpoints accept any key, so this is the only real check: it asks the PartnerAuthentication service whether the key is registered and active. |
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 22 tools
Most tools target distinct resources (bills, members, committees, meetings, calendars), but get_bill_votes and get_roll_call both cover votes, and get_bill_patrons vs get_bill's patrons field overlap. Descriptions are detailed enough to disambiguate, though the vote-related pair could still cause misselection.
All tools follow a consistent verb_noun pattern: get_* for single resources, list_* for collections, check_api_key as the lone exception but still a clear verb_noun. No mixed conventions or vague verbs.
22 tools is on the higher end but justified by the breadth of legislative data (bills, members, committees, meetings, calendars, votes). Each tool covers a distinct data need; the count feels slightly heavy but not bloated.
The surface covers the legislative domain thoroughly: sessions, bills with text/summaries/history/patrons/votes, members with their bills/votes/committees, committees with rosters/meetings/dockets, floor calendars, and API key validation. No obvious dead ends; the descriptions even document workarounds for LIS API limitations.