NewAnswers MCP: one question, one checked answer for your agent.See how it works

Product

How Hyperresearch Answers gets 89% on BrowseComp

By , founder, author of the open-source hyperresearch CLIPublished Updated

BrowseComp89%
  • Hyperresearch89%
  • Parallel (Pro)73%
  • OpenAI web search58%
  • Perplexity Sonar Pro43%
  • Exa12%
DeepSearchQA85%
  • Hyperresearch85%
  • Parallel (Pro)81%
  • OpenAI web search70%
  • Exa28%
  • Perplexity Sonar Pro24%

Hyperresearch Answers is an API and MCP tool that takes one factual question and returns one short answer with the quotes it rests on, or not_found. On 100 BrowseComp questions, asked through the production API between October 29 and 31, 2026, it answered 89 correctly. Parallel Pro answered 73, OpenAI web search 58, Perplexity Sonar Pro 43 and Exa answer 12. On 100 DeepSearchQA questions it answered 85, against 81 for Parallel Pro. This page covers how the system works, exactly how we ran and graded the test, one question traced from start to finish, and where the result is weaker than the headline.

The results

Every system got each question once. One grader, with the same prompt and settings, graded every answer.

System BrowseComp (100) DeepSearchQA (100)
Hyperresearch Answers, max mode 89 85
Parallel Pro (Task API, pro processor) 73 81
OpenAI web search (GPT-5.6 Luna) 58 70
Perplexity Sonar Pro 43 24
Exa answer 12 28

Parallel’s cheaper base processor, given the same 100 BrowseComp questions and the same instruction, scored 77; it did not run on this DeepSearchQA set.

The Parallel Pro and Exa answer rows measure those companies’ own answer products: Parallel’s Task API and Exa’s /answer endpoint. The comparison is between finished answer services, not between search indexes.

The totals hide which questions each system got. Against Parallel Pro, question by question:

BrowseComp DeepSearchQA
Both right 71 74
Both wrong 9 8
Only Hyperresearch right 18 11
Only Parallel Pro right 2 7

On BrowseComp the split is 18 to 2. A paired sign test on those 20 questions gives p of about 0.0004, so the gap is not noise. On DeepSearchQA the split is 11 to 7, p of about 0.48: one pass over 100 questions cannot tell the two systems apart there, and we do not claim it does.

How Answers works

One call carries one question. The response has a status (answered, unconfirmed, false_premise or not_found), a short answer, and an evidence list in which each item is a URL, a quote copied from that page, and the result of checking the quote.

Search. The engine searches the web and queries 120+ structured sources directly: company filings and registers such as SEC EDGAR and Companies House, statistics agencies such as FRED, Eurostat and the World Bank, scholarly indexes such as OpenAlex and PubMed, books, government records, Wikipedia and Wikidata. It also sends the whole question as one search, and treats what comes back as candidates to test against each condition of the question, not as answers. The full list of source families is on the Answers page.

Reading. The engine opens pages and reads them in full: HTML, PDFs as text, spreadsheets as rows, tables that a page builds with scripts. When a site refuses a direct read, the engine tries other readers and archived copies before it gives up on the page.

Quotes, checked word for word. The model has to copy each quote, 5 to 60 words, from what the tools returned. The engine then looks for those exact words in the stored text of the page the quote cites. If the words appear on a different page the model read, the evidence is moved to that page. If they appear only on a page built to match the query, such as a content farm or a quiz or answer-key page, the quote is not accepted as evidence.

A second reader. A separate model compares the answer with its quotes and with everything the searches returned, and rules it supported, partial or unsupported. It can also name a rival answer that the material supports better. A partial or unsupported ruling goes back to the research loop with the reviewer’s finding attached. An answer that never gets confirmed ships as unconfirmed, with a caveat that says why.

Not found. The instructions are explicit: “A wrong answer is far worse than not_found.” When nothing the engine read supports an answer, the call returns not_found and costs less than an answered call.

Max mode, the mode we tested, runs two research passes at the same time. One plans the question’s conditions first, then searches and reads. The other is an open tool-using loop. If both reach the same answer, it ships. Otherwise the answer whose check came out better wins. At the same check level, the engine counts how many of the question’s conditions each answer meets with its own verified quotes, and the answer that meets more wins. If that is still a tie, a third short pass gets both candidates and their quotes and votes. Max mode also asks for each answer on a second, independent site; an answer found on only one site says so in a caveat. For lists, the DeepSearchQA build also checked every item against every condition. The whole call has a 300-second limit.

How we ran the test

