Web Research MCP — Search, Fetch & Synthesize
An MCP server for AI agents that need to search the web, read pages, and synthesize research — all in a single tool call.
Pay-per-use. No subscription. No idle charges. Powered by Apify Standby.
What it does
Three tools, designed to work together:
| Tool | What it does |
|---|---|
web_search |
Search the web. Returns titles, URLs, and snippets. Uses Brave Search API (if configured) or DuckDuckGo fallback. |
fetch_page |
Fetch any URL and return clean markdown. Strips ads, nav, and boilerplate. Supports article, full-body, or links-only extraction. |
research_topic |
Multi-step research in one call: search → fetch → score relevance → deduplicate → extract key facts → synthesize. |
Quick connect
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"web-research": {
"type": "http",
"url": "https://idapixl--web-research-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_API_TOKEN"
}
}
}
}
Replace YOUR_APIFY_API_TOKEN with your token from apify.com/account/integrations.
Claude Code:
claude mcp add web-research https://idapixl--web-research-mcp.apify.actor/mcp --transport http
Cursor / Windsurf — add via Settings > MCP Servers > HTTP URL.
Pricing
Pay only for what you use. Charged per tool call.
| Event | Price |
|---|---|
web_search |
$0.003 |
fetch_page |
$0.005 |
research_topic |
$0.025 (single charge, includes all sub-calls) |
Brave Search API setup (optional but recommended)
By default the actor uses DuckDuckGo HTML scraping, which works without any key. For better results and freshness filtering:
- Go to brave.com/search/api and sign up for the free tier (2,000 queries/month)
- Copy your API key
- In the actor input, set Brave Search API Key (stored as secret — never exposed in logs)
When the key is set, web_search and research_topic will use Brave Search automatically. DuckDuckGo is the fallback on error.
Example tool calls
Search with freshness filter (Brave only)
{
"tool": "web_search",
"arguments": {
"query": "Claude 4 release announcement",
"maxResults": 5,
"freshness": "pw"
}
}
Read a page — links extraction mode
{
"tool": "fetch_page",
"arguments": {
"url": "https://docs.anthropic.com/en/api/getting-started",
"extractMode": "links"
}
}
Deep research with focus
{
"tool": "research_topic",
"arguments": {
"topic": "Model Context Protocol",
"maxSources": 3,
"focus": "pricing and monetization"
}
}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
braveApiKey |
string (secret) | — | Brave Search API key for higher-quality search |
maxSearchResults |
integer | 5 | Max results per web_search call (1–10) |
fetchTimeoutSecs |
integer | 30 | Page fetch timeout in seconds (5–120) |
proxyConfiguration |
object | — | Apify Proxy config (residential recommended for best success rates) |
Tool reference
web_search
query(required) — search query, max 500 charsmaxResults(optional) — 1–10, default 5freshness(optional) —pdpast day,pwpast week,pmpast month,pypast year (Brave only)
fetch_page
url(required) — page URLtimeoutSecs(optional) — 5–120, default 30extractMode(optional) —articlemain content (default),fullentire body,linksall links
research_topic
topic(required) — research topic or question, max 500 charsmaxSources(optional) — 1–5, default 3focus(optional) — sub-question to narrow the research (e.g. "performance benchmarks"), max 200 chars
Notes
- Stateless: each MCP request gets an isolated server instance
research_topicscores relevance, deduplicates near-duplicate sources (>70% sentence overlap filtered), and extracts key sentences containing your query terms- Proxy: Apify Residential proxies improve success rates on pages that block datacenter IPs
- Charges fire before execution — if a page fails to load after charging, the tool returns an error
Built by Idapixl. TypeScript, MCP SDK 1.x, Apify SDK 3.x.