Skip to main content
Glama

Search Title 38 CFR regulations

search_regulations
Read-onlyIdempotent

Search the local Title 38 (VA) CFR full-text index by keyword to retrieve ranked section citations, headings, and relevance snippets, with filters for part, chapter, or provision kind.

Instructions

Full-text search across the local Title 38 (VA) CFR index using ranked keyword matching. Returns section citations, headings, relevance snippets, bm25 scores (lower is better) and the query terms visible in each hit. The CANDIDATE SET is every provision matching AT LEAST ONE query term, so a provision that answers part of the question stays in the results instead of being excluded by the words it does not use; total counts those candidates (plus the pinned citation when the candidate set did not already hold it). The hits are ordered by: (1) a hit whose HEADING carries the query's content terms as a phrase (or the corpus phrase a synonym stands for), (2) a hit matching EVERY query term ahead of one matching only some, (3) bm25, lower is better. Use part to scope results to a single CFR part (e.g. "4" for ratings, "17" for prosthetics), kind to restrict results to one provision kind ("section" or "appendix"), and chapter to scope to one chapter by its Roman-numeral identifier (e.g. "I"; exact, case-sensitive). Follow up with get_section to read a hit in full. If the query itself is a citation (e.g. "4.130" or "38 CFR 4.16"), that exact section is pinned to the top of page 1 (totals include the pin on every page) and marked direct: true — the reliable client signal; the pinned hit's inResults flag reports whether it also matched the ranked results. Quoted spans (e.g. "exact regulatory language") are emitted as FTS5 phrase queries — the last token gets a prefix wildcard (so "language" also matches "languages"); earlier tokens are matched exactly. Hits are ranked by LEXICAL OVERLAP with the query, not by legal authority: the first hit is the provision sharing the most words with the query, which is often not the provision that governs the question. Read each hit's heading and fetch its full text with get_section before you cite it. Each response also carries matchedTerms and unmatchedTerms: the query's content words (stopwords, single characters and bare numerals removed), split into those the returned hits answered and those they did not. A non-empty unmatchedTerms means the returned text does not speak to that part of your question — the governing provision may be a later hit, may be reachable only under different wording, or may not be in this index. Never cite a provision you have not read in full, and never state that Title 38 does not address a question on the basis of this response alone.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "<query>"
    },
    "name": "search_regulations"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNorestrict to one provision kind: section or appendix
pageNo1-based result page (default 1)
partNorestrict to one CFR part number
queryYessearch terms, e.g. "traumatic brain injury compensation"
chapterNorestrict to one chapter, exact case-sensitive Roman numeral (e.g. "I")
per_pageNoresults per page (default 10, max 20)

Output Schema

NameRequiredDescriptionDefault
hitsYes
pageYes
queryYes
totalYes
noticeYes
perPageYes
matchModeYes
indexStaleYes
matchedTermsYes
indexIssueDateYes
unmatchedTermsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv0.2.1
    • addedInput schema / properties / chapter
      Added value: +{
      +  "description": "restrict to one chapter, exact case-sensitive Roman numeral (e.g. \"I\")",
      +  "maxLength": 8,
      +  "minLength": 1,
      +  "pattern": "^[IVXLCDM]+$",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "restrict to one provision kind: section or appendix",
      +  "enum": [
      +    "section",
      +    "appendix"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / hits / items / properties / partTitle
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / hits / items / properties / sourceUrlAtIndexDate
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / hits / items / required
      Previous value: -[
      -  "citation",
      -  "citationDisplay",
      -  "sourceUrl",
      -  "direct",
      -  "heading",
      -  "part",
      -  "path",
      -  "snippet",
      -  "score",
      -  "matches",
      -  "inResults"
      -]New value: +[
      +  "citation",
      +  "citationDisplay",
      +  "sourceUrl",
      +  "sourceUrlAtIndexDate",
      +  "direct",
      +  "heading",
      +  "part",
      +  "partTitle",
      +  "path",
      +  "snippet",
      +  "score",
      +  "matches",
      +  "inResults"
      +]
    • addedOutput schema / properties / matchedTerms
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / unmatchedTerms
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "query",
      -  "page",
      -  "perPage",
      -  "total",
      -  "matchMode",
      -  "indexIssueDate",
      -  "indexStale",
      -  "notice",
      -  "hits"
      -]New value: +[
      +  "query",
      +  "page",
      +  "perPage",
      +  "total",
      +  "matchMode",
      +  "indexIssueDate",
      +  "indexStale",
      +  "notice",
      +  "matchedTerms",
      +  "unmatchedTerms",
      +  "hits"
      +]
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the read-only annotations: candidate-set semantics, three-tier ranking order, bm25 interpretation, citation pinning with `direct` and `inResults`, quoted-phrase/prefix behavior, and explicit caveats that ranking is lexical not authoritative. These details materially affect how an agent should interpret and cite results.

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?

Front-loads the purpose and core search semantics, and nearly every sentence carries operational meaning. It is dense and long, but the length is largely justified by the complexity of ranking, pinning, and matchedTerms behavior.

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

Completeness5/5

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

Given six parameters, full schema descriptions, an output schema, and read-only annotations, the description covers what an agent needs: result ordering, candidate-set scope, citation pinning, matched/unmatched terms, and citation-safety guidance.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds useful semantics: example part numbers ('4' for ratings, '17' for prosthetics), clarification that chapter is exact and case-sensitive, and the effect of `page` on pinned citation totals.

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?

States a specific verb and resource: full-text search across the local Title 38 CFR index. It clearly distinguishes itself from siblings by telling the agent to follow up with get_section to read a hit in full.

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?

Provides concrete scoping guidance for `part`, `kind`, and `chapter`, and explains that citation queries are pinned. It does not explicitly say when to use browse_title38 or get_section_at instead, but the follow-up workflow with get_section is clear.

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