# Reported issues for federal-regulations-mcp-server

Pod holds 24 of 33 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [federal-regulations-mcp-server](/mcp/federal-regulations-mcp-server).

## Most discussed

### feat(regulations_find_comments): add search_term and posted-date filters, and page to Regulations.gov's 40-page limit

### Use case

A practitioner studying a high-volume docket wants a subset of its comments, such as the ones mentioning a technology or those from one comment window, and needs a way past the Regulations.gov per-query page ceiling. `regulations_find_comments` list mode has neither, and its truncation guidance ("narrow by document_object_id") fails whenever one document holds most of the comments, which is the normal case for a proposed rule.

### Proposed behavior

Add optional list-mode filters…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/39) · 2026-09-22 · closed · 3 comments

### feat(regulations_list_open_comments): include direct and interim final rules that request comment

### Use case

`regulations_list_open_comments` hard-codes `conditions[type][]=PRORULE`, so rules that take comments under another document type never appear. On 2026-09-22 that left out 31 open final rules: 3 direct final rules and 25 interim or final rules that request comment. A direct final rule is withdrawn if it draws significant adverse comment, so its deadline is one a practitioner can't afford to miss.

Related: #32, which changes the same `listOpenComments` query. The two land…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/38) · 2026-09-22 · closed · 3 comments

### bug(regulations_list_open_comments): "soonest first" sorts one page of newest-published rules, not the open window

### Server version

0.2.5

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_list_open_comments` claims "sorted by closing date (soonest first)", but it requests `order=newest` and sorts each page locally, so rules closing tomorrow land on later pages. The FR API can't order by comment date (`order=comment_date` silently falls back to `newest`). Separately, `truncated` is set only when a…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/32) · 2026-09-22 · closed · 3 comments

### bug(regulations_browse_cfr): structure mode on a part stops at subparts, so its sections cannot be listed

### Server version

0.2.5

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_browse_cfr` structure mode with a `part` returns only that part's direct children. In most parts those children are subparts or subject groups, which carry `cfrCite: null`, and no input goes further down, so the part's sections can't be listed. The `part` description says structure mode "narrows the returned tree to…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/31) · 2026-09-22 · closed · 3 comments

### bug(regulations_get_cfr_section): whole-part reads are unbounded and carry every section twice

### Server version

0.2.5

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.x

### Transport

HTTP (Streamable HTTP)

### Description

A whole-part read in `regulations_get_cfr_section` (title + part, no section) has no size limit, and it returns every section twice. `getSectionText` in `src/services/ecfr/ecfr-service.ts` builds `bodyText` by joining each section's heading and text, and it also returns the same sections as `sections[]`. `format()` renders both, so…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/29) · 2026-09-22 · closed · 3 comments

### bug(regulations_search_rules,regulations_list_open_comments): agency results carry names the filter rejects, and every Federal Register 400 is unlabeled

### Server version

0.2.5

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

Linux (Docker)

### Description

