# Reported issues for usaspending-mcp-server

Pod holds 19 of 19 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 [usaspending-mcp-server](/mcp/usaspending-mcp-server).

## Most discussed

### bug(service): api_timeout and api_unavailable never reach the wire with reason or recovery

### Server version

0.4.2

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

All 18 tools declare `api_timeout` and `api_unavailable` (`thrownBy: 'service'`), but `USASpendingService.request()` attaches no `reason`, `retryable`, or `recovery`, so neither `structuredContent.error` nor `content[]` carries the declared hint.

`usaspending_disaster_spending`'s hint (fewer DEF codes or a smaller limit) would…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/57) · 2026-09-12 · closed · 3 comments

### bug(usaspending_disaster_spending): recipient id is comma-joined when upstream sends several

### Server version

0.4.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Transport

HTTP (Streamable HTTP)

### Description

`disaster/recipient/spending/` returns each row's `id` as an array of recipient hash IDs. The tool maps it with `String(r.id)`, so a recipient that has both a child-level and a recipient-level ID comes back as one comma-joined string. That string is not a valid `recipient_id` for `usaspending_get_recipient`.

Related: #63.

### Steps to reproduce

1. Call…

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

### bug(date-filters): an inverted date range is sent upstream and surfaces as api_unavailable

### Server version

0.4.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Transport

HTTP (Streamable HTTP)

### Description

No date input checks that the start precedes the end. An inverted range (start after end) goes upstream as-is:

- `search/spending_over_time/`, `spending_by_category/`, and `spending_by_geography/` answer HTML 500. The service classifies that as `api_unavailable`, retries it, and tells the caller the API may be down. Retrying can never help.
-…

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

### feat(usaspending_disaster_spending): surface breakdown totals and budgetary resources

### Use case

`usaspending_disaster_spending`'s breakdown dimensions are the working route to disaster totals while the upstream `/disaster/overview/` endpoint times out, but the tool drops the totals the breakdown response already carries, so a caller has to sum rows for obligations and outlays and cannot get budgetary resources at all.

Related: #57

### Proposed behavior

Surface the breakdown response's `totals` object (`obligation`, `outlay`, `total_budgetary_resources`) and the per-row…

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

### bug(date-filters): a lone start or end date is dropped but echoed as applied

### Server version

0.4.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

The optional date-range inputs send a `time_period` upstream only when both ends are present (`buildFilters` in `filters.ts`, and the `filters.time_period_*` branch of `usaspending_search_awards`). A lone start or end date is dropped without notice, but the response still echoes it as `applied_time_period_start` /…

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

### feat(usaspending_search_awards): filter awards by assistance listing (CFDA) number

### Use case

Agents researching a grant program need "who has won awards under Assistance Listing 93.866, and for how much." `usaspending_autocomplete_filters type=cfda` returns the listing number with a note to use it in filter parameters, but `usaspending_search_awards` has no filter that accepts it, so the lookup dead-ends.

### Proposed behavior

Add an `assistance_listings` input (array of listing numbers) to `usaspending_search_awards`, mapped to the USAspending API's `program_numbers`…

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

### bug(usaspending_search_awards): sort is not award-type-aware — loans fail by default, IDVs reject End Date

### Server version

0.4.3

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### OS

Linux (Docker)

### Description

`sort` on `usaspending_search_awards` defaults to `Award Amount` for every award type, but `/api/v2/search/spending_by_award/` checks the sort against a per-group field mapping and answers 400 outside it. Loans (`07`/`08`) have no `Award Amount`, `Total Outlays`, `Start Date`, or `End Date`, so a loan search…

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

### bug(date-filters): date format is prose-only, and the upstream 4xx detail never reaches the error text

### Server version

0.4.2

### mcp-ts-core version

0.12.3

### Runtime

Bun

### Runtime version

Not recorded

### Transport

HTTP (Streamable HTTP)

### Description

The ten date inputs — `usaspending_search_awards` `time_period.start_date` / `end_date` and `filters.time_period_start` / `time_period_end`, plus `filters.time_period_start` / `time_period_end` on the three `usaspending_spending_*` tools — are bare `z.string()` fields with `YYYY-MM-DD` only in `.describe()`, so the advertised…

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

## Most recent

### feat(spending-filters): expose program, PSC, and emergency funding filters

### Use case

A water-program analyst can discover Assistance Listing `15.507`, PSC `Y1NE`, and DEF code `Z` through the current tools, but cannot reuse those codes to ask where or when the corresponding funding was spent. `usaspending_search_awards` supports Assistance Listings only; the three general analytics tools support none of these filters.

