federal-regulations-mcp-server
What this MCP does
Searches and retrieves US federal rules, CFR provisions, rulemaking dockets, public comments, and open comment opportunities.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mode'], 'properties': {'date': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO 8601 date (YYYY-MM-DD).'}], 'description': "Point-in-time date, ISO 8601 (YYYY-MM-DD). Defaults to current. Structure mode uses it for the historical hierarchy, and rejects a date past the title's up-to-date date. Search mode matches only the section text in effect on that day, so a past date searches the CFR as it read then; eCFR indexes 2017-01-03 onward and rejects a date past its current index date."}, 'mode': {'enum': ['structure', 'search'], 'type': 'string', 'description': '"structure": list titles, a title\'s top-level divisions, or a part\'s sections and appendices, to find a cite. "search": full-text search the codified CFR for sections matching a phrase.'}, 'page': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1, 'description': "1-based page of search results, or of a part's listing in structure mode (default 1); ignored by a structure listing above a part, which comes back whole. A truncation notice names the next page. Live eCFR search pages through its first 10,000 hits only, so a page starting past them is refused â\x80\x94 narrow the query instead of paging deeper."}, 'part': {'type': 'string', 'description': 'CFR part within the title, in both modes â\x80\x94 structure mode lists every section and appendix in the part, flattened and paged by page/per_page; search mode restricts matches to text inside that part. Requires title; a part on its own is rejected. Parts can be alphanumeric ("1203a", "16A") and are matched exactly, so pass the identifier as eCFR writes it â\x80\x94 "58", not "Part 58" or "058".'}, 'query': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'minLength': 2, 'description': 'Search phrase, at least 2 characters.'}], 'description': 'Full-text search phrase (search mode, required in that mode). Ignored in structure mode.'}, 'title': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': "CFR title number (1â\x80\x9350). Structure mode: omit to list all 50 titles; provide it alone to list the title's top-level divisions (chapters, or subtitles) â\x80\x94 not the parts beneath them â\x80\x94 or with part to list that part. Search mode: optional filter restricting matches to that title â\x80\x94 e.g. 40 for environmental rules, 21 for food and drugs."}, 'per_page': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': "Rows per page â\x80\x94 search results, or nodes of a part's listing in structure mode (1â\x80\x9350, default 20)."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'date': {'type': 'string', 'description': 'Resolved point-in-time date â\x80\x94 the hierarchy snapshot (structure mode), or the day whose section text was searched (search mode, live source only).'}, 'mode': {'enum': ['structure', 'search'], 'type': 'string', 'description': 'Which mode produced this result.'}, 'page': {'type': 'number', 'description': "The page served â\x80\x94 of search results, or of a part's listing."}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['query_required', 'title_not_found', 'title_required_for_part', 'date_out_of_range', 'page_out_of_window', 'upstream_unavailable'], 'description': 'Machine-readable failure mode. Declared by this tool: `query_required`: mode="search" with no query phrase. `title_not_found`: Structure mode where eCFR publishes no tree for the title at that date (a reserved title, or a date before its coverage), or where the part is absent from the tree it does publish. `title_required_for_part`: A part was given with no title. Part identifiers repeat across titles, and eCFR rejects a part filter that names no title. `date_out_of_range`: A date past what eCFR serves: in structure mode, past the title\'s up-to-date date; in search mode, outside the indexed window (before 2017-01-03, or past its current index date). `page_out_of_window`: A live search page that starts past the 10,000 hits eCFR pages through for one query. `upstream_unavailable`: eCFR returned a 5xx, timed out, or served an HTML error page (live path). Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'identifier', 'label', 'description', 'reserved', 'cfrCite', 'appendix', 'subpart', 'subjectGroup'], 'properties': {'type': {'type': 'string', 'description': 'Node type: title, subtitle, or chapter above a part; section or appendix in a part listing. Treat an unknown type as passthrough.'}, 'label': {'type': 'string', 'description': 'Human-readable label, plain text.'}, 'cfrCite': {'type': ['string', 'null'], 'description': 'Assembled cite â\x86\x92 regulations_get_cfr_section: "40 CFR 50.1" for a section, "Appendix A-1 to Part 50, Title 40" for an appendix. Null on a level with no read path (title, subtitle, chapter).'}, 'subpart': {'type': ['string', 'null'], 'description': 'In a part listing, the label of the subpart the node sits under ("Subpart Aâ\x80\x94General"); null when no subpart encloses it, and on every node above a part.'}, 'appendix': {'type': ['string', 'null'], 'description': 'On an appendix node, the identifier to pass straight back as regulations_get_cfr_section\'s `appendix` input; null on every other node type. It is free-form prose, not a letter ("Schedule I to Part 789", "Special Federal Aviation Regulation No. 88"), so pass it verbatim rather than abbreviating it.'}, 'reserved': {'type': 'boolean', 'description': 'True when the node is reserved/empty.'}, 'identifier': {'type': 'string', 'description': 'Node identifier (e.g. "40", "I", "50.1").'}, 'description': {'type': ['string', 'null'], 'description': 'Label description, or null.'}, 'subjectGroup': {'type': ['string', 'null'], 'description': 'In a part listing, the heading of the subject group the node sits under (a group of sections inside a part or subpart); null when it sits in none, and on every node above a part.'}}, 'description': 'One hierarchy node.', 'additionalProperties': False}, 'description': "Structure mode: the 50 titles, a title's top-level divisions, or this page of a part's sections and appendices in document order."}, 'shown': {'type': 'number', 'description': 'Rows returned on this page.'}, 'notice': {'type': 'string', 'description': 'Guidance: the next page to request, a page past the end, an empty result, or what the count means.'}, 'source': {'enum': ['mirror', 'live'], 'type': 'string', 'description': 'Provenance: the synced mirror index, or the live eCFR search API (search mode).'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'part', 'section', 'appendix', 'heading', 'hierarchyPath', 'excerpt', 'cfrCite'], 'properties': {'part': {'type': 'string', 'description': 'CFR part.'}, 'title': {'type': 'number', 'description': 'CFR title number.'}, 'cfrCite': {'type': 'string', 'description': 'Assembled cite â\x86\x92 regulations_get_cfr_section. A section hit cites the section ("40 CFR 51.190"); an appendix hit cites the appendix in eCFR\'s own form ("Appendix C to Part 58, Title 40"), not the part around it, since the part\'s sections do not contain the matched text.'}, 'excerpt': {'type': 'string', 'description': 'Matched text snippet.'}, 'heading': {'type': 'string', 'description': 'What the matched node is called â\x80\x94 the section, appendix, or part heading. Distinct from cfrCite, which is where it lives.'}, 'section': {'type': ['string', 'null'], 'description': 'Section identifier, or null when the match is an appendix or a whole part.'}, 'appendix': {'type': ['string', 'null'], 'description': "On an appendix hit, the identifier to pass straight back as regulations_get_cfr_section's `appendix` input; null on a section hit. Always null on a mirror hit â\x80\x94 the index holds section text only, so mirror-sourced results never match an appendix."}, 'hierarchyPath': {'type': 'string', 'description': 'Path down to the match. A live hit names the part it sits in â\x80\x94 "Title 40 â\x80º Chapter I â\x80º Subchapter C â\x80º Part 51 â\x80\x94 Requirements for Preparation, Adoption, and Submittal of Implementation Plans â\x80º § 51.190" â\x80\x94 so the subject matter is readable without a second call. A mirror hit is structural only ("Title 14 â\x80º Part 25 â\x80º § 25.1043"): the index stores no level names. Check `source` before comparing paths across results.'}}, 'description': 'One matching CFR section or appendix.', 'additionalProperties': False}, 'description': 'Matching CFR sections and appendices, this page, one row per section however many of its versions matched (search mode).'}, 'truncated': {'type': 'boolean', 'description': 'True when another page follows this one.'}, 'countBasis': {'enum': ['sections', 'section_versions'], 'type': 'string', 'description': 'What a search totalCount counts. "sections": distinct sections and appendices, one per result row. "section_versions": eCFR\'s own hit count, which counts every indexed version of each section â\x80\x94 an upper bound on the rows the query pages through, reported until the whole hit list has been read.'}, 'totalCount': {'type': 'number', 'description': "Total matches before pagination â\x80\x94 search results (see countBasis for what they count), or the nodes in a part's listing."}, 'sourceScope': {'type': 'string', 'description': "What the answering corpus covers â\x80\x94 the mirror's title coverage, or the live index and the date it was read at â\x80\x94 narrowed by whichever of title and part the call supplied (search mode). Read it before concluding a query found nothing."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 20, 'minimum': 1, 'description': 'Page number (1-based). Regulations.gov caps a query at 20 pages (5,000 records); for a high-volume docket this surfaces a sample â\x80\x94 narrow by document_object_id.'}, 'per_page': {'type': 'integer', 'default': 25, 'maximum': 250, 'minimum': 5, 'description': 'Comments per page (5â\x80\x93250, default 25). Regulations.gov requires a minimum page size of 5.'}, 'docket_id': {'type': 'string', 'description': 'Fetch all comments in a docket by docket ID (e.g. "EPA-HQ-OAR-2025-0194"). Broadest scope. Exactly one of docket_id / document_object_id / fr_document_number / comment_id is required â\x80\x94 supplying two is rejected, not resolved by precedence.'}, 'comment_id': {'type': 'string', 'description': 'Fetch one comment\'s full detail and attachments by its Regulations.gov comment ID (e.g. "EPA-HQ-OAR-2025-0194-31102"). Use to read a single comment\'s body after finding it in a list. Mutually exclusive with the other three targeting parameters â\x80\x94 pass it alone, not alongside the docket it came from.'}, 'document_object_id': {'type': 'string', 'description': "Fetch comments on one specific document by its Regulations.gov object ID (the objectId from regulations_get_docket's documents). Comments usually attach to the docket's primary (proposed-rule) document. Mutually exclusive with the other three targeting parameters."}, 'fr_document_number': {'type': 'string', 'description': 'Convenience: fetch comments for a Federal Register document by its FR number (e.g. "2025-14555"). Resolves to the Regulations.gov document internally. Saves a get_document â\x86\x92 get_docket hop. Mutually exclusive with the other three targeting parameters.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'mode': {'enum': ['list', 'detail'], 'type': 'string', 'description': 'Which mode produced this result.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['auth_required', 'target_required', 'multiple_targets', 'not_found', 'rate_limited', 'upstream_unavailable'], 'description': 'Machine-readable failure mode. Declared by this tool: `auth_required`: REGULATIONS_GOV_API_KEY is not configured, or Regulations.gov rejected the key that is. `target_required`: None of docket_id / document_object_id / fr_document_number / comment_id was given. `multiple_targets`: More than one of docket_id / document_object_id / fr_document_number / comment_id was given. `not_found`: The target docket/document/comment has no comments or does not exist. `rate_limited`: Regulations.gov returned 429. `upstream_unavailable`: Regulations.gov returned a 5xx, timed out, or could not be reached at all. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Comments returned on this page (list mode).'}, 'title': {'type': 'string', 'description': 'Comment title (detail mode).'}, 'notice': {'type': 'string', 'description': 'Guidance â\x80\x94 empty results, or that bodies need comment_id detail mode.'}, 'target': {'type': 'string', 'description': 'What was queried â\x80\x94 docket / document / FR doc (list mode).'}, 'bodyText': {'type': ['string', 'null'], 'description': 'Comment body, HTML-stripped. A stub ("See Attached") when content is in attachments; null when empty (detail mode).'}, 'comments': {'type': 'array', 'items': {'type': 'object', 'required': ['commentId', 'title', 'documentType', 'postedDate', 'agencyId', 'objectId', 'withdrawn'], 'properties': {'title': {'type': 'string', 'description': 'Comment title (e.g. "Comment from Gates, Andrew").'}, 'agencyId': {'type': ['string', 'null'], 'description': 'Agency ID, or null.'}, 'objectId': {'type': 'string', 'description': 'Comment object ID.'}, 'commentId': {'type': 'string', 'description': 'Comment ID â\x80\x94 chains into comment_id for full detail.'}, 'withdrawn': {'type': 'boolean', 'description': 'True when the comment was withdrawn.'}, 'postedDate': {'type': 'string', 'description': 'Posted date.'}, 'documentType': {'type': 'string', 'description': 'Document type (e.g. "Public Submission").'}}, 'description': 'One comment summary.', 'additionalProperties': False}, 'description': 'Comments matching the target, this page (list mode). Bodies/attachments require comment_id detail mode.'}, 'docketId': {'type': ['string', 'null'], 'description': 'Docket ID, or null (detail mode).'}, 'commentId': {'type': 'string', 'description': 'Comment ID (detail mode).'}, 'truncated': {'type': 'boolean', 'description': 'True when comments exceed the 5,000-record ceiling (list mode).'}, 'withdrawn': {'type': 'boolean', 'description': 'True when the comment was withdrawn (detail mode).'}, 'postedDate': {'type': 'string', 'description': 'Posted date (detail mode).'}, 'totalCount': {'type': 'number', 'description': 'Total comments matching the target (list mode).'}, 'attachments': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'formats'], 'properties': {'title': {'type': 'string', 'description': 'Attachment title.'}, 'formats': {'type': 'array', 'items': {'type': 'object', 'required': ['format', 'fileUrl', 'size'], 'properties': {'size': {'type': ['number', 'null'], 'description': 'File size in bytes, or null.'}, 'format': {'type': 'string', 'description': 'File format (e.g. "pdf").'}, 'fileUrl': {'type': 'string', 'description': 'Download URL.'}}, 'description': 'One downloadable file format.', 'additionalProperties': False}, 'description': 'Available file formats for the attachment.'}}, 'description': 'One attachment with its available formats.', 'additionalProperties': False}, 'description': 'Attachment files â\x80\x94 substance lives here when attachmentOnly is true (detail mode).'}, 'organization': {'type': ['string', 'null'], 'description': 'Submitter organization, or null (detail mode).'}, 'receivedDate': {'type': ['string', 'null'], 'description': 'Received date, or null (detail mode).'}, 'submitterName': {'type': ['string', 'null'], 'description': 'Submitter name when public, or null (detail mode).'}, 'attachmentOnly': {'type': 'boolean', 'description': 'True when attachments exist and the body is a stub/empty â\x80\x94 the substance is in the attachment files (detail mode).'}, 'restrictReason': {'type': ['string', 'null'], 'description': 'Reason the comment is restricted, or null (detail mode).'}, 'commentOnDocumentId': {'type': ['string', 'null'], 'description': 'Document the comment was filed on, or null (detail mode).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title'], 'properties': {'date': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO 8601 date (YYYY-MM-DD).'}], 'description': "Point-in-time date, ISO 8601 (YYYY-MM-DD). Default current. eCFR serves 2017-01-01 through the title's up-to-date date, usually a few days behind today; a date outside that window is rejected, naming the window."}, 'part': {'type': 'string', 'description': 'CFR part within the title (e.g. "50"). Parts can be alphanumeric. Required unless appendix is given, where it is optional but recommended: an appendix identifier is unique within a part, not within a title, so without a part eCFR picks one of the matches. Obtain from regulations_browse_cfr or a Federal Register document\'s cfrReferences.'}, 'title': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'CFR title number (1â\x80\x9350). E.g. 40 for "Protection of Environment".'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Character offset into the text where the window starts (default 0). Pass bodyTextNextOffset from the previous call to read on, or a sections[].offset from a whole-part read to jump to that section.'}, 'section': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'description': 'Section identifier (e.g. "50.1").'}], 'description': 'Section within the part, normally written part.section as eCFR identifies it ("141.61"). Also accepted: the number alone ("61" in part 141), a leading "§" or "Sec.", and a paragraph cite ("141.61(c)"), which reads the whole section. Identifiers eCFR writes differently are read as given â\x80\x94 14 CFR 241 numbers its sections "25" and "1-1". Omit to fetch the entire part. Cannot be combined with appendix.'}, 'appendix': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'description': 'Appendix identifier (e.g. "Appendix A-1 to Part 50").'}], 'description': 'Appendix identifier, verbatim as eCFR writes it â\x80\x94 the `appendix` field or the leading phrase of the `cfrCite` on a regulations_browse_cfr appendix node or search hit. It is free-form prose, not a letter: "Appendix A-1 to Part 50", "Appendix A to Subpart C of Part 4", "Schedule I to Part 789", "Special Federal Aviation Regulation No. 88". Pass the whole phrase; a short form such as "A-1" matches nothing. Cannot be combined with section.'}, 'max_chars': {'type': 'integer', 'maximum': 200000, 'minimum': 1, 'description': 'Most text characters to return in this window (1â\x80\x93200,000, default 64,000).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['cfrCite', 'title', 'part', 'section', 'appendix', 'heading', 'hierarchyPath', 'date', 'source', 'bodyText', 'bodyTextOffset', 'bodyTextLength']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'date': {'type': 'string', 'description': 'The issue/point-in-time date the text reflects (ISO 8601).'}, 'part': {'type': ['string', 'null'], 'description': 'CFR part; null only for an appendix that hangs off a chapter, subchapter, or subtitle rather than a part.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found', 'location_required', 'conflicting_target', 'date_out_of_range', 'upstream_unavailable'], 'description': "Machine-readable failure mode. Declared by this tool: `not_found`: No such title/part/section/appendix at that date, under the section as given or any form it resolves to. `location_required`: Neither part nor appendix was given, so the call names no location to read. `conflicting_target`: Both section and appendix were given. They name two different locations, and picking one silently would return text the call did not ask for. `date_out_of_range`: The requested date precedes eCFR historical coverage (2017-01-01) or is past the title's up-to-date date. `upstream_unavailable`: eCFR returned a 5xx, timed out, or served an HTML error page (live path). Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'title': {'type': 'number', 'description': 'CFR title number.'}, 'notice': {'type': 'string', 'description': 'How a section written another way was resolved, and guidance when the offset is at or past the end of the text.'}, 'source': {'enum': ['mirror', 'live'], 'type': 'string', 'description': 'Provenance: the synced mirror, or the live eCFR API.'}, 'cfrCite': {'type': 'string', 'description': 'Assembled cite â\x80\x94 "40 CFR 50.1" for a section, "40 CFR 50" for a part, "Appendix A-1 to Part 50, Title 40" for an appendix (eCFR\'s own form, leading with the identifier this tool takes back as `appendix`).'}, 'heading': {'type': 'string', 'description': 'Section, part, or appendix heading.'}, 'section': {'type': ['string', 'null'], 'description': 'Section identifier that was read â\x80\x94 the resolved form when the input was written differently ("141.61" for "§ 141.61(c)"); null when a whole part or an appendix was fetched.'}, 'appendix': {'type': ['string', 'null'], 'description': 'Appendix identifier; null when a section or whole part was fetched.'}, 'bodyText': {'type': 'string', 'description': 'One window of the location\'s text, starting at bodyTextOffset, XML stripped to plain text. A whole part\'s text is each section\'s heading and body in order. Paragraphs, subheadings, editorial notes, tables (one pipe-delimited line per row), figure references ("[Figure: /graphics/â\x80¦]"), and each section\'s trailing source citation are kept in document order. The source citation is the bracketed Federal Register history a section ends in ("[36 FR 22384, Nov. 25, 1971, as amended at 81 FR 68276, Oct. 3, 2016]") â\x80\x94 pass one of its FR cites to regulations_search_rules to reach the rulemaking that produced this text. Empty when the offset is at or past the end, or where the location is a placeholder carrying nothing but its heading ("[Reserved]").'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['section', 'heading', 'cfrCite', 'offset'], 'properties': {'offset': {'type': 'number', 'description': "Offset in the whole part's text where this section starts â\x80\x94 pass as offset to read from it."}, 'cfrCite': {'type': 'string', 'description': 'Assembled cite for the section.'}, 'heading': {'type': 'string', 'description': 'Section heading.'}, 'section': {'type': 'string', 'description': 'Section identifier â\x80\x94 pass as section to read it alone.'}}, 'description': 'One section of the part, without its text.', 'additionalProperties': False}, 'description': "Present only on a whole-part fetch â\x80\x94 the part's sections whose text falls in this window, in order, without their text (bodyText carries it). A section that begins before the window and runs into it is included, so its offset can be below bodyTextOffset. Empty when the offset is past the end. To list every section and appendix of a part without reading its text, use regulations_browse_cfr in structure mode with title and part."}, 'appendices': {'type': 'array', 'items': {'type': 'object', 'required': ['appendix', 'heading'], 'properties': {'heading': {'type': 'string', 'description': 'Appendix heading.'}, 'appendix': {'type': 'string', 'description': 'Appendix identifier, for a follow-up read.'}}, 'description': 'One appendix in the part, named but not inlined.', 'additionalProperties': False}, 'description': "Present on a whole-part fetch when the part has appendices â\x80\x94 their identifiers and headings, without their text. A part's appendices routinely run several times the length of its sections, so they are not inlined; call this tool again with `appendix` set to one of these identifiers to read it. Absent means the part has no appendices; a single-section or appendix fetch never carries this field."}, 'hierarchyPath': {'type': 'string', 'description': 'Human-readable hierarchy path.'}, 'bodyTextLength': {'type': 'number', 'description': "Characters in the location's whole text."}, 'bodyTextOffset': {'type': 'number', 'description': 'Character offset bodyText starts at.'}, 'bodyTextNextOffset': {'type': 'number', 'description': 'Offset to pass as offset to read the next window â\x80\x94 present only when text remains past this window.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['docket_id'], 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 20, 'minimum': 1, 'description': 'Page number (1-based). Regulations.gov caps a query at 20 pages (5,000 records); beyond that, narrow with document_types.'}, 'per_page': {'type': 'integer', 'default': 25, 'maximum': 250, 'minimum': 5, 'description': 'Documents per page (5â\x80\x93250, default 25). Regulations.gov requires a minimum page size of 5.'}, 'docket_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]+$', 'description': 'Regulations.gov docket ID (e.g. "EPA-HQ-OAR-2025-0194"). Obtain from a Federal Register document\'s docketId (regulations_get_document) or an agency rulemaking reference.'}, 'document_types': {'type': 'array', 'items': {'enum': ['Proposed Rule', 'Rule', 'Notice', 'Supporting & Related Material', 'Other'], 'type': 'string'}, 'description': 'Filter the docket\'s documents to these types. Omit for all. A docket often contains hundreds of "Supporting & Related Material" items â\x80\x94 filter to "Proposed Rule"/"Rule" to find the rule documents.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['docketId', 'title', 'docketType', 'agencyId', 'rin', 'abstract', 'modifyDate', 'objectId', 'documentCount', 'documents']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'rin': {'type': ['string', 'null'], 'description': 'Regulation Identifier Number ("Not Assigned" when none), or null.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['auth_required', 'not_found', 'rate_limited', 'upstream_unavailable'], 'description': 'Machine-readable failure mode. Declared by this tool: `auth_required`: REGULATIONS_GOV_API_KEY is not configured, or Regulations.gov rejected the key that is. `not_found`: No docket exists with that ID. `rate_limited`: Regulations.gov returned 429 (1,000 requests/hour per key). `upstream_unavailable`: Regulations.gov returned a 5xx, timed out, or could not be reached at all. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Documents returned on this page.'}, 'title': {'type': 'string', 'description': 'Docket title.'}, 'notice': {'type': 'string', 'description': 'Guidance when the docket has no documents.'}, 'abstract': {'type': ['string', 'null'], 'description': 'Docket abstract, or null.'}, 'agencyId': {'type': ['string', 'null'], 'description': 'Agency ID (e.g. "EPA"), or null.'}, 'docketId': {'type': 'string', 'description': 'Regulations.gov docket ID.'}, 'objectId': {'type': ['string', 'null'], 'description': 'Docket object ID, or null.'}, 'documents': {'type': 'array', 'items': {'type': 'object', 'required': ['documentId', 'objectId', 'title', 'documentType', 'postedDate', 'frDocNum', 'commentEndDate', 'withdrawn'], 'properties': {'title': {'type': 'string', 'description': 'Document title.'}, 'frDocNum': {'type': ['string', 'null'], 'description': 'Federal Register document number â\x80\x94 chains back into regulations_get_document. Null when absent.'}, 'objectId': {'type': 'string', 'description': 'Document object ID â\x80\x94 chains into regulations_find_comments(document_object_id).'}, 'withdrawn': {'type': 'boolean', 'description': 'True when the document was withdrawn.'}, 'documentId': {'type': 'string', 'description': 'Regulations.gov document ID.'}, 'postedDate': {'type': 'string', 'description': 'Posted date.'}, 'documentType': {'type': 'string', 'description': 'Document type.'}, 'commentEndDate': {'type': ['string', 'null'], 'description': 'Comment-period end date; when set, open for comment.'}}, 'description': 'One document filed in the docket.', 'additionalProperties': False}, 'description': 'Documents filed in the docket (this page).'}, 'truncated': {'type': 'boolean', 'description': 'True when documentCount exceeds the returned set / 5,000 ceiling.'}, 'docketType': {'type': ['string', 'null'], 'description': 'Docket type (e.g. "Rulemaking"), or null.'}, 'modifyDate': {'type': ['string', 'null'], 'description': 'Last-modified date, or null.'}, 'documentCount': {'type': 'number', 'description': 'Total documents in the docket (before pagination).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['document_number'], 'properties': {'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, '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.'}, 'max_chars': {'type': 'integer', 'maximum': 200000, 'minimum': 1, 'description': 'Most body characters to return in this window (1â\x80\x93200,000, default 64,000). Implies include_full_text.'}, 'document_number': {'type': 'string', 'pattern': '^[0-9]{4}-[0-9]+$', 'description': 'Federal Register document number (e.g. "2025-14555"). Obtain from regulations_search_rules results (the documentNumber field).'}, 'include_full_text': {'type': 'boolean', 'description': '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.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'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']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'type': 'string', 'description': 'Document type.'}, 'dates': {'type': ['string', 'null'], 'description': 'Free-text dates summary from the rule, or null.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['full_text_disabled', 'not_found', 'upstream_unavailable'], 'description': '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'title': {'type': 'string', 'description': 'Document title.'}, 'action': {'type': ['string', 'null'], 'description': 'Action line (e.g. "Final rule."), or null.'}, 'notice': {'type': 'string', 'description': 'Guidance when the requested offset is at or past the end of the body.'}, 'htmlUrl': {'type': 'string', 'description': 'Federal Register web URL for the document.'}, 'abstract': {'type': ['string', 'null'], 'description': 'Abstract summary, or null.'}, 'agencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug'], 'properties': {'name': {'type': 'string', 'description': 'Agency name.'}, 'slug': {'type': ['string', 'null'], 'description': 'Federal Register agency slug â\x80\x94 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.'}}, 'description': 'One issuing agency.', 'additionalProperties': False}, 'description': 'Issuing agencies.'}, 'docketId': {'type': ['string', 'null'], 'description': 'Regulations.gov docket ID â\x80\x94 chain into regulations_get_docket / find_comments. Null when not on Regulations.gov.'}, 'fullText': {'type': 'string', 'description': 'One window of the plain-text body, starting at fullTextOffset â\x80\x94 present only when full text was requested. Empty when the offset is at or past the end.'}, 'rawTextUrl': {'type': 'string', 'description': 'URL of the plain-text body.'}, 'bodyHtmlUrl': {'type': 'string', 'description': 'URL of the rendered HTML body.'}, 'effectiveOn': {'type': ['string', 'null'], 'description': 'Effective date (ISO 8601), or null.'}, 'commentCount': {'type': ['number', 'null'], 'description': 'FR-reported comment count from Regulations.gov; null when not on Regulations.gov.'}, 'cfrReferences': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'part'], 'properties': {'part': {'type': 'string', 'description': 'CFR part.'}, 'title': {'type': 'number', 'description': 'CFR title number.'}}, 'description': 'A single affected CFR title + part.', 'additionalProperties': False}, 'description': 'Affected CFR parts â\x80\x94 chain into regulations_get_cfr_section.'}, 'documentNumber': {'type': 'string', 'description': 'Federal Register document number.'}, 'fullTextLength': {'type': 'number', 'description': 'Characters in the whole plain-text body â\x80\x94 present with fullText.'}, 'fullTextOffset': {'type': 'number', 'description': 'Character offset fullText starts at â\x80\x94 present with fullText.'}, 'commentsCloseOn': {'type': ['string', 'null'], 'description': 'Comment-period close date (ISO 8601); when set, still open for comment.'}, 'publicationDate': {'type': 'string', 'description': 'Publication date (ISO 8601).'}, 'fullTextNextOffset': {'type': 'number', 'description': 'Offset to pass as offset to read the next window â\x80\x94 present only when body text remains past this window.'}, 'regulationIdNumbers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Regulation Identifier Number(s) (RIN).'}, 'supportingDocuments': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'documentId'], 'properties': {'title': {'type': 'string', 'description': 'Supporting document title.'}, 'documentId': {'type': 'string', 'description': 'Regulations.gov document ID.'}}, 'description': 'One related Regulations.gov supporting document.', 'additionalProperties': False}, 'description': 'Related Regulations.gov supporting documents.'}, 'regulationsGovDocumentId': {'type': ['string', 'null'], 'description': 'Regulations.gov document ID â\x80\x94 chain into regulations_find_comments (document-scoped). Null when absent.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 10000, 'minimum': 1, 'description': '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.'}, 'type': {'type': 'array', 'items': {'enum': ['PRORULE', 'RULE', 'NOTICE'], 'type': 'string'}, '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 â\x80\x94 a much larger set). Default, and when empty: ["PRORULE", "RULE"].'}, 'query': {'type': 'string', 'description': 'Full-text filter across open documents. Omit to list every document currently open for comment.'}, 'agencies': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter to one or more agencies by Federal Register agency slug (e.g. "environmental-protection-agency") â\x80\x94 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_page': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Documents per page (1â\x80\x93100, default 20).'}, 'closing_before': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO 8601 date (YYYY-MM-DD).'}], 'description': '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.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['asOf', 'keyed', 'results', 'totalCount', 'totalPages']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The Federal Register document limit that was reached.'}, 'asOf': {'type': 'string', 'description': 'The "today" the open-window filter used (ISO 8601).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_unavailable', 'invalid_filter'], 'description': '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 â\x80\x94 most often an agency name or acronym passed where a slug belongs. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'keyed': {'type': 'boolean', 'description': 'Whether comment counts were enriched (REGULATIONS_GOV_API_KEY present).'}, 'shown': {'type': 'number', 'description': 'Documents returned on this page.'}, 'notice': {'type': 'string', 'description': '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.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['documentNumber', 'title', 'type', 'agencies', 'publicationDate', 'commentsCloseOn', 'daysRemaining', 'docketIds', 'commentCount'], 'properties': {'type': {'type': 'string', 'description': 'Document type â\x80\x94 "Proposed Rule", "Rule", or "Notice"; "Unknown" when unlisted.'}, 'title': {'type': 'string', 'description': 'Document title.'}, 'agencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug'], 'properties': {'name': {'type': 'string', 'description': 'Agency name.'}, 'slug': {'type': ['string', 'null'], 'description': 'Federal Register agency slug â\x80\x94 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.'}}, 'description': 'One issuing agency.', 'additionalProperties': False}, 'description': 'Issuing agencies.'}, 'docketIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Docket IDs â\x80\x94 chain into regulations_get_docket / find_comments.'}, 'commentCount': {'type': ['number', 'null'], 'description': "Comment count from the FR document's Regulations.gov info; null when unkeyed or not on Regulations.gov."}, 'daysRemaining': {'type': 'number', 'description': 'Whole days from asOf until the comment period closes.'}, 'documentNumber': {'type': 'string', 'description': 'Federal Register document number â\x80\x94 chains into regulations_get_document.'}, 'commentsCloseOn': {'type': 'string', 'description': 'Comment-period close date (ISO 8601).'}, 'publicationDate': {'type': 'string', 'description': 'Publication date (ISO 8601).'}}, 'description': 'One document open for comment.', 'additionalProperties': False}, 'description': 'Documents open for comment on this page, closing soonest first; documents closing the same day are ordered by document number.'}, 'nextPage': {'type': 'number', 'description': 'Page to request next â\x80\x94 present only when documents remain past this page.'}, 'truncated': {'type': 'boolean', 'description': 'True when the Federal Register reported its 10,000-document maximum, so the window holds only the 10,000 most recently published matches.'}, 'totalCount': {'type': 'number', 'description': 'Documents open for comment matching the filters â\x80\x94 the window the pages run over.'}, 'totalPages': {'type': 'number', 'description': 'Pages in the window at this per_page.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 50, 'minimum': 1, 'description': 'Page number (1â\x80\x9350, default 1). The FR API caps total_pages at 50 â\x80\x94 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.'}, 'type': {'type': 'array', 'items': {'enum': ['PRORULE', 'RULE', 'NOTICE', 'PRESDOCU'], 'type': 'string'}, 'description': 'Document types to include. PRORULE=Proposed Rule, RULE=Final Rule, NOTICE=Notice, PRESDOCU=Presidential Document. Omit for all types.'}, 'order': {'enum': ['relevance', 'newest', 'oldest'], 'type': 'string', '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.'}, 'query': {'type': 'string', 'description': 'Full-text search across document title and body. Omit to browse by filters alone (e.g. all EPA proposed rules in a date range).'}, 'agencies': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter to one or more agencies by Federal Register agency slug (e.g. "environmental-protection-agency", "securities-and-exchange-commission") â\x80\x94 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.'}, 'per_page': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 2, 'description': 'Results per page (2â\x80\x93100, default 20). The Federal Register API treats exactly 1 as its default page size instead of returning one result.'}, 'published_after': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO 8601 date (YYYY-MM-DD).'}], 'description': 'Earliest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day. Combine with published_before to window large result sets â\x80\x94 the FR caps navigation at 50 pages.'}, 'published_before': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO 8601 date (YYYY-MM-DD).'}], 'description': 'Latest publication date, ISO 8601 (YYYY-MM-DD), a real calendar day.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_unavailable', 'invalid_filter'], 'description': '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 â\x80\x94 most often an agency name or acronym passed where a slug belongs. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Results returned on this page.'}, 'notice': {'type': 'string', 'description': 'Guidance when nothing matched or when results were truncated.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['documentNumber', 'title', 'type', 'abstract', 'publicationDate', 'agencies', 'docketIds', 'regulationIdNumbers', 'cfrReferences', 'commentsCloseOn', 'effectiveOn', 'htmlUrl'], 'properties': {'type': {'type': 'string', 'description': 'Document type: Proposed Rule, Final Rule, Notice, or Presidential Document.'}, 'title': {'type': 'string', 'description': 'Document title.'}, 'htmlUrl': {'type': 'string', 'description': 'Federal Register web URL for the document.'}, 'abstract': {'type': ['string', 'null'], 'description': 'Abstract summary, or null when absent.'}, 'agencies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug'], 'properties': {'name': {'type': 'string', 'description': 'Agency name.'}, 'slug': {'type': ['string', 'null'], 'description': 'Federal Register agency slug â\x80\x94 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.'}}, 'description': 'One issuing agency.', 'additionalProperties': False}, 'description': 'Issuing agencies.'}, 'docketIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Docket IDs â\x80\x94 chain into regulations_get_docket / regulations_find_comments.'}, 'effectiveOn': {'type': ['string', 'null'], 'description': 'Effective date (ISO 8601), or null.'}, 'cfrReferences': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'part'], 'properties': {'part': {'type': 'string', 'description': 'CFR part.'}, 'title': {'type': 'number', 'description': 'CFR title number.'}}, 'description': 'A single affected CFR title + part.', 'additionalProperties': False}, 'description': 'Affected CFR parts â\x80\x94 chain into regulations_get_cfr_section.'}, 'documentNumber': {'type': 'string', 'description': 'Federal Register document number â\x80\x94 chains into regulations_get_document.'}, 'commentsCloseOn': {'type': ['string', 'null'], 'description': 'Comment-period close date (ISO 8601); when set, still open for comment.'}, 'publicationDate': {'type': 'string', 'description': 'Publication date (ISO 8601).'}, 'regulationIdNumbers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Regulation Identifier Number(s) (RIN).'}}, 'description': 'One matching Federal Register document.', 'additionalProperties': False}, 'description': 'Matching Federal Register documents (this page).'}, 'truncated': {'type': 'boolean', 'description': 'True when matches exceed the FR 50-page (5,000-record) navigation ceiling.'}, 'totalCount': {'type': 'number', 'description': 'Total matches before pagination (FR count; capped at 10,000 by the API window).'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
Dados Abertos Senado BR MCP
Searches and retrieves Brazilian Federal Senate legislative, administrative, budgetary, contracting, speech, committee, and e-Cid…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
GleanMark Trademark Search
Searches and analyzes USPTO trademark records, including conflicts, prosecution histories, TTAB proceedings, ownership chains, de…
editalmd
Searches Brazilian public procurement opportunities and documents, tracks deadlines and alerts, and supports tender document acce…
DataNexus MCP
Enables public-data research across domains, patents, government contracts, nonprofits, compliance registries, and software secur…
agentdata-nl
Provides paid company, insolvency, sanctions, regulatory, crypto-market, news, payment-counterparty, and structured web research …
FDA Data MCP
Searches and analyzes FDA data covering drugs, devices, facilities, inspections, recalls, approvals, shortages, enforcement, and …