MCP server for Perplexity AI web search integration
Single tool with clear naming (search_web) and reasonable description (194 chars). Input schema present with typed parameters and descriptions. However, output schema is undocumented (returns string, not structured), error handling is generic ('Error searching...' string), and no guidance on recovery or retry logic. Missing tool annotations (readOnlyHint despite READ_ONLY risk classification). Descriptions are adequate but lack dependency hints or format constraints. No pagination support despite potential for large result sets.
Search the web using Perplexity AI with recency filtering. This tool uses Perplexity AI to search the web and provide up-to-date information with citations to sources. Results can be filtered by recency.
Output schema undocumented. Tool returns string, but LLM cannot infer structure of citations or how to extract them. Should return structured object with {content: string, citations: string[], source_urls: string[]}.
Error handling is generic. Returns 'Error searching with Perplexity: {str(e)}' which gives LLM no recovery guidance. Should categorize as retryable (API timeout) vs user-fixable (invalid query) vs fatal (auth failure).
Missing tool annotations. Tool is marked READ_ONLY in risk classification but lacks readOnlyHint annotation in schema. Prevents clients from optimizing caching/safety policies.
Recency parameter lacks enum constraint. Description lists options ('day', 'week', 'month', 'year') as prose instead of formal enum. LLM may hallucinate invalid values like 'fortnight' or 'recent'.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
No pagination or result limiting documented. If Perplexity returns large citation lists or multi-paragraph responses, no mechanism to cap results or fetch next page. Risks context window exhaustion.