The `agencies` filter on `regulations_search_rules` and `regulations_list_open_comments` takes a [Federal Register](https://www.federalregister.gov/developers/documentation/api/v1) agency **slug**, but its description says to "read the agency slugs off the results", and results carry only **names**…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/24) · 2026-09-02 · closed · 3 comments

### feat(regulations_get_cfr_section): resolve dotless, §-prefixed, and paragraph-level section cites before answering not_found

### Use case

`regulations_get_cfr_section` passes `section` to the eCFR versioner verbatim, and the versioner matches only the exact identifier (`"141.61"`). So a caller who writes the cite the way people usually do gets `not_found` for a section that is in force. The recovery hint then points at `regulations_browse_cfr` and never mentions the `part.section` shape that would have worked.

Related: #9 (dotless identifiers in 14 CFR 241), #11 (this error's recovery plumbing)

| Input (`title:…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/22) · 2026-08-21 · closed · 3 comments

### bug(regulations-gov): the Regulations.gov leg has no request deadline

### Server version

0.2.1

### mcp-ts-core version

0.11.1

### Runtime

Bun

### Runtime version

Bun 1.3.14

### Transport

stdio

### Description

Related: #15

`RegulationsGovService.fetchJson` is the one leg of the three with no request deadline. `FederalRegisterService` passes `TIMEOUT_MS` (15s) and `EcfrService` passes 20s (60s for XML, 10 minutes for a bulk title) to `fetchWithTimeout`, which aborts the attempt when it expires. Regulations.gov cannot use that helper — it has to branch…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/20) · 2026-08-10 · closed · 2 comments

## Most recent

### bug(ecfr-xml): diacritics and overlines are dropped, so "x̄" reads "x"

### Server version

0.5.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

eCFR versioner XML marks a diacritic with a self-closing `<AC T="…"/>` after the character it modifies, almost always across a newline (`<I>x⏎<AC T="8"/></I> is the sample mean`, ⏎ a newline). `stripTags` in `src/services/ecfr/xml.ts` turns it into a space, so live and mirror reads give `x is the sample mean` where eCFR prints…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/60) · 2026-09-25 · closed · 1 comment

### bug(regulations_browse_cfr): structure mode cites dotless sections as another part ("14 CFR 01")

### Server version

0.5.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_browse_cfr` structure mode cites a section as `<title> CFR <identifier>` (`buildCite` in `src/services/ecfr/ecfr-service.ts`). A part whose section numbers carry no part prefix gets a cite that names a different part: 14 CFR 241's sections are identified `01`, `02`, `1`, … (structure document, 2026-09-15 issue), so the…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/59) · 2026-09-25 · closed · 1 comment

### bug(ecfr-xml): entity decoding throws on an out-of-range numeric reference and decodes inherited property names

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

The eCFR text extractors decode entities with the same two defects #54 describes for comment bodies. `decodeEntities` in `src/services/ecfr/xml.ts` passes numeric references to an unguarded `String.fromCodePoint` and looks names up in a plain object; `plainText` in `src/services/ecfr/ecfr-service.ts` uses a plain-object lookup with…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/56) · 2026-09-25 · closed · 1 comment

### bug(ecfr-mirror): a ready mirror serves its snapshot as current text with no freshness bound

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Once the eCFR mirror is ready, current section reads (the tool and the `regulations://cfr/…` resource) and mirror-routed searches answer from it however old its rows are. `mirrorReady()` checks only that an init completed and the ingest version. Nothing compares a title's stored `issue_date` with that title's `latest_issue_date` in…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/55) · 2026-09-25 · closed · 1 comment

### bug(regulations_find_comments): comment bodies keep HTML entities outside a 13-name table

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Detail mode of `regulations_find_comments` decodes comment bodies with `stripHtml` in `src/services/regulations-gov/regulations-gov-service.ts`, which has three defects:

- Only the 13 names in `HTML_NAMED_ENTITIES` decode; any other named entity reaches `bodyText` and `content[]` as literal markup.
- `HTML_NAMED_ENTITIES` is a…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/54) · 2026-09-25 · closed · 1 comment

### bug(regulations_get_cfr_section): "40 CFR 141.61" as section and "Part 141" as part answer not_found

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_get_cfr_section` resolves `§ 141.61`, `Sec. 141.61`, `61`, and `141.61(c)` (#22), but not the two forms most often pasted: a full cite in `section`, and a spelled-out part. The server writes the first form itself: every `cfrCite` it returns sits next to "→ regulations_get_cfr_section", including `14 CFR 241 § 25` for a…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/53) · 2026-09-25 · closed · 1 comment

### feat(regulations_get_cfr_section): return the part's heading, Authority, and Source notes

### Use case

A practitioner reading a part with `regulations_get_cfr_section` needs its statutory authority and default source, but the part's `<AUTH>` ("Authority: 42 U.S.C. 300f, 300g-1, …") and `<SOURCE>` ("Source: 40 FR 59570, Dec. 24, 1975, unless otherwise noted.") under its `<DIV5>` are dropped, and a section with no `<CITA>` of its own (3,128 of 5,982 non-reserved sections across titles 1, 10, and 11 as of 2026-09-25) has its provenance only there. A whole-part read's `heading` is also…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/52) · 2026-09-25 · closed · 1 comment

### bug(ecfr-xml): inline markup flattens, so exponents, subscripts, and footnote markers read as loose text

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`stripTags` in `src/services/ecfr/xml.ts` turns every opening tag into a space and keeps the element's text, so superscripts, subscripts, and footnote markers land inline as loose characters, and `(<E T="01">a</E>)` reads `( a)`. Live and mirror reads share it.

### Steps to reproduce

1. `regulations_get_cfr_section` `{ "title":…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/51) · 2026-09-25 · closed · 1 comment

