Small samples. Treat comparisons as directional. No blended score: each
question is answered separately.
Revera · PR review
Search finds breaking-change bugs.
18/18bug-task runs
Search arms pooled vs. no search 0/6.
Recommended: keep Exa auto. Best rank-1 evidence on review-style lookups (11/12) and no strict false positives.
Parallel fast is a close, faster, cheaper backup.
OpenCode · coding
No measurable gain from search on these 4 tasks.
4/4no search
= best search arm 4/4 in the quick pass.
Pick on retrieval and latency: Parallel fast (24/24 evidence@5, ~0.5 s per search).
Retrieval · held-out
Exa and Parallel tie at the top.
Exa24/24
Parallel24/24
Tavily22/24
Brave21/24
Firecrawl16/24
Only Firecrawl is clearly behind; the rest overlap within noise.
Swipe tables horizontally to compare providers.
Retrieval
Can it find the right evidence?
24 held-out questions, one search + read of the top
result each. Evidence means the gold fact’s patterns matched provider-returned
text, not merely that a familiar URL appeared.
How often is the evidence there?
Rank 1 vs. anywhere in the top 5. Whiskers: Wilson 95% interval.
Evidence@5Evidence@1 (lighter inset)
Exa23 / 24of 24
Parallel20 / 24of 24
Tavily21 / 22of 24
Brave14 / 21of 24
Firecrawl12 / 16of 24
0%50%100%
Evidence retrieval counts and evidence@5 confidence intervals
Provider
Questions
Evidence@1
Evidence@5
Wilson 95% interval
Exa
24
23
24
86.2% to 100.0%
Parallel
24
20
24
86.2% to 100.0%
Tavily
24
21
22
74.2% to 97.7%
Brave
24
14
21
69.0% to 95.7%
Firecrawl
24
12
16
46.7% to 82.0%
Speed without losing evidence
Search only. Dot = p50; line extends to p90. Upper left is better.
Search latency and evidence@5
Provider
Evidence@5
p50 seconds
p90 seconds
Exa
24/24
4.456
6.185
Parallel
24/24
0.531
0.624
Tavily
22/24
3.383
5.476
Brave
21/24
0.517
0.559
Firecrawl
16/24
0.942
1.763
Provider cost per query
Exa is metered; other prices are estimates. Model spend is separate.
Exa$0.0080 metered
Parallel$0.0020 estimate
Tavily$0.0177 estimate
Brave$0.0050 estimate
Firecrawl$0.0030 estimate
Where the difference comes from
Revera-like lookups separate providers. Traps overlap the two slices.
Evidence@1 / evidence@5 by slice; counts, not percentages
Provider
Revera-liken = 12
OpenCode-liken = 12
Trapsn = 6
Exa
11 / 12
12 / 12
6 / 6
Parallel
8 / 12
12 / 12
5 / 6
Tavily
9 / 10
12 / 12
6 / 6
Brave
6 / 9
8 / 12
3 / 4
Firecrawl
4 / 5
8 / 11
2 / 3
Each cell: evidence@1 / evidence@5.
Inspect every question
Hover, focus or select a question to read it in full.
A multi-tenant Python service on pymongo 4.18.1 builds its MongoDB connection string by inserting a tenant-supplied hostname fragment into the host portion of the URI. Is it affected by the 2026 PyMongo connection-string host injection advisory, and which version fixes it?
A multi-tenant Python service on pymongo 4.18.1 builds its MongoDB connection string by inserting a tenant-supplied hostname fragment into the host portion of the URI. Is it affected by the 2026 PyMongo connection-string host injection advisory, and which version fixes it?
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:3 first evidence rank
Tavily:1 first evidence rank
Brave:—miss
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:—miss
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:3 first evidence rank
Tavily:—miss
Brave:1 first evidence rank
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:2 first evidence rank
Tavily:1 first evidence rank
Brave:2 first evidence rank!
Firecrawl:2 first evidence rank
Exa:4 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:—miss
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:5 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:2 first evidence rank
Tavily:—miss
Brave:1 first evidence rank
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:2 first evidence rank
Firecrawl:4 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:4 first evidence rank
Firecrawl:—miss
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:2 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:2 first evidence rank!
Firecrawl:3 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:1 first evidence rank
Exa:1 first evidence rank
Parallel:1 first evidence rank
Tavily:1 first evidence rank
Brave:1 first evidence rank
Firecrawl:2 first evidence rank
A blinded LLM judge, shown the same search results and read page, agreed
with the deterministic match (gold fact anywhere in that payload) on all
120 units: 115 supported,
5 insufficient, 0 contradicted.
No search call failed; 2 Brave reads failed in the shared reader.
Failures stay in the denominators.
Revera
Does search improve a PR review?
2 real breaking-change bugs, 2 clean PRs. The
grid includes confirmation reps; the table keeps the equal-sized quick pass
separate.
Task-by-task outcomes
One marker per run, in recorded order: quick pass, then confirmation runs
where available.
●Bug found / clean with no finding○Bug missed×Strict
clean-control finding Small amber dot: an uncertain comment was also filed (not a strict finding)
revera task outcomes, including all confirmation runs
Task
Exa
Parallel
Tavily
Brave
Firecrawl
No search
rv-commander15-negatebugUpdate deployment CLI dependencies and add tags
rv-got16-http2-agentbugRefresh relay HTTP dependencies and poll timeout
rv-got16-migratecleanRefresh the snapshot monitor transport
First run only. Costs and wall time are means per review; model prices are estimates.
revera quick pass results and mean per-run costs
Provider / profile
Bugs found
Strict clean- control findings
Uncertain
Model $
Search $
Wall s
Exaauto
2/2
0
0
$0.0726
$0.0075metered
40.0
Parallelfast
2/2
1
1
$0.1091
$0.0018estimate
49.1
Tavilyadvanced
2/2
1
0
$0.1108
$0.0220estimate
52.4
Braveweb
2/2
1
0
$0.0947
$0.0063estimate
45.7
Firecrawlsearch
2/2
0
1
$0.1177
$0.0040estimate
49.4
No searchbaseline
0/2
0
1
$0.0391
$0.0000not used
39.6
Every strict false positive was the same comment on the clean rv-got16-migrate PR (that agent: {http2: false} disables session pooling). The premise is correct per the Got 16 docs; adjudicated
as a reasonable non-blocking comment, not a hallucination.
No-search reviewers missed both bugs; on Commander 15 the no-search
reviewer asserted the old behavior.
An Exa review used about 1.9x the no-search model cost, with similar wall time.
OpenCode
Does search help the repair pass?
4 dependency-upgrade repairs, scored by hidden tests run
offline. Confirmation reps focus on oc-ai7.
Task-by-task outcomes
One marker per run, in recorded order: quick pass, then confirmation runs
where available.
●All tests pass○Task failed
opencode task outcomes, including all confirmation runs
Task
Exa
Parallel
Tavily
Brave
Firecrawl
No search
oc-ai7Restore the catalog assistant on the updated AI SDK
oc-execa10Restore the release command runner after a dependency update
oc-ky2Repair the inventory API client after its HTTP dependency update
oc-ts7-configBring the warehouse typecheck configuration forward
Quick pass · equal task counts
First run only. Costs and wall time are means per task; model prices are estimates.
opencode quick pass results and mean per-run costs
Provider / profile
All pass
Model $
Search $
Wall s
Exaauto
4/4
$0.1049
$0.0105metered
69.4
Parallelfast
3/4
$0.1053
$0.0013estimate
59.8
Tavilyadvanced
3/4
$0.1046
$0.0160estimate
60.7
Braveweb
3/4
$0.0890
$0.0063estimate
59.0
Firecrawlsearch
3/4
$0.1125
$0.0027estimate
55.6
No searchbaseline
4/4
$0.0590
$0.0000not used
54.5
Every lost run was on oc-ai7, with the same tsc error: the code used a non-generic ToolExecutionOptions, but it is generic in the installed ai@7.0.143 (in the quick pass, the web arms had copied it from docs). In repeat runs
oc-ai7 was noisy for every arm (Exa 2/3,
Firecrawl 1/3, none 2/3).
Search arms used about 1.8x the model spend of no search, without adding passes. One untested hypothesis:
the model already knows these releases.
Recommendations
Keep search useful. Keep it optional.
Revera: keep Exa auto
Exaauto
Keep web search opt-in. Keep Exa REST type:auto with highlights + /contents reads.
Raise highlight length to 2,000–4,000 chars. Cutting to 1,000 drops
Exa from 24/24 to 22/24 evidence@5.
Raise the page read cap with query-aware trimming: 6 of 24 Exa reads
had the first evidence past 6,000 chars.
Parallel fast for interactive search: 24/24 evidence@5 with ~0.5 s search p50.
Exa auto as the equally accurate but slower (~4.5 s) alternative.
Keep search an optional tool, not run on every task.
Not tested
Brave LLM Context (brave:llm-context) was blocked: OPTION_NOT_IN_PLAN on the key's Free AI plan. Listed as blocked, not
as a loss. Optional reranker ablation skipped.
Read the fine print
Method & limitations
Provider fee estimate
$1.72
List-price estimate; Exa portion metered
Agent model estimate
$7.47
List prices, not a proxy bill
Judge model estimate
$8.86
Model total: $16.33
Same tool contract, frozen profiles
One tool contract for all providers: web_search returns at most 5 results; web_read reads only a returned result. Search responses have a 4,000-token cap;
reads have a 6,000-token cap.
Deterministic scoring against gold fact patterns. Failures stay in
denominators. Profiles were frozen from a pilot, not tuned on the
held-out results.
Small samples; only two Revera bugs, both version-upgrade bugs in JS
libraries. Do not read the ordering as a universal provider ranking.
Provider indexes change over time.
Model costs are list-price estimates, not proxy bills. Anthropic list-price estimate; proxy billing not visible.