Server has 2 tools with complete input schemas and descriptions visible in source code. Naming follows verb_noun convention for both tools ('mcp_fetch', 'mood'). However, descriptions lack depth for LLM-optimal selection guidance, parameter descriptions are minimal (single line, under 20 chars for 'url'), and there is no documented output schema. Error handling returns plain text responses without recovery guidance or categorization. The 'mood' tool is a trivial demo rather than a production-grade utility. Tool definitions are properly registered with types.Tool and explicit schemas, so not penalized for inference.
Fetches a website and returns its content
Ask the server about its mood - it's always happy!
Tool descriptions lack LLM-optimized context. 'mcp_fetch' description (41 chars) omits WHEN to use it, prerequisites, or what it returns. Should explain 'Fetches and returns the full HTML/text content of a website. Use to extract information from web pages. Returns content as plain text.' to guide tool selection.
Parameter 'url' lacks actionable description format guidance. Current description '"URL to fetch"' (13 chars) is below 20-char minimum. Should specify 'A valid HTTP(S) URL starting with http:// or https://' to prevent malformed inputs.
No documented output schema. LLMs cannot predict response structure (TextContent vs ImageContent vs EmbeddedResource options). Should document: 'Returns TextContent with plain-text body of fetched page, or error message if fetch fails (timeout, HTTP error, network failure).'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 10 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Error handling returns unhelpful plain-text responses without recovery guidance. 'Error: Missing required argument' should guide LLM: 'Missing required argument: url. Provide a valid HTTP(S) URL to fetch.' Error messages do not categorize as retryable vs fatal.
The 'mood' tool is a trivial demo (always returns cheerful response) with no practical utility in production agent workflows. Parameter 'question' accepts free-form text but tool ignores it entirely. Does not fit production-grade tooling.
'mcp_fetch' lacks safety constraints. No documentation of timeout behavior (10 sec timeout exists in code but not documented in schema), max response size, or blocked domains. Should add limits to description: 'Timeout: 10 seconds. Respects robots.txt and redirects (max 5).'
'url' parameter should accept human-friendly aliases. Current design assumes LLM always has direct URL. Consider parameter description hinting at URL resolution if partial names are common in workflows.