search_startpage
Conduct private web searches using Startpage to retrieve Google results securely. Specify queries, maximum results, language, and time range for precise, protected search outcomes.
Instructions
Search using Startpage - Google results with privacy protection
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Search language (e.g., "en", "de", "fr") | en |
| maxResults | No | Maximum number of results to return (1-20) | |
| query | Yes | Search query for Startpage | |
| timeRange | No | Time range filter: any, day, week, month, year | any |
Input Schema (JSON Schema)
{
"properties": {
"language": {
"default": "en",
"description": "Search language (e.g., \"en\", \"de\", \"fr\")",
"type": "string"
},
"maxResults": {
"default": 10,
"description": "Maximum number of results to return (1-20)",
"maximum": 20,
"minimum": 1,
"type": "number"
},
"query": {
"description": "Search query for Startpage",
"type": "string"
},
"timeRange": {
"default": "any",
"description": "Time range filter: any, day, week, month, year",
"enum": [
"any",
"day",
"week",
"month",
"year"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
}
Implementation Reference
- The execute handler for the search_startpage tool. It extracts parameters, calls the searchStartpage client method, formats the response with metadata, and handles errors.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' ] } }; }
- Input schema defining the parameters for the search_startpage tool: query (required), maxResults, language, timeRange.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)Local registration of the search_startpage tool in the alternative search engines module, including description, category, source, schema, and 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' ] } }; } } });
- Helper method in AlternativeSearchClient that generates simulated search results for Startpage.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)}`); } }
- src/index.ts:241-241 (registration)Top-level registration call in the main server initialization that invokes the module to register search_startpage among others.registerAlternativeSearchEngines(this.toolRegistry); // 3 tools: search_startpage, search_brave, search_ecosia