Skip to content

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.

Changes · 2

10 tools: 2 change things and 8 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.