Skip to main content
Glama
Vaquill-AI

Vaquill-AI/vaquill-mcp

Official
by Vaquill-AI

Search Us Statutes

search_us_statutes
Read-only

Find legal answers across all US jurisdictions: federal and state statutes, regulations, constitutions, and court rules. Returns ranked sections with citations and official links.

Instructions

Semantic + keyword search across US primary law: the United States Code (USC), the Code of Federal Regulations (CFR), and all 50 states' statutes, regulations, constitutions and court rules. Use for any 'what does the law say' question. Filter by corpusType and titleNumber. Returns sections with citation, hierarchy and official source links. The returned act_id (e.g. 'USC_T42_C21_S1983') feeds every other statute tool -- do not hand-build one, they usually 404.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNoRestrict to specific state statutory codes, e.g. `tx_pe` for the Texas Penal Code. Values are the `actId`s from list_statute_divisions. List allowed, across states. The only way to scope below a whole jurisdiction: `state=tx` alone searches all ~15 Texas codes.
partNoOne or more parts within a title, e.g. `240` for 17 C.F.R. Part 240. The CFR counterpart to `chapter`: pass a hit's `parent.part` back. Pair with `titleNumber`; an unpaired part is rejected.
limitNoNumber of results to return per page.
queryYesSearch query in natural language.
stateNoJurisdiction. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or `federal` for USC / CFR / Constitution / federal rules. Pass a list to search several at once. Case-insensitive. Omit to search every jurisdiction.
agencyNoFederal Register agency slug, e.g. `environmental-protection-agency`. Pass a list to match any of several. Applies to `FEDERAL_REGISTER` and `EXECUTIVE_ACTION`; other corpora carry no agency, so combining this with them returns nothing.
fieldsNoReturn only these result fields, e.g. `["title", "excerpt"]`. A result carries 40+ fields, most null on any given row. `actId` and `citation` are always included. Unknown names are rejected 422. Omit for the full object.
offsetNoHow many results to skip, for paging. Every page of a query is cut from one ranking, so results never repeat or go missing between pages. The deepest reachable result is `offset` + `limit`; check `hasMore`.
sourceNoThe named body of law within a `corpusType` that folds several together: `FEDERAL_RULES` into `frcp`/`fre`/`sct`, `CFR` into `far`/`dfars`, `AGENCY_GUIDANCE` into ~34 agency sources. Every result carries its own `source`, so a hit's value can be passed straight back.
yearToNoOnly sections last amended in or before this year. This filters the LAST amendment, so a section amended in 2025 is excluded by `yearTo=2024` even though it existed in 2024. A currency filter, not point-in-time retrieval.
chapterNoOne or more chapters within a title or code, e.g. `21` for USC Title 42 Chapter 21. Pass a hit's `parent.chapter` back to search its neighbors. Chapter numbers repeat across titles, so pair with `titleNumber` (USC) or `code` (state); an unpaired chapter is rejected.
yearFromNoOnly sections last amended in or after this year; pair with `yearTo` for a window. Tracks the publisher's own amendment credit, not when we rebuilt the corpus. About a fifth of sections carry no credit and are excluded once either bound is set.
actStatusNoPositively scope to raw publisher statuses: `repealed` for dead law only, `in_force` for sections affirmatively marked current. The inverse of `excludeRepealed`, and what a compliance diff asking what was LOST needs. Combining a dead status with `excludeRepealed: true` is rejected 422.
matchTypeNo`any` (default) is hybrid semantic + keyword ranking, for natural-language questions. `all` requires every query term; `phrase` matches an exact phrase, for a defined term. To pull up one section, pass its citation as the query and it resolves to that section at rank 1.any
corpusTypeNoRestrict to one corpus, or several as a list. Federal: `USC`, `CFR`, `CONSTITUTION`, `FEDERAL_RULES`, `FEDERAL_REGISTER`, `EXECUTIVE_ACTION`, `SENTENCING_GUIDELINES`, `US_TAX_TREATY`, `SESSION_LAW` (Statutes at Large, as enacted). Pair with `state`: `STATE`, `REGULATION`, `STATE_RULES`, `STATE_CONSTITUTION`, `STATE_AGENCY_GUIDANCE`. Omit for all.
includeBodyNoReturn the full text of every hit inline, on each result's `body`, instead of making you fetch it per section afterwards. **Why it exists.** Search returns a ranking preview, so the documented flow was search then one `/section/{actId}/body` call per hit. Measured 2026-09-02 that is about 2s for the search plus about 3s for each body, so a page of five sections cost six round trips to put real law on screen. This collapses it to one. **Cost**: the 4-credit search PLUS the ordinary 6-credit body price for each row that actually returns text. Ten rows with text is 4 + 60 = 64 credits. A row whose text cannot be resolved comes back with `body: null` and is NOT charged, so read `creditsConsumed` rather than computing it from `limit` -- it is the same price as fetching them yourself, so this buys latency, not a discount. ⚠️ It multiplies with `limit`. `limit: 50` with this set is 304 credits in a single call. Page deliberately. Prefer this over raising `excerptChars`: the excerpt is windowed around the match and can begin mid-section, dropping a leading subsection marker, so it is not safe to quote. `body` is the publisher's text.
publishedToNoOnly return Federal Register documents published on or before this date.
titleNumberNoFilter by USC/CFR title number (e.g., 17 for SEC, 42 for civil rights). Only meaningful for `USC`/`CFR`; ignored for state corpora whose titles are alphabetic (e.g. Texas `pe` = Penal Code).
changedSinceNoOnly sections we OBSERVED changing on or after this date (`YYYY-MM-DD`). Observed, not effective: the date we saw it, an upper bound on when it took effect. Capture began long after the corpus did and events sweep at 24 months, so empty means no captured change, never that nothing was amended.
documentTypeNoFederal Register document stage: `final` (a rule in force), `proposed` (an NPRM), or `presidential` (a Presidential Document, the `EXECUTIVE_ACTION` corpus). Previously visible only as an `actId` prefix (`FR_RULE_` vs `FR_PRORULE_`) with no way to filter.
excerptCharsNoCharacters of matching text to include in each result's `excerpt`. The excerpt is a ranking preview; use `/us/statutes/section/{actId}/body` for the full text. Default 500.
publishedFromNoOnly return Federal Register documents published on or after this date (`YYYY-MM-DD`). This is the PUBLICATION date, which is not the same as `yearFrom`: that filters the version year of a section.
excludeRepealedNoDrop sections whose own status says they are not operative (repealed, renumbered, transferred, expired, superseded, omitted, and the rest). Removes what we KNOW is dead; it does not promise the remainder is good law. Read `goodLawStatus` per result to tell them apart: `good_law` is checked, `unknown` is unchecked.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Install Server

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already covering the safety profile, the description adds genuinely useful behavioral context beyond the annotation: the corpus scope searched, the hybrid semantic+keyword behavior, the return shape (citation, hierarchy, official source links), and the downstream consequence that hand-built act_ids 'usually 404.' No contradiction with the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences that front-load scope, then usage, then returns and downstream workflow — every sentence earns its place for a tool with 23 parameters. The one redundant element is 'Filter by corpusType and titleNumber,' which the schema already covers, and the structure is otherwise tight and highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and 100% param coverage, the description need not explain return values or parameter details. It covers scope, invocation trigger, key filters, return shape, and the act_id handoff to sibling tools — the essential selection and invocation context. The only gap is not routing the agent away from this tool when a citation is already in hand (resolve_statute_citation), and not disambiguating from the generic 'search' sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even with no param info in the description. The description only echoes 'Filter by corpusType and titleNumber,' which is already thoroughly documented in the schema. It adds no new meaning about parameter formats, defaults, or edge cases; the schema carries the entire burden as expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (search), a precise resource (US primary law: USC, CFR, and all 50 states' statutes, regulations, constitutions and court rules), and the hybrid semantic+keyword mechanism. The closing sentence positions it relative to its siblings — the returned act_id 'feeds every other statute tool' — so an agent can tell this is the statute-search entry point, distinct from resolve_statute_citation, get_us_statute_section, or the generic 'search' sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use trigger: "Use for any 'what does the law say' question," which is clear context for an agent facing 24 siblings. It also gives post-call guidance (pass act_id to other statute tools, never hand-build one). However, it never names a when-not-to-use alternative, such as resolve_statute_citation when a citation is already known, so it stops short of the fully explicit routing that earns a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vaquill-AI/vaquill-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server