### Proposed behavior

Extend the existing award-search and shared analytics filters with the relevant `assistance_listings`, `psc_codes`, and…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/77) · 2026-09-30 · open · 0 comments

### bug(pagination): exact-cap results are falsely labeled truncated

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

Exact-cap results are reported as definitely truncated even when the complete set was returned. Related: #30 and #54. Conservative continuation can be useful, but it is different from known truncation.

### Steps to reproduce

Call `usaspending_autocomplete_filters` with `{"type":"naics","search_text":"Water","limit":10}`; repeat at…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/76) · 2026-09-30 · open · 0 comments

### bug(usaspending_get_agency): conflicting identifiers silently ignore agency_slug

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_get_agency` says to provide either `toptier_code` or `agency_slug`, never both, but accepts conflicting identifiers and silently ignores the slug.

### Steps to reproduce

Call with `{"toptier_code":"014","agency_slug":"department-of-defense"}`.

### Actual behavior

Successful Department of the Interior profile with no…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/75) · 2026-09-30 · open · 0 comments

### bug(filters): unsupported nested keys become unfiltered successful queries

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

Unsupported nested filter keys are silently stripped by the definitions' non-strict Zod objects. The tools then succeed with a broader query; top-level strict validation does not protect these objects.

### Steps to reproduce

Call `usaspending_search_awards` with…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/74) · 2026-09-30 · open · 0 comments

### bug(usaspending_disaster_spending): geography ignores limits and returns unbounded rows

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_disaster_spending` ignores `limit` and `page` on its geography branch and returns an unbounded county table. Unlike #19, this branch requires client-side adaptation because the provider geography endpoint is not paginated.

### Steps to reproduce

Call with…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/73) · 2026-09-30 · open · 0 comments

### bug(usaspending_spending_by_geography): capped counties have no complete retrieval route

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_spending_by_geography` discloses its cap but cannot retrieve the omitted counties for the same query. The cap introduced in #48 works; its filter-down guidance cannot select an omitted geographic area.

### Steps to reproduce

Call with `scope: "place_of_performance"`, `geo_layer: "county"`, `limit: 500`, and filters for…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/72) · 2026-09-30 · open · 0 comments

### bug(usaspending_autocomplete_filters): replaces matched sub-agency with parent

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_autocomplete_filters` replaces matched sub-agencies with their top-tier parent's name and discards the tier and chainable code. This differs from #2's empty-result-field fix.

### Steps to reproduce

Call with `{"type":"awarding_agency","search_text":"Geological","limit":5}`; compare [the provider…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/71) · 2026-09-30 · open · 0 comments

### bug(usaspending_search_awards): county guidance contradicts provider location format

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_search_awards.location_filter.county` recommends a five-digit FIPS code, but [USAspending location filters](https://github.com/fedspendingtransparency/usaspending-api/blob/master/usaspending_api/api_contracts/search_filters.md#standard-location-object) require the three-digit county component with a state and country. The…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/70) · 2026-09-30 · open · 0 comments

### bug(usaspending_get_agency): suppresses failed budget and sub-agency requests

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP); fault injection into built handler

### Description

`usaspending_get_agency` converts budgetary-resource and sub-agency request failures into empty successful data without a partial-result notice. A missing breakdown is reported as `has_more_sub_agencies: false`.

### Steps to reproduce

Keep `getAgency` successful; inject `ServiceUnavailable` into…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/69) · 2026-09-30 · open · 0 comments

### bug(usaspending_get_award): drops assistance listings and recipient identity fields

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_get_award` drops populated Assistance Listing, recipient UEI, business-category, and country fields from [USAspending award detail](https://api.usaspending.gov/api/v2/awards/ASST_NON_R24AP00702_014/). These are different mappings from the financial/PSC fields fixed in #36.

### Steps to reproduce

Call with…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/68) · 2026-09-30 · open · 0 comments

### bug(usaspending_get_recipient): fiscal-year and award-type filters are ignored

### Server version

0.4.4

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

1.4.2

### Transport

HTTP (Streamable HTTP)

### Description

`usaspending_get_recipient` advertises fiscal-year and award-type scoping, but sends unsupported `fiscal_year` and `award_type` query parameters. [USAspending](https://github.com/fedspendingtransparency/usaspending-api/blob/master/usaspending_api/api_contracts/contracts/v2/recipient/recipient_id.md) accepts `year`, defaults to the…

[Read the thread](https://github.com/cyanheads/usaspending-mcp-server/issues/67) · 2026-09-30 · open · 0 comments

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