# Reported issues for openfec-mcp-server

Pod holds 16 of 17 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 [openfec-mcp-server](/mcp/openfec-mcp-server).

## Most discussed

### bug(pagination): preserve approximate count semantics

### Server version

0.8.0

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### OS

macOS 26.1

### Description

High-volume OpenFEC endpoints label some pagination counts as approximate with `is_count_exact: false`, but the
service layer discards that field. Tools then present the count as an unqualified total in both `structuredContent`
and `content[]`.

`fetchPage` and `fetchSeek` both normalize `pagination` without carrying…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/40) · 2026-08-31 · closed · 2 comments

### bug(search_legal): reject citations upstream cannot parse

### Server version

0.8.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`/legal/search/` silently ignores a `*_regulatory_citation` or `*_statutory_citation` value it cannot parse and answers HTTP 200 with the type unfiltered. `openfec_search_legal` forwards the citation as given and echoes it in `search_criteria`, so a citation missing its title prefix reads as an applied filter.

### Steps to…

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

### bug(format): legal records render nested fields as raw JSON

### Server version

0.8.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

Nested fields on legal records reach `renderValue`'s object catch-all in `format-helpers.ts` and render in `content[]` as inline `JSON.stringify` output. `renderRecord`'s field renderers apply only to a plain-object value, so none can reach an array.

| Record | `openfec_search_legal` | `openfec_get_legal_document` |
|:--|:--|:--|…

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

### bug(candidate resource): principal_committees reflects current designation, not the latest campaign

### Server version

0.8.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

`openfec://candidate/{candidate_id}` builds `principal_committees` from `/candidate/{id}/committees/?designation=P`, which filters on each committee's *current* designation with no cycle. The field can list long-dormant campaigns and omit the committee that actually ran the latest campaign once it has been redesignated. Same root cause as the…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/45) · 2026-09-23 · closed · 1 comment

### feat(calendar): add House district filter for election dates

### Use case

`openfec_lookup_calendar`'s `election_dates` mode filters by state, office, and year but not House district, so district-specific special elections stay mixed with statewide and other-district rows even though OpenFEC's `/election-dates/` exposes `election_district`. Verified live today: CA House 2026 returns 6 rows spanning districts 01, 14, and statewide; `election_district=14` alone returns exactly the 2 district-14 rows.

Related: #26, #27

### Proposed behavior

Add an…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/41) · 2026-08-31 · closed · 1 comment

### bug(search_expenditures): make election period explicit

### Server version

0.8.0

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`openfec_search_expenditures` describes `cycle` as a two-year election cycle, but `mode:
"by_candidate"` leaves OpenFEC's `election_full` parameter unset. The [OpenFEC
API](https://api.open.fec.gov/developers/) defaults it to `true`, so the tool silently returns
the candidate's full election period while…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/42) · 2026-08-31 · closed · 1 comment

### bug(prompts): resolve cycle-specific principal committees

### Server version

0.8.0

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

Both campaign prompts resolve a candidate's principal committee with `openfec_search_committees(candidate_id, designation: "P")`, which reflects a committee's *current* designation. A committee whose designation or name has since changed can't be found this way for the cycle being investigated — reproduced live…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/39) · 2026-08-31 · closed · 1 comment

### bug(search_legal): structuredContent carries the same total as both total_count and totalCount

### Server version

0.7.1

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

1.4.0

### Transport

stdio

### OS

macOS 26.1

### Description

`openfec_search_legal` puts the same total on `structuredContent` twice under two casings. `src/mcp-server/tools/definitions/search-legal.tool.ts` declares `total_count` in its `output` schema and returns it from the handler, and separately declares `totalCount` in its `enrichment` block and sets it with…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/38) · 2026-08-25 · closed · 1 comment

## Most recent

### bug(election resources): empty results and office rejections give the caller nothing to act on

### Server version

0.7.1

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

1.4.0

### Transport

stdio

### OS

macOS 26.1

### Description

The three election resources leave the caller with no way forward in two separate cases: an empty race list, and a rejected office code.

