Skip to main content
Glama

search_cfr

Read-only

Full-text search across the Code of Federal Regulations.

Instructions

Full-text search across the Code of Federal Regulations.

Returns matching sections with excerpts, headings, scores, and hierarchy.

current_only=True (default) returns only text in effect now. eCFR's own "current" index still lists some superseded and removed versions, so each hit is checked against the section's version history: older copies of a section are dropped, and hits whose text has since been replaced or removed are dropped and listed under current_check ('superseded' with the current version's date, 'removed' with the removal date). Up to 10 parts per page are checked; any hit not checked is marked. current_only=False returns every historical version, so a section amended 5 times appears 5 times.

Search caps at 10,000 total results. Use hierarchy filters (title, chapter, part) to narrow if you hit the cap. chapter/part/subpart/section filters need a title; without one, title 48 is assumed (title_assumed says so). Labels like 'FAR Part 15', 'Subpart 15.3' or '§ 52.212-5' are read as 15, 15.3 and 52.212-5. Most titles other than 48 number chapters in Roman numerals (2 CFR chapter 'II').

order controls result ordering: 'relevance' (default), 'newest_first', 'oldest_first', 'hierarchy', or 'citations'.

agency_slugs filters to one or more agencies (single slug string or a list, e.g. 'defense-acquisition-regulations-system'). Use list_agencies() to find slugs.

last_modified_after/before use YYYY-MM-DD format and filter by the date sections were last amended. Useful for finding recent regulatory changes.

per_page accepts 1 to 5000 (default 20); paginate with page for more.

Input Schema

NameRequiredDescriptionDefault
pageNo
partNo
orderNo
queryYes
titleNo
chapterNo
sectionNo
subpartNo
per_pageNo
agency_slugsNo
current_onlyNo
last_modified_afterNo
last_modified_beforeNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.0.7
    • addedInput schema / properties / agency_slugs
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Agency Slugs"
      +}
    • addedInput schema / properties / chapter / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / order
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Order"
      +}
    • addedInput schema / properties / part / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / section / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / subpart / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observedv0.2.6

TDQS

A4.7/5.0
Behavior5/5

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

Despite readOnly/destructive/openWorld annotations already covering safety, the description adds substantial non-obvious behavior: the current_only version-history filtering, dropping superseded/removed hits with dates, the 'up to 10 parts per page checked' limit and unchecked markers, and the 10,000 result cap. This is exactly the behavioral context annotations can't convey.

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-loaded with purpose and return shape, then organized by parameter group. Information density is high and nearly every sentence carries a distinct fact, though the multi-line current_only explanation is somewhat verbose relative to the rest.

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?

For a 13-param search tool, the description covers filtering, ordering, pagination, date filtering, result caps, and version-history edge cases. With an output schema present it needn't restate return fields, yet it still flags the current_check structure, leaving nothing essential for correct invocation missing.

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

Parameters5/5

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

With 0% schema description coverage across 13 parameters, the description carries the full burden and does so: order's five enumerable values, agency_slugs format and list-acceptance, YYYY-MM-DD format for last_modified_after/before, per_page 1-5000 (default 20), page pagination, current_only default semantics, and the title-dependency of chapter/part/subpart/section filters.

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?

Starts with a specific verb+resource: 'Full-text search across the Code of Federal Regulations,' and immediately clarifies the return shape (sections with excerpts, headings, scores, hierarchy). An agent can distinguish it from siblings like get_cfr_content or get_cfr_structure without opening the schema.

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?

Gives concrete usage guidance: use hierarchy filters to narrow when hitting the 10,000 cap, use list_agencies() to find valid agency slugs, and explains the title-assumption fallback. It lacks explicit when-not-to-use / sibling-alternative routing, so it falls short of a 5.

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