Skip to main content
Glama

federal-regulations-mcp-server

regulations_list_open_comments

regulations_list_open_comments
Read-only

List Federal Register documents currently open for public comment, sorted by closing date (soonest first) across the whole open window, filterable by document type, agency slug, and topic. "What can I still weigh in on?" Covers proposed rules and the final rules that take comment (direct final and interim final rules) by default; add NOTICE for the much larger set of notices with comment periods. Runs on the Federal Register's open-comment window and needs no key: each row carries its Regulations.gov docket and document IDs, comment count, and comment URL from the Federal Register document's embedded Regulations.gov info. Open one row with regulations_get_document for the full document, or pull the comments with regulations_find_comments (which, like regulations_get_docket, needs REGULATIONS_GOV_API_KEY).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, default 1. Pages run over the whole open window in closing-date order; totalPages and nextPage in the response say how far it goes.
typeNoDocument types to include: PRORULE (proposed rules), RULE (final rules that request comment, including direct final and interim final rules), NOTICE (information-collection and other notices with comment periods — a much larger set). Default, and when empty: ["PRORULE", "RULE"].
queryNoFull-text filter across open documents. Omit to list every document currently open for comment.
agenciesNoFilter to one or more agencies by Federal Register agency slug (e.g. "environmental-protection-agency") — lowercase kebab-case, not a name or acronym. Every row lists its agencies with their slugs; read agencies[].slug off a row here or in regulations_search_rules. One unrecognized slug fails the whole request.
per_pageNoDocuments per page (1–100, default 20).
closing_beforeNoOnly documents whose comment period closes on or before this date, ISO 8601 (YYYY-MM-DD), a real calendar day. Use to find deadlines you need to act on soon.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe Federal Register document limit that was reached.
asOfNoThe "today" the open window was computed from — the current date in US Eastern time (ISO 8601). A comment period stays open through 11:59 PM Eastern on its close date.
errorNoPresent when the call failed. Absent on success.
keyedNoWhether REGULATIONS_GOV_API_KEY is set, which decides whether regulations_get_docket and regulations_find_comments can follow up on a row. Every row field is filled either way.
shownNoDocuments returned on this page.
noticeNoGuidance when nothing matched, when the page is past the end, or when the window was truncated.
resultsNoDocuments open for comment on this page, closing soonest first; documents closing the same day are ordered by document number.
nextPageNoPage to request next — present only when documents remain past this page.
truncatedNoTrue when the Federal Register reported its 10,000-document maximum, so the window holds only the 10,000 most recently published matches.
totalCountNoDocuments open for comment matching the filters — the window the pages run over.
totalPagesNoPages in the window at this per_page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedOutput schema / properties / asOf / description
      Previous value: -"The \"today\" the open-window filter used (ISO 8601)."New value: +"The \"today\" the open window was computed from — the current date in US Eastern time (ISO 8601). A comment period stays open through 11:59 PM Eastern on its close date."
    • changedOutput schema / properties / keyed / description
      Previous value: -"Whether comment counts were enriched (REGULATIONS_GOV_API_KEY present)."New value: +"Whether REGULATIONS_GOV_API_KEY is set, which decides whether regulations_get_docket and regulations_find_comments can follow up on a row. Every row field is filled either way."
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when nothing matched, when the page is past the end, when the window was truncated, or that comment counts are unavailable without a key."New value: +"Guidance when nothing matched, when the page is past the end, or when the window was truncated."
    • changedOutput schema / properties / results / items / properties / commentCount / description
      Previous value: -"Comment count from the FR document's Regulations.gov info; null when unkeyed or 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 / 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.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / results / items / properties / commentsCloseOn / description
      Previous value: -"Comment-period close date (ISO 8601)."New value: +"Last day of the comment period (ISO 8601), inclusive, in Eastern time."
    • changedOutput schema / properties / results / items / properties / daysRemaining / description
      Previous value: -"Whole days from asOf until the comment period closes."New value: +"Whole days from asOf to commentsCloseOn; 0 means comments close at the end of today."
    • changedOutput schema / properties / results / items / properties / docketIds / description
      Previous value: -"Docket IDs — chain into regulations_get_docket / 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 to regulations_search_rules as docket_id. Not always a Regulations.gov ID: for regulations_get_docket / regulations_find_comments use regulationsGovDocketId."
    • 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"
      +  ]
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "documentNumber",
      -  "title",
      -  "type",
      -  "agencies",
      -  "publicationDate",
      -  "commentsCloseOn",
      -  "daysRemaining",
      -  "docketIds",
      -  "commentCount"
      -]New value: +[
      +  "documentNumber",
      +  "title",
      +  "type",
      +  "agencies",
      +  "publicationDate",
      +  "commentsCloseOn",
      +  "daysRemaining",
      +  "docketIds",
      +  "regulationsGovDocketId",
      +  "regulationsGovDocumentId",
      +  "commentCount",
      +  "commentUrl"
      +]
  2. Changed28 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\")."New value: +"Filter to one or more agencies by Federal Register agency slug (e.g. \"environmental-protection-agency\") — lowercase kebab-case, not a name or acronym. Every row lists its agencies with their slugs; read agencies[].slug off a row here or in regulations_search_rules. One unrecognized slug fails the whole request."
    • changedInput schema / properties / closing_before / description
      Previous value: -"Only rules whose comment period closes on or before this date, ISO 8601 (YYYY-MM-DD). Use to find deadlines you need to act on soon."New value: +"Only documents whose comment period closes on or before this date, ISO 8601 (YYYY-MM-DD), a real calendar day. Use to find deadlines you need to act on soon."
    • changedInput schema / properties / page / description
      Previous value: -"Page number (1–50). The FR caps total_pages at 50; with per_page=100 this covers up to 5,000 open rules."New value: +"Page number, default 1. Pages run over the whole open window in closing-date order; totalPages and nextPage in the response say how far it goes."
    • changedInput schema / properties / page / maximum
      Previous value: -50New value: +10000
    • changedInput schema / properties / per_page / description
      Previous 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."New value: +"Documents per page (1–100, default 20)."
    • changedInput schema / properties / per_page / minimum
      Previous value: -2New value: +1
    • changedInput schema / properties / query / description
      Previous value: -"Full-text filter across open rules. Omit to list all rules currently open for comment."New value: +"Full-text filter across open documents. Omit to list every document currently open for comment."
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Document types to include: PRORULE (proposed rules), RULE (final rules that request comment, including direct final and interim final rules), NOTICE (information-collection and other notices with comment periods — a much larger set). Default, and when empty: [\"PRORULE\", \"RULE\"].",
      +  "items": {
      +    "enum": [
      +      "PRORULE",
      +      "RULE",
      +      "NOTICE"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "asOf",
      -      "keyed",
      -      "results",
      -      "totalCount"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "asOf",
      +      "keyed",
      +      "results",
      +      "totalCount",
      +      "totalPages"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "The Federal Register document limit that was reached.",
      +  "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. 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"
      +]
    • addedOutput schema / properties / nextPage
      Added value: +{
      +  "description": "Page to request next — present only when documents remain past this page.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance when nothing matched, or that comment counts are unavailable without a key."New value: +"Guidance when nothing matched, when the page is past the end, when the window was truncated, or that comment counts are unavailable without a key."
    • changedOutput schema / properties / results / description
      Previous value: -"Rules open for comment (this page), closing soonest first."New value: +"Documents open for comment on this page, closing soonest first; documents closing the same day are ordered by document number."
    • changedOutput schema / properties / results / items / description
      Previous value: -"One open-for-comment rule."New value: +"One document open for comment."
    • 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"
    • changedOutput schema / properties / results / items / properties / title / description
      Previous value: -"Rule title."New value: +"Document title."
    • changedOutput schema / properties / results / items / properties / type / description
      Previous value: -"Document type."New value: +"Document type — \"Proposed Rule\", \"Rule\", or \"Notice\"; \"Unknown\" when unlisted."
    • changedOutput schema / properties / shown / description
      Previous value: -"Results returned on this page."New value: +"Documents returned on this page."
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Total rules open for comment matching the filters."New value: +"Documents open for comment matching the filters — the window the pages run over."
    • addedOutput schema / properties / totalPages
      Added value: +{
      +  "description": "Pages in the window at this per_page.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when matches exceed the FR 5,000-record navigation ceiling."New value: +"True when the Federal Register reported its 10,000-document maximum, so the window holds only the 10,000 most recently published matches."
  3. Changed2 schema fields changed
    • removedOutput schema / properties / results / items / properties / commentCount / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / results / items / properties / commentCount / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  4. 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": [
      +      "asOf",
      +      "keyed",
      +      "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: -[
      -  "asOf",
      -  "keyed",
      -  "results",
      -  "totalCount"
      -]
  5. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations (readOnlyHint=true, openWorldHint=true) already carry the safety profile, so the bar is lower; the description adds substantial behavior beyond them: default type coverage and the much-larger NOTICE set, the no-key auth disclosure, row composition (docket/document IDs, comment count, comment URL), and regulatory-ref cross-linking. No contradiction with annotations — read-only and open-world phrasing is consistent throughout.

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 core function is front-loaded in sentence one, and every subsequent sentence adds value: type defaults, auth requirements, row contents, and sibling routing. It is slightly dense — 'needs no key' and 'needs REGULATIONS_GOV_API_KEY' make the same point twice, and the rhetorical question adds flavor without information — but nothing is wasted.

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?

With an output schema present, safety covered by annotations, and an input schema at 100% coverage, the description fills the remaining gaps: defaults, auth, row shape, and follow-up routes. Minor omissions: no explicit statement on when to prefer regulations_search_rules over this tool, and no hint of how the NOTICE set's size affects pagination or response volume.

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% with unusually rich per-parameter documentation (defaults, enum meanings, slug format, error behavior, response pagination hints, calendar-day semantics). The description summarizes the filters ('document type, agency slug, and topic') and re-emphasizes the NOTICE expansion, but adds no meaning the schema lacks. Baseline 3 applies because the schema does the heavy lifting.

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?

States a specific verb ('List') + resource ('Federal Register documents currently open for public comment') + scope ('across the whole open window'), with an explicit sort order ('closing date, soonest first'). The use-case shorthand 'What can I still weigh in on?' and the precise default-type behavior (PRORULE/RULE with NOTICE opt-in) make it distinguishable from the sibling search/list tools at a glance.

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?

Explicitly routes to alternatives: regulations_get_document for full documents, regulations_find_comments for comments, and distinguishes them by the REGULATIONS_GOV_API_KEY requirement while noting this tool 'needs no key'. The open-comment-window scope implies the contrast with historical searches, but it never explicitly names regulations_search_rules as the alternative for non-open documents, leaving that exclusion to inference.

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.