Zearch

Official registry Search and web

Research with answers you can check: every paragraph verified against its cited source.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @zearchcomputer/mcp
Claude Code
claude mcp add zearch -e 'ZEARCH_API_KEY=<your zearch_api_key>' -e 'ZEARCH_API_URL=<ZEARCH_API_URL>' -- npx -y @zearchcomputer/mcp@0.1.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "zearch": {
            "command": "npx",
            "args": [
                "-y",
                "@zearchcomputer/mcp@0.1.0"
            ],
            "env": {
                "ZEARCH_API_KEY": "<your zearch_api_key>",
                "ZEARCH_API_URL": "<ZEARCH_API_URL>"
            }
        }
    }
}

Environment variables

  • ZEARCH_API_KEY required secret Zearch API key (zk_live_…), from Account → API keys
  • ZEARCH_API_URL API base URL; defaults to https://zearch.computer/v1

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. How an answer is made
  2. Tools
  3. Install
  4. Remote (HTTP) mode
  5. Configuration
  6. Reliability
  7. Development
  8. Security
  9. License
Answers you can check, inside any MCP client.

@zearchcomputer/mcp connects Claude, Cursor, VS Code and other Model Context Protocol clients to Zearch. Ask a question and you get an answer whose every paragraph was checked against the source it cites, with the exact passage Zearch read. Or check text your own model wrote against sources you already have.

Status: early. The Zearch API is not open to everyone yet.

How an answer is made

flowchart LR
  Q([Question]) --> S[Search]
  S --> J1[Jev selects<br/>passages]
  J1 --> W[Writer drafts from<br/>those passages only]
  W --> J2[Jev checks<br/>each paragraph]
  J2 -->|supported| A([Cited answer])
  J2 -->|not supported| E([The source<br/>passage itself])

Jev is TypeSafe AI's evidence model. When a paragraph can't be supported it is cut, and when nothing survives you get the best source passage instead of a guess (answer_type: "excerpt").

Tools

ToolWhat it doesCredits
researchChecked answer with numbered sources and the passages Jev read. Modes: standard, deep (a report from up to 8 sources), compare, scrape (one page), crawl (up to five pages of a site), reverse (how an app, repo or site works, from static analysis). Follow-ups with parent_id.1 · 5 · 2 · 1 · 3 · 10; follow-up 0.3
verifyChecks your text against your sources, paragraph by paragraph: pass/fail, support and attribution scores. Cite sources as [1], [2]…1
get_runReopens a run, or checks on a queued reverse run.free
list_runsYour recent runs (shared with the Zearch app).free
get_walletCredit balance, lots and expiry, recent ledger entries.free
get_pricingPublic price list. No key needed.free

Errors are never charged. A run that can only return a source passage costs half.

Progress. research streams its stages (Searching the web → Choosing the most relevant evidence → Checking each claim against its source) as MCP progress notifications, so clients that show progress show what Zearch is doing.

Answer view. In clients that support MCP Apps, research, get_run and verify render an inline card: the answer with citation chips, source cards with the excerpt Jev read, an Open button for each source, and follow-up suggestions. It follows the client's light or dark theme. Other clients get the same content as text. Set ZEARCH_UI=0 to turn it off.

Resources. zearch://runs/{id} (a run as Markdown; your recent runs are listed), zearch://pricing.

Prompts. research_brief (a cited brief from deep research), fact_check (find sources for a draft, then verify it), compare (a table with a citation in every cell).

Install

You need a Zearch API key (zk_live_…). Create one in the Zearch app under Account → API keys.

Claude Code
claude mcp add zearch --env ZEARCH_API_KEY=zk_live_your_key -- npx -y @zearchcomputer/mcp
Claude Desktop

In Settings → Developer → Edit config, add:

{
  "mcpServers": {
    "zearch": {
      "command": "npx",
      "args": ["-y", "@zearchcomputer/mcp"],
      "env": { "ZEARCH_API_KEY": "zk_live_your_key" }
    }
  }
}
Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global): the same mcpServers block as Claude Desktop.

VS Code

.vscode/mcp.json, which prompts for the key instead of storing it:

{
  "inputs": [{ "type": "promptString", "id": "zearch-key", "description": "Zearch API key", "password": true }],
  "servers": {
    "zearch": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@zearchcomputer/mcp"],
      "env": { "ZEARCH_API_KEY": "${input:zearch-key}" }
    }
  }
}
Run from source
git clone https://github.com/zearchcomputer/zearch-mcp
cd zearch-mcp
npm ci && npm run build

Then use node /absolute/path/to/zearch-mcp/dist/index.js as the command in any config above, instead of npx -y @zearchcomputer/mcp.

Remote (HTTP) mode

npx -y @zearchcomputer/mcp --http --port 8787            # http://127.0.0.1:8787/mcp

Every request uses the caller's own key, sent as Authorization: Bearer zk_live_…; the server stores no keys. ZEARCH_API_KEY is used as a fallback only when the server listens on loopback, so a public deployment can't spend the operator's credits for someone else. GET /healthz reports liveness.

To serve on a public interface, bind it and list the hostnames you serve, so requests with other Host headers are refused:

npx -y @zearchcomputer/mcp --http --host 0.0.0.0 --port 8080 --allowed-hosts mcp.zearch.computer

A Dockerfile is included for this.

Configuration

VariableDefaultPurpose
ZEARCH_API_KEYYour API key. In HTTP mode, callers send their own.
ZEARCH_API_URLhttps://zearch.computer/v1API base URL. http:// is accepted only for localhost.
ZEARCH_TIMEOUT_MS120000Per-request timeout. Research streams get at least 180 s.
ZEARCH_REVERSE_WAIT_MS300000How long research waits for a reverse run before returning its id for get_run.
ZEARCH_UIon0 turns off the inline answer view.
ZEARCH_MCP_ALLOWED_HOSTSSame as --allowed-hosts.
PORT8787HTTP port when --port isn't given.

Reliability

  • Each research call carries an idempotency key, reused across retries, so a retried request never runs or charges twice.
  • Network failures, 5xx responses and per-minute rate limits are retried with backoff that honours Retry-After. Out-of-credit, auth and validation errors are not retried; they come back as a tool error that says what to do next.
  • If a research stream drops, the server reads the finished run instead of failing.
  • Cancelling a tool call in the client cancels the request to Zearch.
  • Logs go to stderr. Keys are never logged.

Development

npm ci
npm test        # builds, then runs the tests against a local mock of the Zearch API

Tests make no network calls beyond localhost and spend no credits. The view is a single dependency-free HTML file in src/ui/answer.html.

The server is built on the MCP TypeScript SDK v2 (protocol revision 2026-07-28, with 2025-era clients still served) and talks to the Zearch API.

Security

Report vulnerabilities privately through GitHub security advisories. See the security policy.

License

MIT

Frequently asked questions

What is Zearch?

Research with answers you can check: every paragraph verified against its cited source.

How do I install Zearch?

It runs on your machine. In Claude Code: claude mcp add zearch -e 'ZEARCH_API_KEY=<your zearch_api_key>' -e 'ZEARCH_API_URL=<ZEARCH_API_URL>' -- npx -y @zearchcomputer/mcp@0.1.0. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Zearch need an API key?

Yes. It expects ZEARCH_API_KEY, which you set in its configuration.

Is Zearch open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains Zearch?

It is published by zearchcomputer. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.