Give an LLM a URL and a goal — it drives a real browser, fills forms, and returns structured data. The browser that scripts itself.
Single tool with clear naming (read_page) and good description (194 chars, matches baseline). Input schema present with two string parameters, both described. However, output is unstructured text (header + answer/error/fallback string) with no documented schema. No parameter constraints (enums, ranges), no error classification, no recovery guidance. Tool description mentions 'bot-protected pages' and 'polite mode' but lacks actionable error handling for common failure modes (blocked, timeout, invalid URL). Composition is sound (single responsibility), but lacks production-grade robustness.
Read a web page and extract information toward a goal. Use this when you have a specific URL and want a synthesized answer rather than raw HTML. Handles JS-heavy and bot-protected pages via a real browser. Runs in polite mode (respects robots.txt, rate-limited).
Output schema undocumented. Tool returns unstructured text (header + answer/error/fallback). LLMs cannot parse or chain results reliably. Should return structured object with fields: {url, stage, answer, error, status_code}.
No error classification or recovery guidance. Description mentions 'blocked' and 'bot-protected' but tool provides no actionable error messages. LLM cannot distinguish retryable (timeout) from fatal (403 Forbidden) failures.
Input parameters lack constraints. 'url' accepts any string (no format validation, no URL pattern). 'goal' is unbounded (no length limit, no guidance on specificity). Should add format='uri' to url and document goal length/style expectations.
Tool description lacks dependency hints and prerequisites. Does not mention: required network access, browser startup time, rate-limiting behavior, or when to use vs. alternatives (e.g., when to use read_page vs. raw HTML fetch).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No pagination or result limits documented. If a page returns large content, tool silently truncates or fails. Should document max response size and offer streaming or chunking for large pages.