Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,549Letters: 14Defects: 1,324counted 1 min ago
teppi

Server definition

Hash
sha256:20c7de2e5e81ea478720f5e50c7404f32e0704d3db01a72938444b2bd0f66ff8
What it is
What a remote MCP server returned when asked what it offers: 10 tools

The blob, as servednamed by its sha256

{ "instructions": "Open States MCP server — US state legislative data for all 50 states, DC, and 5 US territories.\n- Use openstates_list_jurisdictions or openstates_get_jurisdiction (include=legislative_sessions) to discover valid session identifiers before filtering bill searches.\n- Either jurisdiction or q is required for openstates_search_bills, and either jurisdiction or id (OCD person IDs) for openstates_search_people.\n- jurisdiction is required for openstates_search_committees and openstates_search_events — the schema rejects a call that omits it.\n- openstates_search_people with id resolves the person IDs carried by openstates_get_bill sponsorships and openstates_get_committee memberships, several at once.\n- openstates_get_legislators_by_location returns a coordinate's US Senators and Representative alongside its state legislators; jurisdiction.classification (\"state\" vs \"country\") separates the two tiers.\n- Committee and event tools are experimental — not all states have coverage.\n- Use include parameter on search and get tools to request related data inline and avoid N+1 follow-up calls.", "tools": [ { "description": "Fetch 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 searching again. include=votes returns the full vote tally and per-legislator positions. include=actions returns the complete action history. Prefer openstates_id when available to avoid session identifier lookup.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "bill_id": { "description": "Bill identifier as used by the legislature (e.g., \"HB 1000\", \"SB 42\"). Required with jurisdiction + session.", "type": "string" }, "include": { "description": "Related data to inline. \"sponsorships\", \"actions\", \"votes\" are most commonly needed. \"versions\" and \"documents\" provide links to bill text and fiscal notes.", "items": { "enum": [ "sponsorships", "abstracts", "other_titles", "other_identifiers", "actions", "sources", "documents", "versions", "votes", "related_bills" ], "type": "string" }, "type": "array" }, "jurisdiction": { "description": "State name, abbreviation, or OCD-ID. Required when using path-based lookup with session + bill_id.", "type": "string" }, "openstates_id": { "description": "OCD bill ID from openstates_search_bills results (e.g., \"ocd-bill/...\"). Preferred over the three-part path when available.", "type": "string" }, "session": { "description": "Session identifier. Required with jurisdiction + bill_id.", "type": "string" } }, "type": "object" }, "name": "openstates_get_bill", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "identifier", "title", "session", "jurisdiction", "from_organization", "classification", "subject", "first_action_date", "latest_action_date", "latest_action_description", "latest_passage_date" ] }, { "required": [ "error" ] } ], "properties": { "abstracts": { "description": "Bill abstracts when include=abstracts is requested.", "items": { "additionalProperties": false, "description": "Abstract record.", "properties": { "abstract": { "description": "Plain-language summary.", "type": "string" }, "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "abstract", "note" ], "type": "object" }, "type": "array" }, "actions": { "description": "Full action history when include=actions is requested.", "items": { "additionalProperties": false, "description": "Action record.", "properties": { "classification": { "description": "Action classifications.", "items": { "type": "string" }, "type": "array" }, "date": { "description": "Action date. Empty string when Open States recorded no date.", "type": "string" }, "description": { "description": "Action description.", "type": "string" }, "order": { "description": "Sequence order.", "type": "number" }, "organization": { "additionalProperties": false, "description": "Chamber or committee.", "properties": { "classification": { "description": "Organization classification.", "type": "string" }, "name": { "description": "Organization name.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" } }, "required": [ "description", "date", "classification", "order", "organization" ], "type": "object" }, "type": "array" }, "classification": { "description": "Bill classifications.", "items": { "type": "string" }, "type": "array" }, "documents": { "description": "Bill documents (fiscal notes, etc.) when include=documents is requested.", "items": { "additionalProperties": false, "description": "Bill document record.", "properties": { "date": { "description": "Document date. Empty string when Open States recorded no date, which is the usual case for bill documents.", "type": "string" }, "id": { "description": "Document ID.", "type": "string" }, "links": { "description": "Document links.", "items": { "additionalProperties": false, "description": "Document link.", "properties": { "media_type": { "description": "MIME type.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "media_type" ], "type": "object" }, "type": "array" }, "note": { "description": "Document note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "id", "note", "date", "links" ], "type": "object" }, "type": "array" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `missing_lookup_params`: Neither openstates_id nor the complete jurisdiction+session+bill_id triple was provided. `not_found`: Bill does not exist at the given path or OCD ID. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.", "examples": [ "missing_lookup_params", "not_found", "upstream_timeout" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "first_action_date": { "description": "Date of first recorded action.", "type": [ "string", "null" ] }, "from_organization": { "additionalProperties": false, "description": "Originating chamber.", "properties": { "classification": { "description": "Chamber classification.", "type": "string" }, "name": { "description": "Chamber name.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" }, "id": { "description": "OCD bill ID.", "type": "string" }, "identifier": { "description": "Bill identifier as used by the legislature.", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Originating jurisdiction.", "properties": { "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "latest_action_date": { "description": "Date of most recent action.", "type": [ "string", "null" ] }, "latest_action_description": { "description": "Most recent action description.", "type": [ "string", "null" ] }, "latest_passage_date": { "description": "Date bill passed (when applicable).", "type": [ "string", "null" ] }, "openstates_url": { "description": "Open States URL for this bill.", "type": "string" }, "other_identifiers": { "description": "Alternate identifiers when include=other_identifiers is requested.", "items": { "additionalProperties": false, "description": "Alternate identifier record.", "properties": { "identifier": { "description": "Alternate bill identifier.", "type": "string" }, "scheme": { "description": "Identifier scheme (the issuing system). Absent for bills — Open States omits it on every bill record observed.", "type": "string" } }, "required": [ "identifier" ], "type": "object" }, "type": "array" }, "other_titles": { "description": "Alternate titles when include=other_titles is requested.", "items": { "additionalProperties": false, "description": "Alternate title record.", "properties": { "note": { "description": "Note describing the alternate title. Empty string when Open States recorded no note.", "type": "string" }, "title": { "description": "Alternate bill title.", "type": "string" } }, "required": [ "title", "note" ], "type": "object" }, "type": "array" }, "related_bills": { "description": "Related bills when include=related_bills is requested.", "items": { "additionalProperties": false, "description": "Related bill record.", "properties": { "identifier": { "description": "Related bill identifier.", "type": "string" }, "legislative_session": { "description": "Session of the related bill.", "type": "string" }, "relation_type": { "description": "Relationship type (e.g., \"companion\", \"identical\").", "type": "string" } }, "required": [ "identifier", "legislative_session", "relation_type" ], "type": "object" }, "type": "array" }, "session": { "description": "Legislative session identifier.", "type": "string" }, "sources": { "description": "Source documents when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "sponsorships": { "description": "Sponsorships when include=sponsorships is requested.", "items": { "additionalProperties": false, "description": "Sponsorship record.", "properties": { "classification": { "description": "Sponsorship classification.", "type": "string" }, "entity_type": { "description": "Entity type.", "type": "string" }, "name": { "description": "Sponsor name.", "type": "string" }, "person": { "additionalProperties": false, "description": "Linked person record when available.", "properties": { "id": { "description": "OCD person ID. Pass it to openstates_search_people as id for the full legislator record, or back to openstates_search_bills as the sponsor filter for their other bills.", "type": "string" }, "name": { "description": "Person name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "primary": { "description": "Whether this is the primary sponsor.", "type": "boolean" } }, "required": [ "name", "entity_type", "primary", "classification" ], "type": "object" }, "type": "array" }, "subject": { "description": "Subject tags.", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Bill title.", "type": "string" }, "updated_at": { "description": "Timestamp Open States last updated this record — the field openstates_search_bills sorts by under the default sort=updated_desc.", "type": "string" }, "versions": { "description": "Bill text versions when include=versions is requested.", "items": { "additionalProperties": false, "description": "Bill text version record.", "properties": { "date": { "description": "Version date. Empty string when Open States recorded no date, which is the usual case for bill versions.", "type": "string" }, "id": { "description": "Version ID.", "type": "string" }, "links": { "description": "Document links.", "items": { "additionalProperties": false, "description": "Document link.", "properties": { "media_type": { "description": "MIME type.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "media_type" ], "type": "object" }, "type": "array" }, "note": { "description": "Version note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "id", "note", "date", "links" ], "type": "object" }, "type": "array" }, "votes": { "description": "Vote events when include=votes is requested.", "items": { "additionalProperties": false, "description": "Vote event record.", "properties": { "counts": { "description": "Vote tallies by option.", "items": { "additionalProperties": false, "description": "Vote tally entry.", "properties": { "option": { "description": "Vote option (e.g., \"yes\", \"no\", \"absent\").", "type": "string" }, "value": { "description": "Count of votes for this option.", "type": "number" } }, "required": [ "option", "value" ], "type": "object" }, "type": "array" }, "id": { "description": "Vote event ID.", "type": "string" }, "identifier": { "description": "Vote identifier.", "type": "string" }, "motion_text": { "description": "Motion text.", "type": "string" }, "result": { "description": "Vote result: \"pass\" or \"fail\".", "type": "string" }, "start_date": { "description": "Vote date. Empty string when Open States recorded no date.", "type": "string" }, "votes": { "description": "Per-legislator vote positions.", "items": { "additionalProperties": false, "description": "Individual legislator vote.", "properties": { "option": { "description": "How this legislator voted.", "type": "string" }, "voter": { "additionalProperties": false, "description": "Linked person record when available.", "properties": { "id": { "description": "OCD person ID.", "type": "string" }, "name": { "description": "Person name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "voter_name": { "description": "Voter name.", "type": "string" } }, "required": [ "option", "voter_name" ], "type": "object" }, "type": "array" } }, "required": [ "id", "motion_text", "start_date", "result", "identifier", "counts", "votes" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "committee_id": { "description": "OCD organization ID (from openstates_search_committees results).", "minLength": 1, "type": "string" }, "include": { "description": "Related data to inline. \"memberships\" includes the full roster with member roles. \"links\" includes the committee homepage and reference links, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "memberships", "links", "sources" ], "type": "string" }, "type": "array" } }, "required": [ "committee_id" ], "type": "object" }, "name": "openstates_get_committee", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "classification", "parent_id" ] }, { "required": [ "error" ] } ], "properties": { "classification": { "description": "Committee classification: \"committee\" or \"subcommittee\".", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: Committee ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.", "examples": [ "not_found", "upstream_timeout" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "description": "OCD organization ID.", "type": "string" }, "links": { "description": "Committee homepage and reference links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description (e.g., \"homepage\"). Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "memberships": { "description": "Membership roster when include=memberships is requested.", "items": { "additionalProperties": false, "description": "Committee membership record.", "properties": { "person_id": { "description": "OCD person ID of the member — pass it to openstates_search_people as id for the full record. Empty string when the membership carries no linked person.", "type": "string" }, "person_name": { "description": "Member name. Empty string when Open States recorded none.", "type": "string" }, "role": { "description": "Member role (e.g., \"chair\", \"member\"). Empty string when Open States recorded none.", "type": "string" } }, "required": [ "person_id", "person_name", "role" ], "type": "object" }, "type": "array" }, "name": { "description": "Committee name.", "type": "string" }, "parent_id": { "description": "OCD ID of parent committee, or null for top-level committees.", "type": [ "string", "null" ] }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Fetch 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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "event_id": { "description": "OCD event ID (from openstates_search_events results).", "minLength": 1, "type": "string" }, "include": { "description": "Related data to inline. \"agenda\" and \"participants\" are most useful; \"links\", \"media\", and \"documents\" add related URLs, recordings, and files, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "links", "sources", "media", "documents", "participants", "agenda" ], "type": "string" }, "type": "array" } }, "required": [ "event_id" ], "type": "object" }, "name": "openstates_get_event", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "description", "classification", "start_date", "status", "jurisdiction" ] }, { "required": [ "error" ] } ], "properties": { "agenda": { "description": "Agenda items when include=agenda is requested.", "items": { "additionalProperties": false, "description": "Agenda item record.", "properties": { "classification": { "description": "Agenda item classifications.", "items": { "type": "string" }, "type": "array" }, "description": { "description": "Agenda item description.", "type": "string" }, "related_entities": { "description": "Bills, people, or organizations referenced.", "items": { "additionalProperties": false, "description": "Related entity record.", "properties": { "entity_type": { "description": "Entity type (e.g., \"bill\", \"person\", \"organization\").", "type": "string" }, "name": { "description": "Related entity name.", "type": "string" } }, "required": [ "name", "entity_type" ], "type": "object" }, "type": "array" }, "subjects": { "description": "Subject tags.", "items": { "type": "string" }, "type": "array" } }, "required": [ "description", "classification", "subjects", "related_entities" ], "type": "object" }, "type": "array" }, "classification": { "description": "Event classification.", "type": "string" }, "description": { "description": "Event description.", "type": "string" }, "documents": { "description": "Document links when include=documents is requested.", "items": { "additionalProperties": false, "description": "Document link record.", "properties": { "note": { "description": "Document description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "end_date": { "description": "Event end datetime. Absent when not recorded.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: Event ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.", "examples": [ "not_found", "upstream_timeout" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "description": "OCD event ID.", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Hosting jurisdiction.", "properties": { "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "links": { "description": "Event links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "location": { "additionalProperties": false, "description": "Event location when available.", "properties": { "name": { "description": "Location name.", "type": "string" }, "url": { "description": "Location URL when available.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "media": { "description": "Media links when include=media is requested.", "items": { "additionalProperties": false, "description": "Media link record.", "properties": { "note": { "description": "Media description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Media URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "name": { "description": "Event name.", "type": "string" }, "participants": { "description": "Participants when include=participants is requested.", "items": { "additionalProperties": false, "description": "Participant record.", "properties": { "entity_type": { "description": "Entity type.", "type": "string" }, "name": { "description": "Participant name.", "type": "string" }, "role": { "description": "Participant role. Absent when upstream omits it.", "type": "string" } }, "required": [ "name", "entity_type" ], "type": "object" }, "type": "array" }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "start_date": { "description": "Event start datetime.", "type": "string" }, "status": { "description": "Event status.", "type": "string" } }, "type": "object" } }, { "description": "Fetch 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\", \"2025s1\"). Jurisdiction IDs follow OCD format: ocd-jurisdiction/country:us/state:{abbr}/government (e.g., ocd-jurisdiction/country:us/state:wa/government). State names (e.g., \"Washington\") and two-letter abbreviations (e.g., \"wa\") are also accepted.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "include": { "description": "Related data to inline. \"legislative_sessions\" returns all historical and current sessions with identifiers and date ranges. \"organizations\" lists the jurisdiction's legislative chambers and executive bodies. \"latest_runs\" shows last scraper run metadata.", "items": { "enum": [ "organizations", "legislative_sessions", "latest_runs" ], "type": "string" }, "type": "array" }, "jurisdiction_id": { "description": "OCD jurisdiction ID, state name (e.g., \"Washington\"), or two-letter abbreviation (e.g., \"wa\").", "minLength": 1, "type": "string" } }, "required": [ "jurisdiction_id" ], "type": "object" }, "name": "openstates_get_jurisdiction", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "id", "name", "classification", "url", "latest_bill_update", "latest_people_update" ] }, { "required": [ "error" ] } ], "properties": { "classification": { "description": "Jurisdiction type.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `not_found`: Jurisdiction ID does not exist in Open States. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.", "examples": [ "not_found", "upstream_timeout" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "latest_bill_update": { "description": "ISO 8601 timestamp of most recent bill data update.", "type": "string" }, "latest_people_update": { "description": "ISO 8601 timestamp of most recent people data update.", "type": "string" }, "latest_runs": { "description": "Recent scraper runs when include=latest_runs is requested.", "items": { "additionalProperties": false, "description": "Scraper run record.", "properties": { "end_time": { "description": "ISO 8601 timestamp when the run finished. Absent when unrecorded.", "type": "string" }, "start_time": { "description": "ISO 8601 timestamp when the scraper run started.", "type": "string" }, "success": { "description": "Whether the run succeeded. Absent when not recorded.", "type": "boolean" } }, "required": [ "start_time" ], "type": "object" }, "type": "array" }, "legislative_sessions": { "description": "All legislative sessions when include=legislative_sessions is requested.", "items": { "additionalProperties": false, "description": "Legislative session record.", "properties": { "classification": { "description": "Session classification: \"primary\", \"special\", etc. Empty string when Open States recorded none, which covers 28% of sessions — 13 jurisdictions carry no classification on any session at all.", "type": "string" }, "end_date": { "description": "Session end date. Empty string when Open States recorded no value; an absent endpoint means unknown, not ongoing.", "type": "string" }, "identifier": { "description": "Session identifier — use as session= in bill searches.", "type": "string" }, "name": { "description": "Human-readable session name.", "type": "string" }, "start_date": { "description": "Session start date. Empty string when Open States recorded no value; an absent endpoint means unknown, not ongoing.", "type": "string" } }, "required": [ "identifier", "name", "classification", "start_date", "end_date" ], "type": "object" }, "type": "array" }, "name": { "description": "Jurisdiction name.", "type": "string" }, "organizations": { "description": "Legislative chambers and executive bodies when include=organizations is requested.", "items": { "additionalProperties": false, "description": "Organization record.", "properties": { "classification": { "description": "Organization type (e.g., \"upper\", \"lower\", \"legislature\").", "type": "string" }, "id": { "description": "OCD organization ID.", "type": "string" }, "name": { "description": "Organization name (e.g., \"Washington State Senate\").", "type": "string" } }, "type": "object" }, "type": "array" }, "url": { "description": "Official legislature URL.", "type": "string" } }, "type": "object" } }, { "description": "Find 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. 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 senator. Useful for constituent-to-representative matching, address-based policy research, and electoral boundary analysis. This server does not geocode addresses — the caller must provide decimal-degree coordinates. Use include=offices to get contact information alongside the legislator list.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "include": { "description": "Related data to inline. \"offices\" includes phone, fax, and address. \"links\" includes website and social links. \"other_names\" includes alternate/former names, \"other_identifiers\" cross-system IDs, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "other_names", "other_identifiers", "links", "sources", "offices" ], "type": "string" }, "type": "array" }, "latitude": { "description": "Latitude in decimal degrees (e.g., 47.6062 for Seattle, WA).", "type": "number" }, "longitude": { "description": "Longitude in decimal degrees (e.g., -122.3321 for Seattle, WA).", "type": "number" } }, "required": [ "latitude", "longitude" ], "type": "object" }, "name": "openstates_get_legislators_by_location", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "legislators", "count", "stateCount", "federalCount" ] }, { "required": [ "error" ] } ], "properties": { "count": { "description": "Number of legislators returned for this coordinate.", "type": "number" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `invalid_coordinate`: Latitude or longitude is outside valid range. `upstream_timeout`: Open States did not answer within the per-request timeout. Other values are possible when a failure originates below the handler.", "examples": [ "invalid_coordinate", "upstream_timeout" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "federalCount": { "description": "Results serving the US Congress (jurisdiction.classification = \"country\") — the coordinate's two US Senators and its US Representative.", "type": "number" }, "legislators": { "description": "Legislators representing the given coordinate.", "items": { "additionalProperties": false, "description": "Legislator record.", "properties": { "current_role": { "anyOf": [ { "additionalProperties": false, "properties": { "district": { "description": "District label or null.", "type": [ "string", "null" ] }, "division_id": { "description": "OCD division the district maps to (e.g., \"ocd-division/country:us/state:wa/sldu:37\"). Null when undistricted, absent when upstream omits it.", "type": [ "string", "null" ] }, "org_classification": { "description": "Chamber classification.", "type": "string" }, "title": { "description": "Role title.", "type": "string" } }, "required": [ "title", "org_classification", "district" ], "type": "object" }, { "type": "null" } ], "description": "Current role or null." }, "email": { "description": "Email address. Empty string when not available.", "type": "string" }, "family_name": { "description": "Family (last) name. Empty string when Open States recorded none.", "type": "string" }, "given_name": { "description": "Given (first) name. Empty string when Open States recorded none.", "type": "string" }, "id": { "description": "OCD person ID.", "type": "string" }, "image": { "description": "Official headshot URL. Absent when no photo is published.", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Home jurisdiction.", "properties": { "classification": { "description": "Government level this legislator serves: \"state\" for a state legislature, \"country\" for the US Congress. The field that separates the two tiers in this result set.", "type": "string" }, "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "links": { "description": "Website and social links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description. Empty string when Open States recorded no description — common on person links.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "name": { "description": "Full name.", "type": "string" }, "offices": { "description": "Contact offices when include=offices is requested.", "items": { "additionalProperties": false, "description": "Contact office record.", "properties": { "address": { "description": "Mailing address when available.", "type": "string" }, "classification": { "description": "Office type.", "type": "string" }, "fax": { "description": "Fax number when available.", "type": "string" }, "name": { "description": "Office name.", "type": "string" }, "voice": { "description": "Phone number when available.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" }, "type": "array" }, "openstates_url": { "description": "Open States profile URL. Empty string when Open States recorded none.", "type": "string" }, "other_identifiers": { "description": "Cross-system identifiers when include=other_identifiers is requested.", "items": { "additionalProperties": false, "description": "Alternate identifier record.", "properties": { "identifier": { "description": "Alternate identifier.", "type": "string" }, "scheme": { "description": "Identifier scheme (the issuing system).", "type": "string" } }, "required": [ "identifier", "scheme" ], "type": "object" }, "type": "array" }, "other_names": { "description": "Alternate/former names when include=other_names is requested.", "items": { "additionalProperties": false, "description": "Alternate name record.", "properties": { "name": { "description": "Alternate or former name.", "type": "string" }, "note": { "description": "Note describing the alternate name. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "name", "note" ], "type": "object" }, "type": "array" }, "party": { "description": "Primary party label. Empty string when unknown.", "type": "string" }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" } }, "required": [ "id", "name", "party", "current_role", "jurisdiction", "given_name", "family_name", "email", "openstates_url" ], "type": "object" }, "type": "array" }, "notice": { "description": "Present when no legislators were found — explains why (e.g., location outside US boundaries or unsupported territory).", "type": "string" }, "stateCount": { "description": "Results serving a state legislature (jurisdiction.classification = \"state\").", "type": "number" } }, "type": "object" } }, { "description": "List 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 time, latest people update time, and optionally all legislative sessions with their identifiers. Use this when you need to discover valid session identifiers for a state before calling openstates_search_bills with a session filter. The legislative_sessions include option returns all historical and current sessions — always check valid session identifiers here before using them in bill searches, since formats vary widely by state (e.g., \"2025\", \"2025-2026\", \"2025rs\", \"2025s1\").", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "classification": { "default": "state", "description": "Filter by jurisdiction type. Use \"state\" (default) for all 50 states, DC, and the 5 US territories.", "enum": [ "state", "municipality", "country" ], "type": "string" }, "include": { "description": "Related data to inline. \"legislative_sessions\" returns all session identifiers and date ranges — required when you need to discover valid session values for bill searches. \"organizations\" lists the jurisdiction's legislative chambers and executive bodies, and \"latest_runs\" the recent scraper run history.", "items": { "enum": [ "organizations", "legislative_sessions", "latest_runs" ], "type": "string" }, "type": "array" }, "page": { "default": 1, "description": "Page number (1-indexed).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "default": 52, "description": "Results per page (upstream maximum 52). The default call returns the complete state inventory (56) in one response by fetching and merging the pages server-side; set a smaller value only to page manually.", "maximum": 52, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "openstates_list_jurisdictions", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "pagination", "totalCount", "page", "maxPage" ] }, { "required": [ "error" ] } ], "properties": { "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `upstream_timeout`: Open States did not answer within the per-request timeout. `invalid_page`: Open States rejected the request as not found — page is past the last page for this classification. Other values are possible when a failure originates below the handler.", "examples": [ "upstream_timeout", "invalid_page" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "maxPage": { "description": "Total pages available.", "type": "number" }, "page": { "description": "Current page returned.", "type": "number" }, "pagination": { "additionalProperties": false, "description": "Pagination metadata.", "properties": { "max_page": { "description": "Total number of pages.", "type": "number" }, "page": { "description": "Current page number.", "type": "number" }, "per_page": { "description": "Results per page.", "type": "number" }, "total_items": { "description": "Total matching jurisdictions.", "type": "number" } }, "required": [ "page", "per_page", "max_page", "total_items" ], "type": "object" }, "results": { "description": "Jurisdictions matching the filter.", "items": { "additionalProperties": false, "description": "Jurisdiction record.", "properties": { "classification": { "description": "Jurisdiction type: \"state\", \"municipality\", etc.", "type": "string" }, "id": { "description": "OCD jurisdiction ID — use as jurisdiction filter in other tools.", "type": "string" }, "latest_bill_update": { "description": "ISO 8601 timestamp of most recent bill data update.", "type": "string" }, "latest_people_update": { "description": "ISO 8601 timestamp of most recent people data update.", "type": "string" }, "latest_runs": { "description": "Recent scraper runs when include=latest_runs is requested.", "items": { "additionalProperties": false, "description": "Scraper run record.", "properties": { "end_time": { "description": "ISO 8601 timestamp when the run finished. Absent when unrecorded.", "type": "string" }, "start_time": { "description": "ISO 8601 timestamp when the scraper run started.", "type": "string" }, "success": { "description": "Whether the run succeeded. Absent when not recorded.", "type": "boolean" } }, "required": [ "start_time" ], "type": "object" }, "type": "array" }, "legislative_sessions": { "description": "Legislative sessions when include=legislative_sessions is requested.", "items": { "additionalProperties": false, "description": "Legislative session record.", "properties": { "classification": { "description": "Session type: \"primary\", \"special\", etc. Empty string when Open States recorded none, which covers 28% of sessions — 13 jurisdictions carry no classification on any session at all.", "type": "string" }, "end_date": { "description": "Session end date. Empty string when Open States recorded no value; an absent endpoint means unknown, not ongoing.", "type": "string" }, "identifier": { "description": "Session identifier — use as session= in bill searches.", "type": "string" }, "name": { "description": "Human-readable session name.", "type": "string" }, "start_date": { "description": "Session start date. Empty string when Open States recorded no value; an absent endpoint means unknown, not ongoing.", "type": "string" } }, "required": [ "identifier", "name", "classification", "start_date", "end_date" ], "type": "object" }, "type": "array" }, "name": { "description": "Jurisdiction name (e.g., \"Washington\").", "type": "string" }, "organizations": { "description": "Legislative chambers and executive bodies when include=organizations is requested.", "items": { "additionalProperties": false, "description": "Organization record.", "properties": { "classification": { "description": "Organization type (e.g., \"upper\", \"lower\", \"legislature\").", "type": "string" }, "id": { "description": "OCD organization ID.", "type": "string" }, "name": { "description": "Organization name (e.g., \"Washington State Senate\").", "type": "string" } }, "type": "object" }, "type": "array" }, "url": { "description": "Official legislature URL.", "type": "string" } }, "required": [ "id", "name", "classification", "url", "latest_bill_update", "latest_people_update" ], "type": "object" }, "type": "array" }, "totalCount": { "description": "Total jurisdictions matching the filter across all pages.", "type": "number" } }, "type": "object" } }, { "description": "Search 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 spans all 56 jurisdictions and exceeds the upstream timeout for a common term, though a distinctive one still returns quickly. include=sponsorships,actions returns sponsor and action history inline. sort=latest_action_desc surfaces bills currently moving. openstates_get_jurisdiction with include=legislative_sessions returns valid session identifiers for session filtering.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "action_since": { "description": "ISO 8601 date — only return bills with an action after this date (e.g., \"2025-01-01\").", "pattern": "^\\d{4}-\\d{2}-\\d{2}(T[\\d:.Z+-]+)?$", "type": "string" }, "chamber": { "description": "Filter by originating chamber. \"upper\" = Senate, \"lower\" = House/Assembly.", "enum": [ "upper", "lower" ], "type": "string" }, "classification": { "description": "Bill classification: \"bill\", \"resolution\", \"constitutional amendment\", etc.", "type": "string" }, "created_since": { "description": "ISO 8601 date — only return bills first entered in Open States after this date (e.g., \"2025-01-01\"). Use to find newly-introduced bills, as opposed to recently-updated or recently-acted-on.", "pattern": "^\\d{4}-\\d{2}-\\d{2}(T[\\d:.Z+-]+)?$", "type": "string" }, "include": { "description": "Related data to inline. \"sponsorships\" and \"actions\" cover most research needs without a separate openstates_get_bill call. \"votes\" adds full vote tallies and per-legislator positions.", "items": { "enum": [ "sponsorships", "abstracts", "other_titles", "other_identifiers", "actions", "sources", "documents", "versions", "votes", "related_bills" ], "type": "string" }, "type": "array" }, "jurisdiction": { "description": "State name, two-letter abbreviation, or OCD-ID (e.g., \"Washington\", \"wa\", or \"ocd-jurisdiction/country:us/state:wa/government\"). Required unless q is provided.", "minLength": 1, "type": "string" }, "page": { "default": 1, "description": "Page number (1-indexed).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "default": 10, "description": "Results per page. Maximum 20. Default 10.", "maximum": 20, "minimum": 1, "type": "integer" }, "q": { "description": "Full-text search across bill titles, abstracts, and text. Required unless jurisdiction is provided. Pair it with jurisdiction whenever a state is known — a q-only search over every jurisdiction times out upstream for a common term.", "minLength": 1, "type": "string" }, "session": { "description": "Session identifier (e.g., \"2025\", \"2025-2026\", \"2025rs\"). Use openstates_get_jurisdiction with include=legislative_sessions to discover valid values. Omit to search across all sessions.", "type": "string" }, "sort": { "default": "updated_desc", "description": "Sort order. Use \"latest_action_desc\" for bills currently moving through the legislature.", "enum": [ "updated_asc", "updated_desc", "first_action_asc", "first_action_desc", "latest_action_asc", "latest_action_desc" ], "type": "string" }, "sponsor": { "description": "Filter by sponsor name or OCD person ID.", "type": "string" }, "sponsor_classification": { "description": "Filter sponsor type: \"primary\", \"cosponsor\".", "type": "string" }, "subject": { "description": "Filter to bills tagged with one or more subject categories.", "items": { "type": "string" }, "type": "array" }, "updated_since": { "description": "ISO 8601 date — only return bills updated after this date (e.g., \"2025-01-01\").", "pattern": "^\\d{4}-\\d{2}-\\d{2}(T[\\d:.Z+-]+)?$", "type": "string" } }, "type": "object" }, "name": "openstates_search_bills", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "pagination", "totalCount", "page", "maxPage", "appliedFilters" ] }, { "required": [ "error" ] } ], "properties": { "appliedFilters": { "additionalProperties": false, "description": "Filters applied to this query as the server received them, for agent self-verification of zero or unexpected results.", "properties": { "action_since": { "description": "action_since date filter as received.", "type": "string" }, "chamber": { "description": "Chamber filter as received.", "type": "string" }, "classification": { "description": "Classification filter as received.", "type": "string" }, "created_since": { "description": "created_since date filter as received.", "type": "string" }, "jurisdiction": { "description": "Jurisdiction filter as received.", "type": "string" }, "page": { "description": "Page number requested.", "type": "number" }, "per_page": { "description": "Results per page requested.", "type": "number" }, "q": { "description": "Full-text query as received.", "type": "string" }, "session": { "description": "Session filter as received.", "type": "string" }, "sort": { "description": "Sort order applied.", "type": "string" }, "sponsor": { "description": "Sponsor filter as received.", "type": "string" }, "sponsor_classification": { "description": "Sponsor-type filter as received.", "type": "string" }, "subject": { "description": "Subject tags filtered on, as received. Absent when none were supplied.", "items": { "type": "string" }, "type": "array" }, "updated_since": { "description": "updated_since date filter as received.", "type": "string" } }, "required": [ "sort", "page", "per_page" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `upstream_timeout`: Open States did not answer within the per-request timeout — the query is too broad. `invalid_page`: Open States rejected the request as not found — page is past the last page for this query. Other values are possible when a failure originates below the handler.", "examples": [ "upstream_timeout", "invalid_page" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "maxPage": { "description": "Total pages available.", "type": "number" }, "notice": { "description": "Recovery hint when results are empty — names every filter that narrowed the query and suggests how to broaden. Absent when results are returned.", "type": "string" }, "page": { "description": "Current page returned.", "type": "number" }, "pagination": { "additionalProperties": false, "description": "Pagination metadata.", "properties": { "max_page": { "description": "Total pages available.", "type": "number" }, "page": { "description": "Current page.", "type": "number" }, "per_page": { "description": "Results per page.", "type": "number" }, "total_items": { "description": "Total matching bills.", "type": "number" } }, "required": [ "page", "per_page", "max_page", "total_items" ], "type": "object" }, "results": { "description": "Bills matching the search criteria.", "items": { "additionalProperties": false, "description": "Bill record.", "properties": { "abstracts": { "description": "Bill abstracts when include=abstracts is requested.", "items": { "additionalProperties": false, "description": "Abstract record.", "properties": { "abstract": { "description": "Plain-language bill summary.", "type": "string" }, "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "abstract", "note" ], "type": "object" }, "type": "array" }, "actions": { "description": "Action history when include=actions is requested.", "items": { "additionalProperties": false, "description": "Action record.", "properties": { "classification": { "description": "Action classifications.", "items": { "type": "string" }, "type": "array" }, "date": { "description": "Action date. Empty string when Open States recorded no date.", "type": "string" }, "description": { "description": "Action description.", "type": "string" }, "order": { "description": "Action sequence order.", "type": "number" }, "organization": { "additionalProperties": false, "description": "Chamber or committee where action occurred.", "properties": { "classification": { "description": "Organization classification.", "type": "string" }, "name": { "description": "Organization name.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" } }, "required": [ "description", "date", "classification", "order", "organization" ], "type": "object" }, "type": "array" }, "classification": { "description": "Bill classifications.", "items": { "type": "string" }, "type": "array" }, "documents": { "description": "Bill documents (fiscal notes, etc.) when include=documents is requested.", "items": { "additionalProperties": false, "description": "Bill document record.", "properties": { "date": { "description": "Document date. Empty string when Open States recorded no date, which is the usual case for bill documents.", "type": "string" }, "id": { "description": "Document ID.", "type": "string" }, "links": { "description": "Document links.", "items": { "additionalProperties": false, "description": "Document link.", "properties": { "media_type": { "description": "MIME type.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "media_type" ], "type": "object" }, "type": "array" }, "note": { "description": "Document note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "id", "note", "date", "links" ], "type": "object" }, "type": "array" }, "first_action_date": { "description": "Date of first recorded action.", "type": [ "string", "null" ] }, "from_organization": { "additionalProperties": false, "description": "Originating chamber.", "properties": { "classification": { "description": "Chamber classification (e.g., \"lower\", \"upper\").", "type": "string" }, "name": { "description": "Chamber name.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" }, "id": { "description": "OCD bill ID — use as openstates_id in openstates_get_bill.", "type": "string" }, "identifier": { "description": "Bill identifier as used by the legislature (e.g., \"HB 1000\").", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Originating jurisdiction.", "properties": { "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "latest_action_date": { "description": "Date of most recent action.", "type": [ "string", "null" ] }, "latest_action_description": { "description": "Description of most recent action.", "type": [ "string", "null" ] }, "latest_passage_date": { "description": "Date bill passed (when applicable).", "type": [ "string", "null" ] }, "openstates_url": { "description": "Citable Open States page for this bill.", "type": "string" }, "other_identifiers": { "description": "Alternate identifiers when include=other_identifiers is requested.", "items": { "additionalProperties": false, "description": "Alternate identifier record.", "properties": { "identifier": { "description": "Alternate bill identifier.", "type": "string" }, "scheme": { "description": "Identifier scheme (the issuing system). Absent for bills — Open States omits it on every bill record observed.", "type": "string" } }, "required": [ "identifier" ], "type": "object" }, "type": "array" }, "other_titles": { "description": "Alternate titles when include=other_titles is requested.", "items": { "additionalProperties": false, "description": "Alternate title record.", "properties": { "note": { "description": "Note describing the alternate title. Empty string when Open States recorded no note.", "type": "string" }, "title": { "description": "Alternate bill title.", "type": "string" } }, "required": [ "title", "note" ], "type": "object" }, "type": "array" }, "related_bills": { "description": "Related bills when include=related_bills is requested.", "items": { "additionalProperties": false, "description": "Related bill record.", "properties": { "identifier": { "description": "Related bill identifier.", "type": "string" }, "legislative_session": { "description": "Session of the related bill.", "type": "string" }, "relation_type": { "description": "Relationship type (e.g., \"companion\", \"identical\").", "type": "string" } }, "required": [ "identifier", "legislative_session", "relation_type" ], "type": "object" }, "type": "array" }, "session": { "description": "Legislative session identifier.", "type": "string" }, "sources": { "description": "Source documents when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "sponsorships": { "description": "Sponsorships when include=sponsorships is requested.", "items": { "additionalProperties": false, "description": "Sponsorship record.", "properties": { "classification": { "description": "Sponsorship type.", "type": "string" }, "entity_type": { "description": "Entity type: \"person\", \"organization\".", "type": "string" }, "name": { "description": "Sponsor name.", "type": "string" }, "person": { "additionalProperties": false, "description": "Linked person record when the sponsor resolves to a known legislator.", "properties": { "id": { "description": "OCD person ID — an exact handle where the sponsor name string is often only a family name. Pass it to openstates_search_people as id for the full legislator record, or back as the sponsor filter to find this legislator's other bills.", "type": "string" }, "name": { "description": "Person name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "primary": { "description": "Whether this is the primary sponsor.", "type": "boolean" } }, "required": [ "name", "entity_type", "primary", "classification" ], "type": "object" }, "type": "array" }, "subject": { "description": "Subject tags assigned by Open States scrapers.", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Bill title.", "type": "string" }, "updated_at": { "description": "Timestamp Open States last updated this record — the field the default sort=updated_desc orders by.", "type": "string" }, "versions": { "description": "Bill text versions when include=versions is requested.", "items": { "additionalProperties": false, "description": "Bill text version record.", "properties": { "date": { "description": "Version date. Empty string when Open States recorded no date, which is the usual case for bill versions.", "type": "string" }, "id": { "description": "Version ID.", "type": "string" }, "links": { "description": "Document links.", "items": { "additionalProperties": false, "description": "Document link.", "properties": { "media_type": { "description": "MIME type.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "media_type" ], "type": "object" }, "type": "array" }, "note": { "description": "Version note. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "id", "note", "date", "links" ], "type": "object" }, "type": "array" }, "votes": { "description": "Vote events when include=votes is requested.", "items": { "additionalProperties": false, "description": "Vote event record.", "properties": { "counts": { "description": "Vote tallies by option.", "items": { "additionalProperties": false, "description": "Vote tally entry.", "properties": { "option": { "description": "Vote option (e.g., \"yes\", \"no\", \"absent\").", "type": "string" }, "value": { "description": "Count of votes for this option.", "type": "number" } }, "required": [ "option", "value" ], "type": "object" }, "type": "array" }, "id": { "description": "Vote event ID.", "type": "string" }, "identifier": { "description": "Vote identifier.", "type": "string" }, "motion_text": { "description": "Motion text.", "type": "string" }, "result": { "description": "Vote result: \"pass\" or \"fail\".", "type": "string" }, "start_date": { "description": "Vote date. Empty string when Open States recorded no date.", "type": "string" }, "votes": { "description": "Per-legislator vote positions.", "items": { "additionalProperties": false, "description": "Individual legislator vote.", "properties": { "option": { "description": "How this legislator voted.", "type": "string" }, "voter": { "additionalProperties": false, "description": "Linked person record when available.", "properties": { "id": { "description": "OCD person ID.", "type": "string" }, "name": { "description": "Person name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "voter_name": { "description": "Voter name.", "type": "string" } }, "required": [ "option", "voter_name" ], "type": "object" }, "type": "array" } }, "required": [ "id", "motion_text", "start_date", "result", "identifier", "counts", "votes" ], "type": "object" }, "type": "array" } }, "required": [ "id", "identifier", "title", "session", "jurisdiction", "from_organization", "classification", "subject", "first_action_date", "latest_action_date", "latest_action_description", "latest_passage_date" ], "type": "object" }, "type": "array" }, "totalCount": { "description": "Total bills matching the query across all pages.", "type": "number" } }, "type": "object" } }, { "description": "List 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 committee support and not all states have data. Use chamber to scope to upper (senate) or lower (house) committees. Use classification=subcommittee to find subcommittees of a parent. Use include=memberships to get the full roster with member roles. The coverageNote field in the output will always note the experimental coverage limitations.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "chamber": { "description": "Filter by chamber. \"upper\" = Senate, \"lower\" = House/Assembly.", "enum": [ "upper", "lower" ], "type": "string" }, "classification": { "description": "Filter to parent committees or subcommittees only. Omit for all.", "enum": [ "committee", "subcommittee" ], "type": "string" }, "include": { "description": "Related data to inline. \"memberships\" includes the full roster with member roles. \"links\" includes the committee homepage and reference links, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "memberships", "links", "sources" ], "type": "string" }, "type": "array" }, "jurisdiction": { "description": "State name, abbreviation, or OCD-ID. Required — an all-states request exceeds the upstream timeout, so every call must be scoped to a single jurisdiction.", "minLength": 1, "type": "string" }, "page": { "default": 1, "description": "Page number (1-indexed).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "parent": { "description": "OCD organization ID of a parent committee to retrieve its subcommittees.", "type": "string" }, "per_page": { "default": 10, "description": "Results per page. Maximum 20.", "maximum": 20, "minimum": 1, "type": "integer" } }, "required": [ "jurisdiction" ], "type": "object" }, "name": "openstates_search_committees", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "pagination", "totalCount", "page", "maxPage", "coverageNote", "appliedFilters" ] }, { "required": [ "error" ] } ], "properties": { "appliedFilters": { "additionalProperties": false, "description": "Filters applied to this query as the server received them, for agent self-verification of zero or unexpected results.", "properties": { "chamber": { "description": "Chamber filter as received.", "type": "string" }, "classification": { "description": "Classification filter as received.", "type": "string" }, "jurisdiction": { "description": "Jurisdiction filter as received.", "type": "string" }, "page": { "description": "Page number requested.", "type": "number" }, "parent": { "description": "Parent committee filter as received.", "type": "string" }, "per_page": { "description": "Results per page requested.", "type": "number" } }, "required": [ "page", "per_page" ], "type": "object" }, "coverageNote": { "description": "Committee data is experimental — not all states have coverage in Open States. Empty results may indicate the state lacks data, not that no committees exist.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `upstream_timeout`: Open States did not answer within the per-request timeout — the query is too broad. `invalid_page`: Open States rejected the request as not found — page is past the last page for this query. Other values are possible when a failure originates below the handler.", "examples": [ "upstream_timeout", "invalid_page" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "maxPage": { "description": "Total pages available.", "type": "number" }, "page": { "description": "Current page returned.", "type": "number" }, "pagination": { "additionalProperties": false, "description": "Pagination metadata.", "properties": { "max_page": { "description": "Total pages.", "type": "number" }, "page": { "description": "Current page.", "type": "number" }, "per_page": { "description": "Results per page.", "type": "number" }, "total_items": { "description": "Total matching committees.", "type": "number" } }, "required": [ "page", "per_page", "max_page", "total_items" ], "type": "object" }, "results": { "description": "Committees matching the search criteria.", "items": { "additionalProperties": false, "description": "Committee record.", "properties": { "classification": { "description": "Committee classification: \"committee\" or \"subcommittee\".", "type": "string" }, "id": { "description": "OCD organization ID — use as committee_id in openstates_get_committee.", "type": "string" }, "links": { "description": "Committee homepage and reference links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description (e.g., \"homepage\"). Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "memberships": { "description": "Membership roster when include=memberships is requested.", "items": { "additionalProperties": false, "description": "Committee membership record.", "properties": { "person_id": { "description": "OCD person ID of the member — pass it to openstates_search_people as id for the full record. Empty string when the membership carries no linked person.", "type": "string" }, "person_name": { "description": "Member name. Empty string when Open States recorded none.", "type": "string" }, "role": { "description": "Member role (e.g., \"chair\", \"member\"). Empty string when Open States recorded none.", "type": "string" } }, "required": [ "person_id", "person_name", "role" ], "type": "object" }, "type": "array" }, "name": { "description": "Committee name.", "type": "string" }, "parent_id": { "description": "OCD ID of parent committee, or null for top-level committees.", "type": [ "string", "null" ] }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" } }, "required": [ "id", "name", "classification", "parent_id" ], "type": "object" }, "type": "array" }, "totalCount": { "description": "Total committees matching the query across all pages.", "type": "number" } }, "type": "object" } }, { "description": "Search 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 to Open States. Use after and before to scope to a date range. Set require_bills=true to filter to events with bills on the agenda, which is the most useful filter for tracking legislation through committee. Use include=agenda,participants for full meeting context. Empty results often indicate the state lacks event data rather than no events occurring.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "after": { "description": "ISO 8601 datetime — events starting after this time. Use to find upcoming hearings.", "pattern": "^\\d{4}-\\d{2}-\\d{2}(T[\\d:.Z+-]+)?$", "type": "string" }, "before": { "description": "ISO 8601 datetime — events starting before this time.", "pattern": "^\\d{4}-\\d{2}-\\d{2}(T[\\d:.Z+-]+)?$", "type": "string" }, "include": { "description": "Related data to inline. \"agenda\" includes the meeting agenda with bill references. \"participants\" includes the committee or chamber hosting the event. \"links\" and \"media\" add related URLs and recordings, \"documents\" the attached files, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "links", "sources", "media", "documents", "participants", "agenda" ], "type": "string" }, "type": "array" }, "jurisdiction": { "description": "State name, abbreviation, or OCD-ID. Required — the Open States events endpoint has no all-states search, so every call must be scoped to a single jurisdiction.", "minLength": 1, "type": "string" }, "page": { "default": 1, "description": "Page number (1-indexed).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "default": 10, "description": "Results per page. Maximum 20.", "maximum": 20, "minimum": 1, "type": "integer" }, "require_bills": { "default": false, "description": "When true, only return events with at least one bill on the agenda. Most useful for tracking legislation through committee.", "type": "boolean" } }, "required": [ "jurisdiction" ], "type": "object" }, "name": "openstates_search_events", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "pagination", "totalCount", "page", "maxPage", "coverageNote", "appliedFilters" ] }, { "required": [ "error" ] } ], "properties": { "appliedFilters": { "additionalProperties": false, "description": "Filters applied to this query as the server received them, for agent self-verification of zero or unexpected results.", "properties": { "after": { "description": "after datetime filter as received.", "type": "string" }, "before": { "description": "before datetime filter as received.", "type": "string" }, "jurisdiction": { "description": "Jurisdiction filter as received.", "type": "string" }, "page": { "description": "Page number requested.", "type": "number" }, "per_page": { "description": "Results per page requested.", "type": "number" }, "require_bills": { "description": "require_bills flag as received.", "type": "boolean" } }, "required": [ "require_bills", "page", "per_page" ], "type": "object" }, "coverageNote": { "description": "Event data is experimental — most states do not publish event data to Open States. Empty results may indicate the state lacks data, not that no events occurred.", "type": "string" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `upstream_timeout`: Open States did not answer within the per-request timeout — the query is too broad. `invalid_page`: Open States rejected the request as not found — page is past the last page for this query. Other values are possible when a failure originates below the handler.", "examples": [ "upstream_timeout", "invalid_page" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "maxPage": { "description": "Total pages available.", "type": "number" }, "notice": { "description": "Recovery hint when results are empty. Absent when results are returned.", "type": "string" }, "page": { "description": "Current page returned.", "type": "number" }, "pagination": { "additionalProperties": false, "description": "Pagination metadata.", "properties": { "max_page": { "description": "Total pages.", "type": "number" }, "page": { "description": "Current page.", "type": "number" }, "per_page": { "description": "Results per page.", "type": "number" }, "total_items": { "description": "Total matching events.", "type": "number" } }, "required": [ "page", "per_page", "max_page", "total_items" ], "type": "object" }, "results": { "description": "Events matching the search criteria.", "items": { "additionalProperties": false, "description": "Event record.", "properties": { "agenda": { "description": "Agenda items when include=agenda is requested.", "items": { "additionalProperties": false, "description": "Agenda item record.", "properties": { "classification": { "description": "Agenda item classification.", "items": { "type": "string" }, "type": "array" }, "description": { "description": "Agenda item description.", "type": "string" }, "related_entities": { "description": "Bills, people, or organizations referenced in this agenda item.", "items": { "additionalProperties": false, "description": "Related entity record.", "properties": { "entity_type": { "description": "Entity type (e.g., \"bill\", \"person\", \"organization\").", "type": "string" }, "name": { "description": "Related entity name.", "type": "string" } }, "required": [ "name", "entity_type" ], "type": "object" }, "type": "array" }, "subjects": { "description": "Subject tags for this agenda item.", "items": { "type": "string" }, "type": "array" } }, "required": [ "description", "classification", "subjects", "related_entities" ], "type": "object" }, "type": "array" }, "classification": { "description": "Event classification (e.g., \"committee-meeting\").", "type": "string" }, "description": { "description": "Event description.", "type": "string" }, "documents": { "description": "Document links when include=documents is requested.", "items": { "additionalProperties": false, "description": "Document link record.", "properties": { "note": { "description": "Document description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Document URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "end_date": { "description": "Event end datetime. Absent when not recorded.", "type": "string" }, "id": { "description": "OCD event ID — use in openstates_get_event.", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Hosting jurisdiction.", "properties": { "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "links": { "description": "Event links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "location": { "additionalProperties": false, "description": "Event location when available.", "properties": { "name": { "description": "Location name.", "type": "string" }, "url": { "description": "Location URL when available.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "media": { "description": "Media links when include=media is requested.", "items": { "additionalProperties": false, "description": "Media link record.", "properties": { "note": { "description": "Media description. Empty string when Open States recorded no description.", "type": "string" }, "url": { "description": "Media URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "name": { "description": "Event name.", "type": "string" }, "participants": { "description": "Participants when include=participants is requested.", "items": { "additionalProperties": false, "description": "Participant record.", "properties": { "entity_type": { "description": "Entity type (e.g., \"organization\", \"person\").", "type": "string" }, "name": { "description": "Participant name.", "type": "string" }, "role": { "description": "Participant role. Absent when upstream omits it.", "type": "string" } }, "required": [ "name", "entity_type" ], "type": "object" }, "type": "array" }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "start_date": { "description": "Event start datetime.", "type": "string" }, "status": { "description": "Event status.", "type": "string" } }, "required": [ "id", "name", "description", "classification", "start_date", "status", "jurisdiction" ], "type": "object" }, "type": "array" }, "totalCount": { "description": "Total events matching the query across all pages.", "type": "number" } }, "type": "object" } }, { "description": "Search 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 all 56 jurisdictions exceeds the upstream timeout, including a name-only one, so scope every call to a single state or to specific person IDs. Use openstates_list_jurisdictions to pick a jurisdiction, or openstates_get_legislators_by_location when you have coordinates but no state. id takes the person IDs that openstates_get_bill sponsorships and openstates_get_committee memberships hand back, and resolves any number of them in one call. Supports name substring matching (case-insensitive). org_classification targets a role type: \"upper\" for Senate, \"lower\" for House/Assembly, \"executive\" for governors and executive officials, and \"legislature\" for every legislator — both chambers merged into one paginated set (all upper members, then all lower), which excludes executive-branch officials. Omitting org_classification is not the same as \"legislature\": it returns every officeholder, executive officials included. include=offices adds phone, fax, and address. include=links adds website and social links.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "district": { "description": "District label (e.g., \"1\", \"37\", \"At-Large\"). Formats vary by state.", "type": "string" }, "id": { "description": "OCD person IDs (e.g., \"ocd-person/9eddb3cd-868e-42ba-831a-b415fd7ed445\"). Required unless jurisdiction is provided — it returns exactly these people, so it scopes the call on its own and needs no jurisdiction alongside it. Resolves the IDs that openstates_search_people results, openstates_get_bill sponsorships[].person.id, and openstates_get_committee memberships[].person_id hand back — any number of them in one call, subject to per_page. An ID Open States does not know matches nothing rather than failing, as does an ID paired with a jurisdiction that person does not belong to.", "items": { "minLength": 1, "type": "string" }, "minItems": 1, "type": "array" }, "include": { "description": "Related data to inline. \"offices\" includes phone, fax, and address. \"links\" includes website and social links. \"other_names\" includes alternate/former names, \"other_identifiers\" cross-system IDs, and \"sources\" the provenance URLs behind the record.", "items": { "enum": [ "other_names", "other_identifiers", "links", "sources", "offices" ], "type": "string" }, "type": "array" }, "jurisdiction": { "description": "State name, abbreviation, or OCD-ID. Required unless id is provided — an all-states search exceeds the upstream timeout, so every call must be scoped to a single jurisdiction or to specific person IDs.", "minLength": 1, "type": "string" }, "name": { "description": "Name or partial name to match (case-insensitive substring). Narrows within the jurisdiction; it does not substitute for one.", "type": "string" }, "org_classification": { "description": "Filter by 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, excluding executive officials). Omitting this filter returns every officeholder including executive ones — it is not equivalent to \"legislature\".", "enum": [ "legislature", "executive", "lower", "upper", "government" ], "type": "string" }, "page": { "default": 1, "description": "Page number (1-indexed).", "maximum": 9007199254740991, "minimum": 1, "type": "integer" }, "per_page": { "default": 10, "description": "Results per page. Maximum 20.", "maximum": 20, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "openstates_search_people", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "results", "pagination", "totalCount", "page", "maxPage", "appliedFilters" ] }, { "required": [ "error" ] } ], "properties": { "appliedFilters": { "additionalProperties": false, "description": "Filters applied to this query as the server received them, for agent self-verification of zero or unexpected results.", "properties": { "district": { "description": "District filter as received.", "type": "string" }, "id": { "description": "Person IDs filtered on, as received. Absent when none were supplied.", "items": { "type": "string" }, "type": "array" }, "jurisdiction": { "description": "Jurisdiction filter as received.", "type": "string" }, "name": { "description": "Name filter as received.", "type": "string" }, "org_classification": { "description": "Role-type filter as received.", "type": "string" }, "page": { "description": "Page number requested.", "type": "number" }, "per_page": { "description": "Results per page requested.", "type": "number" } }, "required": [ "page", "per_page" ], "type": "object" }, "error": { "additionalProperties": {}, "description": "Present when the call failed. Absent on success.", "properties": { "code": { "description": "JSON-RPC error code for this failure.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "data": { "additionalProperties": {}, "properties": { "reason": { "description": "Machine-readable failure mode. Declared by this tool: `upstream_timeout`: Open States did not answer within the per-request timeout — the query is too broad. `invalid_page`: Open States rejected the request as not found — page is past the last page for this query. Other values are possible when a failure originates below the handler.", "examples": [ "upstream_timeout", "invalid_page" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "maxPage": { "description": "Total pages available.", "type": "number" }, "notice": { "description": "Recovery hint when results are empty. Absent when results are returned.", "type": "string" }, "page": { "description": "Current page returned.", "type": "number" }, "pagination": { "additionalProperties": false, "description": "Pagination metadata.", "properties": { "max_page": { "description": "Total pages.", "type": "number" }, "page": { "description": "Current page.", "type": "number" }, "per_page": { "description": "Results per page.", "type": "number" }, "total_items": { "description": "Total matching legislators.", "type": "number" } }, "required": [ "page", "per_page", "max_page", "total_items" ], "type": "object" }, "results": { "description": "Legislators matching the search criteria.", "items": { "additionalProperties": false, "description": "Legislator record.", "properties": { "current_role": { "anyOf": [ { "additionalProperties": false, "properties": { "district": { "description": "District label or null when undistricted.", "type": [ "string", "null" ] }, "division_id": { "description": "OCD division the district maps to (e.g., \"ocd-division/country:us/state:wa/sldu:37\"). Null when undistricted, absent when upstream omits it.", "type": [ "string", "null" ] }, "org_classification": { "description": "Chamber classification (e.g., \"upper\", \"lower\").", "type": "string" }, "title": { "description": "Role title (e.g., \"Senator\", \"Representative\").", "type": "string" } }, "required": [ "title", "org_classification", "district" ], "type": "object" }, { "type": "null" } ], "description": "Current role or null when no active role is recorded." }, "email": { "description": "Email address. Empty string when not available.", "type": "string" }, "family_name": { "description": "Family (last) name. Empty string when Open States recorded none.", "type": "string" }, "given_name": { "description": "Given (first) name. Empty string when Open States recorded none.", "type": "string" }, "id": { "description": "OCD person ID.", "type": "string" }, "image": { "description": "Official headshot URL. Absent when no photo is published.", "type": "string" }, "jurisdiction": { "additionalProperties": false, "description": "Home jurisdiction.", "properties": { "id": { "description": "OCD jurisdiction ID.", "type": "string" }, "name": { "description": "Jurisdiction name.", "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "links": { "description": "Website and social links when include=links is requested.", "items": { "additionalProperties": false, "description": "External link record.", "properties": { "note": { "description": "Link description (e.g., \"website\", \"twitter\"). Empty string when Open States recorded no description — common on person links.", "type": "string" }, "url": { "description": "Link URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" }, "name": { "description": "Full name.", "type": "string" }, "offices": { "description": "Contact offices when include=offices is requested.", "items": { "additionalProperties": false, "description": "Contact office record.", "properties": { "address": { "description": "Mailing address when available.", "type": "string" }, "classification": { "description": "Office type.", "type": "string" }, "fax": { "description": "Fax number when available.", "type": "string" }, "name": { "description": "Office name or label.", "type": "string" }, "voice": { "description": "Phone number when available.", "type": "string" } }, "required": [ "name", "classification" ], "type": "object" }, "type": "array" }, "openstates_url": { "description": "Open States profile URL. Empty string when Open States recorded none.", "type": "string" }, "other_identifiers": { "description": "Cross-system identifiers when include=other_identifiers is requested.", "items": { "additionalProperties": false, "description": "Alternate identifier record.", "properties": { "identifier": { "description": "Alternate identifier.", "type": "string" }, "scheme": { "description": "Identifier scheme (the issuing system).", "type": "string" } }, "required": [ "identifier", "scheme" ], "type": "object" }, "type": "array" }, "other_names": { "description": "Alternate/former names when include=other_names is requested.", "items": { "additionalProperties": false, "description": "Alternate name record.", "properties": { "name": { "description": "Alternate or former name.", "type": "string" }, "note": { "description": "Note describing the alternate name. Empty string when Open States recorded no note.", "type": "string" } }, "required": [ "name", "note" ], "type": "object" }, "type": "array" }, "party": { "description": "Primary party label. Empty string when unknown.", "type": "string" }, "sources": { "description": "Provenance sources when include=sources is requested.", "items": { "additionalProperties": false, "description": "Source record.", "properties": { "note": { "description": "Source note. Empty string when Open States recorded no note.", "type": "string" }, "url": { "description": "Source URL.", "type": "string" } }, "required": [ "url", "note" ], "type": "object" }, "type": "array" } }, "required": [ "id", "name", "party", "current_role", "jurisdiction", "given_name", "family_name", "email", "openstates_url" ], "type": "object" }, "type": "array" }, "totalCount": { "description": "Total legislators matching the query across all pages.", "type": "number" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:20c7de2e5e81ea478720f5e50c7404f32e0704d3db01a72938444b2bd0f66ff8 | sha256sum