Web Search API Eval

io.github.psinglapPublished by GitHub account psinglapv1.1.0Updated Oct 29, 2026

Web search API benchmark for AI agents: You.com, Tavily, Exa, Parallel. Results and charts.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

Serves a published benchmark comparing four web search APIs (You.com, Tavily, Exa, Parallel) so an assistant can answer which one fits an agent's needs.

What you can do
  • Read headline results, overall and per-use-case scorecards, and provider comparisons filtered by metric
  • Get a recommendation for which search API fits a given agent need, with supporting numbers
  • Browse the 30 benchmark questions, inspect one question's answer key and per-API scores, and view published charts
  • Read the methodology and instructions for rerunning the benchmark locally
  • Search and fetch benchmark documents by ID
  • Run a live spot-check query against each provider using your own API keys (local install only)
When to use it
Useful when choosing or justifying a web search API for an AI agent, comparing providers on latency, accuracy, freshness or cost, or looking up how a specific benchmark question was graded. The data is a fixed snapshot, so it is not a live search tool.
Requirements
Either the hosted remote endpoint (no install, no authentication) or a local npm package run with npx, which needs Node.js 18 or later. The optional API key variables EXA_API_KEY, PARALLEL_API_KEY, TAVILY_API_KEY and YDC_API_KEY are only used by the local live-search tool.
Before you install
The benchmark tools are read-only and serve a fixed snapshot from a single run date. The local live-search tool sends queries to the providers using your own keys and consumes your own credits; it is a spot check, not a graded benchmark. Keys are optional and can be omitted for providers you do not use.

Installation

In SourceWeft

  1. Open Web Search API Eval in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.psinglap%2Fwebsearch-api-eval/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "web-search-api-eval": {
      "type": "http",
      "url": "https://websearch-api-eval.psberkeleymba.workers.dev/mcp"
    }
  }
}

README

Web Search API Eval: MCP server

An MCP server that lets Claude, ChatGPT, Cursor and other AI assistants answer questions about the Web Search API Eval benchmark (You.com, Tavily, Exa and Parallel on 30 agent queries), and run your own live search spot checks.

Use it two ways:

Hosted (no install)Local (npm)
Connecthttps://websearch-api-eval.psberkeleymba.workers.dev/mcpnpx -y websearch-api-eval-mcp
Works inClaude, ChatGPT, any remote MCP clientClaude Desktop, Claude Code, Cursor, VS Code, any stdio MCP client
Benchmark tools✅✅
run_live_search with your own keys—✅

Install

Claude Code

bash
claude mcp add websearch-api-eval -- npx -y websearch-api-eval-mcp

