A tool for extracting structured content from web pages with customizable selectors and crawling options
The server implements a single web scraping tool with a detailed schema and reasonable descriptions. The tool name 'web-content-pick' is moderately clear but lacks the standard verb prefix (get_, extract_). The input schema is comprehensive with nested options and proper type definitions. However, parameter descriptions could be more LLM-optimized, and there is no documented output schema. Error handling is basic, returning structured error responses but lacking recovery guidance. The tool does one job well, but naming and output documentation are deficient for production use.
Extracts structured content from a given web URL, providing a comprehensive analysis of the page structure. Returns organized data including headings, paragraphs, links, images, tables, and metadata. Ideal for content analysis, web scraping, and generating structured representations of web pages. Supports HTML parsing with clean, hierarchical output format.
Tool name lacks standard verb prefix. 'web-content-pick' does not start with action verb (get_, extract_, scrape_). LLMs infer intent from name, 'extract_web_content' or 'get_page_structure' would be clearer.
No documented output schema. Tool description claims to return 'organized data including headings, paragraphs, links, images, tables, and metadata' but does not specify the JSON structure, field names, or types. LLMs cannot plan downstream calls without knowing response shape.
Parameter 'excludeChildPage' has problematic schema. It accepts a 'function' property as a string matching a regex pattern '^function\\s*\\(url\\)\\s*\\{[^}]*\\}$'. This is unsafe, LLMs cannot reliably generate valid function strings, and passing raw code as strings invites injection risks and parsing errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Parameter descriptions lack actionable format/constraint details. E.g., 'maxDepth' has description 'Maximum depth for recursive crawling' but does not state the numeric range (e.g., 0-5, or 0-10). 'waitForSelectorTimeout' says 'Timeout for waiting for a selector' but does not clarify units (milliseconds assumed but not stated). LLMs cannot validate against undocumented constraints.
Error handling is generic. When validation fails or scraping fails, the tool returns an error text but does not suggest recovery paths. E.g., 'Invalid arguments: ...' does not tell the LLM what to fix. No timeout guidance, no retry hints.
No pagination or result limiting documented. The tool can crawl recursively with 'maxDepth' but the response schema and size limits are undocumented. An unbounded crawl could return megabytes of text, exhausting context windows. No mention of result caps or pagination hints.