search_startpage
Search the web privately using Startpage to get Google results without tracking. Filter results by time range, language, and quantity for focused research.
Instructions
Search using Startpage - Google results with privacy protection
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for Startpage | |
| maxResults | No | Maximum number of results to return (1-20) | |
| language | No | Search language (e.g., "en", "de", "fr") | en |
| timeRange | No | Time range filter: any, day, week, month, year | any |
Implementation Reference
- Execute handler for 'search_startpage' tool. Parses input arguments, calls the underlying searchStartpage client method, formats results with timing, metadata, privacy info, and handles errors with suggestions.execute: async (args: any) => { try { const { query, maxResults = 10, language = 'en', timeRange = 'any' } = args; const startTime = Date.now(); const result = await client.searchStartpage(query, { maxResults, language, timeRange }); const searchTime = Date.now() - startTime; return { success: true, data: { source: 'Startpage', query, language, timeRange, totalResults: result.results.length, results: result.results, searchTime, timestamp: Date.now(), privacy: result.privacy, features: result.features, searchMetadata: { engine: 'Startpage', basedOn: 'Google results', tracking: false, logging: false } } }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Startpage search failed', data: { source: 'Startpage', query: args.query, results: [], suggestions: [ 'Try different search terms', 'Check spelling and grammar', 'Use more specific keywords' ] } }; }
- Core helper method that generates mock search results for Startpage using generateSearchResults, adds privacy metadata, simulates Google proxy without tracking.async searchStartpage(query: string, options: any = {}) { try { // Startpage是Google结果的隐私代理,我们使用模拟数据 const results = this.generateSearchResults(query, 'Startpage', options.maxResults || 10); return { success: true, results, source: 'Startpage', privacy: 'Google results without tracking', features: ['No IP logging', 'No cookies', 'Anonymous proxy'] }; } catch (error) { throw new Error(`Startpage search failed: ${error instanceof Error ? error.message : String(error)}`); } }
- Input schema for search_startpage tool defining query (required), maxResults (1-20), language, and timeRange parameters.inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for Startpage' }, maxResults: { type: 'number', description: 'Maximum number of results to return (1-20)', default: 10, minimum: 1, maximum: 20 }, language: { type: 'string', description: 'Search language (e.g., "en", "de", "fr")', default: 'en' }, timeRange: { type: 'string', description: 'Time range filter: any, day, week, month, year', default: 'any', enum: ['any', 'day', 'week', 'month', 'year'] } }, required: ['query'] },
- src/tools/search/alternative-search-engines.ts:172-251 (registration)Tool registration block for 'search_startpage' including name, description, category, source, inputSchema, and execute handler.registry.registerTool({ name: 'search_startpage', description: 'Search using Startpage - Google results with privacy protection', category: 'search', source: 'Startpage', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for Startpage' }, maxResults: { type: 'number', description: 'Maximum number of results to return (1-20)', default: 10, minimum: 1, maximum: 20 }, language: { type: 'string', description: 'Search language (e.g., "en", "de", "fr")', default: 'en' }, timeRange: { type: 'string', description: 'Time range filter: any, day, week, month, year', default: 'any', enum: ['any', 'day', 'week', 'month', 'year'] } }, required: ['query'] }, execute: async (args: any) => { try { const { query, maxResults = 10, language = 'en', timeRange = 'any' } = args; const startTime = Date.now(); const result = await client.searchStartpage(query, { maxResults, language, timeRange }); const searchTime = Date.now() - startTime; return { success: true, data: { source: 'Startpage', query, language, timeRange, totalResults: result.results.length, results: result.results, searchTime, timestamp: Date.now(), privacy: result.privacy, features: result.features, searchMetadata: { engine: 'Startpage', basedOn: 'Google results', tracking: false, logging: false } } }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Startpage search failed', data: { source: 'Startpage', query: args.query, results: [], suggestions: [ 'Try different search terms', 'Check spelling and grammar', 'Use more specific keywords' ] } }; } } });
- src/index.ts:241-241 (registration)Top-level call to registerAlternativeSearchEngines which includes the search_startpage tool registration.registerAlternativeSearchEngines(this.toolRegistry); // 3 tools: search_startpage, search_brave, search_ecosia