general-search
Conduct general web searches with customizable parameters like query, result count, depth, and relevance score. Retrieve filtered and relevant results for specific needs using the Tavily API.
Instructions
Perform a general web search using Tavily API
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of results to return | |
| minScore | No | Minimum relevance score threshold | |
| query | Yes | Search query | |
| searchDepth | No | Search depth level |
Implementation Reference
- src/tools/general-search.ts:7-45 (handler)The core handler function implementing the 'general-search' tool logic, performing web search via Tavily API, filtering and sorting results by score.export default async ( query: string, maxResults: number = 10, searchDepth: 'basic' | 'advanced' = 'basic', minScore: number = 0.4 ): Promise<GeneralSearchResult[]> => { const config = getConfig(); const { apiKey } = config; // Initialize Tavily client const tvly = tavily({ apiKey }); try { const response = await tvly.search(query, { searchDepth, maxResults, includeDomains: [], excludeDomains: [] }); // Transform and filter the results const filteredResults = response.results .map((result) => ({ title: result.title, url: result.url, content: result.content, publishedDate: result.publishedDate, score: result.score, })) .filter(result => result.score >= minScore) .sort((a, b) => b.score - a.score); return filteredResults; } catch (error) { console.error(`Error performing general search: ${error}`); throw error; } };
- src/services/tools.ts:30-48 (registration)Registration of the 'general-search' tool in the tools configuration array, including name, description, input schema, and wrapper execute function.{ name: "general-search", description: "Perform a general web search using Tavily API", parameters: z.object({ query: z.string().describe("Search query"), maxResults: z.number().optional().describe("Maximum number of results to return"), searchDepth: z.enum(["basic", "advanced"]).optional().describe("Search depth level"), minScore: z.number().optional().describe("Minimum relevance score threshold") }), execute: async (args) => { const results = await generalSearch( args.query, args.maxResults || 10, args.searchDepth || "basic", args.minScore || 0.4 ); return JSON.stringify(results, null, 2); } }
- src/types/tools.ts:33-39 (schema)TypeScript interface defining the structure of each result returned by the general search tool.export interface GeneralSearchResult { title: string; url: string; content: string; publishedDate: string; score: number; }