Production-ready TypeScript starter kit for building MCP servers — connect your tools to Claude in minutes
Three tools with complete schemas and descriptions, but descriptions are brief (10-20 chars baseline vs 194 char production average). All tools have proper input schemas with types and descriptions. Error handling present but minimal, calculator handles division by zero, datetime validates timezone, fetch-url truncates large responses. No output schemas documented. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming is clear and verb-based (calculator, datetime, fetch-url), but descriptions lack context on WHEN to use each tool or what downstream tools might need. fetch-url lacks security guidance on URL validation and response sanitization.
Perform basic math operations: add, subtract, multiply, divide
Get the current date and time, optionally in a specific timezone
Fetch the text content of a URL via HTTP GET. Returns raw text (HTML, JSON, plain text).
Tool descriptions lack context on WHEN to use and what they return. 'Perform basic math operations' does not explain when calculator is preferred over inline LLM math, or that it returns a formatted string result.
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data without knowing response field names and types. fetch-url returns truncated text but this is not declared in the schema.
fetch-url lacks security guidance. No mention of URL validation, SSRF prevention, or response sanitization. Description should warn about potential security implications of fetching arbitrary URLs.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only and idempotent, but this is not declared in the tool metadata. Agents cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Error messages are minimal. fetch-url truncates responses silently (10k char limit) without indicating truncation in the response structure. Agents cannot distinguish between a short response and a truncated one.