TypeScript framework for building MCP servers — decorator syntax, zero boilerplate
Single tool 'get_weather' has a basic description (23 chars) and minimal input schema. The description lacks context on when/why to use the tool, what it returns, or any prerequisites. Input schema defines 'city' parameter but provides no type constraint (string type is present but no description for the parameter itself). No output schema documented. No error handling guidance. Tool naming follows verb_noun convention but descriptions fall well below the 50-200 char baseline for LLM-optimized tools. Framework is clean but tool definitions are underdeveloped.
Get current weather for a city
Tool description is too short (23 chars) and lacks actionable context. Should explain what data is returned, when to call it vs alternatives, and any prerequisites.
Input parameter 'city' has no description. LLMs cannot infer whether to pass a city name, code, or ID. Parameter descriptions are mandatory.
No output schema documented. LLMs cannot plan downstream operations or extract fields without knowing the response structure.
No error handling guidance. If a city is not found or the API fails, the tool returns a generic error with no recovery path for the LLM.
Input schema lacks constraints. 'city' parameter should specify minimum/maximum length, allowed format, or examples to prevent hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |