Three tools with complete input schemas and descriptions, but significant gaps in output documentation and error handling. Tool names follow verb_noun pattern (fetch, scrape, extract). Descriptions are adequate (100-150 chars) but lack WHEN-to-use guidance and prerequisites. Parameters are well-typed with enums where appropriate (dump, format). Critical weakness: no documented output schemas, LLMs cannot plan downstream calls or extract structured data. Error handling wraps exceptions generically as {"error": "..."} without recovery guidance. No parameter validation rules stated (e.g., URL format, concurrency bounds). Missing idempotency and side-effect declarations.
Fetch a URL and return clean markdown content with scripts, styles, and navigation stripped. Ideal for reading article content or documentation pages.
Fetch a single web page and return its content as HTML, plain text, or a list of links. Uses obscura headless browser for JavaScript-rendered pages. Optionally extract only a specific element via CSS selector.
Scrape multiple URLs in parallel and return structured results. Use this for batch collection when you have a known list of URLs to process. Returns JSON or text output per URL.
No output schemas documented. LLMs cannot infer what fields to expect (e.g., does obscura_fetch_page return {result: string} or {html: string, links: []}?). Breaks tool chaining and forces agents to guess field names.
Error handling is generic: all exceptions wrapped as {"error": "..."}. No recovery guidance (e.g., 'URL invalid, check format' or 'Timeout, retry with smaller batch'). LLMs cannot self-correct.
Parameter constraints not documented in descriptions. E.g., concurrency default is 5 but no min/max stated; URL format not specified; selector CSS syntax not validated. Invites invalid LLM input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Descriptions lack WHEN-to-use guidance. E.g., obscura_fetch_page vs obscura_extract_markdown both fetch URLs, when should LLM pick one over the other? No dependency hints or prerequisites stated.
No idempotency or side-effect declarations. Are these tools safe to retry? Do they cache results? Can they be called multiple times with the same URL without side effects? Agents need this to plan safely.