Server defines 7 tools with complete input schemas via Zod and proper JSON Schema conversion. All tools have descriptions and parameters are typed. However, descriptions are generic and lack LLM-optimization guidance (e.g., 'Echoes back the input' vs 'Returns the exact input string unchanged; useful for testing connectivity'). Parameter descriptions are minimal (e.g., 'Message to echo' lacks format/length guidance). No output schemas documented. Error handling is absent, tools do not guide recovery or categorize failures. Tool composition is reasonable but lacks idempotency guarantees and chaining metadata.
Adds two numbers
Demonstrates how annotations can be used to provide metadata about content
Echoes back the input
Returns the MCP_TINY_IMAGE
Demonstrates a long running operation with progress updates
Prints all environment variables, helpful for debugging MCP server configuration
Samples from an LLM using MCP's sampling feature
Descriptions lack LLM-optimization guidance. Generic descriptions like 'Echoes back the input' (18 chars) and 'Prints all environment variables' (32 chars) fall below the 50-200 char baseline for A+ tools. Missing WHEN to use, prerequisites, and return value details.
No output schemas documented. Tools return results but LLMs cannot plan downstream calls or extract fields without seeing the response structure. E.g., 'add' returns a number, but 'longRunningOperation' returns what? Progress objects? Final result?
No error handling or recovery guidance. Tools do not categorize errors as retryable, user-fixable, or fatal. No actionable error messages. E.g., if 'sampleLLM' fails, the LLM has no guidance on whether to retry or ask the user.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Parameter descriptions are minimal and lack constraints. E.g., 'duration' in longRunningOperation has no min/max bounds, units are unclear (seconds?), and no guidance on reasonable ranges. 'messageType' enum is present but 'includeImage' boolean lacks context on what image is included.
Tool 'printEnv' exposes environment variables without security filtering. If MCP_TINY_IMAGE or other secrets are in env, they leak to the LLM context. No mention of which vars are safe to expose.