---
summary: Batch partial success telemetry with auto-detection, new OTel attribute constants, tools-first design philosophy, expanded error classification guidance
breaking: false
---

# 0.2.5 — 2026-03-28

Batch partial success telemetry and tools-first design guidance.

## Added

- **Batch partial success telemetry** — `measureToolExecution` auto-detects when a tool handler returns a result with a non-empty `failed` array (the batch response pattern from the design skill). Sets `mcp.tool.partial_success`, `mcp.tool.batch.succeeded_count`, and `mcp.tool.batch.failed_count` span attributes and structured log fields. No manual instrumentation needed.
- **`ATTR_MCP_TOOL_PARTIAL_SUCCESS`**, **`ATTR_MCP_TOOL_BATCH_SUCCEEDED`**, **`ATTR_MCP_TOOL_BATCH_FAILED`** — New OTel attribute constants exported from `/utils`.
- **Batch input design section** — `design-mcp-server` skill gains guidance on when to accept array input, partial success output schema patterns, and telemetry integration.
- **Error design section** — `design-mcp-server` and `add-tool` skills expanded with error classification by origin (client/upstream/not-found/auth/internal), error factory usage, and failure mode planning tables.

## Changed

- **Tools-first design philosophy** — Updated `design-mcp-server`, `add-resource`, and `CLAUDE.md` to clarify that tools are the primary interface. Resources are supplementary — many MCP clients (Claude Code, Cursor, most chat UIs) are tool-only. Design guidance now requires verifying that resource data is also reachable via the tool surface.
- **`add-resource` skill v1.1** — Added tool coverage checklist item and guidance note.
- **`add-tool` skill v1.1** — Expanded batch input/partial success patterns with full code examples, improved error classification section with factory usage.
- **`api-utils` skill** — Updated telemetry attributes documentation for new batch/partial success attributes.

## Tests

- **Partial success detection** — Four new test cases in `performance.test.ts`: detects non-empty `failed` array, skips empty `failed`, handles missing `succeeded`, ignores non-object results.
- **Attribute constants** — Four new tests in `attributes.test.ts` for `error_category`, `partial_success`, `batch.succeeded_count`, `batch.failed_count`.
