---
summary: "Response caching and a fail-fast daily request-budget guard protect the shared free-tier Open States key; 429 and HTML rate-limit responses now fail fast instead of retrying; the search_committees description and README correct a stale coverage_note reference to the coverageNote field."
breaking: false
security: false
---

# 0.1.14 — 2026-07-16

## Added

- **Response cache** — `fetchJson` caches successful JSON responses in `ctx.state`, keyed on a SHA-256 hash of the request URL (raw URLs fail the storage key validator's `[A-Za-z0-9_.\-/]` pattern). TTLs by endpoint: 10 min for bill/people/committee/event search, 12 h for jurisdiction inventory and metadata, 24 h for the geo-by-location lookup. Cache hits bypass the budget guard — zero upstream cost. ([#23](https://github.com/cyanheads/openstates-mcp-server/issues/23))
- **Daily request-budget guard** — a fail-fast `RateLimiter` sized to the free-tier cap (250 requests / rolling 24 h) rejects before `fetch()` once the shared API key's daily budget is spent, instead of waiting on a slow-refilling window. Configurable per `OpenStatesApiService` instance. ([#23](https://github.com/cyanheads/openstates-mcp-server/issues/23))

## Changed

- **Rate-limit signals fail fast** — an HTTP 429 and the 200-with-HTML-body block page (previously both retried up to 4× by `withRetry`) now carry `data.retryable: false`; the budget guard's own rejection is stamped the same way so it can't be retried into defeat. Other HTTP statuses keep their default transient classification. ([#23](https://github.com/cyanheads/openstates-mcp-server/issues/23))

## Fixed

- **`openstates_search_committees`** — description named the stale `coverage_note` field instead of the actual `coverageNote` enrichment field. ([#24](https://github.com/cyanheads/openstates-mcp-server/issues/24))
- **README** — corrected an overcount claiming all four committee/event tools emit `coverage_note`; only `openstates_search_committees` and `openstates_search_events` emit the (now correctly named) `coverageNote`. ([#24](https://github.com/cyanheads/openstates-mcp-server/issues/24))
