---
summary: "Catch invalid-field-name errors in search_studies with a piece-vs-module hint and pointer to get_field_definitions"
breaking: false
---

# 2.2.0 — 2026-04-20

### Changed

- **`clinicaltrials_search_studies`** — 400 responses matching the upstream "contains invalid field name" pattern are now caught in the service layer and rethrown as a validation error with a module-vs-piece hint and a pointer to `clinicaltrials_get_field_definitions`. Parses the offending field from the upstream body when present so the error calls it out by name. Resolves a UX paper cut where callers (LLMs especially) would pass module names like `StudyDesign` and get only the terse upstream message back. Closes #17.
- **`clinicaltrials_get_field_values`** — Invalid-field-name guidance now also references `clinicaltrials_get_field_definitions` for consistency with `search_studies`.
- **`clinicaltrials_search_studies` `fields` description** — Tightened schema description with explicit piece-vs-module contrast (`DesignPrimaryPurpose` vs `StudyDesign`) and a pointer to `clinicaltrials_get_field_definitions`.

### Dependencies

- Upgraded `@cyanheads/mcp-ts-core` from `^0.3.5` to `^0.4.1`.
- Upgraded `@biomejs/biome` to `^2.4.12`, `@cloudflare/workers-types` to `^4.20260420.1`, `diff` to `^9.0.0`, `typescript` to `^6.0.3`, `vite` to `^8.0.9`.
- Unpinned `@types/validator` (`13.15.10` → `^13.15.10`) and `vite` (`8.0.9` → `^8.0.9`) so future `bun update` can track them. No `resolutions`/`overrides` in the project.
- `bun audit`: 0 vulnerabilities (prior `hono` moderate advisory resolved transitively).

### Chores

- Synced `add-tool` (1.3 → 1.4) and `design-mcp-server` (2.2 → 2.3) skills from framework.
