Two tools with clear, documented schemas and good naming. However, output schemas are not formally documented, error handling could be more granular, and parameter descriptions lack depth on constraints and usage patterns. Baseline comparison: tool descriptions average 194 chars (rubric p50); both tools here are 130-180 chars, which is acceptable. Param annotation baseline is 72 chars; these average ~50 chars. Schema completeness is good (all params have types and descriptions), but return types are undocumented.
Discover the structure of a web page by analyzing its HTML and returning the most common CSS selectors with sample text. Use this before web_parse to find the right selectors.
Parse web page content by URL, CSS selector, and extraction method
Output schemas not documented. Tools return JSON with 'success', 'url', 'data' fields, but LLMs cannot predict the structure of nested 'data' or 'selectors' objects without explicit schema documentation.
Parameter 'attribute' in web_parse lacks clear constraint documentation. Description says 'Required when method is "attribute"' but does not explain valid attribute names, format, or what happens if an invalid attribute is requested. Adds cognitive load to LLM.
Error responses are generic JSON blobs with 'error: true' and 'type' fields. No recovery guidance. E.g., when a URL fails to parse, the error does not suggest alternatives or next steps for the LLM. Baseline: 100% of A+ tools provide recovery guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 64 | - | v1 |
Tool descriptions do not explicitly state when to use discover vs web_parse. State WHAT the tool does, WHEN to use it.' discover mentions 'Use this before web_parse' but web_parse doesn't acknowledge the discovery workflow.
No documented pagination or result limits. discover returns 'most common CSS selectors' but does not specify how many or if results can be paginated. web_parse does not document max response size.