Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
OPENSTATES_API_KEY, OPENSTATES_DAILY_REQUEST_BUDGET, OPENSTATES_REQUEST_TIMEOUT_MS, OPENSTATES_TOTAL_REQUEST_BUDGET_MS, MCP_LOG_LEVELYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://openstates.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "your-value",
"OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
"OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http openstates https://openstates.caseyjhand.com/mcpclaude mcp add openstates --env OPENSTATES_API_KEY=your-value --env OPENSTATES_DAILY_REQUEST_BUDGET=your-value --env OPENSTATES_REQUEST_TIMEOUT_MS=your-value --env OPENSTATES_TOTAL_REQUEST_BUDGET_MS=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/openstates-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"openstates": {
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"openstates": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "your-value",
"OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
"OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"openstates": {
"type": "http",
"url": "https://openstates.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"openstates": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openstates-mcp-server"
],
"env": {
"OPENSTATES_API_KEY": "your-value",
"OPENSTATES_DAILY_REQUEST_BUDGET": "your-value",
"OPENSTATES_REQUEST_TIMEOUT_MS": "your-value",
"OPENSTATES_TOTAL_REQUEST_BUDGET_MS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://openstates.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
OPENSTATES_DAILY_REQUEST_BUDGET envOPENSTATES_REQUEST_TIMEOUT_MS envOPENSTATES_TOTAL_REQUEST_BUDGET_MS envMCP_LOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
openstates_search_billsSearch state legislative bills across all covered US jurisdictions. Supports full-text search, jurisdiction/session filtering, subject tags, sponsor lookups, and sort order. Either jurisdiction or q (full-text) is required, and pairing them is the reliable form — a q-only search
openstates_get_billFetch full detail for a specific state bill. Accepts either the three-part path (jurisdiction + session + bill_id) or a direct OCD bill ID (openstates_id from search results). Use include to request votes, actions, sponsorships, documents, and versions in one call rather than sea
openstates_search_peopleSearch state legislators and officials by name, jurisdiction, chamber, or district, or fetch specific people by OCD person ID. Party is reported on every result but cannot be filtered on — narrow by party after the call. Either jurisdiction or id is required — a search spanning a
openstates_get_legislators_by_locationFind every legislator representing a geographic coordinate — both tiers. Pass latitude and longitude to get the state senators and representatives for that location (and potentially governor/executive officials), plus the coordinate's two US Senators and its US Representative. ju
openstates_search_committeesList committees for a jurisdiction. jurisdiction is required — a request spanning all 56 jurisdictions exceeds the upstream timeout, so scope every call to a single state; use openstates_list_jurisdictions to pick one. Experimental — Open States is actively working to restore com
openstates_get_committeeFetch committee detail by OCD organization ID. Returns name, classification, and membership roster when include=memberships is requested. Experimental — not all states have committee data in Open States. Obtain the committee_id from openstates_search_committees.
openstates_search_eventsSearch hearings, floor sessions, and committee meetings. jurisdiction is required — the Open States events endpoint has no all-states search, so scope every call to a single state; use openstates_list_jurisdictions to pick one. Experimental — most states do not publish event data
openstates_get_eventFetch full event detail by OCD event ID. Returns agenda, participants, media links, and associated documents when requested via include. Experimental — event coverage is limited in Open States. Obtain the event_id from openstates_search_events.
openstates_list_jurisdictionsList all jurisdictions covered by Open States — all 50 states, DC, and 5 US territories (American Samoa, Guam, Northern Mariana Islands, Puerto Rico, and the US Virgin Islands): 56 in total, returned complete in a single default call. Returns coverage metadata: latest bill update
openstates_get_jurisdictionFetch full metadata for a specific jurisdiction including all legislative sessions, their identifiers, and coverage dates. Use when you need to know the exact session identifier for a state before filtering bill searches — session formats vary widely (e.g., "2025", "2025rs", "202
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 229 ms (HTTP 200)
No sign-in needed
Read 10 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: OPENSTATES_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.4.0) reached the registry 11 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@cyanheads/openstates-mcp-server Search bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories via MCP. STDIO or Streamable HTTP. 10 Tools • 1 Resource • 2 Prompts
Public Hosted Server: https://openstates.caseyjhand.com/mcp
US state legislatures from Open States: all 50 states, DC, and 5 US territories. Search bills, legislators, committees, and events, and find who represents any location.
| 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 |
| Resource | Description |
|---|---|
openstates://jurisdiction/{+jurisdiction_id} | Jurisdiction metadata including current sessions, coverage dates, and bill/people update timestamps |
All resource data is also reachable via tools. Use openstates_get_jurisdiction for programmatic jurisdiction lookups; the resource is useful for injecting jurisdiction context as stable reference material.
| Prompt | Description |
|---|---|
openstates_bill_research | Structured framework for analyzing a state bill: summary, sponsors, committee referrals, action timeline, vote record, and related legislation |
openstates_legislator_profile | Research framework for profiling a legislator: sponsored bills, committee assignments, voting record, and contact details |
| Skill | Description |
|---|---|
openstates-guide | Identifier chains and gates for agents calling the tools: session pinning, reading vote events, committee roster scans, hearing searches, and the request budget |
Plugin installs and the .mcpb bundle pick it up from skills/; MCP clients that support the Skills extension receive it from the server.
openstates_search_bills tooljurisdiction or q is required by the schema — a q-only search spans all 56 jurisdictions and exceeds the upstream timeout for a common term, so pairing them is the reliable formsession, chamber (upper/lower), classification, subject tags, sponsor, sponsor_classification, and action_since/updated_since/created_since ISO 8601 date filtersinclude inlines sponsorships, actions, votes, abstracts, versions, documents, and related bills — avoids follow-up openstates_get_bill callssort defaults to updated_desc; sort=latest_action_desc surfaces bills currently moving; pagination up to 20 per page (default 10)openstates_get_bill toolopenstates_id (preferred) or the three-part path jurisdiction + session + bill_id; a call missing both fails with missing_lookup_paramsopenstates_id is ocd-bill/ copied from openstates_search_bills (case and surrounding whitespace are normalized); a / / path is also accepted. Any other value fails locally with invalid_openstates_id, with no upstream callHB 1000, SB 42)include inlines sponsorships, actions, votes, versions, documents, abstracts, other titles/identifiers, and related billsnot_found when a well-formed ID or a three-part path resolves to nothingopenstates_search_people tooljurisdiction or id (OCD person IDs) is required — an unscoped search exceeds the upstream timeout even for a name-only queryid resolves any number of specific OCD person IDs in one call — the IDs that bill sponsorships and committee memberships hand back — and needs no jurisdiction alongside itorg_classification: upper/lower/executive/legislature (every legislator — both chambers, or the single body in Nebraska and DC; executive officials excluded); omitting it returns every officeholder including executivesname match, plus district; include adds offices, links, other_names, other_identifiers, sourcesopenstates_get_legislators_by_location toollatitude/longitude; does not geocode addressesjurisdiction.classification (state vs country) is the tier discriminator — current_role.org_classification is not, since it's upper/lower for a US Senator exactly as for a state senatorstateCount/federalCount enrichment fields report the tier splitinvalid_coordinate; a location with no coverage returns an empty-result noticeopenstates_search_committees tooljurisdiction is required — the schema rejects an all-states requestclassification (committee/subcommittee) and chamber (a chamber filter omits joint committees); parent scopes to one committee's subcommitteesinclude=memberships returns the full roster with member rolescoverageNote field always documents thisopenstates_get_committee toolcommittee_id (from openstates_search_committees)include=memberships returns the roster; include=links/sources add reference URLsnot_found when the ID doesn't existopenstates_search_events tooljurisdiction is required — the events endpoint has no all-states searchafter/before scope to an ISO 8601 date range; require_bills=true filters to events with a bill on the agendainclude=agenda,participants returns full meeting contextrequire_bills, after, before) names those filters in its noticeopenstates_get_event toolevent_id (from openstates_search_events)include adds agenda, participants, links, media, and documentsnot_found when the ID doesn't existopenstates_list_jurisdictions toolper_page ceiling of 52 no longer covers the full setclassification filter defaults to stateinclude=legislative_sessions returns every historical and current session identifier — required before filtering bill searches by session, since formats vary by state (e.g., 2025, 2025-2026, 2025rs, 2025s1)include=organizations/latest_runs add chamber/executive-body and scraper-run metadataopenstates_get_jurisdiction toolinclude=legislative_sessions returns all session identifiers with date rangesnot_found when the identifier doesn't resolveopenstates://jurisdiction/{+jurisdiction_id} resourcejurisdiction_id accepts the raw OCD ID (slashes intact) as openstates_list_jurisdictions returns it, a state name (multi-word allowed), or a two-letter abbreviation; percent-encoded forms are decoded once, and a malformed escape is a validation errorapplication/json: current legislative sessions, coverage dates, bill/people update timestampslegislative_sessions — use to prime session identifiers without a tool callnot_found when the identifier doesn't resolve; rate_limited when the shared key's request cap is reachedopenstates_bill_research promptjurisdiction, session, bill_id — all requiredopenstates_legislator_profile promptOnly the beginning is shown; read the rest in the repo