Skip to main content
Glama

federal-regulations-mcp-server

regulations_get_document

regulations_get_document
Read-onlyIdempotent

Fetch one Federal Register document by its FR document number — full metadata (title, type, agencies, abstract, action, effective/comment dates, RINs, EO 12866 significance, and for a presidential document its subtype, number, signing date, and president) plus the cross-source handles that make this a workflow server. The output carries the Regulations.gov docket ID (chain into regulations_get_docket or regulations_find_comments), the docket numbers the Federal Register prints (chain back into regulations_search_rules as docket_id), the comment count and comment URL, and the affected CFR parts (chain into regulations_get_cfr_section). Set include_full_text only when the rule body itself is needed: it returns the plain-text body as a window of up to 64,000 characters (max_chars raises it to 200,000), with the body's total length and, when text remains, the offset to resume from. Short documents return whole; major final rules run past a million characters, so page through with offset rather than reading them in one call.

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": {
      "document_number": "<document_number>"
    },
    "name": "regulations_get_document"
  }
}

Input Schema

NameRequiredDescriptionDefault
offsetNoCharacter offset into the plain-text body where the window starts (default 0). Pass the fullTextNextOffset from the previous call to read on. Implies include_full_text.
max_charsNoMost body characters to return in this window (at least 1, default 64,000, capped at 200,000 with a notice). Implies include_full_text.
document_numberYesFederal Register document number, as regulations_search_rules returns it in documentNumber: "2024-07773" from 2010 on, older and correction numbers like "98-1572", "E9-25990", or "C1-2009-30484".
include_full_textNoWhen true, inline one window of the document body as plain text (see offset and max_chars). Omitted, the body URLs alone come back unless offset or max_chars is passed; fetch full text only when you need to read the rule itself, not just its metadata and cross-links.

Output Schema