**Empty results carry no explanation.** `fetchElection` adds a `truncation_notice` only when `pagination.pages > 1`; nothing is added when the list is empty. `openfec_lookup_elections` already has…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/37) · 2026-08-25 · closed · 1 comment

### bug(search_legal): from_hit advertises offsets past the upstream 10,000-result window

### Server version

0.7.1

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

1.4.0

### Transport

stdio

### OS

macOS 26.1

### Description

`openfec_search_legal`'s `from_hit` advertises a range the upstream cannot serve, and the failure it produces
misdirects the caller.

`from_hit` is declared `z.number().int().min(0).default(0)` in
`src/mcp-server/tools/definitions/search-legal.tool.ts`, which emits
`{"type":"integer","minimum":0,"maximum":9007199254740991}` in…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/36) · 2026-08-25 · closed · 1 comment

### bug(format): candidate-scoped expenditure rows render the committee object as raw JSON

### Server version

0.7.1

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

1.4.0

### Transport

stdio

### OS

macOS 26.1

### Description

`openfec_search_coordinated_expenditures` and `openfec_search_expenditures` (itemized) render
each row's nested `committee` object as one `JSON.stringify` blob in `content[]` whenever the
query is scoped by `candidate_id` instead of `committee_id`.

`renderValue` in `src/mcp-server/tools/definitions/utils/format-helpers.ts` ends…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/35) · 2026-08-25 · closed · 1 comment

### bug(committee resource): do not hide totals fetch failures

### Server version

0.7.1

### mcp-ts-core version

0.11.0

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

The `openfec://committee/{committee_id}` resource suppresses every error from its totals sub-fetch:

```ts
fec.getCommitteeTotals(committeeId, { per_page: 1 }, ctx).catch(() => null)
```

`getCommitteeTotals` already normalizes OpenFEC's own not-found response to an empty page (service layer, design decision 11). The genuine "no…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/33) · 2026-08-17 · closed · 1 comment

### bug(search_legal): normalize upstream highlight markup

### Server version

0.7.1

### mcp-ts-core version

0.11.0

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

OpenFEC wraps the matched term in every legal-search highlight in `<em>` / `</em>`. `openfec_search_legal` forwards the tags unchanged into `structuredContent` and renders them unchanged into Markdown `content[]`.

The trimming block in `src/mcp-server/tools/definitions/search-legal.tool.ts` caps `highlights` at three entries and…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/32) · 2026-08-17 · closed · 1 comment

### bug(search_legal): route type-specific filters correctly

### Server version

0.7.1

### mcp-ts-core version

0.11.0

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

`openfec_search_legal` sends each type-specific filter under one upstream name whatever `type` says, and accepts filters the selected type ignores. Upstream answers 200 with those types unfiltered while `search_criteria` echoes the filter.

`/legal/search/` per document type:

| Input | Advisory opinions | MURs / ADRs | Admin fines |…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/31) · 2026-08-17 · closed · 1 comment

### bug(legal): bound search_legal and get_legal_document responses

### Server version

0.7.1

### mcp-ts-core version

0.11.0

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

`openfec_search_legal` and `openfec_get_legal_document` have no response bound: one search page, or one legal record, can fill most of a model's context on both `structuredContent` and `content[]`. #14 deferred selective detail retrieval until an oversized record turned up; as of 2026-09-24 eleven MURs and one ADR exceed 100,000…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/30) · 2026-08-17 · closed · 1 comment

### bug(response bounds): bound high-volume page payloads

### Server version

0.7.1

### mcp-ts-core version

0.11.0

### Runtime

Bun

### Runtime version

1.3.14

### Transport

HTTP (Streamable HTTP)

### Description

Several page-based and keyset tools permit a single page whose response exceeds a practical model context window. Pagination works; the problem is that one permitted page already carries hundreds of kilobytes, duplicated across `structuredContent` and formatted `content[]`, with no bound and no warning.

### Steps to reproduce

Call…

[Read the thread](https://github.com/cyanheads/openfec-mcp-server/issues/29) · 2026-08-17 · closed · 1 comment

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