Skip to main content
Glama

federal-regulations-mcp-server

regulations_search_rules

regulations_search_rules
Read-only

Search the Federal Register — the daily journal of US proposed rules, final rules, notices, and presidential documents (1994–present) — filtering by full-text query, document type, agency slug, publication date range, affected CFR title and part, printed docket number, and RIN, all combined. A page cite from a CFR source note ("89 FR 49102", with its date) resolves to the documents printed on that page. The primary discovery entry point: results carry the document number (open with regulations_get_document), its citation and page range, each issuing agency with its filterable slug, printed docket numbers, Regulations.gov docket and document IDs, comment count and comment URL, whether the comment period is open, RINs, and affected CFR parts that chain into the comment and codified-text tools. A query ranks by relevance unless order says otherwise; filter-only browsing lists newest first. The Federal Register caps navigation at 50 pages and the match count at 10,000; when a result set is larger, narrow with published_after/published_before rather than paging deeper.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rinNoOnly documents carrying this Regulation Identifier Number — a regulationIdNumbers entry such as "2040-AG18", which follows one rulemaking from proposal to final rule. Pass the complete RIN: a fragment ("2040") matches every RIN that contains it.
pageNoPage number (1–50, default 1). The Federal Register serves 50 pages, so a query reaches 50 × per_page matches (5,000 at per_page 100); totalPages and nextPage in the response say how far this one goes. To reach past that, narrow with published_after/published_before rather than paging deeper.
typeNoDocument types to include. PRORULE=Proposed Rule, RULE=Final Rule, NOTICE=Notice, PRESDOCU=Presidential Document. Omit for all types.
orderNoResult order. Defaults to relevance with a query, newest without one. relevance without a query falls back to newest first; oldest lists the earliest publications first. Ignored with citation, whose matches come in page order.
queryNoFull-text search across document title and body. Omit to browse by filters alone (e.g. all EPA proposed rules in a date range).
agenciesNoFilter to one or more agencies by Federal Register agency slug (e.g. "environmental-protection-agency", "securities-and-exchange-commission") — lowercase kebab-case, not a name or acronym. Every result lists its agencies with their slugs; if unsure, search by query and read agencies[].slug off a result. One unrecognized slug fails the whole request.
cfr_partNoOnly documents whose cfrReferences list this part of cfr_title: a part number ("141") or a range ("140-143"), such as the part regulations_get_cfr_section just read; a "Part" or "pt." prefix is dropped. Requires cfr_title. A part with a letter in it ("1203a") cannot be filtered on. Unlike a query of "40 CFR 141", which matches documents that mention the part, this matches the documents whose CFR references list it.
citationNoA Federal Register page cite, "89 FR 49102" (volume FR page) — such as one from the source note that ends a regulations_get_cfr_section bodyText. Returns the documents printed on that page, usually one and sometimes a few sharing it, ordered by start page. Requires citation_date and replaces published_after/published_before. Volume 59 (1994) onward.
per_pageNoResults per page (2–100, default 20). The Federal Register API treats exactly 1 as its default page size instead of returning one result.
cfr_titleNoOnly documents whose affected CFR parts (cfrReferences) fall in this title (1–50) — such as the title regulations_get_cfr_section just read. Alone it filters to the title; with cfr_part, to that part.
docket_idNoOnly documents carrying this docket number as the Federal Register prints it — a docketIds entry from a result here or from regulations_get_document, with or without a wrapper such as "Docket No.". Lists a docket's Federal Register documents with no REGULATIONS_GOV_API_KEY. A Regulations.gov docket ID matches only where the Federal Register prints it. Pass the complete number: a fragment ("FAA-2026") matches every docket that contains it.
citation_dateNoThe publication date printed beside the cite in the source note (YYYY-MM-DD) — "89 FR 49102, June 11, 2024" is 2024-06-11. Required with citation; its year is the volume + 1935.
published_afterNoEarliest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day. Combine with published_before to window large result sets — the FR caps navigation at 50 pages.
published_beforeNoLatest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe most matches 50 pages reach at this per_page (50 × per_page); set with truncated.
errorNoPresent when the call failed. Absent on success.
shownNoResults returned on this page.
noticeNoGuidance when nothing matched, when the page is past the end, or when matches lie beyond the last page.
resultsNoMatching Federal Register documents (this page).
nextPageNoPage to request next — present only when a later page holds matches.
truncatedNoTrue when more documents matched than 50 pages reach at this per_page, so some are on no page — set on every page of such a set.
totalCountNoMatches before pagination. The Federal Register stops counting at 10,000, so 10,000 means at least that many.
totalPagesNoPages at this per_page, at most the 50 the Federal Register serves; 0 when nothing matched.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • addedInput schema / properties / cfr_part
      Added value: +{
      +  "description": "Only documents whose cfrReferences list this part of cfr_title: a part number (\"141\") or a range (\"140-143\"), such as the part regulations_get_cfr_section just read; a \"Part\" or \"pt.\" prefix is dropped. Requires cfr_title. A part with a letter in it (\"1203a\") cannot be filtered on. Unlike a query of \"40 CFR 141\", which matches documents that mention the part, this matches the documents whose CFR references list it.",
      +  "type": "string"
      +}
    • addedInput schema / properties / cfr_title
      Added value: +{
      +  "description": "Only documents whose affected CFR parts (cfrReferences) fall in this title (1–50) — such as the title regulations_get_cfr_section just read. Alone it filters to the title; with cfr_part, to that part.",
      +  "maximum": 50,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / citation
      Added value: +{
      +  "anyOf": [
      +    {
      +      "const": "",
      +      "type": "string"
      +    },
      +    {
      +      "description": "Federal Register volume and page, \"89 FR 49102\".",
      +      "pattern": "^\\s*(\\d{1,3})\\s*[Ff]\\.?\\s?[Rr]\\.?\\s*(\\d{1,6})\\s*$",
      +      "type": "string"
      +    }
      +  ],
      +  "description": "A Federal Register page cite, \"89 FR 49102\" (volume FR page) — such as one from the source note that ends a regulations_get_cfr_section bodyText. Returns the documents printed on that page, usually one and sometimes a few sharing it, ordered by start page. Requires citation_date and replaces published_after/published_before. Volume 59 (1994) onward."
      +}
    • addedInput schema / properties / citation_date
      Added value: +{
      +  "anyOf": [
      +    {
      +      "const": "",
      +      "type": "string"
      +    },
      +    {
      +      "description": "ISO 8601 date (YYYY-MM-DD).",
      +      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +      "type": "string"
      +    }
      +  ],
      +  "description": "The publication date printed beside the cite in the source note (YYYY-MM-DD) — \"89 FR 49102, June 11, 2024\" is 2024-06-11. Required with citation; its year is the volume + 1935."
      +}
    • addedInput schema / properties / docket_id
      Added value: +{
      +  "description": "Only documents carrying this docket number as the Federal Register prints it — a docketIds entry from a result here or from regulations_get_document, with or without a wrapper such as \"Docket No.\". Lists a docket's Federal Register documents with no REGULATIONS_GOV_API_KEY. A Regulations.gov docket ID matches only where the Federal Register prints it. Pass the complete number: a fragment (\"FAA-2026\") matches every docket that contains it.",
      +  "type": "string"
      +}
    • changedInput schema / properties / order / description
      Previous value: -"Result order. Defaults to relevance with a query, newest without one. relevance without a query falls back to newest first; oldest lists the earliest publications first."New value: +"Result order. Defaults to relevance with a query, newest without one. relevance without a query falls back to newest first; oldest lists the earliest publications first. Ignored with citation, whose matches come in page order."
    • addedInput schema / properties / rin
      Added value: +{
      +  "description": "Only documents carrying this Regulation Identifier Number — a regulationIdNumbers entry such as \"2040-AG18\", which follows one rulemaking from proposal to final rule. Pass the complete RIN: a fragment (\"2040\") matches every RIN that contains it.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. `invalid_filter`: The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs. `date_range_inverted`: The start of a date range is later than its end. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. `invalid_filter`: The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs. `date_range_inverted`: The start of a date range is later than its end. `title_required_for_part`: cfr_part was given with no cfr_title. Part numbers repeat across titles, and the Federal Register rejects a part filter that names no title. `citation_incomplete`: citation or citation_date was given without the other, or together with published_after/published_before. `citation_out_of_range`: The cite's volume predates the Federal Register API (before volume 59, 1994), or citation_date falls in a different year from the volume. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "upstream_unavailable",
      -  "invalid_filter",
      -  "date_range_inverted"
      -]New value: +[
      +  "upstream_unavailable",
      +  "invalid_filter",
      +  "date_range_inverted",
      +  "title_required_for_part",
      +  "citation_incomplete",
      +  "citation_out_of_range"
      +]
    • addedOutput schema / properties / results / items / properties / citation
      Added value: +{
      +  "description": "Where the document starts in the Federal Register (\"89 FR 49101\"); null when none is recorded, as for most of 1994.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / commentCount
      Added value: +{
      +  "description": "Comments Regulations.gov received on this document, as the Federal Register reports it; null when not on Regulations.gov. Can exceed the comment records regulations_find_comments lists.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / commentPeriodOpen
      Added value: +{
      +  "description": "Whether that comment period is open today: true through 11:59 PM Eastern on commentsCloseOn, false after it, null when commentsCloseOn is null.",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / commentUrl
      Added value: +{
      +  "description": "Regulations.gov page for submitting a comment on this document, as the Federal Register lists it. Null when it lists none, as it usually stops doing once the comment period closes.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / results / items / properties / commentsCloseOn / description
      Previous value: -"Comment-period close date (ISO 8601); when set, still open for comment."New value: +"Last day of the comment period this document printed (ISO 8601), inclusive, in Eastern time; null when it prints none. A later extension published as its own document is not reflected here."
    • changedOutput schema / properties / results / items / properties / docketIds / description
      Previous value: -"Docket IDs — chain into regulations_get_docket / regulations_find_comments."New value: +"Docket numbers as the Federal Register prints them — an agency's own number (\"REG-101355-26\"), or an ID inside a wrapper (\"Docket No. FAA-2026-8449\"). Pass one back as the docket_id filter. Not always a Regulations.gov ID: for regulations_get_docket / regulations_find_comments use regulationsGovDocketId."
    • addedOutput schema / properties / results / items / properties / endPage
      Added value: +{
      +  "description": "Last Federal Register page the document is printed on; null when unrecorded.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / regulationsGovDocketId
      Added value: +{
      +  "description": "Regulations.gov docket ID — chains into regulations_get_docket / regulations_find_comments(docket_id). Null when the document is not on Regulations.gov. An <AGENCY>_FRDOC_0001 docket (EPA_FRDOC_0001 holds 3,451 documents) is Regulations.gov's catch-all for Federal Register documents outside a rulemaking docket, so this document's comments come from regulationsGovDocumentId instead.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / regulationsGovDocumentId
      Added value: +{
      +  "description": "Regulations.gov document ID — pass as document_object_id to regulations_find_comments for the comments filed on this document. Null when absent.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / startPage
      Added value: +{
      +  "description": "First Federal Register page the document is printed on; null when unrecorded.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "documentNumber",
      -  "title",
      -  "type",
      -  "abstract",
      -  "publicationDate",
      -  "agencies",
      -  "docketIds",
      -  "regulationIdNumbers",
      -  "cfrReferences",
      -  "commentsCloseOn",
      -  "effectiveOn",
      -  "htmlUrl"
      -]New value: +[
      +  "documentNumber",
      +  "title",
      +  "type",
      +  "abstract",
      +  "publicationDate",
      +  "citation",
      +  "startPage",
      +  "endPage",
      +  "agencies",
      +  "docketIds",
      +  "regulationsGovDocketId",
      +  "regulationsGovDocumentId",
      +  "commentCount",
      +  "commentUrl",
      +  "regulationIdNumbers",
      +  "cfrReferences",
      +  "commentsCloseOn",
      +  "commentPeriodOpen",
      +  "effectiveOn",
      +  "htmlUrl"
      +]
  2. Changed10 schema fields changed
    • changedInput schema / properties / page / description
      Previous value: -"Page number (1–50, default 1). The FR API caps total_pages at 50 — with per_page=100 this allows navigating up to 5,000 results. To reach beyond that window, narrow with published_after/published_before rather than paging deeper."New value: +"Page number (1–50, default 1). The Federal Register serves 50 pages, so a query reaches 50 × per_page matches (5,000 at per_page 100); totalPages and nextPage in the response say how far this one goes. To reach past that, narrow with published_after/published_before rather than paging deeper."
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "results",
      -      "totalCount"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "results",
      +      "totalCount",
      +      "totalPages"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "The most matches 50 pages reach at this per_page (50 × per_page); set with truncated.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. `invalid_filter`: The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. `invalid_filter`: The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs. `date_range_inverted`: The start of a date range is later than its end. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "upstream_unavailable",
      -  "invalid_filter"
      -]New value: +[
      +  "upstream_unavailable",
      +  "invalid_filter",
      +  "date_range_inverted"
      +]
    • addedOutput schema / properties / nextPage
      Added value: +{
      +  "description": "Page to request next — present only when a later page holds matches.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when nothing matched or when results were truncated."New value: +"Guidance when nothing matched, when the page is past the end, or when matches lie beyond the last page."
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total matches before pagination (FR count; capped at 10,000 by the API window)."New value: +"Matches before pagination. The Federal Register stops counting at 10,000, so 10,000 means at least that many."
    • addedOutput schema / properties / totalPages
      Added value: +{
      +  "description": "Pages at this per_page, at most the 50 the Federal Register serves; 0 when nothing matched.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when matches exceed the FR 50-page (5,000-record) navigation ceiling."New value: +"True when more documents matched than 50 pages reach at this per_page, so some are on no page — set on every page of such a set."
  3. Changed12 schema fields changed
    • changedInput schema / properties / agencies / description
      Previous value: -"Filter to one or more agencies by Federal Register agency slug (e.g. \"environmental-protection-agency\", \"securities-and-exchange-commission\"). Slugs are the kebab-case agency name; if unsure, search by query and read the agency slugs off the results."New value: +"Filter to one or more agencies by Federal Register agency slug (e.g. \"environmental-protection-agency\", \"securities-and-exchange-commission\") — lowercase kebab-case, not a name or acronym. Every result lists its agencies with their slugs; if unsure, search by query and read agencies[].slug off a result. One unrecognized slug fails the whole request."
    • addedInput schema / properties / order
      Added value: +{
      +  "description": "Result order. Defaults to relevance with a query, newest without one. relevance without a query falls back to newest first; oldest lists the earliest publications first.",
      +  "enum": [
      +    "relevance",
      +    "newest",
      +    "oldest"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / published_after / description
      Previous value: -"Earliest publication date, ISO 8601 (YYYY-MM-DD). Combine with published_before to window large result sets — the FR caps navigation at 50 pages."New value: +"Earliest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day. Combine with published_before to window large result sets — the FR caps navigation at 50 pages."
    • changedInput schema / properties / published_before / description
      Previous value: -"Latest publication date, ISO 8601 (YYYY-MM-DD)."New value: +"Latest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. `invalid_filter`: The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "upstream_unavailable"
      -]New value: +[
      +  "upstream_unavailable",
      +  "invalid_filter"
      +]
    • changedOutput schema / properties / results / items / properties / agencies / description
      Previous value: -"Issuing agency names."New value: +"Issuing agencies."
    • addedOutput schema / properties / results / items / properties / agencies / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / results / items / properties / agencies / items / description
      Added value: +"One issuing agency."
    • addedOutput schema / properties / results / items / properties / agencies / items / properties
      Added value: +{
      +  "name": {
      +    "description": "Agency name.",
      +    "type": "string"
      +  },
      +  "slug": {
      +    "description": "Federal Register agency slug — pass it back as the agencies filter. Null when the Federal Register lists the agency by raw name only, so it cannot be filtered on.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / results / items / properties / agencies / items / required
      Added value: +[
      +  "name",
      +  "slug"
      +]
    • changedOutput schema / properties / results / items / properties / agencies / items / type
      Previous value: -"string"New value: +"object"
  4. Changed6 schema fields changed
    • removedOutput schema / properties / results / items / properties / abstract / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / results / items / properties / abstract / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / results / items / properties / commentsCloseOn / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / results / items / properties / commentsCloseOn / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / results / items / properties / effectiveOn / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / results / items / properties / effectiveOn / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  5. Changed8 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / per_page / description
      Previous value: -"Results per page (1–100, default 20)."New value: +"Results per page (2–100, default 20). The Federal Register API treats exactly 1 as its default page size instead of returning one result."
    • changedInput schema / properties / per_page / minimum
      Previous value: -1New value: +2
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "results",
      +      "totalCount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: Federal Register returned a 5xx, timed out, or served an HTML error page. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "upstream_unavailable"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "results",
      -  "totalCount"
      -]
  6. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, yet the description discloses far more: ranking defaults ("A query ranks by relevance unless order says otherwise; filter-only browsing lists newest first"), hard platform limits ("caps navigation at 50 pages and the match count at 10,000"), citation-specific ordering, the per_page=1 interpretation quirk, and failure modes like "One unrecognized slug fails the whole request." This goes well beyond the safety profile the annotations already provide.

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?

The description is long but information-dense; every sentence earns its place for a 14-parameter tool, covering the search action, filter dimensions, citation resolution, result payload, ordering defaults, and platform limits. The core action is front-loaded in the first clause. It is a single dense paragraph rather than scannable structure, which is the only minor cost.

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 the tool's high complexity (14 parameters, zero required, six siblings), the description covers the essential operational knowledge: when to use it, what results contain, the citation-resolution flow, ordering behavior, and the 50-page/10,000-match limits with an explicit mitigation. An output schema exists, so the summary of result fields in the description is a bonus rather than a requirement. Only explicit sibling exclusion guidance is absent, which keeps this below a 5.

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 of 3 applies — each of the 14 parameters already has a detailed schema description covering fragment matching, kebab-case slugs, date patterns, and constraints. The tool-level description adds only modest value beyond the schema, such as the narrowing strategy with published_after/published_before and the citation-date dependency. It does not repeat or need to repeat the schema's per-parameter detail.

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 opens with a specific verb and resource — "Search the Federal Register ... filtering by full-text query, document type, agency slug, publication date range, affected CFR title and part, printed docket number, and RIN, all combined." It enumerates the full filter surface and positions itself as "The primary discovery entry point," distinguishing it from siblings like regulations_get_document and regulations_browse_cfr.

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?

The description gives clear context for when to use the tool: it is the "primary discovery entry point," and it explains the result chain — "open with regulations_get_document" and "chain into the comment and codified-text tools." It also advises narrowing with published_after/published_before when results exceed navigation caps. However, it never explicitly says when NOT to use it versus alternatives such as regulations_browse_cfr or regulations_find_comments; the differentiation is implied rather than stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.