v1.7.0 — registerTool migration: titles, annotations, structured output
What's new in 1.7.0
Step #2 of the MCP modernization roadmap: the entire tool surface migrated off the deprecated `server.tool()` shorthand (removed in SDK 2.0) onto `server.registerTool()`. No engine behavior changes; full back-compat.
What hosts get
- Titles — every tool has a human-readable display name ("Forget a fact", not `memory_forget`).
- Behavior annotations — all 23 tools declare `readOnlyHint` / `destructiveHint` / `idempotentHint` / `openWorldHint`:
- the 3 destructive tools (`memory_forget`, `unload_pack`, `unregister_platform`) are flagged for confirmation UIs
- the read-only inspectors (`list_*`, `memory_search`, `get_trace`, `explain_last_curation`, …) are flagged safe-to-call-freely
- the 7 network-reaching tools (LLM / embeddings / web search) carry `openWorldHint: true`
- Structured output — every tool declares an `outputSchema` and returns `structuredContent` alongside the JSON text. Schemas are permissive by design (all-optional, passthrough) — they document the shape without ever rejecting engine output.
- The `categories` resource migrated to `registerResource` with a title.
Back-compat (verified, not assumed)
- Text content is byte-identical for every tool — including the three array-returning `list_*` tools, whose text stays a bare array while `structuredContent` wraps it in an object per the MCP spec.
- Error returns unchanged (`isError: true` + JSON text); error responses skip output-schema validation by SDK design.
- Verified: wire test 7/7 · integration 9/9 · day2 ✅ · 26/27 local evals with zero output-validation errors · CI evals green on gpt-4o-mini.
Found during verification (external, not this release)
#3 — cloud `gpt-oss` thinking-channel responses can yield an empty `optimizedPrompt` (remote API change exposing a pre-existing field-name gap in `client.ts`). Root cause + fix sketch in the issue; targeted for 1.7.1.
Also
- Fixed a stale link in `load_knowledge_pack`'s description that still pointed at the archived `clarifyprompt-packs` registry — now points at the canonical `packs/` home.
Install
```bash
npm install -g clarifyprompt-mcp@1.7.0
```