cross-validated-search
Universal Search-First Knowledge Acquisition Plugin for LLMs. Enables real-time web search and deep page browsing via MCP or CLI. Zero-cost, privacy-first, supports DuckDuckGo, Bing, Google, Brave, Wikipedia, Arxiv, YouTube, Reddit and more.
README
<div align="center"> <h1>Zero-API-Key Web Search</h1> <p><strong>Free web search, browsing & claim verification for AI agents.</strong></p> <p><em>No API keys. No accounts. No limits. 100% free.</em></p>
What is this?
A single pip install gives your AI agent live web search, full-page reading, and evidence-aware claim verification — all without any API key, account, or paid service.
- Search: Live results from DuckDuckGo (free) + optional SearXNG (self-hosted, free)
- Browse: Extract clean text from any URL, stripping boilerplate automatically
- Verify: Classify claims as supported / contested / likely false with evidence scores
- Report: Generate citation-ready evidence reports with rationale and next steps
Quick start
pip install zero-api-key-web-search
# Search the web
zero-search "Python 3.13 release" --json
# Read a page
zero-browse "https://docs.python.org/3/whatsnew/" --json
# Verify a claim
zero-verify "Python 3.13 is the latest stable release" --deep --json
# Full evidence report
zero-report "Python 3.13 stable release" \
--claim "Python 3.13 is the latest stable release" --deep --json
Legacy CLI aliases (search-web, browse-page, verify-claim, evidence-report) also work.
Why this over a plain search wrapper?
| Feature | Plain search | Zero-API-Key Web Search |
|---|---|---|
| Live search results | ✅ | ✅ |
| News / images / videos / books | ❌ | ✅ |
| Region & time filtering | ❌ | ✅ |
| Full-page text extraction | ❌ | ✅ |
| Claim verification with evidence scores | ❌ | ✅ |
| Supporting vs. conflicting evidence | ❌ | ✅ |
| Citation-ready evidence reports | ❌ | ✅ |
| Dual-provider cross-validation | ❌ | ✅ |
| API key required | Often | Never |
| Cost | Sometimes | Free |
MCP server
Works with Claude Code, Cursor, Copilot, and any MCP-compatible agent:
{
"mcpServers": {
"zero-api-key-web-search": {
"command": "zero-mcp"
}
}
}
Four tools exposed: search_web, browse_page, verify_claim, evidence_report.
Platform support
| Platform | Status | Entry point |
|---|---|---|
| CLI | Ready | zero-search, zero-browse, zero-verify, zero-report |
| MCP | Ready | zero-mcp |
| Claude Code | Ready | .claude/skills/zero-api-key-web-search/SKILL.md |
| Gemini | Ready | GEMINI.md + .gemini/SKILL.md |
| Cursor | Ready | .cursor/rules/zero-api-key-web-search.md |
| Copilot | Ready | .github/copilot/instructions.md |
| Codex | Ready | .codex/SKILL.md |
| Continue | Ready | .continue/skills/zero-api-key-web-search/SKILL.md |
| Manus | Ready | Root SKILL.md + docs/manus.md |
| Kiro | Ready | .kiro/steering/zero-api-key-web-search.md |
| OpenClaw | Ready | zero_api_key_web_search/skills/SKILL.md |
How verification works
zero-verify uses the evidence-aware heuristic v3 model:
- Search for the claim across available providers
- Score each source on keyword overlap, source quality, freshness
- Classify as supporting, conflicting, or neutral
- Optionally fetch top pages for deeper page-aware analysis
- Render a verdict with confidence and evidence breakdown
| Verdict | Meaning |
|---|---|
supported |
Strong evidence, low conflict |
likely_supported |
Leans positive, not decisive |
contested |
Support and conflict both meaningful |
likely_false |
Conflict strong, support weak |
insufficient_evidence |
Too weak for any firmer verdict |
This is a heuristic evidence classifier, not a proof engine. See docs/trust-model.md for details and limitations.
Free dual-provider setup
Default install uses DuckDuckGo. For stronger cross-validated evidence, add a free self-hosted SearXNG:
./scripts/start-searxng.sh
export ZERO_SEARCH_SEARXNG_URL="http://127.0.0.1:8080"
./scripts/validate-free-path.sh
Or with Docker Compose:
cp .env.searxng.example .env
docker compose -f docker-compose.searxng.yml up -d
Full guide: docs/searxng-self-hosted.md.
Evidence report example
{
"verdict": "contested",
"confidence": "MEDIUM",
"executive_summary": "Evidence is split...",
"verdict_rationale": ["Source A supports...", "Source B contradicts..."],
"coverage_warnings": ["Single-provider evidence path."],
"source_digest": [
{"title": "...", "url": "...", "classification": "supporting", "evidence_strength": 3}
],
"next_steps": ["Add a second provider for cross-validation."]
}
Architecture
zero_api_key_web_search/
core.py # UltimateSearcher — search, verify, report engine
browse_page.py # Readability-style page text extraction
mcp_server.py # MCP server (4 tools)
transport.py # SSL/TLS helpers
search_web.py # CLI: zero-search
browse_page.py # CLI: zero-browse
verify_claim.py # CLI: zero-verify
evidence_report.py # CLI: zero-report
providers/
base.py # SearchProvider protocol (sync + async)
ddgs.py # DuckDuckGo provider
searxng.py # SearXNG provider
skills/
SKILL.md # Bundled OpenClaw skill
Key engineering features:
- Circuit breaker: Trips after 3 consecutive provider failures, auto-resets after 60s
- Async support:
asearch()for concurrent provider calls viaasyncio.gather - Structured logging: Configurable logging at search/verify/report entry points
- Readability heuristic: Semantic HTML5 + ARIA roles + text density scoring
- Baseline comparison: Majority-vote and keyword-count baselines in reports
- Sub-claim decomposition: Targeted sub-queries for independent evidence gathering
Installation
pip install zero-api-key-web-search
Python 3.10+ required. No API keys, no accounts, no configuration needed.
Development
pip install -e ".[dev]"
python -m pytest tests/ -x # 86 tests
ruff check zero_api_key_web_search/ tests/
pyright zero_api_key_web_search/ # 0 errors
coverage report --fail-under=80 # 85% coverage
Verification for ecosystem reviewers
zero-report "Python 3.13 stable release" --claim "Python 3.13 is the latest stable release" --deep --json- docs/ecosystem-readiness.md
- docs/gemini-submission-checklist.md
- docs/trust-model.md
License
MIT License.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.