@pipeworx/tennessee-code

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

Connect to just the @pipeworx/tennessee-code pack

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

Tennessee Code Annotated (T.C.A.) — state statutes by citation and by official catchline (topic search). Keyless.

This pack serves a POINT-IN-TIME SNAPSHOT dated 2021-05-21, not the current code. Read “Why this is a snapshot” below before using it for anything where the exact current text matters — it says so on every response too.

Tools

  • tn_statute(citation) — full text of a T.C.A. section by citation (“39-13-202” is first degree murder; “66-28-301” is the security-deposit statute). Resolves the citation’s title via a baked index, fetches that title’s HTML live, and cuts the section out of it by its own unique anchor id.
  • tn_search(query, limit?) — topic/keyword search over the baked citation + official-catchline index (not full statutory body text).

Auth

Keyless.

Why this is a snapshot, not the current code

Tennessee’s own publishing arrangement routes the maintained, current TCA exclusively through LexisNexis’s advance.lexis.com — a cookie/session-gated SPA with no stable per-citation URL, confirmed live (traced lexisnexis.com/hottopics/tncode -> advance.lexis.com/container?config=..., which immediately probes for cookie support and only then begins any client-side render). That is the same class of wall this pack family treats as OUT (ASP.NET postback / anti-bot / JS-rendered SPA).

There is no OTHER official electronic route, and that absence is litigated, not merely undocumented: Public.Resource.Org v. Matthew Bender & Co., 686 S.W.3d 1 (Tenn. Ct. App. 2023) (further appeal denied by the Tennessee Supreme Court, 2024), held that Tennessee’s Public Records Act does not reach the electronic TCA, because LexisNexis is a private contractor performing services for the Code Commission under a separate statutory arrangement (T.C.A. § 1-2-114), not a state agency holding a public record. Having lost that fight — and having lost electronic access to the Code even before filing it — Public.Resource.Org had UniCourt scan and transform the print volumes, publishing the result at https://unicourt.github.io/cic-code-tn/:

“This repository was created by UniCourt on behalf of Public.Resource.Org. All this work is in the public domain and there are NO RIGHTS RESERVED.” — Release 76, dated 2021.05.21.

That public-domain claim rests on the same “edict of government” theory the U.S. Supreme Court confirmed for Georgia’s own annotated code in Georgia v. Public.Resource.Org, 590 U.S. 255 (2020) — and this is literally the same transform pipeline (cic-beautify-state-codes) and the same stylesheet reference this repo already trusts for mcps/georgia-code’s upstream.

The same release is also uploaded to archive.org as item gov.tn.tca (byte-identical statutory text, verified directly). This pack calls the GitHub Pages copy instead, for two concrete reasons found during development, not a preference in the abstract:

  1. Reliability/latency. archive.org’s mirror nodes answered this release with multiple transient HTTP 500s and multi-second-to-indefinite stalls while baking the index and smoke-testing tn_statute (a 7.2MB title took 12.9s on one call and simply never returned on another, even with a 60s client timeout and 3 retries). GitHub Pages was consistently sub-second for the same files, every time.
  2. Completeness. archive.org’s own upload of Title 47 (Commercial Instruments and Transactions / UCC) carries a LexisNexis ”© … All rights reserved” notice and different markup entirely (p.p5) instead of PRO’s public-domain transform (span.boldspan) that every other title there carries — evidently a bad upload of that one file. UniCourt’s copy of Title 47 is the correct public-domain transform, like all 67 other titles. All 68 published titles are covered by this pack as a result (archive.org’s copy would only support 66, with Title 47 and one other transient-failure title missing).

No newer release exists anywhere. Checked both the UniCourt index page’s own “Release NN dated YYYY.MM.DD” listing and archive.org’s separate upload: release 76 (2021.05.21) is the newest either has. The 2023-2024 litigation above is why — Public.Resource.Org was fighting to restore a current electronic feed and lost. So every response from this pack carries current_through and data_as_of stating 2021-05-21 explicitly. Roughly five Tennessee legislative sessions (2021-2025) of amendments are NOT reflected.

Other free routes were checked and ruled out, not merely skipped:

CandidateResult
wapp.capitol.tn.gov / capitol.tn.gov (TN General Assembly)Publishes Public Chapters (session laws as passed) and bill text, but no consolidated current code — its own “Tennessee Code” link routes to the same LexisNexis wall above. Session laws are a DIFFERENT document from the codified TCA (see “Public Chapters are not the Code” below).
law.justia.com/codes/tennessee/Serves Cloudflare’s “Just a moment” managed JS challenge (HTTP 403, cf_chl_opt present) to a bare fetch — not a bypassable bare-UA gate, the same bot-wall class this pack family treats as OUT. Google’s own crawler evidently gets through (indexed pages appear in search), a plain HTTP client does not.
codes.findlaw.com/tn/Same Cloudflare managed challenge, same result.
law.resource.org/pub/us/code/tn/This is the litigation docket for the lawsuit above (court filings, 2021-2024), not a code mirror. The actual scanned text lives in the two mirrors above, not on law.resource.org’s own file tree.
SOS (sos.tn.gov)Publishes Acts and Resolutions (session laws), not a consolidated code; it directs electronic TCA requests to LexisNexis per the Code Commission’s arrangement.