NameRequiredDescriptionDefault
typeNoDocument type.
datesNoFree-text dates summary from the rule, or null.
errorNoPresent when the call failed. Absent on success.
titleNoDocument title.
actionNoAction line (e.g. "Final rule."), or null.
noticeNoGuidance when max_chars was above its ceiling, or when the requested offset is at or past the end of the body.
endPageNoLast Federal Register page the document is printed on; null when unrecorded. A CFR source-note cite to any page from startPage to endPage points at this document.
htmlUrlNoFederal Register web URL for the document.
abstractNoAbstract summary, or null.
agenciesNoIssuing agencies.
citationNoWhere the document starts in the Federal Register ("89 FR 49101"); null when none is recorded, as for most of 1994.
docketIdNoRegulations.gov docket ID — chain into regulations_get_docket / regulations_find_comments(docket_id). Null when 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.
fullTextNoOne window of the plain-text body, starting at fullTextOffset — present only when full text was requested. Empty when the offset is at or past the end.
docketIdsNoDocket 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 to regulations_search_rules as docket_id for every Federal Register document in the docket. Not always a Regulations.gov ID: docketId is.
startPageNoFirst Federal Register page the document is printed on; null when unrecorded.
commentUrlNoRegulations.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.
rawTextUrlNoURL of the plain-text body.
bodyHtmlUrlNoURL of the rendered HTML body.
effectiveOnNoEffective date (ISO 8601), or null.
significantNoWhether the Federal Register flags the document significant under EO 12866; null when no determination is recorded (every presidential document, most notices).
commentCountNoComments 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.
presidentialNoPresidential-document identifiers; null on every document that is not a presidential document.
cfrReferencesNoAffected CFR parts — chain into regulations_get_cfr_section.
documentNumberNoFederal Register document number.
fullTextLengthNoCharacters in the whole plain-text body — present with fullText.
fullTextOffsetNoCharacter offset fullText starts at — present with fullText.
commentsCloseOnNoLast 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.
publicationDateNoPublication date (ISO 8601).
commentPeriodOpenNoWhether that comment period is open today: true through 11:59 PM Eastern on commentsCloseOn, false after it, null when commentsCloseOn is null.
fullTextNextOffsetNoOffset to pass as offset to read the next window — present only when body text remains past this window.
regulationIdNumbersNoRegulation Identifier Number(s) (RIN).
supportingDocumentsNoRelated Regulations.gov supporting documents.
regulationsGovDocumentIdNoRegulations.gov document ID — pass as document_object_id to regulations_find_comments for the comments filed on this document alone. Null when absent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / max_chars / description
      Previous value: -"Most body characters to return in this window (1–200,000, default 64,000). Implies include_full_text."New value: +"Most body characters to return in this window (at least 1, default 64,000, capped at 200,000 with a notice). Implies include_full_text."
    • removedInput schema / properties / max_chars / maximum
      Removed value: -200000
    • addedInput schema / properties / max_chars / multipleOf
      Added value: +1
    • changedInput schema / properties / max_chars / type
      Previous value: -"integer"New value: +"number"
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "documentNumber",
      -      "title",
      -      "type",
      -      "abstract",
      -      "action",
      -      "dates",
      -      "publicationDate",
      -      "citation",
      -      "startPage",
      -      "endPage",
      -      "effectiveOn",
      -      "commentsCloseOn",
      -      "commentPeriodOpen",
      -      "agencies",
      -      "regulationIdNumbers",
      -      "cfrReferences",
      -      "docketIds",
      -      "docketId",
      -      "regulationsGovDocumentId",
      -      "commentCount",
      -      "commentUrl",
      -      "supportingDocuments",
      -      "bodyHtmlUrl",
      -      "rawTextUrl",
      -      "htmlUrl"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "documentNumber",
      +      "title",
      +      "type",
      +      "abstract",
      +      "action",
      +      "dates",
      +      "publicationDate",
      +      "citation",
      +      "startPage",
      +      "endPage",
      +      "effectiveOn",
      +      "significant",
      +      "presidential",
      +      "commentsCloseOn",
      +      "commentPeriodOpen",
      +      "agencies",
      +      "regulationIdNumbers",
      +      "cfrReferences",
      +      "docketIds",
      +      "docketId",
      +      "regulationsGovDocumentId",
      +      "commentCount",
      +      "commentUrl",
      +      "supportingDocuments",
      +      "bodyHtmlUrl",
      +      "rawTextUrl",
      +      "htmlUrl"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when the requested offset is at or past the end of the body."New value: +"Guidance when max_chars was above its ceiling, or when the requested offset is at or past the end of the body."
    • addedOutput schema / properties / presidential
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "number": {
      +          "description": "Executive order, proclamation, or determination (\"2026-22\") number; null when the document has none. An executive order number passes back as executive_order_number.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "president": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "name": {
      +                  "description": "President name.",
      +                  "type": "string"
      +                },
      +                "slug": {
      +                  "description": "President slug — pass it back as the president filter.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "slug"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The issuing president; null when unrecorded."
      +        },
      +        "signingDate": {
      +          "description": "Signing date (ISO 8601); null when unrecorded.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "type": {
      +          "description": "Subtype: \"Executive Order\", \"Proclamation\", \"Determination\", …; null when unrecorded.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "number",
      +        "signingDate",
      +        "president"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Presidential-document identifiers; null on every document that is not a presidential document."
      +}
    • addedOutput schema / properties / significant
      Added value: +{
      +  "description": "Whether the Federal Register flags the document significant under EO 12866; null when no determination is recorded (every presidential document, most notices).",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
  2. Changed10 schema fields changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "documentNumber",
      -      "title",
      -      "type",
      -      "abstract",
      -      "action",
      -      "dates",
      -      "publicationDate",
      -      "effectiveOn",
      -      "commentsCloseOn",
      -      "agencies",
      -      "regulationIdNumbers",
      -      "cfrReferences",
      -      "docketId",
      -      "regulationsGovDocumentId",
      -      "commentCount",
      -      "supportingDocuments",
      -      "bodyHtmlUrl",
      -      "rawTextUrl",
      -      "htmlUrl"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "documentNumber",
      +      "title",
      +      "type",
      +      "abstract",
      +      "action",
      +      "dates",
      +      "publicationDate",
      +      "citation",
      +      "startPage",
      +      "endPage",
      +      "effectiveOn",
      +      "commentsCloseOn",
      +      "commentPeriodOpen",
      +      "agencies",
      +      "regulationIdNumbers",
      +      "cfrReferences",
      +      "docketIds",
      +      "docketId",
      +      "regulationsGovDocumentId",
      +      "commentCount",
      +      "commentUrl",
      +      "supportingDocuments",
      +      "bodyHtmlUrl",
      +      "rawTextUrl",
      +      "htmlUrl"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / 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"
      +  ]
      +}
    • changedOutput schema / properties / commentCount / description
      Previous value: -"FR-reported comment count from Regulations.gov; null when not on Regulations.gov."New value: +"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."
    • addedOutput schema / 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 / 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 / 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 / docketId / description
      Previous value: -"Regulations.gov docket ID — chain into regulations_get_docket / find_comments. Null when not on Regulations.gov."New value: +"Regulations.gov docket ID — chain into regulations_get_docket / regulations_find_comments(docket_id). Null when 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."
    • addedOutput schema / properties / docketIds
      Added value: +{
      +  "description": "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 to regulations_search_rules as docket_id for every Federal Register document in the docket. Not always a Regulations.gov ID: docketId is.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / endPage
      Added value: +{
      +  "description": "Last Federal Register page the document is printed on; null when unrecorded. A CFR source-note cite to any page from startPage to endPage points at this document.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / startPage
      Added value: +{
      +  "description": "First Federal Register page the document is printed on; null when unrecorded.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / document_number / description
      Previous value: -"Federal Register document number (e.g. \"2025-14555\"). Obtain from regulations_search_rules results (the documentNumber field)."New value: +"Federal Register document number, as regulations_search_rules returns it in documentNumber: \"2024-07773\" from 2010 on, older and correction numbers like \"98-1572\", \"E9-25990\", or \"C1-2009-30484\"."
    • changedInput schema / properties / document_number / pattern
      Previous value: -"^[0-9]{4}-[0-9]+$"New value: +"^[A-Za-z]?[0-9]{1,4}-[0-9]{1,6}(-[0-9]{1,6})?$"
    • changedOutput schema / properties / regulationsGovDocumentId / description
      Previous value: -"Regulations.gov document ID — chain into regulations_find_comments (document-scoped). Null when absent."New value: +"Regulations.gov document ID — pass as document_object_id to regulations_find_comments for the comments filed on this document alone. Null when absent."
  4. Changed17 schema fields changed
    • removedInput schema / properties / include_full_text / default
      Removed value: -false
    • changedInput schema / properties / include_full_text / description
      Previous value: -"When true, fetch and inline the document body as plain text (can be large). Default false returns the body URLs only; fetch full text only when you need to read the rule itself, not just its metadata and cross-links."New value: +"When true, inline one window of the document body as plain text (see offset and max_chars). Omitted, the body URLs alone come back unless offset or max_chars is passed; fetch full text only when you need to read the rule itself, not just its metadata and cross-links."
    • addedInput schema / properties / max_chars
      Added value: +{
      +  "description": "Most body characters to return in this window (1–200,000, default 64,000). Implies include_full_text.",
      +  "maximum": 200000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Character offset into the plain-text body where the window starts (default 0). Pass the fullTextNextOffset from the previous call to read on. Implies include_full_text.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / agencies / description
      Previous value: -"Issuing agency names."New value: +"Issuing agencies."
    • addedOutput schema / properties / agencies / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / agencies / items / description
      Added value: +"One issuing agency."
    • addedOutput schema / properties / agencies / items / properties
      Added value: +{
      +  "name": {
      +    "description": "Agency name.",
      +    "type": "string"
      +  },
      +  "slug": {
      +    "description": "Federal Register agency slug — the value the agencies filter on regulations_search_rules and regulations_list_open_comments takes. Null when the Federal Register lists the agency by raw name only.",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / agencies / items / required
      Added value: +[
      +  "name",
      +  "slug"
      +]
    • changedOutput schema / properties / agencies / items / type
      Previous value: -"string"New value: +"object"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Federal Register document exists with that number. `upstream_unavailable`: Federal Register returned a 5xx, timed out, served an HTML error page, or failed to serve the body URL it published (include_full_text only). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `full_text_disabled`: offset or max_chars was passed together with include_full_text: false. `not_found`: No Federal Register document exists with that number. `upstream_unavailable`: Federal Register returned a 5xx, timed out, served an HTML error page, or failed to serve the body URL it published (include_full_text only). Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "not_found",
      -  "upstream_unavailable"
      -]New value: +[
      +  "full_text_disabled",
      +  "not_found",
      +  "upstream_unavailable"
      +]
    • changedOutput schema / properties / fullText / description
      Previous value: -"Inlined plain-text body — present only when include_full_text=true."New value: +"One window of the plain-text body, starting at fullTextOffset — present only when full text was requested. Empty when the offset is at or past the end."
    • addedOutput schema / properties / fullTextLength
      Added value: +{
      +  "description": "Characters in the whole plain-text body — present with fullText.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / fullTextNextOffset
      Added value: +{
      +  "description": "Offset to pass as offset to read the next window — present only when body text remains past this window.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / fullTextOffset
      Added value: +{
      +  "description": "Character offset fullText starts at — present with fullText.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Guidance when the requested offset is at or past the end of the body.",
      +  "type": "string"
      +}
  5. Changed16 schema fields changed
    • removedOutput schema / properties / abstract / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / abstract / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / action / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / action / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / commentCount / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / commentCount / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / commentsCloseOn / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / commentsCloseOn / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / dates / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / dates / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / docketId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / docketId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / effectiveOn / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / effectiveOn / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / regulationsGovDocumentId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / regulationsGovDocumentId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  6. Changed6 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
    • 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": [
      +      "documentNumber",
      +      "title",
      +      "type",
      +      "abstract",
      +      "action",
      +      "dates",
      +      "publicationDate",
      +      "effectiveOn",
      +      "commentsCloseOn",
      +      "agencies",
      +      "regulationIdNumbers",
      +      "cfrReferences",
      +      "docketId",
      +      "regulationsGovDocumentId",
      +      "commentCount",
      +      "supportingDocuments",
      +      "bodyHtmlUrl",
      +      "rawTextUrl",
      +      "htmlUrl"
      +    ]
      +  },
      +  {
      +    "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: `not_found`: No Federal Register document exists with that number. `upstream_unavailable`: Federal Register returned a 5xx, timed out, served an HTML error page, or failed to serve the body URL it published (include_full_text only). Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "not_found",
      +            "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: -[
      -  "documentNumber",
      -  "title",
      -  "type",
      -  "abstract",
      -  "action",
      -  "dates",
      -  "publicationDate",
      -  "effectiveOn",
      -  "commentsCloseOn",
      -  "agencies",
      -  "regulationIdNumbers",
      -  "cfrReferences",
      -  "docketId",
      -  "regulationsGovDocumentId",
      -  "commentCount",
      -  "supportingDocuments",
      -  "bodyHtmlUrl",
      -  "rawTextUrl",
      -  "htmlUrl"
      -]
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint, yet the description still adds substantial operational detail: 64,000-character default window, 200,000 cap via max_chars, body total length and resume offset, and the warning that major final rules exceed a million characters. This is exactly the behavioral context an agent needs to avoid truncated reads.

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 the core action, then structured as metadata → cross-links → full-text paging, so the reader hits the essentials first. The metadata enumeration is long and the max_chars cap is repeated from the schema, costing some tightness.

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?

Despite an output schema carrying the return shape, the description explains the cross-source handles and how to chain them, which the schema cannot convey. Combined with the paging semantics, an agent has everything needed to call this correctly on first try.

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 baseline is 3; the description adds real meaning by explaining the paging workflow (offset = fullTextNextOffset from prior call, max_chars raises the cap with a notice) and the read-on pattern. It slightly restates the schema's window arithmetic, keeping it just below a 5.

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?

Opens with a specific verb+resource+identifier ('Fetch one Federal Register document by its FR document number') and immediately enumerates the returned metadata. It is clearly distinguished from siblings like regulations_search_rules and regulations_get_docket, which are named as chain targets rather than substitutes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to set include_full_text ('only when the rule body itself is needed') and when not to ('not just its metadata and cross-links'), plus the paging rule ('page through with offset rather than reading them in one call'). It also names four specific alternatives/successors for each cross-source handle.

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.