Use case · Research agents
Research across the web, with every source cited
One query fans out to web metasearch, arXiv, Hacker News, Wikipedia and our own index, then comes back as ranked highlights with their URLs and dates.
Survey how RAG systems are evaluated
{ "query": "retrieval-augmented generation evaluation benchmark", "numResults": 5 }
Deeper insights into retrieval augmented generation: The role of sufficient context
research.google/blog/deeper-insights-into-retrieval-augmented-generation-the-role-of-sufficient-context/
GitHub - naver/bergen: Benchmarking library for RAG
github.com/naver/bergen
May 14, 2025 Cyrus Rashtchian, Research Lead, and Da-Cheng Juan, Software Engineering Manager, Google Research We introduce a new notion of sufficient context to examine retrieval augmented generation (RAG) systems, developing a method to classify instances, analyzing failures of RAG systems, and proposing a way to…
Recall
One question, every kind of source
Web metasearch, Hacker News, Wikipedia and our own index answer every query in parallel. Academic questions add arXiv; technical ones add Stack Overflow and GitHub.
Results are fused into one list and reranked by a cross-encoder, so a paper and a blog post compete on relevance.
- searxng143
- arxiv10
- hn6
- local5
- wikipedia1
From the response's contextfetch.sources field, recorded 17 Oct 2026.
MCP
Deep research in one tool call
contextfetch_deep_research runs up to three searches in parallel, removes duplicate sources and returns one evidence pack: title, URL, score and pruned context for each source.
Pass your own sub-queries to cover different angles. Each one costs a credit.
contextfetch_deep_research
input:
- query · The research question.
- sub_queries · Up to 3 search queries covering different angles of the question. Strongly recommended.
- num_results_per_query · Results per sub-query (1-25, default 5).
Citations
Every highlight keeps its URL and date
Results carry the URL, title and published date, plus highlights with scores from 0 to 1. Your agent can cite, sort by date and drop weak passages without another call.
{
"url": "https://research.google/blog/deeper-insights-into-retrieval-augmented-generation-the-role-of-sufficient-context/",
"title": "Deeper insights into retrieval augmented generation: The role of sufficient context",
"publishedDate": "2025-05-14",
"highlightScores": [
0.981,
0.77,
0.093
]
}How it works
From question to evidence in one call
Inside the recorded "retrieval-augmented generation evaluation benchmark" search, from the response's own timings. Stages overlap, so they add up to more than the total.
- 01
Recall
Every source is queried in parallel under a time budget and fused into one ranked list.
1,235 ms
- 02
Fetch
The best candidates are fetched in parallel; arXiv results use their abstract.
1,237 ms
- 03
Rerank and prune
A cross-encoder scores every chunk against the query and keeps the highlights.
504 ms
- 04
Read less
Pruned context is what your agent reads instead of the full pages.
3,856 → 1,096 tokens
Code
Dated, filtered, cited
Use exa_py with a new base URL, the HTTP API directly, or the MCP server from Claude Code and other clients.
- startPublishedDate for recent work only
- includeDomains to stay on trusted sites
- Up to 25 results per search, one credit
# pip install exa-pyfrom exa_py import Exa exa = Exa(api_key="YOUR_API_KEY", base_url="https://api.contextfetch.dev") res = exa.search( "retrieval-augmented generation evaluation benchmark", num_results=10, start_published_date="2024-01-01", contents={"highlights": True},)for r in res.results: print(r.published_date, r.url) print(" ", r.highlights[0][:240])curl -s https://api.contextfetch.dev/v1/search \ -H "Content-Type: application/json" \ -d '{"query":"retrieval-augmented generation evaluation benchmark","numResults":5, "contents":{"highlights":true,"pruned_context":true}}'# Claude Code: keyless, zero signupclaude mcp add contextfetch -- npx -y @contextfetch/mcp # Optional paid keyclaude mcp add contextfetch -e CONTEXTFETCH_API_KEY=YOUR_API_KEY -- npx -y @contextfetch/mcp # Claude Desktop / Cursor (mcpServers JSON){ "contextfetch": { "command": "npx", "args": ["-y", "@contextfetch/mcp"] } }Pricing
ContextFetch Search
$1.00per 1,000 searches
Highlights and pruned context are in the same credit; deep research costs one credit per sub-query. 25 searches a day are free with no key. One-time payment. Credits never expire. Full Markdown and pruning included.
Common questions
Which sources does a research query reach?
Every search queries a SearXNG metasearch instance, Wikipedia, Hacker News and our own index in parallel. arXiv joins when the query looks academic (at most one arXiv request every 3 seconds), and Stack Overflow and GitHub when it looks technical. Candidates are fused into one ranked list before pages are fetched.
What does contextfetch_deep_research do?
It runs up to 3 searches in parallel, one per sub-query you pass (or derived from the question), removes duplicate sources and returns one Markdown evidence pack with each source's title, URL, score and query-pruned context. Each sub-query costs 1 credit. Install with claude mcp add contextfetch -- npx -y @contextfetch/mcp.
Can I filter by date or domain?
Yes. startPublishedDate keeps results published on or after a date, and includeDomains and excludeDomains take up to 100 domains each. publishedDate is returned when the page states one; it is null otherwise.
Does ContextFetch write the research summary?
No. ContextFetch calls no language model. It returns sources, highlights and pruned context, and your agent's model writes the synthesis. Exa's /research and /answer endpoints are not available.
How many results can one search return?
Up to 25 per search, for one credit, with highlights and pruned context included.
How much does ContextFetch cost for research agents?
$1.00 per 1,000 searches on the $15 pack, less on bigger packs. A deep research call with 3 sub-queries costs 3 credits. Credits are a one-time purchase and never expire.
Read more
Give your research agent better sources
Start with no key: 25 free searches a day.