Releases: cyanheads/usaspending-mcp-server
Release list
v0.2.3: mcp-ts-core ^0.10.9 maintenance
mcp-ts-core ^0.10.9 maintenance
Framework-tooling and skill sync — no tool, schema, or behavior changes.
Dependency bumps:
@cyanheads/mcp-ts-core^0.10.6 → ^0.10.9@types/node25.9.3 → 26.0.0
Added:
check-dependency-specifiersdevcheck step — rejects floating latest/* specifiers in package.json + bun.lock workspaces (mcp-ts-core#246)- Plugin marketplace manifest checks in
lint:packaging, gated bypackaging.pluginManifests(mcp-ts-core#240)
Changed:
- Vendored skills re-synced to framework 0.10.7–0.10.9, incl. the
ctx.contentcollector reference inapi-context(mcp-ts-core#239) - Fresh-scaffold + worktree-deletion devcheck guards (mcp-ts-core#242, #243, #237)
218 tests pass; bun run devcheck clean.
v0.2.2: run release:github with bun
run release:github with bun
The release:github npm script ran via tsx, which is not a declared dependency, so the GitHub Release step failed to resolve a runner. It now runs under bun run.
Fixed:
release:githubrunsbun run scripts/release-github.tsinstead oftsx scripts/release-github.ts
Dependency bumps:
@biomejs/biome^2.4.16 → ^2.5.0vitest^4.1.8 → ^4.1.9
218 tests pass; bun run devcheck clean.
v0.2.1: mcp-ts-core 0.10.6 adoption
mcp-ts-core 0.10.6 adoption
Adopts the framework's 0.10.6 enrichment helpers and identity fields, syncs packaging tooling and vendored skills.
Added:
- truncated/shown/cap enrichment on usaspending_autocomplete, usaspending_get_idv_awards, and usaspending_search_recipients — discloses a full page on endpoints that return no total count
- Dockerfile HEALTHCHECK (bun-native fetch against /healthz) and APP_VERSION OCI version label
Changed:
- Pagination totals emit via ctx.enrich.total() under the canonical totalCount field, replacing per-tool total/result_total/subaward_total/transaction_total keys
- createApp() sets explicit name and title to usaspending-mcp-server
- bundle script runs clean-mcpb.ts to prune the packed MCPB; .mcpbignore patterns root-anchored
- vendored skills re-synced to 0.10.6
Dependency bumps:
- @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
- @types/node 25.9.2 → 25.9.3
218 tests pass; bun run devcheck clean.
v0.2.0: Two new tools, applied-filter enrichment, breaking naics_codes rename
Two new tools, applied-filter enrichment, breaking naics_codes rename
Adds usaspending_search_federal_accounts (keyword/agency account search)
and usaspending_get_idv_awards (child orders under an IDV parent).
Applied-filter enrichment echoes land on search_awards and the three
analytics tools. Empty-result notices added to get_award_subawards and
get_award_transactions. Breaking: naics_code renamed to naics_codes array.
Added:
- usaspending_search_federal_accounts — keyword/agency search over federal accounts; returns account_number for chaining into usaspending_get_federal_account (#16)
- usaspending_get_idv_awards — list child contracts, task orders, and sub-IDVs under an IDV award; each row carries generated_unique_award_id for chaining (#17)
- Applied-filter enrichment echoes (applied_keyword/s, applied_agency_name, applied_naics_codes, applied_time_period_start/end) on search_awards and the three analytics tools (#11)
- Empty-result notice on get_award_subawards and get_award_transactions (#12)
Changed:
- usaspending_search_awards: naics_code (string) renamed to naics_codes (array) — callers must update to naics_codes: ["
"] (#14)
Fixed:
- usaspending_disaster_spending spending_type doc corrected: values are award and total (not spending/loans) (#6)
Dependency bumps:
@types/node ^25.9.1 -> 25.9.2
vitest ^4.1.7 -> ^4.1.8
215 tests pass; bun run devcheck clean.
v0.1.7: POST timeout, def_codes guard, empty-result returns
POST timeout, def_codes guard, empty-result returns
Four bug fixes: POST requests now enforce the configured timeout via fetchWithTimeout (matching get()), disaster_spending validates def_codes for non-overview dimensions before hitting the upstream API, and both spending_by_geography and spending_over_time return structured empty responses with ctx.enrich.notice() instead of throwing.
Fixed:
- POST requests in USASpendingService now use fetchWithTimeout, enforcing timeoutMs for all analytics tools (#13)
- usaspending_disaster_spending throws ValidationError when def_codes is absent for non-overview dimensions (#7)
- usaspending_spending_by_geography returns structured empty response with notice instead of throwing no_data (#8)
- usaspending_spending_over_time dead-code guard converted to structured return with notice (#9)
203 tests pass; bun run devcheck clean.
v0.1.6: mcp-ts-core ^0.9.21 framework adoption
mcp-ts-core ^0.9.21 framework adoption
Adopts @cyanheads/mcp-ts-core ^0.9.21 with per-request log context fix,
secret-stripping in error messages, and withRetry fail-fast on non-retryable errors.
Re-synced skills (8 updated + api-mirror + orchestrations); new devcheck/release/skill-version scripts.
Changed:
@cyanheads/mcp-ts-core^0.9.16->^0.9.21— HTTP transport per-request log context fix;fetchWithTimeoutstrips query-string secrets from error messages;withRetryfails fast on non-retryable errors;ctx.failauto-populatesretryableflag- Skills re-synced — 8 updated + new
api-mirrorandorchestrationsskills scripts/devcheck.tsrewritten as standalone Bun script;check-skill-versions.tsandrelease-github.tsadded
Dependencies:
@cyanheads/mcp-ts-core^0.9.16->^0.9.21vitest^4.1.7->^4.1.8
202 tests pass; bun run devcheck clean.
v0.1.5: Enrichment on search/analytics tools, dead error contracts removed
Enrichment on search/analytics tools, dead error contracts removed
Agent-facing context — query echoes, result totals, empty-result recovery — now surfaces via ctx.enrich() into the typed enrichment block on all search and analytics tools, reaching both structuredContent and content[] without a format() entry.
Changed:
- usaspending_search_awards, usaspending_search_recipients, usaspending_spending_by_category: output.message removed; enrichment block added with pagination totals, counts, and recovery notice. no_match/no_data error contracts removed — empty results return success with an enrichment notice. (#10)
- usaspending_disaster_spending, usaspending_get_award_subawards, usaspending_get_award_transactions, usaspending_list_agencies, usaspending_spending_by_geography, usaspending_spending_over_time, usaspending_autocomplete: enrichment block added for result counts, pagination metadata, and contextual guidance.
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.13 → ^0.9.16
81 tests pass; bun run devcheck clean.
v0.1.4: mcp-ts-core ^0.9.13, ValidationError reclassification
mcp-ts-core ^0.9.13, ValidationError reclassification
Adopts @cyanheads/mcp-ts-core ^0.9.13 and reclassifies the get_agency missing-input error code.
Changed:
- usaspending_get_agency —
missing_inputreason now maps toValidationErrorinstead ofInvalidParams.data.reasonis unchanged; only the numeric error code changes. Client-observable. landing.requireAuth: falseadded tocreateApp()— preserves public-catalog inventory (0.9.13 changed the default to gated when auth is enabled)package.jsonkeywords — addedtypescript,bun,stdio,streamable-httpfor npm and GET /mcp discoverability
Framework (^0.9.9 → ^0.9.13):
MCP_HTTP_MAX_BODY_BYTES— body cap (default 1 MiB); oversized requests → HTTP 413 before SDK parse- HTTP session-init gate — non-
initializerequests withoutMcp-Session-Id→ HTTP 400 - Expected client errors (401/403/400/404) now log at
warning, not full ErrorHandler pipeline GET /mcpsurfacespackage.jsonkeywords alongside name/version/description
Dependency bumps:
@cyanheads/mcp-ts-core^0.9.9 → ^0.9.13@biomejs/biome^2.4.15 → ^2.4.16
79 tests pass; bun run devcheck clean.
v0.1.3: metadata, scripts, badges, Docker alignment
metadata, scripts, badges, Docker alignment
Aligns with ecosystem gold standard.
Changed:
package.jsonscripts migrated tobun run;start:stdio/start:httpusebun ./dist/index.js;testusesbunx vitest runpackage.jsonmetadata: addedauthor,bugs,homepage,funding; removedtsxdevDependency- README: added Docker, MCP SDK, npm badges; Install in Claude Desktop / Cursor / VS Code buttons
- Dockerfile:
bun run build,org.opencontainers.image.sourcelabel, scoped image title - Docker: multi-arch image (
linux/amd64,linux/arm64) published toghcr.io/cyanheads/usaspending-mcp-server .github/FUNDING.yml: GitHub Sponsors + Buy Me a Coffee
Fixed:
- GitHub release created for
v0.1.1tag
bun run devcheck clean.
v0.1.2: mcpName field, publish-mcp script for MCP Registry
mcpName field, publish-mcp script for MCP Registry
Adds the mcpName field required for MCP Registry publication and the publish-mcp script.
79 tests pass; bun run devcheck clean.