Search bills, legislators, committees, and events across all 50 US states, DC, and Puerto Rico.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories via MCP. STDIO or Streamable HTTP.
10 tools covering the full Open States v3 API surface β bills, legislators, committees, events, and jurisdictions:
| Tool | Description |
|---|---|
openstates_search_bills | Search state legislative bills across all covered US jurisdictions with full-text search, jurisdiction/session filtering, subject tags, and sponsor lookups |
openstates_get_bill | Fetch full detail for a specific bill by OCD ID or three-part path (jurisdiction + session + bill_id) |
openstates_search_people | Search state legislators and officials within a jurisdiction by name, chamber, or district, or fetch specific people by OCD person ID |
openstates_get_legislators_by_location | Find every legislator representing a geographic coordinate (latitude/longitude) β state legislators and the federal delegation |
openstates_search_committees | List committees for a jurisdiction (experimental β not all states have coverage) |
openstates_get_committee | Fetch committee detail by OCD organization ID, with optional membership roster |
openstates_search_events | Search hearings, floor sessions, and committee meetings (experimental) |
openstates_get_event | Fetch full event detail including agenda, participants, and media links |
openstates_list_jurisdictions | List all 56 jurisdictions (50 states, DC, and 5 US territories) covered by Open States with session identifiers and coverage metadata |
openstates_get_jurisdiction | Fetch full metadata for a specific jurisdiction including all legislative sessions and their identifiers |
openstates_search_billsSearch state legislative bills with rich filtering and inline related data.
q)jurisdiction or q is required by the input schema β a call carrying neither fails schema validation, and pairing them is the reliable form, since a q-only search spans all 56 jurisdictions and times out upstream for a common termsort=latest_action_desc for bills currently moving through the legislatureinclude parameter requests sponsorships, actions, votes, abstracts, versions, and related bills inline β eliminates follow-up openstates_get_bill calls for most research workflowsopenstates_url (citable page) and updated_at (the field the default sort=updated_desc orders by)action_since, updated_since, and created_since date filters for change-trackingappliedFilters echoes every filter the query was issued with and the notice names each one that narrowed it, so a zero-result answer identifies its own cause. A jurisdiction that matches no covered jurisdiction is called out by name β Open States answers an unrecognized one with zero bills rather than an erroropenstates_get_billFetch complete bill detail by OCD ID or path lookup.
openstates_id (OCD bill ID from search results, preferred) or the three-part path jurisdiction + session + bill_idHB 1000, SB 42)include=votes returns full vote tallies and per-legislator positionsinclude=versions,documents provides links to bill text and fiscal notesopenstates_search_peopleSearch legislators and officials within one jurisdiction by name, chamber, or district, or fetch specific people by OCD person ID.
jurisdiction or id is required by the input schema β a search spanning all 56 jurisdictions exceeds the upstream timeout, name-only searches included, so a call carrying neither fails schema validation. Use openstates_list_jurisdictions to pick a jurisdiction, or openstates_get_legislators_by_location when you have coordinates but no stateid takes OCD person IDs and returns exactly those people, so it needs no jurisdiction alongside it. It resolves the IDs that search results, openstates_get_bill sponsorships, and openstates_get_committee memberships hand back β several in one call, since upstream /people accepts id repeatedly and offers no per-person detail routeorg_classification targets a role type: upper (Senate), lower (House/Assembly), executive (governors and executive officials), legislature (every legislator β both chambers merged into one paginated set, all upper members then all lower)org_classification is not equivalent to legislature β it returns every officeholder, executive officials includedinclude=offices returns phone, fax, and mailing addressinclude=links returns website and social media linksimage) when published, and the OCD division their district maps to (current_role.division_id)openstates_get_legislators_by_locationFind every legislator representing a geographic coordinate, across both tiers of government.
jurisdiction.classification separates the tiers: "state" is a state legislature, "country" is the US Congress. current_role.org_classification does not β it is upper/lower for a US Senator exactly as for a state senatorstateCount and federalCount report the split, and the rendered text labels each legislator's tieropenstates_list_jurisdictions and openstates_get_jurisdictionDiscover and look up jurisdiction coverage metadata.
openstates_list_jurisdictions returns all 56 jurisdictions (50 states, DC, and 5 US territories) in a single default call β the pages are merged server-side, since the upstream per_page ceiling of 52 no longer covers the full setinclude=legislative_sessions returns all historical and current session identifiers β required before filtering bill searches by session, since formats vary widely by state (e.g., 2025, 2025-2026, 2025rs, 2025s1)openstates_get_jurisdiction fetches one jurisdiction by OCD-ID, state name, or two-letter abbreviationNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/openstates-mcp-server)<a href="https://allmcps.com/mcp/openstates-mcp-server"><img src="https://allmcps.com/api/badge/openstates-mcp-server?style=directory" alt="Openstates MCP Server on AllMCPs" /></a>