A C++ SDK for building Model Context Protocol (MCP) servers with typed tool support, JSON-RPC transport, and lifecycle management
Three tools with complete input schemas and basic descriptions. Naming follows verb_noun convention (add, multiply, echo). Schemas are properly typed with required fields and parameter descriptions. However, descriptions are minimal (10-20 chars), falling below the 50-200 char baseline for LLM-optimized tools. No output schema documentation. Error handling exists at the SDK level but tools lack recovery guidance. Tool composition is sound (single responsibility), but descriptions don't explain WHEN to use each tool or what the output structure is.
Add two integers
Echo back the message
Multiply two integers
Tool descriptions are too brief (10-20 chars). Baseline is 50-200 chars. LLMs cannot determine when to select 'add' vs 'multiply' or what output format to expect.
No output schema documented. Tools return text content blocks, but LLMs don't know the structure. Should document: 'Returns a JSON object with content array containing text blocks and isError boolean.'
No error recovery guidance. ToolRegistry catches exceptions and returns isError=true, but tools lack descriptions of failure modes or recovery steps.
Parameter descriptions are minimal. 'first operand' and 'second operand' lack context on valid ranges, types, or constraints. Should specify: 'Integer in range [-2^31, 2^31-1]' or similar.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only and idempotent, these should be declared in the tool metadata.