---
summary: "Framework bump to @cyanheads/mcp-ts-core 0.6.16 — recursive describe-on-fields linting, synced skills, and .describe() coverage on every nested field, array element, and union variant across the 18-tool surface."
breaking: false
---

# 0.2.1 — 2026-04-24

Housekeeping release. Tracks the `@cyanheads/mcp-ts-core` 0.6.16 linter upgrade, syncs the external skills bundle, and resolves every new `describe-on-fields` warning surfaced by the recursive schema walk. No runtime behavior changes; no new tools.

## Changed

- **`@cyanheads/mcp-ts-core`** bumped to `^0.6.16`. Notable upstream changes the server adopts:
  - `describe-on-fields` linter now recurses into nested objects, array element types, and union variants (previously top-level only). Diagnostic path syntax: `.key`, `[]`, `|<i>`.
  - Resource `output` schemas now lint through `checkFieldDescriptions` (no-op here — no resources yet).
  - `maintenance` skill gains Phase C (content-hash sync of framework scripts into `scripts/`).
  - `add-tool` + `design-mcp-server` skills add "seed orientation context" guidance (the `brapi_connect` envelope already implements this pattern).
  - `setup` + `polish-docs-meta` skills add guardrails against editing synced SKILL.md files directly.
- **Synced skills** (`skills/add-tool`, `skills/design-mcp-server`, `skills/maintenance`, `skills/polish-docs-meta`, `skills/setup`) — overwritten by content since the package did not bump the embedded `metadata.version` fields. `.claude/skills/` mirror refreshed via Phase B.
- **Schema `.describe()` coverage** — resolved every new warning (360 → 0) across the 18-tool surface:
  - Row schemas for every `find_*` tool carry a container describe plus field describes — Study, Germplasm, Observation, Image, Location, Variant, GenotypeCall, Variable rows.
  - Nested sub-objects in variables (trait / scale / method), genotype calls (`genotype.values` + `callFormatting`), images, synonyms, and related records.
  - `brapi_manage_dataset` discriminated-union variants (ListResult / SummaryResult / LoadResult / DeleteResult) each carry their own describe.
  - `DatasetHandleSchema` fields in `find-helpers.ts`.
  - `ConnectAuthSchema` union variants (none / bearer / api_key / sgn / oauth2); oauth2 gains `clientId` / `clientSecret` / `tokenUrl` describes.
  - `OrientationEnvelope` array element describes (supported services, notable gaps, crops, notes).
  - `brapi_find_locations.bbox.{minLat,maxLat,minLon,maxLon}` describes.
  - `brapi_raw_get` / `brapi_raw_search` `PaginationSchema` field describes.
  - `brapi_get_germplasm` Parent / Attribute and `brapi_get_image` Payload / Error container describes.
  - Distribution maps (`z.record`) on every `find_*` tool describe what the count represents.
  - `brapi_describe_filters` `FilterDescriptorSchema` container describe.
- Biome auto-formatted 7 files during the lint pass (line wrapping); no semantic changes.

## Verified

- `bun run lint:mcp` — `All definitions valid.` (was 360 warnings pre-bump)
- `bun run test` — 101/101 pass
