Opinionated TypeScript scaffold for production MCP servers with built-in auth, rate limiting, audit logging, and observability.
Three tools with minimal schema and description quality. All tools have descriptions (10-50 chars), but lack parameter documentation and detailed input schemas. 'echo' has incomplete schema (no properties defined). 'ping' and 'secret-data' have empty properties but no parameter descriptions. No output schemas documented. No error handling guidance. No tool annotations. Naming is acceptable but generic ('echo', 'ping', 'secret-data'). This is a template/scaffold, not production-grade.
Returns the input payload as text.
Returns { pong: true, ts: <ISO timestamp> }.
Returns protected data — requires a valid API key.
Input schemas lack property definitions and parameter descriptions. All three tools define inputSchema with minimal or empty properties, and no parameter descriptions exist. LLMs cannot infer what inputs each tool accepts.
No output schemas documented. Tool descriptions do not specify what fields or structure the response contains. Agents cannot plan downstream tool calls or extract data reliably.
No error handling or recovery guidance. Tools do not document failure modes, error codes, or what the LLM should do if a call fails. No actionable error messages in code.
Tool descriptions are too brief (10-50 chars). Descriptions lack context on WHEN to use each tool, WHAT it returns, and any prerequisites. 'Returns the input payload as text' does not explain use case.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are marked READ_ONLY in metadata but this is not reflected in tool definitions, limiting agent reasoning about safety and retry behavior.