Legislation
by delilahusa.com · remote · no sign-in to list tools · v0.7.2 · published by com.delilahusa
U.S. bills, roll-call votes, legislators and 2026 elections for all 50 states, D.C. and Congress.
41 tools: 3 change things and 38 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads38Claude 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 legislation https://mcp.delilahusa.com/Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
41 tools
Changes things 3Claude Code: ask
get_statuteOne section of law with full text and its place in the code (GET /v1/statutes/sections/{section_id}, or by citation via GET /v1/statutes/lookup).No findings
Why it is in this group
- The name "get_statute" says "get": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it One section of law with full text and its place in the code (GET /v1/statutes/sections/{section_id}, or by citation via GET /v1/statutes/lookup). Give section_id from a search or a bill/measure link, or state + citation exactly as the code prints it (e.g. '39:4-50', '790.01', '18-3-102'). Set include_bills:true to also return the bills that amend, create, repeal or cite the section. Only states whose code is loaded resolve to section text (see list_statute_coverage); a link to a section we hold carries resolved:true and the text, otherwise just the citation as written.
manage_webhooksManage the key's webhook subscriptions (/v1/webhooks).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.
Description, as the server wrote it Manage the key's webhook subscriptions (/v1/webhooks). action:'list' is read-only. 'create' REGISTERS a URL that Delilah will POST to on the chosen events — it changes the account, so it requires confirm:true and the user's explicit go-ahead. 'test' queues a sample delivery to an existing subscription. 'delete' removes one (confirm:true). Events: bill_introduced, status_change, vote_recorded, text_updated, passed, vetoed, signed, amendment_added. Optional filters: states (postal codes), subjects.
search_statutesFull-text search of a state's codified law (GET /v1/statutes/search).No findings
Why it is in this group
- The name "search_statutes" says "search": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
Description, as the server wrote it Full-text search of a state's codified law (GET /v1/statutes/search). Use for 'what does the law say about X' and to find the section a bill or ballot measure changes. Returns matching sections with headings and excerpts; fetch the whole section with get_statute. Only states whose code is loaded resolve to section text (see list_statute_coverage); a link to a section we hold carries resolved:true and the text, otherwise just the citation as written.
Only reads 38Claude Code: allow
get_ballot_measureBallot measures (GET /v1/measures): the list for a state, or one measure by its number (e.g.No findings
Why it is in this group
- The name "get_ballot_measure" says "get": a word for reading.
Description, as the server wrote it Ballot measures (GET /v1/measures): the list for a state, or one measure by its number (e.g. 'Amendment 1') with full text, summary and official source URL. Use for 'what's on the ballot in X' and 'what does Amendment N do'.
get_billFetch a single bill by its numeric bill_id (GET /v1/bills/{bill_id}), optionally merging in sub-resources: votes (roll calls with tallies), sponsors, history (action timeline), tex…No findings
Why it is in this group
- The name "get_bill" says "get": a word for reading.
Description, as the server wrote it Fetch a single bill by its numeric bill_id (GET /v1/bills/{bill_id}), optionally merging in sub-resources: votes (roll calls with tallies), sponsors, history (action timeline), texts (version metadata), amendments, subjects, analyses (staff analyses), calendar (scheduled events), citations (statutes the bill touches), referrals (committee referrals), sast (same-as / similar-to companion bills in the other chamber or other states), supplements (fiscal notes and summaries). analyses and citations are populated only for the deeper-coverage states. Each include is a separate API call, so ask only for what you need. Pass detail:true to get everything in one round trip instead. Get a bill_id from search_bills or semantic_search_bills. status_id values: 1=Introduced, 2=In Committee, 3=Passed One Chamber, 4=Passed Both Chambers, 5=Signed into Law, 6=Vetoed, 7=Failed/Dead, 8=Chaptered. Aggregate buckets: passed={4,5,8}, failed={6,7}, alive={1,2,3}.
get_bill_diffCompare two versions of a bill's text (GET /v1/bills/{bill_id}/diff): a unified diff plus similarity, added/removed line and character counts, and changed-section highlights.No findings
Why it is in this group
- The name "get_bill_diff" says "get": a word for reading.
Description, as the server wrote it Compare two versions of a bill's text (GET /v1/bills/{bill_id}/diff): a unified diff plus similarity, added/removed line and character counts, and changed-section highlights. Get the two version ids from get_bill with include:['texts'] — each text row's `text_id`. Pass them as `from` (the earlier version) and `to` (the later version). Diffs are precomputed, so only bills that have more than one text version return one.
get_bill_statutesThe sections of existing law a bill amends, creates, repeals or cites (GET /v1/bills/{bill_id}/statutes), classified by how it touches each, with the current text of sections we ho…No findings
Why it is in this group
- The name "get_bill_statutes" says "get": a word for reading.
Description, as the server wrote it The sections of existing law a bill amends, creates, repeals or cites (GET /v1/bills/{bill_id}/statutes), classified by how it touches each, with the current text of sections we hold. Use for 'what current law does this bill change'. Get bill_id from search_bills. Only states whose code is loaded resolve to section text (see list_statute_coverage); a link to a section we hold carries resolved:true and the text, otherwise just the citation as written.
get_bill_textThe cleaned plain text of one bill-text version (GET /v1/texts/{text_id}), entities decoded, ready to quote or summarize.No findings
Why it is in this group
- The name "get_bill_text" says "get": a word for reading.
Description, as the server wrote it The cleaned plain text of one bill-text version (GET /v1/texts/{text_id}), entities decoded, ready to quote or summarize. Get text_id from get_bill with include:['texts'] (each version has a date and type). Texts longer than 40,000 characters are clipped with a '[truncated]' marker.
get_bill_text_historyTimeline of all computed diffs between successive text versions of one bill (GET /v1/bills/{bill_id}/changes): what changed, when, and how much.No findings
Why it is in this group
- The name "get_bill_text_history" says "get": a word for reading.
Description, as the server wrote it Timeline of all computed diffs between successive text versions of one bill (GET /v1/bills/{bill_id}/changes): what changed, when, and how much. Use get_bill_diff for one specific pair of versions. Get bill_id from search_bills or semantic_search_bills.
get_candidateFetch one election candidate by id (GET /v1/candidates/{id}): their party, office, district and cycle, plus an FEC filer id where the campaign has filed and a Bioguide id for sitti…No findings
Why it is in this group
- The name "get_candidate" says "get": a word for reading.
Description, as the server wrote it Fetch one election candidate by id (GET /v1/candidates/{id}): their party, office, district and cycle, plus an FEC filer id where the campaign has filed and a Bioguide id for sitting members of Congress. When people_id is set, the candidate has a legislative voting record — pass it to get_legislator or get_legislator_scorecard to go from candidate to voting history in one hop. Get an id from list_candidates.
get_candidate_photoThe URL of a candidate's official portrait (GET /v1/photos/{candidate_id} returns the image bytes).No findings
Why it is in this group
- The name "get_candidate_photo" says "get": a word for reading.
Description, as the server wrote it The URL of a candidate's official portrait (GET /v1/photos/{candidate_id} returns the image bytes). Sources are official state-legislature and congressional portraits, public-domain and licensed images only — never a third party's photo library — and each carries a license and attribution string that MUST be shown when the license requires it (Wikimedia CC BY). Returns null when the candidate has no accepted portrait — which is the COMMON case: only about a tenth of the 2026 field has one (11%), so design for an initials-avatar default. Candidate rows from list_candidates and get_midterms already include photo_url, so call this only when you have just an id.
get_changesNear-real-time feed of what changed (GET /v1/changes).No findings
Why it is in this group
- The name "get_changes" says "get": a word for reading.
Description, as the server wrote it Near-real-time feed of what changed (GET /v1/changes). Poll with since=<ISO timestamp> to get everything newer than your cursor; with no since it defaults to the last hour. Reason types include NewBill, StatusChange, Text, Vote and Amendment. Use this for monitoring and incremental sync — 'what moved in Florida since yesterday' — rather than re-scanning search_bills.
get_committeeFetch a committee by committee_id (GET /v1/committees/{committee_id}), optionally merging in members (its roster, with roles) and hearings (its scheduled meetings).No findings
Why it is in this group
- The name "get_committee" says "get": a word for reading.
Description, as the server wrote it Fetch a committee by committee_id (GET /v1/committees/{committee_id}), optionally merging in members (its roster, with roles) and hearings (its scheduled meetings). Find a committee_id with list_committees.
get_coveragePer-state depth snapshot (GET /v1/coverage): how COMPLETE each jurisdiction's data is — bill counts, the share of bills holding at least one vote, text or sponsor, and whether the …No findings
Why it is in this group
- The name "get_coverage" says "get": a word for reading.
Description, as the server wrote it Per-state depth snapshot (GET /v1/coverage): how COMPLETE each jurisdiction's data is — bill counts, the share of bills holding at least one vote, text or sponsor, and whether the legislature is currently in session. Use it before drawing conclusions from a thin result set, to tell 'no such bills' apart from 'this state is thinly covered'. Read the completeness ratios rather than the raw percentages: most bills die in committee without ever getting a roll call, so a low pct_with_votes usually reflects the legislature, not a gap in the data. Served from a materialised snapshot; `computed_at` gives its age.
get_legislatorFetch a legislator's profile by people_id (GET /v1/legislators/{people_id}), optionally merging in votes (every roll call they are recorded on, newest first, with their individual …No findings
Why it is in this group
- The name "get_legislator" says "get": a word for reading.
Description, as the server wrote it Fetch a legislator's profile by people_id (GET /v1/legislators/{people_id}), optionally merging in votes (every roll call they are recorded on, newest first, with their individual position: 1=Yea, 2=Nay, 3=Not Voting, 4=Absent) and bills (legislation they sponsor, with sponsor_type_id 1=primary, 2=cosponsor). Find a people_id with list_legislators or from a bill's sponsors. Corpus is 2026-forward only.
get_legislator_scorecardOne-call voting and sponsorship profile for a legislator (GET /v1/legislators/{people_id}/scorecard): participation, party-line alignment, bills sponsored and passed, notable votes…No findings
Why it is in this group
- The name "get_legislator_scorecard" says "get": a word for reading.
Description, as the server wrote it One-call voting and sponsorship profile for a legislator (GET /v1/legislators/{people_id}/scorecard): participation, party-line alignment, bills sponsored and passed, notable votes. This is the tool for 'how does X vote' or 'is X effective'. Get people_id from list_legislators (q=name).
get_measure_statutesThe sections of existing law a 2026 ballot measure amends, creates, repeals or cites (GET /v1/measures/{state}/{number}/statutes).No findings
Why it is in this group
- The name "get_measure_statutes" says "get": a word for reading.
Description, as the server wrote it The sections of existing law a 2026 ballot measure amends, creates, repeals or cites (GET /v1/measures/{state}/{number}/statutes). Use for 'which laws does Prop X / Question Y change'. Read from the measure's official text: constitutional amendments cite the constitution (not loaded), and a measure whose text is not yet published returns nothing. Treat the list as a floor. Only states whose code is loaded resolve to section text (see list_statute_coverage); a link to a section we hold carries resolved:true and the text, otherwise just the citation as written.
get_midtermsThe election slate for 2026-11-03 (GET /v1/midterms): races, candidates and ballot measures per state, with official results where available.No findings
Why it is in this group
- The name "get_midterms" says "get": a word for reading.
Description, as the server wrote it The election slate for 2026-11-03 (GET /v1/midterms): races, candidates and ballot measures per state, with official results where available. All data is official state election-office and FEC content collected by Delilah — no third-party attribution is required. live_results carries ONE ENTRY PER CONTEST, each with `contest` (e.g. primary:DEM, runoff:REP) and `party`: a closed primary returns each party separately and vote_pct is the share of THAT party's ballot, so never compare or rank candidates across two contests. Use for 'who is running for X' and results questions. Never call or project a race; report counts exactly as reported.
get_roll_callFetch a roll call by roll_call_id (GET /v1/votes/{roll_call_id}): the motion, chamber, date and yea/nay/absent tallies.No findings
Why it is in this group
- The name "get_roll_call" says "get": a word for reading.
Description, as the server wrote it Fetch a roll call by roll_call_id (GET /v1/votes/{roll_call_id}): the motion, chamber, date and yea/nay/absent tallies. Add include:['details'] to also pull how every individual member voted (vote_id 1=Yea, 2=Nay, 3=Not Voting, 4=Absent) — this is the tool for 'how did each legislator vote on this'. Get a roll_call_id from get_bill with include:['votes'].
get_session_breakdownBill count per status (by:'status', on the status_id ladder) or per subject (by:'subject') for one session (GET /v1/sessions/{id}/status-counts or /subject-counts).No findings
Why it is in this group
- The name "get_session_breakdown" says "get": a word for reading.
Description, as the server wrote it Bill count per status (by:'status', on the status_id ladder) or per subject (by:'subject') for one session (GET /v1/sessions/{id}/status-counts or /subject-counts). Get session_id from list_sessions. status_id values: 1=Introduced, 2=In Committee, 3=Passed One Chamber, 4=Passed Both Chambers, 5=Signed into Law, 6=Vetoed, 7=Failed/Dead, 8=Chaptered. Aggregate buckets: passed={4,5,8}, failed={6,7}, alive={1,2,3}.
get_session_dashboardHeadline counts for one legislative session (GET /v1/sessions/{id}/dashboard): bills filed, passed, signed, vetoed, roll calls, active legislators.No findings
Why it is in this group
- The name "get_session_dashboard" says "get": a word for reading.
Description, as the server wrote it Headline counts for one legislative session (GET /v1/sessions/{id}/dashboard): bills filed, passed, signed, vetoed, roll calls, active legislators. Start here for 'how is the 2026 Florida session going'. Get session_id from list_sessions.
get_session_sponsor_statsLegislators ranked by bills sponsored and passed in one session (GET /v1/sessions/{id}/sponsor-stats).No findings
Why it is in this group
- The name "get_session_sponsor_stats" says "get": a word for reading.
Description, as the server wrote it Legislators ranked by bills sponsored and passed in one session (GET /v1/sessions/{id}/sponsor-stats). Each row has bills_sponsored, bills_primary, bills_passed, bills_primary_passed and pass_rate (passed = status 4, 5 or 8). This is the one call for 'who is most active or effective this session' and 'which senator passed the most bills': set chamber and sort:'passed' (or 'primary_passed' to count only bills they carried). Committees filed as sponsors are excluded by default. Get session_id from list_sessions.
get_session_vote_participationHow many roll calls each legislator voted in versus missed during one session (GET /v1/sessions/{id}/vote-participation).No findings
Why it is in this group
- The name "get_session_vote_participation" says "get": a word for reading.
Description, as the server wrote it How many roll calls each legislator voted in versus missed during one session (GET /v1/sessions/{id}/vote-participation). Use for attendance questions. Get session_id from list_sessions.
get_trending_billsBills with the most news coverage in the window (GET /v1/trending), optionally for one state.No findings
Why it is in this group
- The name "get_trending_bills" says "get": a word for reading.
Description, as the server wrote it Bills with the most news coverage in the window (GET /v1/trending), optionally for one state. Use for 'what's in the news' or 'hot bills right now'. Returns bill summaries with mention counts; call get_bill for detail.
get_usageThe current key's tier, monthly cap, requests used and remaining, and when the period resets (GET /v1/_meta/usage).No findings
Why it is in this group
- The name "get_usage" says "get": a word for reading.
Description, as the server wrote it The current key's tier, monthly cap, requests used and remaining, and when the period resets (GET /v1/_meta/usage). Call this when a request is rate-limited (HTTP 429) or the user asks about their plan.
get_weekly_stage_breakdownOne row per stage with the number of bills whose latest action landed there in the window (GET /v1/bills-weekly-breakdown).No findings
Why it is in this group
- The name "get_weekly_stage_breakdown" says "get": a word for reading.
Description, as the server wrote it One row per stage with the number of bills whose latest action landed there in the window (GET /v1/bills-weekly-breakdown). All jurisdictions combined. Use for a national 'how much moved this week' number; use get_session_dashboard for one state.
keyword_search_billsKeyword search where EVERY term must appear (GET /v1/search/bills).No findings
Why it is in this group
- The name "keyword_search_bills" says "search": a word for reading.
Description, as the server wrote it Keyword search where EVERY term must appear (GET /v1/search/bills). Use when the user gives specific words that all have to be present, e.g. ['short-term rental', 'tax']. Prefer semantic_search_bills for questions and search_bills for structured filters. Up to 10 terms. Returns bill summaries plus pagination. Corpus is 2026-forward only.
list_bills_by_stageBills whose LATEST action in the window falls in a stage (GET /v1/bills-by-stage): introduced, committee, passed, executive (with the governor, signed, or vetoed), amendments, othe…No findings
Why it is in this group
- The name "list_bills_by_stage" says "list": a word for reading.
Description, as the server wrote it Bills whose LATEST action in the window falls in a stage (GET /v1/bills-by-stage): introduced, committee, passed, executive (with the governor, signed, or vetoed), amendments, other. Fleet-wide across all jurisdictions — there is no state filter, so filter the rows by state_id or state_name yourself. Classified from the action text, not status_id. Use for 'what passed this week' or 'what reached the governor'. Stage values are lowercase.
list_candidatesSearch the election-candidate directory (GET /v1/candidates): people running for office.No findings
Why it is in this group
- The name "list_candidates" says "list": a word for reading.
Description, as the server wrote it Search the election-candidate directory (GET /v1/candidates): people running for office. Filters combine with AND. Roughly a third carry an FEC filer id and sitting members of Congress carry a Bioguide id; both are null otherwise. Rows also carry people_id where the person has a legislative voting record — pass it to get_legislator / get_legislator_scorecard to go from candidate to voting history in one hop. Covers STATE and federal candidates. Pass a candidate id to get_candidate for the full record.
list_committeesList legislative committees (GET /v1/committees), filterable by jurisdiction, chamber, or name search.No findings
Why it is in this group
- The name "list_committees" says "list": a word for reading.
Description, as the server wrote it List legislative committees (GET /v1/committees), filterable by jurisdiction, chamber, or name search. Returns the committee_id values that get_committee needs.
list_districtsDistrict metadata by state and type (GET /v1/districts): congressional, state senate, state house.No findings
Why it is in this group
- The name "list_districts" says "list": a word for reading.
Description, as the server wrote it District metadata by state and type (GET /v1/districts): congressional, state senate, state house. Pass district_id with boundary:true to get the polygon as GeoJSON (GET /v1/districts/{id}/boundary) — it is large, so set simplify (degrees, e.g. 0.01) to shrink it. Match districts NUMERICALLY (district_number), never by label text.
list_hearingsScheduled committee hearings across committees (GET /v1/hearings), filterable by jurisdiction and start date.No findings
Why it is in this group
- The name "list_hearings" says "list": a word for reading.
Description, as the server wrote it Scheduled committee hearings across committees (GET /v1/hearings), filterable by jurisdiction and start date. Use this to answer 'what is being heard this week' or to track when a committee next meets. For hearings on one specific committee use get_committee with include:['hearings']; for one specific bill use get_bill with include:['calendar'].
list_legislatorsSearch or list legislators (GET /v1/legislators) by jurisdiction, chamber, party, district, or name.No findings
Why it is in this group
- The name "list_legislators" says "list": a word for reading.
Description, as the server wrote it Search or list legislators (GET /v1/legislators) by jurisdiction, chamber, party, district, or name. This is how you turn a name into the people_id that get_legislator needs. Filters combine with AND.
list_session_legislatorsEvery legislator who served in one session (GET /v1/sessions/{id}/legislators), with people_id.No findings
Why it is in this group
- The name "list_session_legislators" says "list": a word for reading.
Description, as the server wrote it Every legislator who served in one session (GET /v1/sessions/{id}/legislators), with people_id. Use list_legislators for the current roster by state; use this for a specific past or special session. Get session_id from list_sessions.
list_sessionsLegislative sessions (GET /v1/sessions): regular and special sessions with their years, start/sine-die dates and a session_id.No findings
Why it is in this group
- The name "list_sessions" says "list": a word for reading.
Description, as the server wrote it Legislative sessions (GET /v1/sessions): regular and special sessions with their years, start/sine-die dates and a session_id. Use this to resolve which session a bill belongs to, to find the current session for a state, or to pass session_id as a filter to search_bills. Omit `state` to list every jurisdiction's sessions. Corpus is 2026-forward only.
list_statesThe jurisdiction directory (GET /v1/states): the 50 states, D.C.No findings
Why it is in this group
- The name "list_states" says "list": a word for reading.
Description, as the server wrote it The jurisdiction directory (GET /v1/states): the 50 states, D.C. and the U.S. Congress with their state_id, 2-letter code and full name. Returns the full list (52 rows) so you can resolve a name to a code or enumerate everything the corpus covers. For how COMPLETE each jurisdiction's data is, use get_coverage instead.
list_statute_coverageWhich jurisdictions' codified law is loaded, and how big and current it is (GET /v1/statutes/coverage): per state the number of codes, sections, bill links and the edition it is cu…No findings
Why it is in this group
- The name "list_statute_coverage" says "list": a word for reading.
Description, as the server wrote it Which jurisdictions' codified law is loaded, and how big and current it is (GET /v1/statutes/coverage): per state the number of codes, sections, bill links and the edition it is current through. Pass state to list that state's codes (GET /v1/statutes/codes) — the code_id values used by get_statute lookups. Call this first to know whether a state's statutes are available.
list_subjectsThe raw subject taxonomy with per-subject bill counts (GET /v1/subjects).No findings
Why it is in this group
- The name "list_subjects" says "list": a word for reading.
Description, as the server wrote it The raw subject taxonomy with per-subject bill counts (GET /v1/subjects). Subjects are the fine-grained categories the legislatures themselves assign to bills — narrower and more numerous than the curated topic slugs from list_topics. Use this to find a subject_id to filter search_bills by, or to gauge what a jurisdiction is legislating on. Scope with `state` and narrow with `q`.
list_topicsThe canonical topic taxonomy with per-topic bill counts (GET /v1/topics).No findings
Why it is in this group
- The name "list_topics" says "list": a word for reading.
Description, as the server wrote it The canonical topic taxonomy with per-topic bill counts (GET /v1/topics). Call this first to find the right slug for the topic filter on search_bills, instead of guessing one. Pass a slug to get that topic's detail and a sample of the raw subject names folded into it (GET /v1/topics/{slug}); to get the topic's actual bills, use search_bills with topic=<slug>.
search_billsSearch or list legislation with structured filters (GET /v1/bills).No findings
Why it is in this group
- The name "search_bills" says "search": a word for reading.
Description, as the server wrote it Search or list legislation with structured filters (GET /v1/bills). Use this when you know the jurisdiction, sponsor, topic, or status you want. Every filter is optional and they combine with AND. A bill number typed into q (e.g. 'HB 1', 'SB0002') matches that bill directly. Returns bill summaries plus pagination; call get_bill for the full record. Corpus is 2026-forward only. status_id values: 1=Introduced, 2=In Committee, 3=Passed One Chamber, 4=Passed Both Chambers, 5=Signed into Law, 6=Vetoed, 7=Failed/Dead, 8=Chaptered. Aggregate buckets: passed={4,5,8}, failed={6,7}, alive={1,2,3}.
semantic_search_billsVector search over the full text of every bill (GET /v1/search/semantic): describe what you want in plain English — 'protecting kids from social media', 'limits on rent increases' …No findings
Why it is in this group
- The name "semantic_search_bills" says "search": a word for reading.
Description, as the server wrote it Vector search over the full text of every bill (GET /v1/search/semantic): describe what you want in plain English — 'protecting kids from social media', 'limits on rent increases' — and get the closest bills with a match_score. Prefer this over search_bills for questions and topics; prefer search_bills for a known bill number, sponsor, or status filter, and keyword_search_bills for exact terms that must all appear. Returns bill_id, bill_number, title, description, state_abbr, status_id. Corpus is 2026-forward only. status_id values: 1=Introduced, 2=In Committee, 3=Passed One Chamber, 4=Passed Both Chambers, 5=Signed into Law, 6=Vetoed, 7=Failed/Dead, 8=Chaptered. Aggregate buckets: passed={4,5,8}, failed={6,7}, alive={1,2,3}.
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 0.7.2. Values in angle brackets are yours to fill in.
claude mcp add --transport http legislation https://mcp.delilahusa.com/Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__legislation__search_bills",
"mcp__legislation__semantic_search_bills",
"mcp__legislation__get_bill",
"mcp__legislation__get_bill_diff",
"mcp__legislation__keyword_search_bills",
"mcp__legislation__get_bill_text",
"mcp__legislation__get_bill_text_history",
"mcp__legislation__list_legislators",
"mcp__legislation__get_legislator",
"mcp__legislation__get_roll_call",
"mcp__legislation__get_legislator_scorecard",
"mcp__legislation__list_committees",
"mcp__legislation__get_committee",
"mcp__legislation__list_hearings",
"mcp__legislation__get_changes",
"mcp__legislation__list_topics",
"mcp__legislation__list_subjects",
"mcp__legislation__list_sessions",
"mcp__legislation__get_session_dashboard",
"mcp__legislation__get_session_sponsor_stats",
"mcp__legislation__get_session_vote_participation",
"mcp__legislation__list_session_legislators",
"mcp__legislation__get_session_breakdown",
"mcp__legislation__list_states",
"mcp__legislation__get_coverage",
"mcp__legislation__get_trending_bills",
"mcp__legislation__list_bills_by_stage",
"mcp__legislation__get_weekly_stage_breakdown",
"mcp__legislation__list_candidates",
"mcp__legislation__get_candidate",
"mcp__legislation__get_midterms",
"mcp__legislation__get_ballot_measure",
"mcp__legislation__list_districts",
"mcp__legislation__get_candidate_photo",
"mcp__legislation__list_statute_coverage",
"mcp__legislation__get_bill_statutes",
"mcp__legislation__get_measure_statutes",
"mcp__legislation__get_usage"
],
"ask": [
"mcp__legislation__search_statutes",
"mcp__legislation__get_statute",
"mcp__legislation__manage_webhooks"
],
"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 legislation. Review it before you use it.