### bug(schemas): commentsCloseOn and commentEndDate are described as meaning the period is still open

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Three output fields describe a comment close date as meaning the period is open: `commentsCloseOn` on `regulations_search_rules` and `regulations_get_document` ("when set, still open for comment") and `commentEndDate` on `regulations_get_docket` ("when set, open for comment"). Every closed proposal also has one set, so a model…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/50) · 2026-09-25 · closed · 1 comment

### bug(regulations_search_rules,regulations_list_open_comments): docketIds sold as Regulations.gov handles; the FR's own Regulations.gov IDs, keyless counts, and comment URL are dropped

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`docketIds` on `regulations_search_rules` and `regulations_list_open_comments` is described as chaining into `regulations_get_docket` / `regulations_find_comments`, but it holds the docket numbers the Federal Register prints. Of the 226 rules open for comment on 2026-09-25, 199 had a Regulations.gov docket: 23 printed it as a bare…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/49) · 2026-09-25 · closed · 1 comment

### bug(regulations_search_rules,regulations_get_docket,regulations_find_comments): a page past the end reads as an empty result

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

On three tools, a page past the end reads as "nothing matched" and tells the caller to drop filters, and `truncated` doesn't track what paging can reach: `regulations_get_docket` sets it on every page of a multi-page docket, the last included, and `regulations_search_rules` compares against a fixed 5,000 when the Federal Register…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/48) · 2026-09-25 · closed · 1 comment

### feat(regulations_search_rules): filter by CFR part, docket ID, and RIN

### Use case

`regulations_search_rules` filters only by query, type, agency, and date. Three common questions have no direct path: which rulemakings touched a CFR part someone just read with `regulations_get_cfr_section`; every document for one RIN, proposal through final; and every Federal Register document in a docket on a keyless deployment, where `regulations_get_docket` needs `REGULATIONS_GOV_API_KEY`. A `query` of `"40 CFR 141"` matches documents that mention the part, not the ones whose…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/47) · 2026-09-25 · closed · 1 comment

### bug(regulations_get_cfr_section,regulations_search_rules): a section's FR source citation can't be resolved to its rulemaking

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_get_cfr_section`'s `bodyText` description says to "pass one of its FR cites to regulations_search_rules to reach the rulemaking that produced this text." That chain returns nothing. [Federal Register](https://www.federalregister.gov/developers/documentation/api/v1) full-text search does not match a volume/page cite,…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/46) · 2026-09-25 · closed · 1 comment

### bug(regulations_get_docket): page stops at 20, but Regulations.gov serves 40 pages

### Server version

0.3.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_get_docket` caps `page` at 20 and tells the caller Regulations.gov stops at 5,000 records. [Regulations.gov v4](https://open.gsa.gov/api/regulationsgov/) `/documents` accepts `page[number]` up to 40, so pages 21–40 of a large docket are unreachable and the truncation guidance names the wrong limit.…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/43) · 2026-09-22 · closed · 1 comment

### bug(regulations_browse_cfr): search mode repeats a section once per version, inflating totalCount

### Server version

0.3.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`regulations_browse_cfr` search mode returns the same CFR section several times. eCFR's `/search/v1/results` answers one hit per section *version*, and with `date` pinned it still returns versions whose `starts_on` differ while every one reports `ends_on: null`. The service passes the hits through as-is, so `results` repeats cites…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/42) · 2026-09-22 · closed · 1 comment

### bug(regulations_get_document): document_number pattern rejects pre-2010 Federal Register numbers (98-1572, E9-25990)

### Server version

0.3.0

### mcp-ts-core version

0.13.6

### Runtime

Node.js

### Runtime version

Node 24

### Transport

stdio

### Description

`regulations_get_document` and the `regulations://document/{documentNumber}` resource validate `document_number` against `^[0-9]{4}-[0-9]+$`, which only fits numbers assigned from 2010 on. The [Federal Register API](https://www.federalregister.gov/developers/documentation/api/v1) serves every older shape too, and `regulations_search_rules`…

[Read the thread](https://github.com/cyanheads/federal-regulations-mcp-server/issues/40) · 2026-09-22 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/federal-regulations-mcp-server/issues).
