---
summary: "Adopts mcp-ts-core ^0.12.3 and MCP SDK v2 — tool arguments are strict and the advertised schemas change shape — and three tools gain a top-level `truncated` flag in their enrichment."
breaking: false
security: false
---

# 0.6.1 — 2026-08-21

Every wire-level change below comes from the framework bump; no tool's own input or output contract changed.

## Added

- **`truncated`** — a required boolean in the enrichment of `pubchem_get_compound_xrefs`, `pubchem_get_compound_interactions`, and `pubchem_get_compound_details`, stating at the top level that the response is not the whole set. The per-item detail stays where it was (`xrefs[].truncated`, `paging[].truncated`, `compounds[].synonymsTotal`); on `pubchem_get_compound_details` the flag also covers the PUG View fan-out cap, so a response with skipped CIDs reads as incomplete even when no list was paged.
- **`.github/CONTRIBUTING.md`** and **`.github/CODE_OF_CONDUCT.md`** — community-health files from the mcp-ts-core scaffold.

## Changed

- **Tool arguments are strict.** An argument key a tool does not declare is rejected by name instead of being silently stripped, and every advertised `inputSchema` carries `additionalProperties: false`. Root level only — a nested object still strips.
- **The advertised `outputSchema` declares the error envelope.** Success fields become optional and `error` is declared, so a client that validates `structuredContent` without checking `isError` no longer rejects an error result with `-32602`.
- **Advertised JSON Schema is 2020-12**, not draft-07.
- **`ctx.log` output reaches the client** as `notifications/message`, gated by the client's `logging/setLevel`.
- **The Docker build stage is pinned to `$BUILDPLATFORM`** ([cyanheads/mcp-ts-core#370](https://github.com/cyanheads/mcp-ts-core/issues/370)). Bun 1.4.0's JavaScriptCore aborts under QEMU, so the cross-architecture half of a multi-arch build failed on an arm64 host; the stage emits platform-independent JavaScript and only `dist/` is copied forward, so building it natively is equivalent.
- **Bun pins move to 1.4.0** — both `Dockerfile` stages and `packageManager`. `engines.bun` stays `>=1.3.0`.
- **The production Docker install omits optional peers** — `--omit=peer` on both the `bun install` and the OpenTelemetry `bun add`, so the runtime image no longer carries the framework's opt-in tiers.
- **`tsconfig.json` typechecks `tests/`.** It now covers `src/` and `tests/` with `noEmit`, and `tsconfig.build.json` carries the emit path (`rootDir: src`).
- **Security reports route to `security@caseyjhand.com`** (`.github/SECURITY.md`).
- **`PubChemClient`** raises its two SDQ failures through the `serviceUnavailable()` factory instead of constructing `McpError` directly.
- Internal tooling tracked the framework: `scripts/lint-packaging.ts` checks `@modelcontextprotocol/server` as the runtime-critical path, and `scripts/lint-mcp.ts` dropped its task-definition branch.

## Fixed

- **`bun run tree` honors directory-only gitignore patterns.** `.claude/` and its siblings were listed in `docs/tree.md` despite being ignored — `ignore` reads a trailing slash off the tested path, which `isIgnored` never supplied.

## Dependencies

- `@cyanheads/mcp-ts-core` `^0.11.0 → ^0.12.3` — MCP SDK v2: the framework now builds on `@modelcontextprotocol/server` `^2.0.0` in place of `@modelcontextprotocol/sdk` `^1.x`
- `@biomejs/biome` `2.5.5 → 2.5.9`
- `@types/node` `26.1.1 → 26.2.0`
- `tsc-alias` `^1.9.1 → ^1.9.2`
- `vitest` `^4.1.10 → ^4.1.11`
