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) 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.

Input Schema

TableJSON 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 (1–200,000, default 64,000). 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

TableJSON 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 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.
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.
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. 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"
      +  ]
      +}
  2. 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."
  3. 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"
      +}
  4. 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"
      +]
  5. 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"
      -]
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

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

The annotations already declare readOnlyHint and idempotentHint, and the description adds substantial operational behavior beyond that: full-text windows default to 64,000 characters, max_chars raises to 200,000, large rules require paging via offset, and the response carries body length and a resume offset. This gives the agent a realistic model of call behavior and network cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then uses the dash to introduce metadata and cross-source handles. The remaining sentences compactly explain the full-text window behavior, paging, and size thresholds without filler. Every clause carries actionable information.

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 tool of this complexity, the description covers workflow chaining, pagination through long bodies, parameter dependencies, and document number variants. An output schema exists, so a field-by-field return breakdown is unnecessary. Nothing needed to invoke the tool correctly is 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?

All four parameters have detailed schema descriptions (100% coverage), so the baseline is already strong. The description adds further value by explaining when include_full_text should be set, how offset and max_chars interplay, and what document number formats are legal, including examples like '98-1572' and 'E9-25990'. This goes well beyond the structured schema.

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 precise verb-resource pair: 'Fetch one Federal Register document by its FR document number' and enumerates the exact metadata fields returned. It further distinguishes itself from siblings by naming the chain destinations (regulations_get_docket, regulations_find_comments, regulations_search_rules, regulations_get_cfr_section), so an agent can immediately tell this is the workflow hub tool.

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?

It provides clear context for when to use the tool: retrieve one document by FR number, then chain into related tools, and set include_full_text only when the rule body is needed. However, it never explicitly states when a sibling should be chosen instead (e.g., if you already have a docket ID, call regulations_get_docket directly), so exclusions are missing.

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.