fix(mcp): add tool titles, effect hints, and descriptive help
Summary
Address the MCPVetter report with titles and independent read-only/destructive hints for all 62 MCP tools.
Command facets now require a read, write, or destructive effect in CommandMetadata; titles reuse existing summaries. The MCP-only table is removed. Read excludes artifact writes and foreground changes. Observation/evidence tools are non-destructive writes; arbitrary app actions and forced script replacement remain destructive. Effects follow MCP annotations. Idempotence stays at MCP’s default.
Example tools/list entry:
{"name":"devices","title":"List available devices and simulators","annotations":{"readOnlyHint":true,"destructiveHint":false}}
Descriptions state behavior rather than model workflows, including corrected warning/error overlay, platform identifier, and alert outcome wording. 36 files; scope includes declarations, metadata projection, shared help, tests, and setup docs. No linked GitHub issue; source is the report. Directory acceptance is not claimed.
Validation
Head: a18f192512e26be103ab8e77d37336547ff93757; base: b7ded9cfb26927c7c60d3a04272b62ef7d47da92.
pnpm check:affected --run --head HEAD: 10 passed, 7 skipped; receipt resolves to the head above,exactCommit=true,checkoutChanged=false.- Unit: 19,557 passed, 3 skipped. Related: 369 passed. Focused: 550 passed.
router-tool-metadata.test.ts: prior published head6baf06aadfplus regression test → 2 destructive-hint failures; current head → 2 passes.- Built stdio smoke: all 62 tools in both protocol versions/output modes.
Independent follow-up review at 3385cbad22; its script-replacement finding is fixed. Rebase range-diff preserves main’s wait-text and back-swipe contracts.
Hosted CI owns coverage/provider/platform lanes. No device execution changes or live device run.