@pipeworx/alabama-code
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/alabama-code’s. Install: one-click buttons
Connect to just the @pipeworx/alabama-code pack
https://gateway.pipeworx.io/alabama-code/mcp — only @pipeworx/alabama-code’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 2
Code of Alabama 1975 (Alabama state statutes) — full section text by citation, real full-text topic search, and amendment history.
Tools
al_statute(citation)— full current text of one Code of Alabama section (e.g."13A-6-2", murder), with the section title, the Legislature’s own amendment-history citation list (amendment_history), repealed/transferred disposition, previous/next-section neighbors, and — when an Act has already been enacted but is not yet in force — a forward-lookingpending_versioncarrying its future effective date and text.al_search(query, limit?)— REAL full-text search over actual section body text (e.g."landlord","concealed pistol permit"), run live against the Alabama Legislature’s own search index. Unlike several sibling state-code packs, this is not limited to captions/catchlines.
Auth
Keyless.
Data sources
https://alison.legislature.state.al.us/graphql— the Alabama Legislature’s own public GraphQL API, confirmed keyless and reachable from Cloudflare Worker egress (edge-probed, not just laptop-tested). Both tools call it live, per request; nothing is baked.query codeOfAlabamaSection($displayId: String!)— one section’s current (and, when present, pending-future) text, title, and amendment-history string, pluscodeOfAlabamaNeighborsfor previous/next citation.query searchCodeOfAlabama($query: String!, $limit: Int, $offset: Int)— full-text search (fullTextQueryargument) over section bodycontent, not just titles; returns acountof total matches independent oflimit.
Trap avoided: there are TWO graphql-shaped hosts, only one of which serves
statute data. cms.alison.legislature.state.al.us also answers POST
/graphql (it serves the site’s marketing/CMS content — page copy, the
logo asset, etc.) and returns a plausible 400 (Cannot query field "codesOfAlabama" on type "Query") for every statute query, because it’s a
different schema on a different service, not an error about this pack’s
query shape. The real statute API lives on the main site’s own domain,
alison.legislature.state.al.us/graphql (found in a plain inline URL
reference inside the page’s own HTML — not something a build-config
guess would find — and confirmed by pulling the query text for
codeOfAlabamaSection/searchCodeOfAlabama straight out of the Next.js
chunk bundle that defines them).
Trap avoided: the GraphQL endpoint answers HTTP 200 on a query-level
error. A malformed or schema-mismatched query comes back as a 200 with a
body-level errors array — not a 4xx. al_statute/al_search read the body
and check for errors explicitly and throw a LOUD error naming the GraphQL
message; neither tool ever reshapes that into found: false.
Capabilities — three available, one is forward-looking instead of backward
- Citation lookup —
al_statute. - Topic/full-text search —
al_search, over real section body text (verified live:"landlord"matches 88 sections, including ones whose title never says “landlord”). - Amendments/enactment history — AVAILABLE. Every in-force section’s
historyfield from the API is the Legislature’s own Acts citation list (e.g."(Acts 1977, No. 607, p. 812, §2005; Act 2016-29, §2.)"), returned asamendment_historywith§/&entities decoded. - Historical version (the text as it read before an amendment) — NOT
AVAILABLE going backward. ALISON publishes the CURRENT in-force text only:
no per-year archive, no “view as of” date picker, and
codeOfAlabamaSectionnever returns more than one past row for a citation (checked live on several amended sections). It DOES sometimes return a future row — when the Legislature has already enacted an amendment that is not yet in force, the same query returns a second version whoseeffectiveDateis the date it takes over.al_statutesurfaces that aspending_version(verified live on26-2-2, effective 2027-01-01 under Act 2026-488) and says explicitly that this is forward-looking, not a historical archive.
Source and shape — read this before touching the parser
alison.legislature.state.al.us (“ALISON”) is a Next.js single-page app — the
August state-law survey (docs/state-law-probe.md) correctly flagged the
HTML shell as “client-rendered or bot-walled” (it carries no statute text at
all), and stopped one layer too early, the same way the survey was wrong on
South Dakota and Utah. The SPA is fed by a keyless, public GraphQL API
(not REST, unlike South Dakota/North Dakota) — found by downloading the
site’s own /_next/static/chunks/*.js bundles and grepping for
query codeOfAlabamaSection, which is where the exact query text used in
this pack’s SECTION_QUERY/SEARCH_QUERY constants comes from verbatim.
The citation shape is title-chapter-section (13A-6-2); titles can carry a
trailing letter (13A, 26-2A). al_statute’s regex accepts 2 or 3
dash-separated segments plus an optional decimal suffix, matching the
sibling packs’ validation shape.
No baked index exists for this pack, unlike mcps/south-dakota-code or
mcps/north-dakota-code: ALISON’s own searchCodeOfAlabama query is a real
full-text search over section body content, so there is nothing to bake —
building an offline index would only add staleness (the Code gains pending
future-effective rows on its own legislative schedule) with no accuracy
benefit over the live call.
Known gaps
- No per-year historical archive — see “Historical version” above.
al_searchis full-text over body content but still keyword-shaped (not a phrase/boolean query language) — it is the Legislature’s own search backend, not Pipeworx’s.
Tools
- al_statute — Get the FULL TEXT of a section of the Code of Alabama 1975 — Alabama state law — by citation. “13A-6-2” is murder; “35-9A-204” covers a landlord’s duty to maintain the premises. Accepts natural forms:
- al_search — Search the Code of Alabama 1975 BY TOPIC or keyword rather than citation — “landlord security deposit”, “concealed pistol permit”, “homicide”. This is a REAL FULL-TEXT search over actual section body
Tools
al_search— Search the Code of Alabama 1975 BY TOPIC or keyword rather than citation — landlord security deposit , concealed pistol permit , homicide . This is a REAL FULL-TEXT search over actual section body texal_statute— Get the FULL TEXT of a section of the Code of Alabama 1975 — Alabama state law — by citation. 13A-6-2 is murder; 35-9A-204 covers a landlord's duty to maintain the premises. Accepts natural forms: 13A