Question sets. BrowseComp comes from OpenAI’s reference CSV, which is encrypted. We decrypted it with the method in OpenAI’s reference evaluation code: each field is XORed with a key derived from the SHA-256 hash of that row’s canary string. DeepSearchQA is Google DeepMind’s 900-prompt evaluation split from Hugging Face.

Fresh questions only. We drew each set at random with a fixed seed from questions we had never used. Any question that appeared anywhere in our benchmark workspace, which holds about 8,800 files of earlier runs, traces and question lists, was excluded by ID and by its text. The sets, the systems, the grading rule and the failure rule were written down before the runs started, and nobody read the questions or the gold answers until every system had finished.

What each system received.

  • Hyperresearch: the production REST endpoint, POST https://api.hyperresearch.ai/v1/answers, mode max, with the question text and nothing else.
  • Parallel Pro: Parallel’s Task API with the pro processor and a text output.
  • OpenAI web search: GPT-5.6 Luna with OpenAI’s native web search, reasoning effort medium and search context medium, called through OpenRouter.
  • Perplexity Sonar Pro: called through OpenRouter.
  • Exa answer: Exa’s /answer endpoint with the question as the query.

Parallel Pro, OpenAI web search and Sonar Pro also got this instruction: “Answer concisely with the specific fact asked for; for a list question, give the complete list and nothing else. If you cannot find a reliable answer, say you do not know.” Exa’s endpoint takes no instruction.

Grading. The grader was GPT-5.6 Luna at medium reasoning. It saw the question, the gold answer and the system’s final answer text, and nothing else: no quotes, no status, no sources. Each answer was graded five times and the majority counted. For single answers the grader decided correct, incorrect or abstain, with aliases, formatting and rounding allowed. About two thirds of DeepSearchQA questions want a list, and those count as correct only when the list matches the gold list exactly, with no item missing and none extra. A deterministic item-by-item matcher ran first on every system’s lists (it tolerates “&” against “and”, capitalisation and a one-letter slip in a name; numbers and IDs must match exactly), and the five-vote count ran when it did not match. “I don’t know” and not_found count as not correct.

This is not either benchmark’s official protocol. BrowseComp’s reference grader uses a different prompt, and DeepSearchQA’s authors specify a Gemini 2.5 Flash grader with their own prompt. The numbers here compare these five systems with each other under one grader. They are not comparable with published leaderboards.

Failures. A timeout, a server error or an empty answer counts as wrong. Three things went outside the plan, and we kept every one in the count as described:

  • On BrowseComp, a transient upstream error made some requests fail for about eight minutes at the start. We asked the five affected questions again, two of them BrowseComp; each got the same grade both times. A duplicate copy of the harness also ran for part of that morning, so some questions were asked twice. The harness keeps whichever answer was written last, whatever its grade.
  • On DeepSearchQA, five of our requests failed on our own client in under a second, before they reached the API. We asked those five again, as the plan allows for client errors; four came back right.
  • Three DeepSearchQA questions hit a server error in our page reader: a pattern match ran past the CPU limit on one-line JSON files. They count as wrong. The bug is fixed, and those questions were not re-asked for this score.

One question, start to finish

BrowseComp’s authors ask that its questions not be posted in plain text or images online, to keep them out of training data and away from browsing agents. So this example comes from DeepSearchQA, which is published under Apache 2.0 with no such request. Production saved a full trace for each DeepSearchQA question in this run except the three that hit a server error, and what follows is read from one.

The question: “In the years 2020, 2022, and 2023, which year was SIL Global partnered with the most language communities?” The gold answer is 2023. Parallel Pro answered 2020.

The difficulty is that SIL reports the figure in a different document each year, and two of the three numbers are six apart. Both passes started from web searches for SIL’s annual reports. The planned pass also reached 2023, but its reviewer ruled the answer partial twice: the 2022 figure counts communities reached by active language programmes, and the reviewer could not show it was measured on the same basis as “partnered” in the other two years. Two retries did not settle it, and that pass ended at partial.

The open loop read three documents in full: SIL’s 2020 Annual Update (a PDF on sil.org), its 2022/23 Impact Report and its 2023 Annual Report. It shipped this evidence, with Markdown emphasis from the page text removed. Each quote was found word for word on its page:

Year Source Quote
2020 SIL 2020 Annual Update “As of September 2020, SIL works alongside 1,347 communities in 98 countries.”
2022 SIL 22/23 Impact Report “855+ million people in 1,341 language communities.” and “Statistics from March 2022”
2023 SIL 2023 Annual Report “SIL is actively working alongside 1,420 language communities in Bible translation and engagement, literacy, education and development, along with foundational language services.”

Its reviewer ruled the answer supported. Both passes said 2023, one supported and one partial, and the engine shipped the supported one: “SIL Global partnered with the most language communities in 2023.” Across both passes the call made about 40 searches and page reads and consulted 38 sources.

The reviewer’s doubt about the 2022 wording was reasonable, and the shipped answer does not mention it. The answer is right either way, because 1,420 is the largest of the three whichever 2022 figure is used.

Where it lost

DeepSearchQA, first run. Our first pre-registered DeepSearchQA run, 100 questions asked on October 29 alongside the BrowseComp questions, lost 78 to 84 to Parallel Pro. We then read our misses and changed the engine: every unconfirmed answer now carries a caveat, list items are checked against each condition, and pages behind cookie notices or built by scripts are read properly. The 85 above is from a fresh set of 100 DeepSearchQA questions, run on October 30 on the changed build. So the two headline numbers come from two production builds a day apart, and we have not yet run BrowseComp again on fresh questions.

A quarter of the BrowseComp answers were unconfirmed. 24 of our 100 BrowseComp answers came back with status unconfirmed, meaning our own check did not confirm them. 21 of those 24 were right, and they count in the 89. An agent that treated unconfirmed as “no answer” would have scored 68. On DeepSearchQA, one answer was unconfirmed.

A loss where we had the right answer. DeepSearchQA asked which countries, per Our World in Data for 2022, had primary completion below 35%, lower-secondary completion below 20%, upper-secondary completion below 10%, and five years or less of average schooling. The gold answer is Chad and the Central African Republic, and Parallel Pro gave exactly that. Our trace shows both passes reading Our World in Data’s completion and years-of-schooling files. The open loop had Chad and the Central African Republic under all three completion thresholds, with quotes. It had no quote showing either country at five years or less of schooling in 2022, so the reviewer ruled it partial, and the retry ran out of time. Both passes ended without an answer, and the call returned not_found. The rule that keeps unsupported answers out cost a right one here.

Other misses. On BrowseComp we got 11 wrong: 7 wrong answers and 4 not_found. Of the 2 questions only Parallel Pro got, we answered one wrong and returned not_found on the other. Of the 18 only we got, Parallel Pro declined to answer 14 and answered 4 wrong.

The grader makes mistakes too. On one DeepSearchQA question, five animals’ earliest IUCN Red List assessment years in order, Parallel Pro’s list matched the gold and the strict list rule still marked it wrong, probably because of the reference list printed under its answer. Counted for Parallel Pro, the DeepSearchQA head-to-head is 11 to 8.

Contamination

Frontier models have seen some benchmark questions and answers in training. Three things limit how much that can help Answers. The engine is told to answer only from what its tools return, never from memory, and every answer has to rest on a quote that the engine found word for word on a page it read during that call. Benchmark material is blocked at search and at fetch: dataset pages and repositories that hold BrowseComp, DeepSearchQA and other benchmark answer sets are refused, and quiz and answer-key pages can be read but never count as evidence. And the grader saw only each system’s final answer text.

None of that stops a model’s prior knowledge from steering which searches it runs. For DeepSearchQA we checked the production traces of the 97 questions that have one. None of their 450 evidence quotes came from a benchmark page, and no search or read was refused as benchmark material. The only GitHub sources were copies of public data files: a university-rankings table and a published polling dataset. For BrowseComp we have no traces, because production started saving per-question traces after that run. The other four systems are black boxes to us, so we cannot say what their models drew on.

Speed and cost

Max mode is slow and it is not the cheapest call. Median time per BrowseComp question, measured at our client: Hyperresearch 203 seconds, Parallel Pro 80, OpenAI web search 30, Sonar Pro 4.4 and Exa answer 1.5. On DeepSearchQA, in the same order: 223, 52, 17, 2.5 and 1.6 seconds.

A max call costs 50¢ at list price, and an unconfirmed or not_found result costs less, so our average bill on BrowseComp was about 42¢ a question. Parallel Pro is 10¢ a run at Parallel’s published price. OpenAI web search averaged about 9¢ and Sonar Pro under 1¢ as metered through OpenRouter, and Exa answer cost half a cent. If your agent needs an answer in seconds, max mode is the wrong call; fast and standard exist for that, and we did not benchmark them here.

Use it

Answers is an MCP server and a REST endpoint; the Answers page has the tools, modes and connection steps. There are packages for the Vercel AI SDK and for LangChain in Python and JavaScript. Our research reports, a separate product, were benchmarked on DRACO, and that method is on the DRACO page.