A demonstration MCP server built with FastMCP and FastAPI, exposing basic utility tools
All three tools lack descriptions entirely (0/3 have non-empty descriptions), violating the critical requirement that every tool must have a description for LLM selection. Parameter descriptions are also missing (null values in schema). While schemas are present with proper types (string, integer), the complete absence of descriptive text makes these tools unusable by agents without external documentation. No error handling, no output schema documentation, and no guidance on when/why to call each tool.
All tools lack descriptions. Critical requirement: every tool must have a non-empty description (10 - 1024 chars) so LLMs can determine when/why to select it.
All parameter descriptions are null. LLMs cannot infer parameter meaning from names alone, 'text' could be plaintext, HTML, markdown, or code; 'a' and 'b' are ambiguous without context.
No output schema documented. LLMs need to know what fields to expect (e.g., does echo return {text: string} or {result: string}?) to plan downstream calls.
No error handling or recovery guidance. If add() receives non-integers or current_time() times out, the LLM has no actionable error message.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Tool naming lacks action verbs. 'echo' and 'add' are acceptable, but 'current_time' should be 'get_current_time' to follow verb_noun convention (90% of A+ tools start with action verbs).