MCP server for Scrapiq — URL to clean text/markdown/json for LLM/RAG
Single tool with clear naming (scrapiq_extract) and comprehensive description (194 chars). Input schema is well-defined with proper types and descriptions for all three parameters (url, format, max_chars). However, output schema is completely undocumented, the tool returns JSON from the Scrapiq API but provides no guidance on what fields to expect, forcing LLMs to infer structure. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint, etc.) despite being a read-only operation.
Extract a web page into clean, structured content for LLM/RAG pipelines via the Scrapiq API. Strips boilerplate, navigation, ads, and scripts. Returns title, content, links, and metadata.
Output schema completely undocumented. Tool returns JSON from Scrapiq API but provides no description of response fields (title, content, links, metadata). LLMs cannot plan downstream operations or extract specific fields without guessing.
Missing tool annotations. Tool is read-only and idempotent but lacks readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or UI presentation.
Error responses lack recovery guidance. extract() returns {'error': '...'} but does not tell the LLM what to do next (retry? ask user? try different URL?). Pattern: recovery-guide.
No result limits documented. Tool description does not state whether results are truncated at 8000 chars (which the code does) or if pagination is available. LLMs cannot reason about completeness.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. Limits deployment flexibility and testing surface.