---
summary: "search_legal respondent/citation gate fix; handler-level ID validation; lookup_elections independent_expenditures caveat"
breaking: false
security: false
---

# 0.4.11 — 2026-06-08

## Fixed

- **`openfec_search_legal` `hasFilter` gate** — `respondent`, `regulatory_citation`, and `statutory_citation` now satisfy the preflight gate on their own. Previously, passing only these filters returned `missing_filter` even though they map to functional upstream parameters. Recovery hint updated to list the accepted filter types. (#7)
- **Candidate/committee ID validators** — removed field-level `.regex()` from `candidate_id` and `committee_id` in `search-candidates`, `search-committees`, `search-contributions`, `search-disbursements`, `search-expenditures`, and `search-filings`. The handler-level validators (`validateCandidateId`, `validateCommitteeId`) now fire as the sole enforcement, surfacing the friendly format message instead of the raw Zod regex pattern. Also resolves a JSON-Schema `pattern`/runtime case-sensitivity mismatch. (#8)
- **`openfec_lookup_elections` summary mode** — `independent_expenditures` from `/elections/summary/` is now accompanied by a `_independent_expenditures_note` field in `structuredContent` and a `> Note` block in the text output, flagging the value as an unreconciled upstream aggregate that may be inflated and directing to `openfec_search_expenditures mode: by_candidate` for verified totals. (#9)

## Changed

- `@types/node` `^25.9.1` → `^25.9.2`
