Skip to main content
Glama

Get Bill

openstates_get_bill
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bill_idNoBill identifier as used by the legislature (e.g., "HB 1000", "SB 42"). Required with jurisdiction + session.
includeNoRelated data to inline. "sponsorships", "actions", "votes" are most commonly needed. "versions" and "documents" provide links to bill text and fiscal notes.
sessionNoSession identifier. Required with jurisdiction + bill_id.
jurisdictionNoState name, abbreviation, or OCD-ID. Required when using path-based lookup with session + bill_id.
openstates_idNoOCD bill ID from openstates_search_bills results (e.g., "ocd-bill/..."). Preferred over the three-part path when available.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoOCD bill ID.
errorNoPresent when the call failed. Absent on success.
titleNoBill title.
votesNoVote events when include=votes is requested.
actionsNoFull action history when include=actions is requested.
sessionNoLegislative session identifier.
sourcesNoSource documents when include=sources is requested.
subjectNoSubject tags.
versionsNoBill text versions when include=versions is requested.
abstractsNoBill abstracts when include=abstracts is requested.
documentsNoBill documents (fiscal notes, etc.) when include=documents is requested.
identifierNoBill identifier as used by the legislature.
updated_atNoTimestamp Open States last updated this record — the field openstates_search_bills sorts by under the default sort=updated_desc.
jurisdictionNoOriginating jurisdiction.
other_titlesNoAlternate titles when include=other_titles is requested.
sponsorshipsNoSponsorships when include=sponsorships is requested.
related_billsNoRelated bills when include=related_bills is requested.
classificationNoBill classifications.
openstates_urlNoOpen States URL for this bill.
first_action_dateNoDate of first recorded action.
from_organizationNoOriginating chamber.
other_identifiersNoAlternate identifiers when include=other_identifiers is requested.
latest_action_dateNoDate of most recent action.
latest_passage_dateNoDate bill passed (when applicable).
latest_action_descriptionNoMost recent action description.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds behavioral context by explaining what include does for votes and actions (full tally, per-legislator positions, complete history), and states that 'full detail' is returned. However, it doesn't clarify the default response when include is not specified, nor does it describe the response structure or potential errors. This is adequate given annotations but leaves some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with exactly four sentences that are front-loaded: the first sentence states the core purpose, the second explains parameter options, the third gives examples of include behavior, and the fourth provides a preference tip. No word is wasted, and the structure is logical for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, output schema present, annotations covering safety), the description covers the essential aspects: how to identify the bill, the include parameter's role and common uses, and the preferred parameter choice. It does not mention error handling, rate limits, or defaults, but these are less critical for correct invocation. The existence of an output schema reduces the need to explain return values. Overall, it is sufficiently complete for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for each parameter, covering 100% of them. The description adds value by explaining the relationship between parameters: it clarifies that jurisdiction, session, and bill_id form a three-part path, and that openstates_id is an alternative and preferred. This relational knowledge goes beyond the schema's individual parameter descriptions, so the description compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Fetch full detail for a specific state bill.' It specifies the resource (bill) and the action (fetch), and distinguishes it from sibling tools like search_bills (which searches) and get_committee/get_event (which target different entity types). It also clarifies the two identification methods, removing ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance: it recommends preferring openstates_id when available to avoid session identifier lookup, and suggests using include to request related data in one call instead of searching again. This implies a workflow (first search, then get). It does not explicitly mention alternatives like search_bills for when no ID exists, but the guidance is sufficient and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool serves a distinct purpose: get_* fetches a single entity by ID, search_* finds multiple entities via criteria, and list_jurisdictions enumerates all jurisdictions. The location-based people lookup is unique and clearly differentiated from name-based search_people. No two tools have overlapping functionality.

Naming Consistency5/5

All tools follow a consistent pattern: openstates_<action>_<entity>, where actions are either get (singular fetch), search (query-based), or list (enumerate all). The entity names are consistent (bill, committee, event, jurisdiction, people) and the special 'legislators_by_location' still fits the verb_noun structure. No mixed conventions or vague verbs.

Tool Count5/5

10 tools is well within the optimal 3-15 range. The server covers the primary legislative data entities—bills, committees, events, jurisdictions, and people—without redundancy. Each tool earns its place for a comprehensive public policy data API.

Completeness5/5

The surface provides full read capability for the domain: search and detail retrieval for all core entities, jurisdiction metadata listing, and a special location-based people lookup. Given the read-only nature of the data source, there are no obvious gaps—every plausible query scenario is addressed.