@pipeworx/idaho-code

Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/idaho-code’s. Install: one-click buttons

Connect to just the @pipeworx/idaho-code pack

https://gateway.pipeworx.io/idaho-code/mcp — only @pipeworx/idaho-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

Idaho Statutes (Idaho Code) — current statutory text by citation, amendment history, and topic/keyword search over official chapter and section catchlines, sourced live from legislature.idaho.gov.

Tools

  • id_statute({citation}) — full text of one section by citation (e.g. "18-4001", murder), with the official catchline, chapter/title context, and the amendment “History:” line Idaho prints on nearly every section.
  • id_search({query, limit?}) — topic/keyword search over the ~20,400 live section catchlines (plus their chapter’s own catchline), e.g. "landlord", "concealed weapon permit". Not full-text search of statutory prose — Idaho publishes no keyless full-text search API (see “Data sources”).

Auth

Keyless. No signup, no activation gate.

Data sources

  • https://legislature.idaho.gov/statutesrules/idstat/ — the Idaho Statutes title list (74 titles).
  • https://legislature.idaho.gov/statutesrules/idstat/Title{T}/ — chapter list for one title, with each chapter’s official catchline.
  • https://legislature.idaho.gov/statutesrules/idstat/Title{T}/T{T}CH{C}/ — section list for one chapter, with each section’s official catchline.
  • https://legislature.idaho.gov/statutesrules/idstat/Title{T}/T{T}CH{C}/SECT{T}-{N}/ — one section’s full text.

All four are plain WordPress-served HTML, keyless, no rate limit observed.

The citation does not literally name its chapter — but a formula recovers it

Idaho cites a section as title-number (“18-4001”), with no chapter digit written out. The chapter IS recoverable, because Idaho’s own numbering is a strict chapter*100 + sectionWithinChapter block — verified live across chapters 1, 5, 9, 40, 83 and 91 of Title 18, and chapter 1 of the single- chapter Titles 4 and 29: chapter 1 holds “18-100”..“18-1xx”, chapter 40 holds “18-4000”..“18-4099”, chapter 83 holds “18-8300”..“18-8399”. So chapter = floor(number / 100). id_statute uses that formula to build the direct URL, then VERIFIES it rather than trusting it — see “THE VERIFICATION CHAIN” in src/index.ts’s file header and the three-step fallback it documents (confirm the computed chapter’s own listing page before ever reporting a citation doesn’t exist). A wrong chapter guess must read as a loud, investigable error, never as a quiet found: false.

Honest 404s — no Oklahoma/Texas-style disguised 200

Verified live from BOTH a laptop curl and a throwaway wrangler dev --remote Worker deployed to the production Cloudflare account (2026-10-07): every URL shape returns the SAME status and byte length from both vantage points. A nonexistent chapter or section returns a real HTTP 404 (a genuine error404 WordPress template, consistently 72,512 bytes) — not a 200 with page furniture and no statute, the trap that sank an earlier Oklahoma pack build (oscn.net answered a Cloudflare Worker differently from a laptop and returned found:false on every live call despite passing every local smoke). Idaho’s site does not do that, confirmed both ways:

                                            curl (laptop)        wrangler dev --remote (CF edge, prod account)
Title18/T18CH40/SECT18-4001/ (real)        200 / 91,548B         200 / 91,548B
Title18/T18CH40/ (real chapter listing)    200 / 92,122B         200 / 92,122B
Title18/T18CH999/ (bad chapter)            404 / 72,512B         404 / 72,512B
Title18/T18CH40/SECT18-9999/ (gap number)  404 / 72,512B         404 / 72,512B

A transport or parse failure (non-404 HTTP error, or a 200 whose embedded statute fragment can’t be located) throws a loud error naming the upstream status or the parse failure — it is never reported as found: false. Only a confirmed-absent citation (verified against the chapter’s own live listing, not just a 404 on the direct guess) returns found: false.

The embedded statute fragment

Each section page wraps a legacy Arbortext-generated HTML export (its own <html><head><body>, Arbortext Epic 6.1, mid-2010s vintage) inside the site’s current WordPress theme. The statute text lives in that inner fragment’s top-level <div> blocks: a TITLE N line, the title name, a CHAPTER C line, the chapter name, then the statute body (one or more divs — multi- paragraph sections use a <div> per subsection), then a History: marker div followed by one div holding the bracketed amendment citation. src/index.ts’s parseSectionFragment extracts this; scripts/bake-index.mjs’s header has more on why both the chapter AND section catchline levels are baked.

Four capabilities — three available, one is not

  • Citation lookup — id_statute.
  • Topic/keyword search — id_search, over official catchlines (not full statutory prose).
  • Amendments/enactment history — embedded in id_statute’s history field, Idaho’s own “History:” line (e.g. "[18-4001, added 1972, ch. 336, sec. 1, p. 928; am. 1977, ch. 154, sec. 1, p. 390; am. 2002, ch. 330, sec. 1, p. 935.]"), present on nearly every in-force section.
  • Historical version (text as it read before an amendment) — NOT AVAILABLE. legislature.idaho.gov serves the current text only. Its Session Laws archive (/statutesrules/sessionlaws/) has one PDF volume per legislative session back to the 2000s, but those are organized by SESSION chapter number (e.g. “Chapters 1 - 162” for a whole year), unrelated to a Code citation’s title/chapter numbering and not indexed by section — recovering a prior version would mean searching those volumes by hand for the amending act named in history. id_statute says this in every response rather than omitting the field silently.

Baked index refresh

src/id-index-data.ts is GENERATED by scripts/bake-index.mjs from 74 title pages plus their ~1,468 chapter listing pages (one-time, ~20,400 sections captured). Re-run it after a legislative session’s codification pass:

node scripts/bake-index.mjs > src/id-index-data.ts

Tools

  • id_statute — Get the FULL TEXT of a section of the Idaho Statutes (Idaho Code) by citation. “18-4001” is murder; “32-717” lists child custody factors. Accepts natural forms: “18-4001”, “Idaho Code 18-4001”, “I.C.
  • id_search — Search the Idaho Statutes BY TOPIC or keyword rather than citation — “landlord security deposit”, “concealed weapon permit”, “child custody”. Matches against the Idaho Legislature’s own official chapt

Tools

  • id_search — Search the Idaho Statutes BY TOPIC or keyword rather than citation — landlord security deposit , concealed weapon permit , child custody . Matches against the Idaho Legislature's own official chapter
  • id_statute — Get the FULL TEXT of a section of the Idaho Statutes (Idaho Code) by citation. 18-4001 is murder; 32-717 lists child custody factors. Accepts natural forms: 18-4001 , Idaho Code 18-4001 , I.C. § 18-40

Regenerated from source · build October 7, 2026