The Internet Search tool provides a unified interface for searching across multiple search providers, supporting web, image, news, video, and local search capabilities. It supports multiple queries executed in parallel.
Instead of managing separate tools for different search providers, the Internet Search tool gives you access to multiple search engines through a single interface. It automatically handles provider-specific requirements and normalises results.
Parallel Query Execution: Pass multiple queries in a single call to execute them concurrently. The tool manages a worker pool to process queries efficiently while respecting rate limits.
Automatic Fallback: The tool includes automatic fallback functionality. If a provider fails (e.g., rate limited, network error), it automatically retries with other available providers that support the requested search type. This ensures reliable search results even when primary providers are temporarily unavailable.
Requires free API key
- Internet Search: General internet search with fresh results
- Image Search: Search for images with metadata
- News Search: Recent news articles and events
- Video Search: Video content with metadata
- Local Search: Local businesses and points of interest (Pro API required)
- Internet Search: Free privacy-focused internet search (no API key required)
- Internet Search: General internet search with Google's quality
- Image Search: Search for images with comprehensive metadata
- Note: Requires Google API key and Custom Search Engine ID
- Internet Search: Privacy-focused self-hosted search aggregation
- Image Search: Images via SearXNG instance
- News Search: News articles via SearXNG
- Video Search: Video content via SearXNG
- Internet Search: Fast, privacy-focused search with high-quality results
- Note: Requires Kagi API key (requires Kagi subscription and search API enabled, see https://help.kagi.com/kagi/api/search.html)
Example MCP Client Configuration:
{
"mcpServers": {
"dev-tools": {
"type": "stdio",
"command": "/path/to/mcp-devtools",
"env": {
"BRAVE_API_KEY": "your-brave-api-key",
"GOOGLE_SEARCH_API_KEY": "your-google-api-key",
"GOOGLE_SEARCH_ID": "your-search-engine-id",
"KAGI_API_KEY": "your-kagi-api-key",
"SEARXNG_BASE_URL": "https://your-searxng-instance.com"
}
}
}
}Providers are only registered if properly configured:
- Brave: Registered only if
BRAVE_API_KEYis set - DuckDuckGo: Always registered (no configuration required)
- Google: Registered only if both
GOOGLE_SEARCH_API_KEYandGOOGLE_SEARCH_IDare set - SearXNG: Registered only if
SEARXNG_BASE_URLis set and valid - Kagi: Registered only if
KAGI_API_KEYis set
The fallback chain automatically adjusts based on which providers are available with progressive delays (1s, 2s, 3s) between attempts to prevent rapid-fire rate limiting:
Example Scenarios:
| Configuration | Fallback Order | Behaviour |
|---|---|---|
Only BRAVE_API_KEY set |
Brave → DuckDuckGo | If Brave fails, waits 1s then tries DuckDuckGo |
Only GOOGLE_SEARCH_API_KEY + GOOGLE_SEARCH_ID set |
Google → DuckDuckGo | If Google fails, waits 1s then tries DuckDuckGo |
Only KAGI_API_KEY set |
Kagi → DuckDuckGo | If Kagi fails, waits 1s then tries DuckDuckGo |
Only SEARXNG_BASE_URL set |
SearXNG → DuckDuckGo | If SearXNG fails, waits 1s then tries DuckDuckGo |
| All providers configured | Brave → Google → Kagi → SearXNG → DuckDuckGo | Maximum resilience: tries all five with progressive delays |
| Nothing configured | DuckDuckGo only | Only DuckDuckGo available, no fallback needed |
Important: Unconfigured providers are not included in the fallback chain. The tool won't waste time attempting to use providers that aren't properly set up.
Get your API key from Brave Search API and set:
BRAVE_API_KEY="your-brave-api-key"Get your API key from Kagi Search API (requires Kagi subscription) and set:
KAGI_API_KEY="your-kagi-api-key"Note: Kagi API access requires an active Kagi subscription. API tokens can be generated from your Kagi account settings.
For self-hosted or public SearXNG instances:
SEARXNG_BASE_URL="https://your-searxng-instance.com"
# Optional authentication:
SEARXNG_USERNAME="your-username"
SEARXNG_PASSWORD="your-password"No configuration required - works out of the box.
Google search requires two separate configurations:
- Go to Google Cloud Console - APIs & Services - Credentials
- Create a new API key (or use an existing one)
- Important: Enable the Custom Search API for your project:
- Go to Custom Search API Library
- Click ENABLE (if not already enabled)
- Copy your API key → this is your
GOOGLE_SEARCH_API_KEY
- Go to Programmable Search Engine Control Panel
- Click Add to create a new search engine
- Important: Select "Search the entire web" (not specific sites)
- Create the search engine
- In your search engine's overview page, find the "Search engine ID" (starts with a letter, looks like
82c8a03a3cb0542d2) - Copy this ID → this is your
GOOGLE_SEARCH_ID
GOOGLE_SEARCH_API_KEY="AIza...your-api-key-from-cloud-console..." # Your API key
GOOGLE_SEARCH_ID="abcdefg1234" # Your search engine IDImportant Notes:
- You need both the API key (from Cloud Console) and the Search Engine ID (from Programmable Search Engine)
- The Custom Search API must be enabled in your Google Cloud project
- Free tier: 100 queries/day
- Paid tier: $5 per 1000 queries (up to 10,000/day)
The Internet Search tool supports configurable rate limiting and parallel execution:
-
INTERNET_SEARCH_RATE_LIMIT: Maximum HTTP requests per second to search providers- Default:
1 - Description: Controls the rate of HTTP requests to prevent overwhelming search provider APIs
- Example:
INTERNET_SEARCH_RATE_LIMIT=2allows up to 2 requests per second
- Default:
-
INTERNET_SEARCH_MAX_PARALLEL: Maximum concurrent search queries- Default:
3 - Description: Controls how many queries execute in parallel when multiple queries are provided
- Example:
INTERNET_SEARCH_MAX_PARALLEL=5allows up to 5 concurrent searches - Note: All parallel queries share the rate limiter, so requests are naturally queued to respect API quotas
- Default:
- Rate Limiting: Configurable request rate limiting protects against overwhelming external search provider APIs
- Input Validation: Comprehensive validation of search parameters and provider selection
- Error Handling: Graceful handling of network issues and API failures
- Trusted Sources: Only queries established search provider APIs (Brave, Google, Kagi, SearXNG, DuckDuckGo)
While intended to be activated via a prompt to an agent, below are some example JSON tool calls.
{
"name": "internet_search",
"arguments": {
"type": "web",
"query": ["golang best practices"],
"count": 10,
"provider": "brave",
"freshness": "pw"
}
}{
"name": "internet_search",
"arguments": {
"type": "web",
"query": ["golang best practices", "rust vs go performance", "python async patterns"],
"count": 5
}
}{
"name": "internet_search",
"arguments": {
"type": "image",
"query": ["golang gopher mascot"],
"count": 3,
"provider": "searxng"
}
}{
"name": "internet_search",
"arguments": {
"type": "news",
"query": ["artificial intelligence breakthrough"],
"count": 10,
"provider": "brave",
"freshness": "pd"
}
}{
"name": "internet_search",
"arguments": {
"type": "video",
"query": ["golang tutorial"],
"count": 10,
"provider": "searxng"
}
}{
"name": "internet_search",
"arguments": {
"type": "local",
"query": ["coffee shops near Fitzroy"],
"count": 5,
"provider": "brave"
}
}{
"name": "internet_search",
"arguments": {
"type": "web",
"query": ["golang best practices"],
"count": 10,
"provider": "kagi"
}
}{
"name": "internet_search",
"arguments": {
"type": "web",
"query": ["golang best practices"],
"count": 5,
"provider": "duckduckgo"
}
}type(optional): Search type -web,image,news,video,local(default:web)query(required): Array of search query strings - multiple queries execute in parallelprovider(optional): Provider to use -brave,google,kagi,searxng,duckduckgocount(optional): Number of results per query to return
freshness: Time filter for resultspd: Past 24 hourspw: Past weekpm: Past monthpy: Past yearYYYY-MM-DDtoYYYY-MM-DD: Custom date range
offset: Pagination offset (internet search only)
start: Start index for pagination (default: 0, increments of 10)
time_range: Time filter -day,week,month,year
The tool returns results in a structured format with per-query results and summary statistics:
{
"searches": [
{
"query": "golang best practices",
"provider": "brave",
"results": [
{
"title": "Effective Go",
"url": "https://go.dev/doc/effective_go",
"description": "Tips for writing clear, idiomatic Go code..."
}
]
},
{
"query": "rust vs go performance",
"provider": "duckduckgo",
"results": [...]
}
],
"summary": {
"total": 2,
"successful": 2,
"failed": 0
}
}When some queries succeed and others fail, the response includes both:
{
"searches": [
{
"query": "successful query",
"provider": "brave",
"results": [...]
},
{
"query": "failed query",
"error": "all providers failed: brave: rate limited; duckduckgo: timeout",
"results": []
}
],
"summary": {
"total": 2,
"successful": 1,
"failed": 1
}
}Best for general information gathering, research, and finding relevant websites.
Example Results:
- Page titles and descriptions
- URLs and snippets
- Publication dates
- Source metadata
Find relevant images with metadata for presentations, documentation, or reference.
Example Results:
- Image URLs and thumbnails
- Alt text and descriptions
- Source websites
- Image dimensions
Stay updated with recent events and news articles from various sources.
Example Results:
- Article headlines and summaries
- Publication dates and sources
- Author information
- News category tags
Discover educational content, tutorials, and relevant video material.
Example Results:
- Video titles and descriptions
- Video URLs and thumbnails
- Duration and view counts
- Source platforms
Find local businesses, restaurants, and services (Brave Pro API required).
Example Results:
- Business names and descriptions
- Addresses and contact information
- Ratings and reviews
- Opening hours
The Internet Search tool automatically handles provider failures with intelligent fallback:
-
Default Mode (no provider specified):
- Tries providers in priority order: Brave → SearXNG → DuckDuckGo
- Automatically retries with next available provider if current one fails
- Only tries providers that support the requested search type
- Adds metadata to results indicating fallback occurred
-
Explicit Provider Mode (provider parameter specified):
- Uses only the specified provider
- No automatic fallback
- Returns error if provider fails
The tool uses this priority order when selecting providers:
- Brave - Best performance and features (when API key configured)
- Google - High quality results with comprehensive metadata (when API key + CX configured)
- Kagi - Fast, privacy-focused search with high-quality results (when API key configured)
- SearXNG - Privacy-focused with language options (when instance configured)
- DuckDuckGo - Always available fallback (no configuration needed)
When fallback occurs, search results include additional metadata:
fallback_used: true- Indicates a fallback provider was usedoriginal_provider_errors: [...]- Lists errors from failed providersprovider: "provider_name"- Shows which provider ultimately succeeded
- Best for: Fresh, comprehensive results with strong English content
- Pros: Fast, reliable, good metadata, local search support
- Cons: Requires API key, usage limits based on plan
- Best for: High-quality results with comprehensive metadata
- Pros: Google's search quality, good for web and image search, well-structured results
- Cons: Requires API key + Custom Search Engine ID, 100 queries/day free limit, $5 per 1000 queries paid
- Best for: Fast, high-quality results with privacy focus
- Pros: No ads, no tracking, high-quality results, fast performance, includes thumbnails when available
- Cons: Requires paid Kagi subscription, API access requires subscription
- Best for: Privacy-focused search, aggregated results
- Pros: No tracking, multiple search engines, self-hostable
- Cons: Requires instance setup, variable performance
- Best for: Quick internet searches without setup
- Pros: No API key required, privacy-focused, reliable
- Cons: Limited to internet search only, fewer customisation options, rate-limited HTML scraping
- Start with internet search to get overview
- Use news search for recent developments
- Find images for visual references
- Look up video tutorials for complex topics
- Internet search for background information
- Image search for visual assets
- News search for current events
- Video search for tutorial references
- Internet search for technical documentation
- Video search for coding tutorials
- News search for technology updates
- Image search for architecture diagrams
- Free Plan: 2,000 queries/month
- Pro Plan: 20,000 queries/month + local search
- Enterprise: Custom limits
- Free Tier: 100 queries/day
- Paid Tier: $5 per 1000 queries (up to 10,000/day)
- Note: Requires both API key and Custom Search Engine configuration
- Based on your Kagi subscription plan
- API access requires an active Kagi subscription
- No separate API quota limits beyond your subscription
- Depends on instance configuration
- Self-hosted instances have no built-in limits
- No official limits for reasonable usage
- Rate limited via 202 status code when automated requests detected
The tool provides clear error messages for common issues:
- Missing API keys
- Invalid query parameters
- Network connectivity problems
- Provider-specific errors
- Rate limit exceeded
- Use appropriate result counts - Request only what you need
- Leverage freshness filters - Reduce processing time for time-sensitive queries
- Choose providers wisely - Match provider strengths to your use case
- Cache results - The tool includes intelligent caching for repeated queries
For technical implementation details, see the Internet Search source documentation.