deep_research
Conduct detailed web searches with contextually relevant results and citations using Perplexity's Deep Research API, filtering by recency as needed.
Instructions
Perform a comprehensive web search using Perplexity's Deep Research API, which provides detailed and contextually relevant results with citations.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to perform | |
| search_recency_filter | No | Filter search results by recency (options: month, week, day, hour) |
Implementation Reference
- src/index.ts:82-146 (handler)Handler for executing the 'deep_research' tool. Sends the query to Perplexity's sonar-deep-research model via API, includes optional recency filter, returns formatted content and citations or error.case "deep_research": { const { query, search_recency_filter } = request.params.arguments as { query: string; search_recency_filter?: string; }; try { const payload: any = { model: "sonar-deep-research", messages: [ { role: "user", content: query } ], max_tokens: this.maxTokens, temperature: this.temperature }; // Add optional parameters if provided if (search_recency_filter) { payload.search_recency_filter = search_recency_filter; } console.error(`Using model: sonar-deep-research, max_tokens: ${this.maxTokens}, temperature: ${this.temperature}`); const response = await axios.post('https://api.perplexity.ai/chat/completions', payload, { headers: { 'Authorization': `Bearer ${process.env.PERPLEXITY_API_KEY!}`, 'Content-Type': 'application/json' } }); // Format the response to only include content and citations const formattedResponse = { content: response.data.choices[0].message.content, citations: response.data.citations || [] }; return { content: [{ type: "text", text: JSON.stringify(formattedResponse, null, 2) }] }; } catch (error: unknown) { if (axios.isAxiosError(error)) { const axiosError = error as AxiosError<PerplexityErrorResponse>; const errorData = axiosError.response?.data; const errorMessage = errorData?.error || errorData?.message || axiosError.message; return { content: [{ type: "text", text: `Perplexity API error: ${errorMessage}` }], isError: true }; } throw error; } }
- src/index.ts:55-77 (registration)Registers the 'deep_research' tool in the ListToolsRequestHandler, providing name, description, and input schema.this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [{ name: "deep_research", description: "Perform a comprehensive web search using Perplexity's Deep Research API, which provides detailed and contextually relevant results with citations.", inputSchema: { type: "object", properties: { query: { type: "string", description: "The search query to perform" }, search_recency_filter: { type: "string", description: "Filter search results by recency (options: month, week, day, hour)", enum: ["month", "week", "day", "hour"] } }, required: ["query"] } }] }; });
- src/index.ts:60-74 (schema)Input schema definition for the 'deep_research' tool: requires 'query' string, optional 'search_recency_filter' enum.inputSchema: { type: "object", properties: { query: { type: "string", description: "The search query to perform" }, search_recency_filter: { type: "string", description: "Filter search results by recency (options: month, week, day, hour)", enum: ["month", "week", "day", "hour"] } }, required: ["query"] }