A Perplexity-like AI agent that searches the web, reasons with ReACT/Reflexion, and returns cited answers with multi-step reasoning
Four tools with basic schemas and minimal descriptions. All tools have input schemas with type definitions, but descriptions are generic (10-50 chars, well below the 194-char baseline). No parameter descriptions beyond the bare minimum. No output schemas documented. No error handling guidance. Tool names follow verb_noun convention (web_search, scrape_webpage, calculator, summarize_text) but lack specificity about when to use each vs alternatives. No pagination, no structured output guidance, no recovery hints.
Perform mathematical calculations
Scrape and extract content from a webpage
Summarize text content
Search the web for information
All tool descriptions are under 50 characters and lack context for LLM selection. 'Search the web for information' does not explain when to use web_search vs scrape_webpage, what format results return, or how to handle failures.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract structured data. E.g., does web_search return a list of URLs, full articles, or snippets? Does scrape_webpage return markdown or raw HTML?
Parameter descriptions missing or trivial. 'query' and 'url' lack format guidance. 'expression' does not specify supported operators or syntax. 'max_length' lacks min/max bounds. LLMs cannot validate inputs without explicit constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
No error handling guidance. If web_search fails (network error, rate limit, no results), the LLM has no recovery path. If calculator receives invalid syntax, no hint on what went wrong or how to retry.
Tool naming lacks disambiguation. 'web_search' vs 'scrape_webpage' distinction is unclear, when should an agent choose one over the other? No guidance on whether web_search returns full content or summaries, or whether scrape_webpage requires a URL from web_search first.