REAVER
Heating

The Arsenal

Ten lead-intelligence weapons behind one MCP server. Your host thinks — REAVER strikes.

MCP (Model Context Protocol) is the open standard for plugging tools into AI apps. REAVER speaks it natively: stdio for everything on your machine, streamable HTTP + bearer token for everything remote. No accounts, no dashboard, no second implementation — the Playground above runs these same ten tools.

0 · Host matrix

1 · Connect your host

claude mcp add reaver -- python -m reaver_mcp.server --transport stdio

Run from the repo root. Then ask: "find 20 bakeries in Ahmedabad" — Claude discovers prospect and calls it.

{
  "mcpServers": {
    "reaver": {
      "command": "python",
      "args": ["-m", "reaver_mcp.server", "--transport", "stdio"],
      "cwd": "/path/to/D1-Reaver-Capabl"
    }
  }
}

Settings → Connectors → Add MCP server. Replace cwd with your checkout path.

{
  "mcp": {
    "reaver": {
      "type": "local",
      "command": ["python", "-m", "reaver_mcp.server", "--transport", "stdio"],
      "enabled": true
    }
  }
}

In opencode.json. Or one command: python scripts/setup_mcp.py --install HOST for any host below.

kimi mcp add --transport stdio reaver -- python -m reaver_mcp.server --transport stdio
kimi mcp list   # verify

Kimi Code CLI is a full MCP client (stdio/HTTP/SSE). Run from the repo root.

# ~/.minimax/mcp.json
{
  "mcpServers": {
    "reaver": {
      "command": "python",
      "args": ["-m", "reaver_mcp.server", "--transport", "stdio"]
    }
  }
}

MiniMax Agent/Code reads ~/.minimax/mcp.json (GUI form mode works too). Verify: mcode mcp list.

# ~/.cursor/mcp.json  (Windsurf: ~/.codeium/windsurf/mcp_config.json — same shape)
{
  "mcpServers": {
    "reaver": {
      "command": "python",
      "args": ["-m", "reaver_mcp.server", "--transport", "stdio"]
    }
  }
}

Cursor, Windsurf, and Cline share the mcpServers shape. Codex uses ~/.codex/config.toml instead — see the installer.

# 1. expose with a token (refuses public binds without one)
python -m reaver_mcp.server --transport http --host 0.0.0.0 --port 8000

# 2. terminate TLS in front, then add in ChatGPT:
#    developer mode → Connectors → https://YOUR-HOST/mcp/

ChatGPT requires public HTTPS (Apps SDK plugin model). Localhost is rejected — use the tunnel or deploy steps in the README.

{
  "mcp_servers": [{
    "type": "url",
    "url": "https://YOUR-HOST/mcp/",
    "name": "reaver",
    "authorization_token": "YOUR_TOKEN"
  }],
  "tools": [{ "type": "mcp_toolset", "mcp_server_name": "reaver" }]
}

Claude Messages API, beta header mcp-client-2025-11-20. Same bearer token as --token.

npx @modelcontextprotocol/inspector
# transport: STDIO → command: python, args: -m reaver_mcp.server --transport stdio
# or HTTP → URL: http://127.0.0.1:8000/mcp/ (+ Bearer token if set)

Click every tool, break everything safely. This is how Phase 1–7 were verified.

2 · Tool reference

3 · Transports & auth

STDIO

Local hosts (Claude Code/Desktop, OpenCode, Inspector). No auth, no ports — the OS pipe is the trust boundary.

HTTP

Remote hosts. --host 127.0.0.1 stays open; any other bind refuses to start without --token. Bearer middleware returns 401 otherwise. TLS terminates at your proxy.

Rules

output_format is csv (default) or json — nothing else. Counts cap at 200. Errors never leak paths or keys.

4 · Troubleshooting

401 on /mcp/

Send Authorization: Bearer <token>. Same value as the server's --token.

Port already bound

A stale server is squatting (we've been bitten). Find it: netstat -ano | findstr :8000, kill the PID, restart.

prospect fails at compile

Free-tier LLM quota exhausts mid-day across providers. The run fails honestly — wait for reset or add a Cerebras/Mistral key.

Empty pool / shortfall

Sources genuinely exhausted after 3 waves. Narrow geography, loosen criteria, or retry — caches make reruns cheap.

All providers 429/404

Free-tier LLM drought (seen live). Runs fail honestly at compile — wait for reset or add a Cerebras/Mistral key. Nothing is fabricated to fill the gap.

Stream dies through a proxy

Multi-minute SSE/MCP streams can truncate behind proxies. Bypass with direct subdomains to the Python services — DNS-only fix, no code change.

No terminal?
No problem.

Get a capped token with one click and follow GUI-only guides for every host.

Connect without terminal