org. billcommons/ bill-commons
by billcommons.org · remote · no sign-in to list tools · v1.0.0 · published by org.billcommons
Search 209k+ US state bills, all 50 states + DC: full text, sponsors, votes, status. Free.
10 tools: 2 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http bill-commons https://mcp.billcommons.org/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 2Claude Code: ask
build_legislative_evidence_packetCompile a citation-ready evidence packet for a bill: full official record, legislative history timeline, votes with member-level detail, and hearings -- each explicitly labeled off…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Compile a citation-ready evidence packet for a bill: full official record, legislative history timeline, votes with member-level detail, and hearings -- each explicitly labeled official vs. derived with source URLs. Returns a `how_to_cite` block with a one-line `cite_as` sentence, a human `permalink`, a JSON `download_url`, and a `snapshot_id` that changes if and only if a cited fact about the bill changes -- so a reader can check later whether the citation still holds. Snapshots are NOT archived; the id is a change detector, not a way to retrieve an older packet. Pass `question` to record what the packet was assembled to answer; it is echoed into the artifact so a filed packet carries its own scope.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
trace_legislative_historyFull chronological legislative history for a bill: merged timeline of actions, version publications, and votes, plus related-bill links.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Full chronological legislative history for a bill: merged timeline of actions, version publications, and votes, plus related-bill links.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 8Claude Code: allow
compare_bill_versionsDeterministic diff (unified + structured) between two versions of a bill's extracted text.No findings
Why it is in this group
- The name "compare_bill_versions" says "compare": a word for reading.
Description, as the server wrote it Deterministic diff (unified + structured) between two versions of a bill's extracted text. Defaults to earliest vs. latest texted version if version ids are omitted. Errors if fewer than 2 versions have extracted text. Result is labeled 'derived' (computed by Bill Commons, not an official document).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
find_similar_billsFind bills with similar titles via deterministic trigram similarity, across jurisdictions.No findings
Why it is in this group
- The name "find_similar_bills" says "find": a word for reading.
Description, as the server wrote it Find bills with similar titles via deterministic trigram similarity, across jurisdictions. Labeled 'derived' -- not an official cross-reference or companion-bill designation.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_active_sessionsList legislative sessions currently flagged active, optionally filtered by jurisdiction (two-letter state code or name).No findings
Why it is in this group
- The name "get_active_sessions" says "get": a word for reading.
Description, as the server wrote it List legislative sessions currently flagged active, optionally filtered by jurisdiction (two-letter state code or name).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bill_recordFetch the full record for one bill: metadata, sponsors, subjects, actions, versions, and vote-event summaries.No findings
Why it is in this group
- The name "get_bill_record" says "get": a word for reading.
Description, as the server wrote it Fetch the full record for one bill: metadata, sponsors, subjects, actions, versions, and vote-event summaries. Look up by canonical bill_id (UUID), or by jurisdiction + identifier (+ optional session to disambiguate). For a human bill number like HB 123, use jurisdiction="NC", identifier="HB 123"; bill_id is for UUIDs.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_jurisdiction_coverageReturn the jurisdiction_coverage state-machine status for one state (abbreviation or name), or the full stored coverage matrix if state is omitted.No findings
Why it is in this group
- The name "get_jurisdiction_coverage" says "get": a word for reading.
Description, as the server wrote it Return the jurisdiction_coverage state-machine status for one state (abbreviation or name), or the full stored coverage matrix if state is omitted. Public-registry and unlisted row counts are explicit. Includes bounded retained official-source observation health and evidence links. Coverage status measures stored bill/text availability; local coverage timestamps can advance on count recomputation. Statewide semantic freshness remains unverified, including for GREEN coverage.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_vote_detailsFetch vote event(s) with member-level (yes/no/other/absent) vote records.No findings
Why it is in this group
- The name "get_vote_details" says "get": a word for reading.
Description, as the server wrote it Fetch vote event(s) with member-level (yes/no/other/absent) vote records. Provide vote_event_id for one vote, or bill_id for all recorded votes on that bill.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_topicsList Bill Commons' curated cross-state topic trackers (e.g.No findings
Why it is in this group
- The name "list_topics" says "list": a word for reading.
Description, as the server wrote it List Bill Commons' curated cross-state topic trackers (e.g. artificial intelligence, youth online safety, platform accountability, cybersecurity, cryptocurrency, data privacy, local government & preemption) -- the entry point for "what subjects does Bill Commons track across all 50 states + DC" and "how do I get every bill in one". Each topic is a title/subject membership rule tuned for precision over recall, with a live bill_count and how_to_fetch_bills. This tool does not itself return bill rows -- pair it with search_legislation or the REST API's /topics/{slug} for the bills.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_legislationSearch FULL BILL TEXT -- not just known-bill-number lookup.No findings
Why it is in this group
- The name "search_legislation" says "search": a word for reading.
Description, as the server wrote it Search FULL BILL TEXT -- not just known-bill-number lookup. `q` is matched against titles, descriptions, AND ingested document text via Postgres websearch_to_tsquery (supports "quoted phrases", OR, and -exclusion, same syntax as a search engine), with a fuzzy pg_trgm title-similarity fallback when the exact query has no hits. `q` can ALSO be a bill number ("HB 123", "H.B. 123", "hb123" all match) and that fast path is tried first. Optionally filter by jurisdiction (two-letter state code or name), chamber, and status. For a curated cross-state slice of a subject (e.g. "every AI bill in the country") rather than an ad-hoc keyword search, call list_topics first -- its membership rules also match on structured subject tags this full-text search does not see.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http bill-commons https://mcp.billcommons.org/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__bill-commons__search_legislation",
"mcp__bill-commons__get_bill_record",
"mcp__bill-commons__compare_bill_versions",
"mcp__bill-commons__find_similar_bills",
"mcp__bill-commons__get_vote_details",
"mcp__bill-commons__get_jurisdiction_coverage",
"mcp__bill-commons__get_active_sessions",
"mcp__bill-commons__list_topics"
],
"ask": [
"mcp__bill-commons__trace_legislative_history",
"mcp__bill-commons__build_legislative_evidence_packet"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bill-commons. Review it before you use it.