Tiny MCP server for Perplexity Sonar web search
Three tools with clear action verbs and reasonable descriptions (100-150 chars each). All parameters have type definitions and descriptions. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. Error handling returns generic exception strings rather than actionable recovery guidance. No parameter validation constraints (enums, ranges) despite accepting free-form strings for 'focus' and 'recency'. Missing documentation of what fields are returned in the formatted response.
Comprehensive multi-step research — takes 2-10 MINUTES. Performs extensive multi-step web research with up to 10 reasoning iterations. Use only for comprehensive analysis that justifies the wait time. Ask the user for confirmation before calling this tool.
Thorough web research — detailed answer with many citations (5-15 seconds). Use for: complex questions needing multiple sources, comparisons, literature discovery, nuanced answers.
Quick web search — fast factual answers with sources (2-5 seconds). Use for: simple facts, definitions, current events, quick lookups.
Output schemas completely undocumented. Tools return formatted strings with embedded citations, but LLMs cannot parse structure or plan downstream calls. No documentation of response format, field names, or citation structure.
Parameters 'focus' and 'recency' accept free-form strings but should be enums. Code validates focus in {"academic", "finance", ""} and recency in {"day", "week", "month", "year", ""} but these constraints are not exposed in parameter schemas. LLMs will hallucinate invalid values.
Error handling returns bare exception strings ('Error: {exc}') instead of actionable recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No guidance on next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
deep_research tool lacks confirmation/dry-run pattern despite 2-10 minute execution time and potential for expensive API calls. No mechanism to preview or confirm before committing resources.
No timeout handling or guidance. deep_research has 600s timeout but no error message if exceeded. web_search/web_ask have 30s/60s timeouts but no documentation of timeout behavior or retry strategy.