Server data from the Official MCP Registry
Arkansas Code of 1987 — state statutes by citation and by topic search. Fleet #2881, closing the…
About
Arkansas Code of 1987 — state statutes by citation and by topic search. Fleet #2881, closing the…
Remote endpoints: streamable-http: https://gateway.pipeworx.io/arkansas-code/mcp
Security Report
This is a keyless Arkansas Code lookup MCP server that proxies a public-domain statute mirror over HTTP and reads a baked-in catchline index, with no credential handling, shell execution, or data exfiltration patterns visible in the reviewed material. The main considerations are that the snapshot is frozen at 2020-11-06 and the README describes shared gateway meta-tools being exposed on the pack endpoint, both of which are disclosed rather than hidden. The visible code is a data file and documentation; the source of the tool handlers and the remainder of the index file were truncated and could not be reviewed. Supply chain analysis found 1 known vulnerability in dependencies (0 critical, 1 high severity).
3 files analyzed · 4 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Install & Connect
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
Documentation
View on GitHubFrom the project's GitHub README.
@pipeworx/arkansas-code
Arkansas Code of 1987 — section lookup by citation, and topic/keyword search
over official catchlines. Fleet #2881, one of the four remaining states with
no <state>-code pack (Mississippi now has one too — fleet #2883). Keyless.
Part of Pipeworx — an MCP gateway connecting AI agents to 1784+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
Tools
ar_statute(citation)— the text of one Ark. Code Ann. section by citation ("5-10-101", capital murder;"4-70-101";"Ark. Code Ann. § 5-10-101"). Returns the catchline, the operative statutory text, theHistory.line (the Acts that enacted/amended it), other legislative notes when present, AND alater_actsoverlay — every act the Arkansas legislature's own index shows touching this exact citation since the 2020-11-06 snapshot (fleet #2906, see "The overlay" below). Case-law annotations are deliberately excluded — they can run to hundreds of KB per heavily-litigated section.ar_search(query, limit?)— topic/keyword search over official section catchlines across all 28 titles (e.g."capital murder","security deposit"). Not full-text search — see "Known gaps".
Auth
Keyless. No signup, no login, on either side of the call.
Data source, and why this isn't a Lexis call
The official Arkansas Code is published through LexisNexis's "free public
access" portal (lexisnexis.com/hottopics/arcode -> advance.lexis.com) —
verified live (2026-10-09): the landing page needs real browser JS to pass a
cookie/fingerprint check, and granting it cookies anyway just 302s to an
authentication endpoint (/lnaccess/mip/authn?...) that answers
HTTP 405 with x-amzn-waf-action: captcha. codes.findlaw.com/ar/ and
law.justia.com/codes/arkansas/ both serve their actual title/section pages
behind a Cloudflare bot challenge (cf-mitigated: challenge, HTTP 403).
-
https://unicourt.github.io/cic-code-ar/ — a GitHub Pages copy of the Arkansas Code, built by UniCourt on behalf of Public.Resource.Org from the Code's own officially-released RTF volumes (
archive.org/download/gov.ar.code), "in the public domain, NO RIGHTS RESERVED" per that repo's own README. One title per HTML page (gov.ar.code.title.{NN}.html, zero-padded to 2 digits, 28 titles), fetched LIVE perar_statutecall — this pack proxies it, it does not ship a copy of the Code in the repo (mirror-needs-grant-proxy-does-notin the Pipeworx CLAUDE.md licence section).The underlying statutory TEXT is public law regardless of what any publisher's licence says about its own rendering — enacted law carries no copyright (Banks v. Manchester, 128 U.S. 244 (1888); Veeck v. SBCCI, 293 F.3d 791 (5th Cir. 2002) (en banc)).
THE HONEST LIMIT. This source carries three releases — r76 (2020-04-20),
r77 (2020-08-18), r78 (2020-11-06), confirmed live via the GitHub contents
API (2026-10-09) — and this pack uses r78, the newest. It is a static
snapshot, not a continuously updated feed: Arkansas amendments enacted after
2020-11-06 are not reflected. Every response carries current_through
and data_as_of: "2020-11-06" rather than defaulting to "now". For anything
enacted since, verify against the official LexisNexis-hosted Code or the
Arkansas Code Revision Commission.
(This pack originally shipped against a 2012 Public.Resource.Org XML scan —
the only Worker-reachable text known at the time. A same-day follow-up
pointed at this newer UniCourt mirror, 8+ years fresher; the switch is
confirmed live: Ark. Code Ann. § 5-10-101's History. line now runs through
"2019, No. 910, § 666" versus 2011 in the old source.)
The overlay: later acts, never merged (fleet #2906)
Bruce kept ar_statute on the frozen 2020-11-06 snapshot ("we'll need to
figure something out") rather than chase a fully reconciled current code.
This overlay is the cheapest honest improvement on top of that decision —
design and measurements in docs/current-statute-routes.md (#2902) — and is
the first of three planned (Mississippi and Tennessee follow with their own
home-built indexes once this proves out).
The rule: never rewrite the snapshot text. Only ever ADD a dated, linked
list beside it, explicitly labelled as not merged. ar_statute's response
carries:
later_acts— one entry per act that touched this exact citation since the snapshot date:act_number,session(human-readable, e.g. "2025 - Regular Session, 2025"),link(the act's own PDF),bill(the measure number),flags(any subset ofEC/RP/NS/RN— Emergency Clause / Repealed / New Section / Renumbered),source: "arkleg", andmerged: false. Empty ([]) means the index shows no later act for this citation across every session checked — not that the overlay failed to load (a missing/malformed KV index throws loudly instead, same asar_search's catchline index below).sessions_checked— every biennium/session the index covers, named even whenlater_actsis empty, so a caller can tell "nothing changed" from "we didn't check."later_acts_data_as_of— when the overlay was last baked.date: nullon every act entry, honestly — the source index gives session + act number + PDF link, not a per-act enactment date (that line lives inside each act's own PDF, not in the index); guessing a date from the session's year would be worse than saying so.
Source: the Arkansas General Assembly's own "Code Sections Amended" tool
(arkleg.state.ar.us/Acts/CodeSectionsAmended) calls a keyless endpoint —
/Acts/CodeSection?section=<title>&ddBienniumSession=<session> — that
returns every citation touched in a biennium/session: the citation, the
amending Act's number and PDF link, EC/RP/NS/RN flags, and the bill number.
Confirmed live and from a throwaway wrangler dev --remote edge probe on the
prod Cloudflare account (2026-10-09/10): byte-identical to a laptop curl,
HTTP 200, no bot wall, no JS rendering required. We are calling the index the
state already maintains — the proxy shape (mirror-needs-grant-proxy-does- not in root CLAUDE.md), same as ar_statute's own live fetch above.
A section not found in the Release-78 snapshot but present in the overlay
is flagged specially: ar_statute's found: false response carries
later_acts_if_created — if the legislature's index shows acts against a
citation that does not exist in the 2020 snapshot, that is a signal the
section may have been CREATED after the snapshot date, not necessarily a bad
citation.
For Mississippi and Tennessee (next): reuse, don't re-derive. Arkansas is
the cheap case because the legislature publishes the citation→act index
directly — Mississippi and Tennessee do not (per docs/current-statute-
routes.md), so their overlays need a home-built index crawled from signed-
bill text instead of one state-maintained endpoint. What DOES carry over
directly: the response shape (later_acts/sessions_checked/
later_acts_merged_into_text: false/the "never rewrite text" rule), the
baked-index + KV injection pattern (append new exports to the SAME
src/<xx>-index-data.ts file the catchline index already uses — one file per
pack slug in pack-baked-indexes.json, not a second registry entry), the
session-discovery-over-hardcoding trick (read the live <select> rather than
a fixed session list, so the index self-extends as new sessions are held),
and the scripts/bake-later-acts.mjs → scripts/<xx>-later-acts-refresh.yml
shape for the refresh workflow.
Known gaps
ar_searchmatches official catchlines only, not full statutory text — fetching all 28 multi-MB title pages per query is not viable. A topic discussed inside a section's body but absent from its catchline will not be found.- Every response is explicitly dated to Release 78 (2020-11-06). A pre-r78 (or pre-2012) version of a section's text is not published anywhere free that was found.
Refreshing the baked indexes
src/ar-index-data.ts carries TWO independently-baked tables, both injected
from KV via workers/gateway/src/pack-baked-indexes.json as one combined
_bakedIndex object rather than bundled (fleet #2754: a value-imported
multi-MB table loads into every gateway isolate whether or not it ever
serves this pack):
AR_SECTIONS/AR_TITLES—ar_search's catchline index, 37,369 rows across 28 titles. Rebuild withnode scripts/bake-index.mjs > src/ar-index-data.ts(OVERWRITES the file — see below). Re-run only ifunicourt.github.io/cic-code-arpublishes a release newer than 78.AR_LATER_ACTS/AR_LATER_ACTS_SESSIONS_CHECKED—ar_statute's overlay index (fleet #2906), ~8,900 rows across the 12 sessions held since 2020-11-06. Rebuild withnode scripts/bake-later-acts.mjs >> src/ar-index-data.ts(APPENDS). Re-run after every Arkansas legislative session adjourns and Acts are signed — see.github/workflows/arkansas-later-acts-refresh.ymlfor the scheduled version. Session discovery is automatic (reads the live<select>onarkleg.state.ar.us/Acts/SearchByRange), so a new session shows up with no code change.
Full regen (both tables):
node scripts/bake-index.mjs > src/ar-index-data.ts
node scripts/bake-later-acts.mjs >> src/ar-index-data.ts
Run node ../../scripts/check-baked-indexes.mjs after either (from the repo
root) — it dynamically imports the regenerated file the same way the KV
uploader does, and refuses an empty exported array before it ever reaches
deploy.
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": {
"arkansas-code": {
"url": "https://gateway.pipeworx.io/arkansas-code/mcp"
}
}
}
What this endpoint actually serves
tools/list at https://gateway.pipeworx.io/arkansas-code/mcp returns the tools in the table
above plus the shared Pipeworx meta-tools — ask_pipeworx,
discover_tools, search_within, remember/recall and the rest of the
gateway-wide set. So the tool count you see is larger than this table: a
single-pack endpoint currently lists roughly 30 shared tools alongside the
pack's own. The connection's initialize response states its exact scope, and
is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a
scoped connection answer a question this pack does not cover — via
ask_pipeworx, which routes across the whole catalog — without you adding a
second MCP server. There is currently no way to mount a pack endpoint without
them; if the extra schemas cost you more context than the routing is worth,
connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
Both URLs reach the same gateway and the same 1784+ data sources. The
only difference is which pack's tools are listed directly; ask_pipeworx
reaches all of them from either one.
No MCP client? Call it over HTTP
curl -X POST https://gateway.pipeworx.io/v1/tools/ar_statute \
-H 'Content-Type: application/json' \
-d '{"citation":"5-10-101"}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/ar_statute. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
Standalone (no gateway account)
This package also runs as a local stdio MCP server — no Pipeworx account, no gateway round-trip:
{
"mcpServers": {
"arkansas-code": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-arkansas-code"]
}
}
}
Or run it directly to confirm it starts:
npx -y @pipeworx/mcp-arkansas-code
It speaks MCP over stdin/stdout and answers initialize/tools/list/tools/call
for only this pack's tools — none of the shared meta-tools the gateway
connection above adds. Same source, same tools, no ask_pipeworx routing.
Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
ask_pipeworx({ question: "your question about Arkansas Code data" })
The gateway picks the right tool and fills the arguments automatically.
More
License
MIT
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Worldmonitor
Freeby Koala73 · Developer Tools
Live markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