Public Chapters are not the Code

Tennessee’s General Assembly publishes Public Chapters — the session laws as enacted, year by year, e.g. capitol.tn.gov/Archives/Joint/publications/PublicChapters/2024/... — and these ARE current and free. But a Public Chapter is an amending instrument (“AN ACT to amend Tennessee Code Annotated, Title 47…”) , not the codified text itself — reading one tells you a change happened, not what the amended section now reads as a whole next to the rest of the code. This pack does not attempt to fold session laws into the frozen 2021-05-21 text (that reconciliation is exactly what a Code Commission codification does, and is out of scope here) — it would be dishonest to call that composite “the current code” without doing the actual reconciliation work. If a caller needs what changed since 2021, they need the Public Chapters directly, not this pack.

Four capabilities — two available, two are not

  • Citation lookup — available (tn_statute), across all 68 titles.
  • Topic/keyword search — available (tn_search), but it matches OFFICIAL CATCHLINES (section/chapter headings), not full statutory body text — the same shape as mcps/north-dakota-code’s nd_search. There is no live full-text search available for this source (it is a static scan, not a search API).
  • Amendments/enactment history — partially available: the “Acts YYYY, ch. N, § N; …” legislative-history line that follows most amended sections is included in tn_statute’s text and, when it parses cleanly, surfaced separately as history. A section never amended since its original enactment may carry no such line at all.
  • Historical version (a section’s text as it read before a given amendment) — not available beyond whatever this one 2021-05-21 snapshot preserves. There is no per-year archive the way Colorado or Indiana publish, and the live site that would have one (LexisNexis) is the wall this pack cannot reach.

Cutting a section out of its title file

Unlike most sibling state-code packs, there is no heading-regex ambiguity to resolve here: Public.Resource.Org’s transform already gives every section a unique anchor id (id="t{title}c{chapter}s{citation}", e.g. id="t39c13s39-13-202" for 39-13-202). tn_statute cuts from that id to whichever comes first: the next section’s id, the next chapter’s <h2>, or the title’s own h4#...-NOTESTODECISIONS heading — the point where the annotated text switches from the statute (plus its own legislative/ compiler notes) to a digest of case law. That case-law digest is excluded from every response, the same editorial-vs-statute line mcps/colorado-code draws before its own “ANNOTATION” block.

One markup difference from archive.org’s upload of the same release: UniCourt’s HTML uses a bare <br /> between “Title NN”/“Chapter NN” and the name, where archive.org’s copy used span.headbreak (empty) — scripts/bake-index.mjs’s title/chapter regexes accept either, in case a future release reintroduces the other convention.

Refresh path

Re-run the bake script if Public.Resource.Org/UniCourt ever posts a newer release (it always resolves the SITE’S OWN latest “Release NN dated YYYY.MM.DD” line rather than hard-coding 76):

node mcps/tennessee-code/scripts/bake-index.mjs > mcps/tennessee-code/src/tn-index-data.ts

It fetches all ~68 title files (~145MB total) with a short pause between requests, and fails loudly rather than silently if it parses suspiciously few rows — that would mean the source’s markup changed, not that the Code got smaller. TN_EXCLUDED_TITLES stays wired in as a defensive check: a title whose HTML does not carry PRO’s “is in the public domain” sentence is dropped and named there rather than silently served as if it were public domain (empty today — every title in this release passes).

Citations

Tennessee cites by title-chapter-section, e.g. “39-13-202” (Title 39, Chapter 13, Section 202: First degree murder) or “66-28-301” (Title 66, Chapter 28, Section 301: security deposits). tn_statute looks the citation up against the baked index directly rather than parsing it into parts, so any suffix shape the index itself uses (e.g. a lettered subsection like “39-17-417(a)”) round-trips correctly as long as it matches an indexed id exactly.

Data sources

  • https://unicourt.github.io/cic-code-tn/ — the release index page. Read once per bake, not per call, to resolve the current release tag.
  • https://unicourt.github.io/cic-code-tn/transforms/tn/octn/r76/gov.tn.tca.title.{NN}.html — one title’s full text (statute + legislative notes + case-law digest). Baked ONCE into src/tn-index-data.ts as a citation+catchline index (NOT statutory text); tn_statute fetches the specific title live on every call and extracts just the requested section.

Both are plain, keyless, static files on GitHub Pages — no login, no JS, no rate limit observed, consistently sub-second during development.

Tools

  • tn_statute — Get a section of the Tennessee Code Annotated (T.C.A.) — Tennessee state law — by citation.
  • tn_search — Search the Tennessee Code Annotated (T.C.A.) BY TOPIC or keyword rather than citation —

Tools

  • tn_search — Search the Tennessee Code Annotated (T.C.A.) BY TOPIC or keyword rather than citation —
  • tn_statute — Get a section of the Tennessee Code Annotated (T.C.A.) — Tennessee state law — by citation.

Regenerated from source · build October 9, 2026