Single tool 'search_web' has a clear verb-noun name and decent high-level description, but critical gaps in parameter descriptions, schema completeness, output schema documentation, and error handling significantly undermine quality. The tool description is ~180 chars (within baseline range of 34 - 392), but parameter descriptions lack format constraints, validation rules, and guidance on valid values. Output is unstructured plain text with no documented schema. Error handling returns generic exception messages without recovery guidance. The prompt feature is present but not essential for tool quality scoring.
Search the web using Perplexity API and return results.
Parameter 'recency' lacks enum constraint despite accepting only 4 specific values ('day', 'week', 'month', 'year'). LLM may hallucinate invalid values like 'fortnight' or 'recent'.
Output schema is undocumented. Tool returns plain text string with no formal schema definition. LLM cannot know what fields to extract or how to structure downstream tool calls.
Error handling returns raw exception messages (e.g. 'Error searching the web: ...') with no recovery guidance. LLM does not know whether to retry, adjust parameters, or escalate to user.
Parameter 'query' description lacks guidance on format, length limits, or constraints. LLM may pass empty strings, extremely long queries, or special characters that break the Perplexity API.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Tool returns unstructured plain text. Baseline expectation is structured objects with typed fields. This forces LLM to parse unstructured output, wastes tokens, and increases hallucination risk.
API key (PERPLEXITY_API_KEY) is correctly injected server-side via environment variables, avoiding credential exposure in parameters. This follows the pattern correctly.