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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed38 schema fields changedv0.4.0
    • addedInput schema / properties / actStatus
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Positively 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.",
      +  "enum": [
      +    "abolished",
      +    "deleted",
      +    "expired",
      +    "in_force",
      +    "inactive",
      +    "not_funded",
      +    "not_yet_effective",
      +    "omitted",
      +    "proposed",
      +    "recodified",
      +    "recompiled",
      +    "rejected",
      +    "relocated",
      +    "removed",
      +    "renumbered",
      +    "repealed",
      +    "rescinded",
      +    "reserved",
      +    "revoked",
      +    "superseded",
      +    "terminated",
      +    "transferred",
      +    "unconstitutional",
      +    "vacant",
      +    "vetoed",
      +    "withdrawn"
      +  ],
      +  "examples": [
      +    "repealed"
      +  ]
      +}
    • addedInput schema / properties / agency
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Federal 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.",
      +  "examples": [
      +    "environmental-protection-agency"
      +  ]
      +}
    • addedInput schema / properties / changedSince
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only 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.",
      +  "examples": [
      +    "2026-08-01"
      +  ]
      +}
    • changedInput schema / properties / chapter / description
      Previous value: -"Scope a search to one or more chapters within a title or code, e.g. `21` for USC Title 42 Chapter 21. This is the search-side of the `parent` object on each result: pass a hit's `parent.chapter` straight back to search that hit's neighbors. Chapter numbers repeat across titles, so pair it with `titleNumber` (USC) or `code` (state); an unpaired chapter is rejected. String or list."New value: +"One 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."
    • removedInput schema / properties / chapter / title
      Removed value: -"Chapter"
    • changedInput schema / properties / code / description
      Previous value: -"Restrict to specific state statutory codes, e.g. `tx_pe` for the Texas Penal Code. Values are the `actId`s returned by `GET /us/statutes/divisions?corpusType=STATE&state=XX`, so the browse output can be fed straight back in. Pass a list to search several codes, across states if you like (`[\"tx_pe\", \"ca_pen\"]`). This is the only way to scope below a whole jurisdiction: `state=tx` alone searches all ~15 Texas codes at once."New value: +"Restrict 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."
    • removedInput schema / properties / code / title
      Removed value: -"Code"
    • changedInput schema / properties / corpusType / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "USC",
      -      "CFR",
      -      "STATE",
      -      "CONSTITUTION",
      -      "FEDERAL_RULES",
      -      "STATE_CONSTITUTION",
      -      "STATE_RULES",
      -      "EXECUTIVE_ACTION",
      -      "REGULATION",
      -      "FEDERAL_REGISTER",
      -      "AGENCY_GUIDANCE",
      -      "SENTENCING_GUIDELINES",
      -      "US_TAX_TREATY",
      -      "STATE_AGENCY_GUIDANCE"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "items": {
      -      "enum": [
      -        "USC",
      -        "CFR",
      -        "STATE",
      -        "CONSTITUTION",
      -        "FEDERAL_RULES",
      -        "STATE_CONSTITUTION",
      -        "STATE_RULES",
      -        "EXECUTIVE_ACTION",
      -        "REGULATION",
      -        "FEDERAL_REGISTER",
      -        "AGENCY_GUIDANCE",
      -        "SENTENCING_GUIDELINES",
      -        "US_TAX_TREATY",
      -        "STATE_AGENCY_GUIDANCE"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "USC",
      +      "CFR",
      +      "STATE",
      +      "CONSTITUTION",
      +      "FEDERAL_RULES",
      +      "STATE_CONSTITUTION",
      +      "STATE_RULES",
      +      "EXECUTIVE_ACTION",
      +      "REGULATION",
      +      "FEDERAL_REGISTER",
      +      "AGENCY_GUIDANCE",
      +      "SENTENCING_GUIDELINES",
      +      "US_TAX_TREATY",
      +      "STATE_AGENCY_GUIDANCE",
      +      "SESSION_LAW"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "USC",
      +        "CFR",
      +        "STATE",
      +        "CONSTITUTION",
      +        "FEDERAL_RULES",
      +        "STATE_CONSTITUTION",
      +        "STATE_RULES",
      +        "EXECUTIVE_ACTION",
      +        "REGULATION",
      +        "FEDERAL_REGISTER",
      +        "AGENCY_GUIDANCE",
      +        "SENTENCING_GUIDELINES",
      +        "US_TAX_TREATY",
      +        "STATE_AGENCY_GUIDANCE",
      +        "SESSION_LAW"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / corpusType / description
      Previous value: -"Restrict to one corpus, or to several by passing a list (`\"corpusType\": [\"USC\", \"CFR\"]`). One of: `USC` (United States Code), `CFR` (Code of Federal Regulations), `STATE` (state statutory codes; call `/us/statutes/coverage` for the list of ingested jurisdictions), `CONSTITUTION` (U.S. Constitution), `FEDERAL_RULES` (FRCP / FRCrP / FRE / FRAP / FRBP), `STATE_CONSTITUTION` (state constitutions; call `/us/statutes/coverage` for the current jurisdiction list), `STATE_RULES` (state court rules; see `/us/statutes/coverage`), `EXECUTIVE_ACTION` (Federal Register Presidential Documents), `REGULATION` (state administrative regulations; pair with `state`), `FEDERAL_REGISTER` (Federal Register agency rules, final and proposed), `AGENCY_GUIDANCE` (agency guidance: SSA rulings, IRS notices, revenue rulings and procedures). Omit to search across all corpora."New value: +"Restrict 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."
    • removedInput schema / properties / corpusType / title
      Removed value: -"Corpustype"
    • addedInput schema / properties / documentType
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "final",
      +        "proposed",
      +        "presidential"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Federal 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.",
      +  "examples": [
      +    "final"
      +  ]
      +}
    • removedInput schema / properties / excerptChars / title
      Removed value: -"Excerptchars"
    • addedInput schema / properties / excludeRepealed
      Added value: +{
      +  "default": false,
      +  "description": "Drop 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.",
      +  "examples": [
      +    true
      +  ],
      +  "type": "boolean"
      +}
    • changedInput schema / properties / fields / description
      Previous value: -"Return only these result fields, e.g. `[\"title\", \"excerpt\"]`. A result carries 40+ fields and most are null on any given row, so a full page of 50 ships a lot of nulls. `actId` and `citation` are always included, because a row without them cannot be used or attributed. Unknown names are rejected with 422 so a typo does not silently drop a field you needed. Omit for the full object."New value: +"Return 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."
    • changedInput schema / properties / fields / enum
      Previous value: -[
      -  "actId",
      -  "actStatus",
      -  "amendmentYears",
      -  "amendmentsCount",
      -  "breadcrumb",
      -  "chapter",
      -  "chapterName",
      -  "citation",
      -  "citationShort",
      -  "corpusType",
      -  "crossReferencesCfr",
      -  "crossReferencesUsc",
      -  "currencyNote",
      -  "displayPath",
      -  "docxUrl",
      -  "excerpt",
      -  "externalUrl",
      -  "federalRegisterCitations",
      -  "frCommentsCloseOn",
      -  "frCorrectionOf",
      -  "frCorrections",
      -  "frDocketIds",
      -  "frEffectiveOn",
      -  "frRegulationIdNumbers",
      -  "frRegulationsDotGovUrl",
      -  "frRelatedDocuments",
      -  "frSignificant",
      -  "goodLawStatus",
      -  "govInfoHtmlUrl",
      -  "govInfoPdfUrl",
      -  "granuleId",
      -  "htmlUrl",
      -  "implementingRegulations",
      -  "issueDate",
      -  "lastAmendedYear",
      -  "packageId",
      -  "parent",
      -  "part",
      -  "partName",
      -  "pdfUrl",
      -  "popularName",
      -  "publicLaws",
      -  "relevanceScore",
      -  "renumberedTo",
      -  "sectionNumber",
      -  "sectionTitle",
      -  "source",
      -  "sourceCredit",
      -  "state",
      -  "stateHtmlUrl",
      -  "statutoryAuthority",
      -  "subchapter",
      -  "subchapterName",
      -  "subpart",
      -  "subpartName",
      -  "textUrl",
      -  "title",
      -  "titleName",
      -  "titleNumber",
      -  "transferredTo",
      -  "xmlUrl",
      -  "year"
      -]New value: +[
      +  "abstract",
      +  "actId",
      +  "actStatus",
      +  "action",
      +  "adoptingCitations",
      +  "agencies",
      +  "agencySlugs",
      +  "alternateCitations",
      +  "amendmentHistory",
      +  "amendmentNote",
      +  "amendmentYears",
      +  "amendmentsCount",
      +  "articleName",
      +  "articleNumber",
      +  "audience",
      +  "body",
      +  "breadcrumb",
      +  "caseName",
      +  "chapter",
      +  "chapterName",
      +  "citation",
      +  "citationShort",
      +  "committeeNote",
      +  "corpusType",
      +  "crossReferencesCfr",
      +  "crossReferencesUsc",
      +  "currencyNote",
      +  "currencyYear",
      +  "currentThrough",
      +  "datesText",
      +  "displayLabel",
      +  "displayPath",
      +  "documentNumber",
      +  "documentSubtype",
      +  "documentTypeLabel",
      +  "docxUrl",
      +  "edition",
      +  "effectiveDate",
      +  "excerpt",
      +  "expirationDate",
      +  "externalUrl",
      +  "federalRegisterCitations",
      +  "frCommentsCloseOn",
      +  "frCorrectionOf",
      +  "frCorrections",
      +  "frDocketIds",
      +  "frEffectiveOn",
      +  "frEndPage",
      +  "frRegulationIdNumbers",
      +  "frRegulationsDotGovUrl",
      +  "frRelatedDocuments",
      +  "frSignificant",
      +  "frStartPage",
      +  "frVolume",
      +  "goodLawStatus",
      +  "govInfoHtmlUrl",
      +  "govInfoPdfUrl",
      +  "granuleId",
      +  "history",
      +  "htmlUrl",
      +  "implementingRegulations",
      +  "issueDate",
      +  "issuingAgency",
      +  "languageCode",
      +  "lastAmendedDate",
      +  "lastAmendedYear",
      +  "lawImplemented",
      +  "licenseNote",
      +  "originalEnactmentDate",
      +  "packageId",
      +  "parent",
      +  "part",
      +  "partName",
      +  "pdfUrl",
      +  "popularName",
      +  "president",
      +  "priorEffectiveDates",
      +  "program",
      +  "publicLawCites",
      +  "publicLaws",
      +  "publicationDate",
      +  "publisherKey",
      +  "referencedShortTitles",
      +  "relatedCitations",
      +  "releaseDate",
      +  "relevanceScore",
      +  "renumberedTo",
      +  "requesters",
      +  "rescindedOn",
      +  "reviewDate",
      +  "ruleSet",
      +  "ruleSetCode",
      +  "sectionNumber",
      +  "sectionTitle",
      +  "settlementAmount",
      +  "signingDate",
      +  "source",
      +  "sourceCharEnd",
      +  "sourceCharStart",
      +  "sourceCredit",
      +  "sourceNote",
      +  "sourcePageEnd",
      +  "sourcePageStart",
      +  "state",
      +  "stateHtmlUrl",
      +  "statutoryAuthority",
      +  "subchapter",
      +  "subchapterName",
      +  "subject",
      +  "subjectNumber",
      +  "subpart",
      +  "subpartName",
      +  "subtitle",
      +  "subtitleName",
      +  "supersededBy",
      +  "supersedes",
      +  "supersessionActions",
      +  "textUrl",
      +  "title",
      +  "titleName",
      +  "titleNumber",
      +  "topLevelTitle",
      +  "topics",
      +  "transferredTo",
      +  "versionId",
      +  "volume",
      +  "wordCount",
      +  "xmlUrl",
      +  "year"
      +]
    • removedInput schema / properties / fields / title
      Removed value: -"Fields"
    • addedInput schema / properties / includeBody
      Added value: +{
      +  "default": false,
      +  "description": "Return the full text of every hit inline, on each result's `body`, instead of making you fetch it per section afterwards.\n\n**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.\n\n**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.\n\n⚠️ It multiplies with `limit`. `limit: 50` with this set is 304 credits in a single call. Page deliberately.\n\nPrefer 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.",
      +  "examples": [
      +    true
      +  ],
      +  "type": "boolean"
      +}
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • changedInput schema / properties / matchType / description
      Previous value: -"Controls exact vs. semantic matching, so there is no need for a separate keyword-only search mode. `any` (default) is hybrid semantic + keyword ranking and suits natural-language questions. Use `all` for strict keyword matching (every query term must appear in the text) or `phrase` for an exact-phrase match, e.g. a defined term or a statutory phrase, when you want lexical precision. To pull up one specific section, pass its citation as the query (e.g. `42 U.S.C. § 1983`, `Cal. Civ. Code § 1950.5`) and it resolves to that section at rank 1."New value: +"`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."
    • addedInput schema / properties / matchType / examples
      Added value: +[
      +  "phrase"
      +]
    • removedInput schema / properties / matchType / title
      Removed value: -"Matchtype"
    • changedInput schema / properties / offset / description
      Previous value: -"How many results to skip, for paging. Every page of a given query is cut from one ranking, so results never repeat or go missing between pages, and a later page costs no more than the first. The deepest reachable result is `offset` + `limit`; check `hasMore` to know when there is nothing further."New value: +"How 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`."
    • removedInput schema / properties / offset / title
      Removed value: -"Offset"
    • changedInput schema / properties / part / description
      Previous value: -"Scope a search to one 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` straight back to search within that part. Pair it with `titleNumber`; an unpaired part is rejected. String or list."New value: +"One 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."
    • removedInput schema / properties / part / title
      Removed value: -"Part"
    • addedInput schema / properties / publishedFrom
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only 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.",
      +  "examples": [
      +    "2024-01-01"
      +  ]
      +}
    • addedInput schema / properties / publishedTo
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only return Federal Register documents published on or before this date.",
      +  "examples": [
      +    "2024-12-31"
      +  ]
      +}
    • removedInput schema / properties / query / title
      Removed value: -"Query"
    • changedInput schema / properties / source / description
      Previous value: -"Scope to one or more of the following. The named source within `corpusType`, for corpora that fold several independently filterable bodies of law into one token.\n\n`FEDERAL_RULES` sources: `frcp` (Federal Rules of Civil Procedure), `frcrp` (Federal Rules of Criminal Procedure), `fre` (Federal Rules of Evidence), `frap` (Federal Rules of Appellate Procedure), `frbp` (Federal Rules of Bankruptcy Procedure), `sct` (Rules of the Supreme Court of the United States).\n\n`CFR` sources: `far` (Federal Acquisition Regulation (48 C.F.R. ch. 1)), `dfars` (Defense Federal Acquisition Regulation Supplement (48 C.F.R. ch. 2)) (both are already part of `CFR`; this only splits the existing Title 48 data by chapter, it does not add new sections).\n\n`AGENCY_GUIDANCE` sources: `agency_guidance` (General agency guidance), `administrative_guidance` (Synthesized administrative guidance (e.g. SALT cap, CTC, 401(k) limits)), `ssa_ruling` (Social Security Administration Rulings), `irs_rev_proc` (IRS Revenue Procedures), `irs_notice` (IRS Notices), `irs_rev_rul` (IRS Revenue Rulings), `irs_announcement` (IRS Announcements), `merger_guidelines` (DOJ & FTC Merger Guidelines (2023)), `doj_leniency` (DOJ Antitrust Division Leniency Policy), `copyright_circular` (US Copyright Office Circulars), `doj_justice_manual` (DOJ Justice Manual), `uscis_policy_manual` (USCIS Policy Manual), `mpep` (USPTO Manual of Patent Examining Procedure (MPEP)), `tmep` (USPTO Trademark Manual of Examining Procedure (TMEP)), `cftc_staff_letter` (CFTC Staff Letters (no-action, exemptive, interpretative; 2008-present)), `fincen_ruling` (FinCEN Administrative Rulings), `fincen_guidance` (FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets)), `frb_sr_letter` (Federal Reserve Supervision and Regulation (SR) / Consumer Affairs (CA) Letters), `occ_bulletin` (OCC Bulletins), `occ_interpretive_letter` (OCC Interpretive Letters), `fdic_fil` (FDIC Financial Institution Letters (FILs)), `dfars_pgi` (DFARS PGI (Procedures, Guidance, and Information)), `nlrb_gc_memo` (NLRB General Counsel Memoranda), `nlrb_advice_memo` (NLRB Division of Advice Memoranda (rolling 10-year window, not the full archive)), `cpsc_advisory_opinion` (CPSC Office of General Counsel Advisory Opinions (historical, 1970s-2012)), `cpsc_secg` (CPSC Small Entity Compliance Guides), `bis_advisory_opinion` (BIS (Bureau of Industry and Security) Advisory Opinions), `ddtc_commodity_jurisdiction` (DDTC (Directorate of Defense Trade Controls) Commodity Jurisdiction Determinations), `ddtc_guidance` (DDTC (Directorate of Defense Trade Controls) Policy Guidance Documents), `hhs_ocr_hipaa_faq` (HHS Office for Civil Rights HIPAA FAQs), `hhs_ocr_hipaa_guidance` (HHS Office for Civil Rights HIPAA Guidance Materials), `hhs_ocr_resolution_agreement` (HHS Office for Civil Rights HIPAA Resolution Agreements and Civil Money Penalties), `fcc_declaratory_ruling` (FCC (Federal Communications Commission) Declaratory Rulings), `ferc_policy_statement` (FERC (Federal Energy Regulatory Commission) Policy Statements), `doe_appliance_guidance` (DOE Appliance Standards Guidance and FAQs). Every result carries its own `source`, so you can pass a hit's value straight back. An unrecognized value is rejected with 422."New value: +"The 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."
    • changedInput schema / properties / source / enum
      Previous value: -[
      -  "administrative_guidance",
      -  "agency_guidance",
      -  "bis_advisory_opinion",
      -  "cftc_staff_letter",
      -  "copyright_circular",
      -  "cpsc_advisory_opinion",
      -  "cpsc_secg",
      -  "ddtc_commodity_jurisdiction",
      -  "ddtc_guidance",
      -  "dfars",
      -  "dfars_pgi",
      -  "doe_appliance_guidance",
      -  "doj_justice_manual",
      -  "doj_leniency",
      -  "far",
      -  "fcc_declaratory_ruling",
      -  "fdic_fil",
      -  "ferc_policy_statement",
      -  "fincen_guidance",
      -  "fincen_ruling",
      -  "frap",
      -  "frb_sr_letter",
      -  "frbp",
      -  "frcp",
      -  "frcrp",
      -  "fre",
      -  "hhs_ocr_hipaa_faq",
      -  "hhs_ocr_hipaa_guidance",
      -  "hhs_ocr_resolution_agreement",
      -  "irs_announcement",
      -  "irs_notice",
      -  "irs_rev_proc",
      -  "irs_rev_rul",
      -  "merger_guidelines",
      -  "mpep",
      -  "nlrb_advice_memo",
      -  "nlrb_gc_memo",
      -  "occ_bulletin",
      -  "occ_interpretive_letter",
      -  "sct",
      -  "ssa_ruling",
      -  "tmep",
      -  "uscis_policy_manual"
      -]New value: +[
      +  "administrative_guidance",
      +  "agency_guidance",
      +  "bis_advisory_opinion",
      +  "cftc_staff_letter",
      +  "copyright_circular",
      +  "cpsc_advisory_opinion",
      +  "cpsc_secg",
      +  "ddtc_commodity_jurisdiction",
      +  "ddtc_guidance",
      +  "dfars",
      +  "dfars_pgi",
      +  "doe_appliance_guidance",
      +  "doj_justice_manual",
      +  "doj_leniency",
      +  "far",
      +  "fcc_declaratory_ruling",
      +  "fdic_fil",
      +  "ferc_policy_statement",
      +  "fincen_guidance",
      +  "fincen_ruling",
      +  "frap",
      +  "frb_sr_letter",
      +  "frbp",
      +  "frcp",
      +  "frcrp",
      +  "fre",
      +  "hhs_ocr_hipaa_faq",
      +  "hhs_ocr_hipaa_guidance",
      +  "hhs_ocr_resolution_agreement",
      +  "irs_announcement",
      +  "irs_notice",
      +  "irs_rev_proc",
      +  "irs_rev_rul",
      +  "merger_guidelines",
      +  "mpep",
      +  "nlrb_advice_memo",
      +  "nlrb_gc_memo",
      +  "occ_bulletin",
      +  "occ_interpretive_letter",
      +  "sct",
      +  "ssa_ruling",
      +  "state_insurance_bulletin",
      +  "tmep",
      +  "us_tax_treaty",
      +  "us_tax_treaty_technical_explanation",
      +  "uscis_policy_manual"
      +]
    • removedInput schema / properties / source / title
      Removed value: -"Source"
    • changedInput schema / properties / state / description
      Previous value: -"Jurisdiction filter. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or `federal` to scope to USC / CFR / Constitution / federal rules. Pass a LIST to search several at once (`\"state\": [\"ca\", \"ny\", \"tx\"]`), which is one call instead of one per jurisdiction. Case-insensitive: `ca` and `CA` both work. An unrecognized value is rejected with 422 rather than silently matching nothing. Omit to search every jurisdiction."New value: +"Jurisdiction. 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."
    • removedInput schema / properties / state / title
      Removed value: -"State"
    • removedInput schema / properties / titleNumber / title
      Removed value: -"Titlenumber"
    • changedInput schema / properties / yearFrom / description
      Previous value: -"Only return sections whose version year is >= this. Combine with `yearTo` for a window. Sections with no year are excluded once either bound is set."New value: +"Only 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."
    • removedInput schema / properties / yearFrom / title
      Removed value: -"Yearfrom"
    • changedInput schema / properties / yearTo / description
      Previous value: -"Only return sections whose version year is <= this."New value: +"Only 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."
    • removedInput schema / properties / yearTo / title
      Removed value: -"Yearto"
  2. Changed16 schema fields changedv0.2.0
    • addedInput schema / properties / chapter
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Scope a search to one or more chapters within a title or code, e.g. `21` for USC Title 42 Chapter 21. This is the search-side of the `parent` object on each result: pass a hit's `parent.chapter` straight back to search that hit's neighbors. Chapter numbers repeat across titles, so pair it with `titleNumber` (USC) or `code` (state); an unpaired chapter is rejected. String or list.",
      +  "examples": [
      +    "21"
      +  ],
      +  "title": "Chapter"
      +}
    • addedInput schema / properties / code
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Restrict to specific state statutory codes, e.g. `tx_pe` for the Texas Penal Code. Values are the `actId`s returned by `GET /us/statutes/divisions?corpusType=STATE&state=XX`, so the browse output can be fed straight back in. Pass a list to search several codes, across states if you like (`[\"tx_pe\", \"ca_pen\"]`). This is the only way to scope below a whole jurisdiction: `state=tx` alone searches all ~15 Texas codes at once.",
      +  "examples": [
      +    "tx_pe"
      +  ],
      +  "title": "Code"
      +}
    • changedInput schema / properties / corpusType / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "USC",
      -      "CFR",
      -      "STATE",
      -      "CONSTITUTION",
      -      "FEDERAL_RULES",
      -      "STATE_CONSTITUTION",
      -      "STATE_RULES",
      -      "EXECUTIVE_ACTION"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "USC",
      +      "CFR",
      +      "STATE",
      +      "CONSTITUTION",
      +      "FEDERAL_RULES",
      +      "STATE_CONSTITUTION",
      +      "STATE_RULES",
      +      "EXECUTIVE_ACTION",
      +      "REGULATION",
      +      "FEDERAL_REGISTER",
      +      "AGENCY_GUIDANCE",
      +      "SENTENCING_GUIDELINES",
      +      "US_TAX_TREATY",
      +      "STATE_AGENCY_GUIDANCE"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "enum": [
      +        "USC",
      +        "CFR",
      +        "STATE",
      +        "CONSTITUTION",
      +        "FEDERAL_RULES",
      +        "STATE_CONSTITUTION",
      +        "STATE_RULES",
      +        "EXECUTIVE_ACTION",
      +        "REGULATION",
      +        "FEDERAL_REGISTER",
      +        "AGENCY_GUIDANCE",
      +        "SENTENCING_GUIDELINES",
      +        "US_TAX_TREATY",
      +        "STATE_AGENCY_GUIDANCE"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / corpusType / description
      Previous value: -"Restrict to one corpus. One of: `USC` (United States Code), `CFR` (Code of Federal Regulations), `STATE` (state statutes — 41 states currently ingested), `CONSTITUTION` (U.S. Constitution), `FEDERAL_RULES` (FRCP / FRCrP / FRE / FRAP / FRBP), `STATE_CONSTITUTION` (state constitutions, currently CA/VA/NC/WI), `STATE_RULES` (state court rules, currently CA), `EXECUTIVE_ACTION` (Federal Register Presidential Documents). Omit to search across all corpora."New value: +"Restrict to one corpus, or to several by passing a list (`\"corpusType\": [\"USC\", \"CFR\"]`). One of: `USC` (United States Code), `CFR` (Code of Federal Regulations), `STATE` (state statutory codes; call `/us/statutes/coverage` for the list of ingested jurisdictions), `CONSTITUTION` (U.S. Constitution), `FEDERAL_RULES` (FRCP / FRCrP / FRE / FRAP / FRBP), `STATE_CONSTITUTION` (state constitutions; call `/us/statutes/coverage` for the current jurisdiction list), `STATE_RULES` (state court rules; see `/us/statutes/coverage`), `EXECUTIVE_ACTION` (Federal Register Presidential Documents), `REGULATION` (state administrative regulations; pair with `state`), `FEDERAL_REGISTER` (Federal Register agency rules, final and proposed), `AGENCY_GUIDANCE` (agency guidance: SSA rulings, IRS notices, revenue rulings and procedures). Omit to search across all corpora."
    • addedInput schema / properties / excerptChars
      Added value: +{
      +  "default": 500,
      +  "description": "Characters 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.",
      +  "maximum": 4000,
      +  "minimum": 100,
      +  "title": "Excerptchars",
      +  "type": "integer"
      +}
    • addedInput schema / properties / fields
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array",
      +      "uniqueItems": true
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Return only these result fields, e.g. `[\"title\", \"excerpt\"]`. A result carries 40+ fields and most are null on any given row, so a full page of 50 ships a lot of nulls. `actId` and `citation` are always included, because a row without them cannot be used or attributed. Unknown names are rejected with 422 so a typo does not silently drop a field you needed. Omit for the full object.",
      +  "enum": [
      +    "actId",
      +    "actStatus",
      +    "amendmentYears",
      +    "amendmentsCount",
      +    "breadcrumb",
      +    "chapter",
      +    "chapterName",
      +    "citation",
      +    "citationShort",
      +    "corpusType",
      +    "crossReferencesCfr",
      +    "crossReferencesUsc",
      +    "currencyNote",
      +    "displayPath",
      +    "docxUrl",
      +    "excerpt",
      +    "externalUrl",
      +    "federalRegisterCitations",
      +    "frCommentsCloseOn",
      +    "frCorrectionOf",
      +    "frCorrections",
      +    "frDocketIds",
      +    "frEffectiveOn",
      +    "frRegulationIdNumbers",
      +    "frRegulationsDotGovUrl",
      +    "frRelatedDocuments",
      +    "frSignificant",
      +    "goodLawStatus",
      +    "govInfoHtmlUrl",
      +    "govInfoPdfUrl",
      +    "granuleId",
      +    "htmlUrl",
      +    "implementingRegulations",
      +    "issueDate",
      +    "lastAmendedYear",
      +    "packageId",
      +    "parent",
      +    "part",
      +    "partName",
      +    "pdfUrl",
      +    "popularName",
      +    "publicLaws",
      +    "relevanceScore",
      +    "renumberedTo",
      +    "sectionNumber",
      +    "sectionTitle",
      +    "source",
      +    "sourceCredit",
      +    "state",
      +    "stateHtmlUrl",
      +    "statutoryAuthority",
      +    "subchapter",
      +    "subchapterName",
      +    "subpart",
      +    "subpartName",
      +    "textUrl",
      +    "title",
      +    "titleName",
      +    "titleNumber",
      +    "transferredTo",
      +    "xmlUrl",
      +    "year"
      +  ],
      +  "examples": [
      +    [
      +      "title",
      +      "excerpt",
      +      "state"
      +    ]
      +  ],
      +  "title": "Fields"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results to return."New value: +"Number of results to return per page."
    • addedInput schema / properties / matchType
      Added value: +{
      +  "default": "any",
      +  "description": "Controls exact vs. semantic matching, so there is no need for a separate keyword-only search mode. `any` (default) is hybrid semantic + keyword ranking and suits natural-language questions. Use `all` for strict keyword matching (every query term must appear in the text) or `phrase` for an exact-phrase match, e.g. a defined term or a statutory phrase, when you want lexical precision. To pull up one specific section, pass its citation as the query (e.g. `42 U.S.C. § 1983`, `Cal. Civ. Code § 1950.5`) and it resolves to that section at rank 1.",
      +  "enum": [
      +    "any",
      +    "all",
      +    "phrase"
      +  ],
      +  "title": "Matchtype",
      +  "type": "string"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "description": "How many results to skip, for paging. Every page of a given query is cut from one ranking, so results never repeat or go missing between pages, and a later page costs no more than the first. The deepest reachable result is `offset` + `limit`; check `hasMore` to know when there is nothing further.",
      +  "maximum": 70,
      +  "minimum": 0,
      +  "title": "Offset",
      +  "type": "integer"
      +}
    • addedInput schema / properties / part
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Scope a search to one 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` straight back to search within that part. Pair it with `titleNumber`; an unpaired part is rejected. String or list.",
      +  "examples": [
      +    "240"
      +  ],
      +  "title": "Part"
      +}
    • addedInput schema / properties / source
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Scope to one or more of the following. The named source within `corpusType`, for corpora that fold several independently filterable bodies of law into one token.\n\n`FEDERAL_RULES` sources: `frcp` (Federal Rules of Civil Procedure), `frcrp` (Federal Rules of Criminal Procedure), `fre` (Federal Rules of Evidence), `frap` (Federal Rules of Appellate Procedure), `frbp` (Federal Rules of Bankruptcy Procedure), `sct` (Rules of the Supreme Court of the United States).\n\n`CFR` sources: `far` (Federal Acquisition Regulation (48 C.F.R. ch. 1)), `dfars` (Defense Federal Acquisition Regulation Supplement (48 C.F.R. ch. 2)) (both are already part of `CFR`; this only splits the existing Title 48 data by chapter, it does not add new sections).\n\n`AGENCY_GUIDANCE` sources: `agency_guidance` (General agency guidance), `administrative_guidance` (Synthesized administrative guidance (e.g. SALT cap, CTC, 401(k) limits)), `ssa_ruling` (Social Security Administration Rulings), `irs_rev_proc` (IRS Revenue Procedures), `irs_notice` (IRS Notices), `irs_rev_rul` (IRS Revenue Rulings), `irs_announcement` (IRS Announcements), `merger_guidelines` (DOJ & FTC Merger Guidelines (2023)), `doj_leniency` (DOJ Antitrust Division Leniency Policy), `copyright_circular` (US Copyright Office Circulars), `doj_justice_manual` (DOJ Justice Manual), `uscis_policy_manual` (USCIS Policy Manual), `mpep` (USPTO Manual of Patent Examining Procedure (MPEP)), `tmep` (USPTO Trademark Manual of Examining Procedure (TMEP)), `cftc_staff_letter` (CFTC Staff Letters (no-action, exemptive, interpretative; 2008-present)), `fincen_ruling` (FinCEN Administrative Rulings), `fincen_guidance` (FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets)), `frb_sr_letter` (Federal Reserve Supervision and Regulation (SR) / Consumer Affairs (CA) Letters), `occ_bulletin` (OCC Bulletins), `occ_interpretive_letter` (OCC Interpretive Letters), `fdic_fil` (FDIC Financial Institution Letters (FILs)), `dfars_pgi` (DFARS PGI (Procedures, Guidance, and Information)), `nlrb_gc_memo` (NLRB General Counsel Memoranda), `nlrb_advice_memo` (NLRB Division of Advice Memoranda (rolling 10-year window, not the full archive)), `cpsc_advisory_opinion` (CPSC Office of General Counsel Advisory Opinions (historical, 1970s-2012)), `cpsc_secg` (CPSC Small Entity Compliance Guides), `bis_advisory_opinion` (BIS (Bureau of Industry and Security) Advisory Opinions), `ddtc_commodity_jurisdiction` (DDTC (Directorate of Defense Trade Controls) Commodity Jurisdiction Determinations), `ddtc_guidance` (DDTC (Directorate of Defense Trade Controls) Policy Guidance Documents), `hhs_ocr_hipaa_faq` (HHS Office for Civil Rights HIPAA FAQs), `hhs_ocr_hipaa_guidance` (HHS Office for Civil Rights HIPAA Guidance Materials), `hhs_ocr_resolution_agreement` (HHS Office for Civil Rights HIPAA Resolution Agreements and Civil Money Penalties), `fcc_declaratory_ruling` (FCC (Federal Communications Commission) Declaratory Rulings), `ferc_policy_statement` (FERC (Federal Energy Regulatory Commission) Policy Statements), `doe_appliance_guidance` (DOE Appliance Standards Guidance and FAQs). Every result carries its own `source`, so you can pass a hit's value straight back. An unrecognized value is rejected with 422.",
      +  "enum": [
      +    "administrative_guidance",
      +    "agency_guidance",
      +    "bis_advisory_opinion",
      +    "cftc_staff_letter",
      +    "copyright_circular",
      +    "cpsc_advisory_opinion",
      +    "cpsc_secg",
      +    "ddtc_commodity_jurisdiction",
      +    "ddtc_guidance",
      +    "dfars",
      +    "dfars_pgi",
      +    "doe_appliance_guidance",
      +    "doj_justice_manual",
      +    "doj_leniency",
      +    "far",
      +    "fcc_declaratory_ruling",
      +    "fdic_fil",
      +    "ferc_policy_statement",
      +    "fincen_guidance",
      +    "fincen_ruling",
      +    "frap",
      +    "frb_sr_letter",
      +    "frbp",
      +    "frcp",
      +    "frcrp",
      +    "fre",
      +    "hhs_ocr_hipaa_faq",
      +    "hhs_ocr_hipaa_guidance",
      +    "hhs_ocr_resolution_agreement",
      +    "irs_announcement",
      +    "irs_notice",
      +    "irs_rev_proc",
      +    "irs_rev_rul",
      +    "merger_guidelines",
      +    "mpep",
      +    "nlrb_advice_memo",
      +    "nlrb_gc_memo",
      +    "occ_bulletin",
      +    "occ_interpretive_letter",
      +    "sct",
      +    "ssa_ruling",
      +    "tmep",
      +    "uscis_policy_manual"
      +  ],
      +  "examples": [
      +    "sct"
      +  ],
      +  "title": "Source"
      +}
    • changedInput schema / properties / state / anyOf
      Previous value: -[
      -  {
      -    "maxLength": 2,
      -    "minLength": 2,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / state / description
      Previous value: -"2-letter state code (lowercase, e.g. `ca`, `tx`, `ny`) used to filter state corpora. Ignored when `corpusType` is `USC`, `CFR`, `CONSTITUTION`, `FEDERAL_RULES`, or `EXECUTIVE_ACTION`."New value: +"Jurisdiction filter. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or `federal` to scope to USC / CFR / Constitution / federal rules. Pass a LIST to search several at once (`\"state\": [\"ca\", \"ny\", \"tx\"]`), which is one call instead of one per jurisdiction. Case-insensitive: `ca` and `CA` both work. An unrecognized value is rejected with 422 rather than silently matching nothing. Omit to search every jurisdiction."
    • addedInput schema / properties / state / enum
      Added value: +[
      +  "federal",
      +  "al",
      +  "ak",
      +  "az",
      +  "ar",
      +  "ca",
      +  "co",
      +  "ct",
      +  "de",
      +  "dc",
      +  "fl",
      +  "ga",
      +  "hi",
      +  "id",
      +  "il",
      +  "in",
      +  "ia",
      +  "ks",
      +  "ky",
      +  "la",
      +  "me",
      +  "md",
      +  "ma",
      +  "mi",
      +  "mn",
      +  "ms",
      +  "mo",
      +  "mt",
      +  "ne",
      +  "nv",
      +  "nh",
      +  "nj",
      +  "nm",
      +  "ny",
      +  "nc",
      +  "nd",
      +  "oh",
      +  "ok",
      +  "or",
      +  "pa",
      +  "pr",
      +  "ri",
      +  "sc",
      +  "sd",
      +  "tn",
      +  "tx",
      +  "ut",
      +  "vt",
      +  "va",
      +  "wa",
      +  "wv",
      +  "wi",
      +  "wy"
      +]
    • addedInput schema / properties / yearFrom
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 2100,
      +      "minimum": 1700,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only return sections whose version year is >= this. Combine with `yearTo` for a window. Sections with no year are excluded once either bound is set.",
      +  "examples": [
      +    2020
      +  ],
      +  "title": "Yearfrom"
      +}
    • addedInput schema / properties / yearTo
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 2100,
      +      "minimum": 1700,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only return sections whose version year is <= this.",
      +  "examples": [
      +    2026
      +  ],
      +  "title": "Yearto"
      +}
  3. First observedv0.1.0

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.