Claude Desktop, Cursor, VS Code (add to the client's MCP config):

json
{  "mcpServers": {    "websearch-api-eval": {      "command": "npx",      "args": ["-y", "websearch-api-eval-mcp"],      "env": {        "YDC_API_KEY": "optional",        "TAVILY_API_KEY": "optional",        "EXA_API_KEY": "optional",        "PARALLEL_API_KEY": "optional"      }    }  }}

The keys are optional and only used by run_live_search. Leave out any provider you don't have a key for. Requires Node.js 18 or later.

Hosted, no install: in Claude, Settings → Connectors → Add custom connector → paste the hosted URL. In ChatGPT, create an app in Developer mode with the same URL and no authentication.

Tools

ToolReturns
get_overall_resultsHeadline, overall scorecard, per-use-case summary, which API fits which agent, developer activation
get_scorecardFull scorecard for overall, gtm, insurance or finance
compare_providersTwo or more providers side by side, optionally filtered by metric keyword
recommend_providerWhich API fits an agent's need, with supporting numbers
list_questionsThe 30 questions, filterable by use case
get_questionOne question: task, search call, answer key, sources, what each API returned and its score
get_chartsThe published graphs; with chart_id, also the image
get_methodologyHow tests ran and were graded, the 10 metrics and their standards, limits
how_to_run_locallySteps and keys to rerun the full benchmark on your own machine
search, fetchGeneric search and document fetch (used by ChatGPT research features)
run_live_search (local only)Sends one query to each provider using your own API keys and returns latency, result count and top results

The benchmark tools are read-only and read the published results (run Oct 8, 2026). run_live_search calls the providers directly from your machine with your keys and uses your own credits; a single call is a spot check, not a graded benchmark. For the full graded run, use the harness.

Example questions

  • "Which web search API is fastest for a voice agent?"
  • "Compare Exa and Parallel on finance."
  • "What was question F5 and who got it right?"
  • "Show me the overall scorecard chart."
  • "Run a live search for 'FOMC minutes' and compare the providers."

Data and updates

Results come from data/*.json on the published site, built from the Evaluation page by data/build_data.py. After a new benchmark run, rebuild the data and push; both the hosted and npm servers pick it up with no redeploy or new release.

Develop

bash
cd mcpnpm installnpx wrangler dev        # hosted server locally at http://localhost:8787/mcpnpm run build           # npm package entry at dist/cli.jsnpx @modelcontextprotocol/[email protected] node dist/cli.js   # call tools by handnpx wrangler deploy     # deploy the hosted servernpm publish             # publish the npm package

Built with the official MCP TypeScript SDK. Registry entry: io.github.psinglap/websearch-api-eval (server.json).

Privacy and support

No sign-in, no cookies, no storage, no request logging. Privacy Policy · Terms · Support · MIT License

Source: mcp/README.md at commit 513d05b

Tools

11

get_overall_results

Overall results

Headline findings and the overall scorecard across all 30 queries (90 calls per API): accuracy, fully correct, precision@5, freshness, empty responses, failed calls, latency p50/p95, cost per correct answer. Also the per-use-case summary, which API fits which agent, and developer activation time.

Takes no parameters.

get_scorecard

Scorecard

Full metric scorecard for one use case (gtm, insurance, finance) or 'overall'. Metrics: search-only latency p50/p95 (server and client), calls under 1 s, accuracy, freshness (% in window, newest relevant result age), content in one call, tokens, search cost.

Parametersuse_caserequired

compare_providers

Compare providers

Compare two or more of You.com, Tavily, Exa and Parallel side by side, overall or within one use case, optionally filtered to metrics whose name contains a keyword (e.g. 'latency', 'accuracy', 'fresh', 'cost', 'empty').

Parametersuse_caseprovidersrequiredmetric_filter

recommend_provider

Recommend a provider

Which web search API fits an agent, based on this benchmark: live voice/chat turns, deep research, semantic or long-tail queries, docs lookups, or a specific use case (GTM, insurance, finance). Returns the guidance with the supporting numbers.

Parametersagent_need

list_questions

List questions

The 30 benchmark questions (G1-G10 GTM, I1-I10 insurance, F1-F10 finance): ID, what the agent is asked, the search call and freshness.

Parametersuse_case

get_question

Get a question

One benchmark question by ID (e.g. G3, I4, F5): the task, search call, parameters, answer key with sources, and what each API returned with its accuracy score (0-2, mean of 3 runs).

Parametersidrequired

get_charts

Charts

The published graphs: overall scorecard, key metrics and per-query grids for GTM, insurance and finance, and developer activation. Without chart_id, lists them with titles and image links; with chart_id, also returns the image.

Parameterschart_iduse_case

get_methodology

Methodology

How the benchmark was run and graded: query design, identical request parameters, 3 runs per query, latency timing, SimpleQA and FreshQA grading, the 10 metrics and the standards they follow, and limits.

Takes no parameters.

how_to_run_locally

Run it yourself

How to rerun this benchmark on your own machine with your own API keys, including on your own queries. Nothing runs on this server.

Takes no parameters.

fetch

Fetch a benchmark document

Full text of one benchmark document by its ID (for example question-F5, scorecard-finance, overall, methodology).

Parametersidrequired

Version history

1
  1. v1.1.0LatestOct 29, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts