Search Title 38 CFR regulations
search_regulationsSearch 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
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | restrict to one provision kind: section or appendix | |
| page | No | 1-based result page (default 1) | |
| part | No | restrict to one CFR part number | |
| query | Yes | search terms, e.g. "traumatic brain injury compensation" | |
| chapter | No | restrict to one chapter, exact case-sensitive Roman numeral (e.g. "I") | |
| per_page | No | results per page (default 10, max 20) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hits | Yes | ||
| page | Yes | ||
| query | Yes | ||
| total | Yes | ||
| notice | Yes | ||
| perPage | Yes | ||
| matchMode | Yes | ||
| indexStale | Yes | ||
| matchedTerms | Yes | ||
| indexIssueDate | Yes | ||
| unmatchedTerms | Yes |