MCP server for reading public web pages through resilient public routes.
Four tools with complete input schemas and descriptions. Naming follows verb_noun pattern (read_*, diagnose_*, extract_*). Descriptions are adequate (50-100 chars) but lack actionable context for LLM selection. Parameters are typed and mostly described, but lack constraints (enums, ranges, patterns). Output schemas are not documented, LLMs cannot predict response structure. No error handling guidance. Missing parameter relationships (e.g., success_selectors interaction with timeout/max_attempts). Tool composition is sound (single responsibility), but batch variant (read_public_urls) lacks clear distinction from single-URL variant in descriptions.
Return a compact access diagnosis and attempt trace for one public URL.
Extract public media metadata using yt-dlp without downloading media.
Read one public URL through public routes and browser-like HTTP identities.
Read multiple public URLs, reusing host sessions within one tool call.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Responses are dict[str, Any], untyped and opaque to agents.
Parameter constraints missing. 'timeout' (int, default 25 - 90) lacks min/max bounds. 'max_attempts' (default 8 - 12) unbounded. 'max_content_chars' (default 60k - 120k) could accept absurd values. No enums for 'preferred_identity'.
Descriptions lack actionable context. 'Read one public URL through public routes' does not explain WHEN to use this vs read_public_urls, what 'public routes' means, or what success_selectors do. No dependency hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No error handling guidance. Tools return dict[str, Any] with no documented error structure. LLMs cannot distinguish success from failure or know what to do on timeout/invalid URL/access denied.
Batch tool (read_public_urls) lacks clear distinction from single-URL variant in description. No guidance on when to use batch vs sequential calls. No documented per-item success/failure structure.