MCP server that converts any web page URL to clean Markdown for LLM context. Processing is local and SSRF-guarded; no external APIs, no telemetry.
Single tool 'page_to_markdown' has a comprehensive, well-structured definition with clear naming, detailed description (280+ chars), and complete JSON Schema with all parameters typed and described. Input schema includes proper constraints (URI format, min/max for timeout_ms, boolean defaults). Output schema is not explicitly documented in the visible code, which is a notable gap. Error handling is mentioned in the description but not formalized in the tool definition. The tool follows verb_noun naming convention and accepts human-friendly input (URLs). No security issues detected, tool is read-only with SSRF guards and no credential parameters.
Fetch a web page URL and convert it to clean Markdown optimized for LLM context. Preserves headings, code blocks (with language hints), links, and tables; strips ads, navigation, and cookie banners. For Mintlify docs (docs.anthropic.com, OpenAI platform, Vercel, Stripe, etc.) tries the `URL.md` convention first for cleanest output. Discovers tab groups statically and emits each panel as a `### Tab: {label}` section instead of concatenating (prevents Python+TypeScript examples merging into one broken block). Zero external API calls — parses locally via linkedom.
Output schema not documented. Tool description does not specify the structure of returned Markdown (fields, format, metadata). LLMs cannot plan downstream processing without knowing what fields to extract.
Error handling not formalized in tool definition. Description mentions 'blocks private ranges' and 'SSRF-guarded' but does not document what errors the tool returns, when they occur, or how to recover. LLMs cannot self-correct without error guidance.
No pagination or result-limiting mechanism documented. Tool accepts any URL and returns full Markdown. For very large pages (10MB cap mentioned in code but not in schema), no guidance on truncation or chunking strategy.
Parameter 'include_images' and 'include_frontmatter' are boolean flags with defaults, but no guidance on when to use them. Descriptions are minimal (under 50 chars each). LLMs may not understand the trade-offs.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |