MCP server for fetching website content in multiple formats (HTML, Markdown, plain text, JSON)
Four tools with consistent naming (fetch_*) and basic schemas. All tools have descriptions (10-60 chars, below the 50-200 char optimum). Input schemas present but minimal: url is required and described, but 'headers' parameter lacks type specification (object properties undefined). No output schema documented. Error handling returns isError flag but no recovery guidance. Tools are read-only and well-scoped, but descriptions are terse and parameter documentation is incomplete.
Fetch a website and return the content as HTML
Fetch a JSON file from a URL
Fetch a website and return the content as Markdown
Fetch a website, return the content as plain text (no HTML)
Parameter 'headers' lacks type specification. Schema declares it as object but provides no properties, additionalProperties, or constraints. LLMs cannot infer valid header structure.
Tool descriptions are 30-60 characters, below the 50-200 char baseline for LLM optimization. Descriptions lack context on WHEN to use each tool (e.g., when to choose fetch_markdown vs fetch_txt vs fetch_html) and what the output format is.
No output schema documented. Callers cannot know the structure of returned content (e.g., is it always text? Can it be null? What fields does the response object contain?). LLMs must infer from code.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error responses return isError=true with a message but no recovery guidance. LLMs cannot determine if the error is retryable, user-fixable, or fatal. E.g., 'HTTP error: 404' gives no hint to try a different URL or check the domain.
No size limits or pagination documented. Tools can return arbitrarily large HTML/JSON responses, risking context window exhaustion. No mention of max response size or truncation behavior.