Cross-Validated Search is an evidence-aware verification layer for AI agents. It combines live web search, page reading, and claim checking so an agent can surface supporting evidence, conflicting evidence, and source-backed confidence before presenting factual answers.
Canonical names in v16: package
cross-validated-search, modulecross_validated_search, and MCP commandcross-validated-search-mcp. Legacyfree_web_searchimports andfree-web-search-mcpremain available as compatibility aliases.
Recommended free path:
ddgs + self-hosted SearXNG. ConfigureCROSS_VALIDATED_SEARCH_SEARXNG_URLto unlock a free second provider and stronger evidence reports.
Indexer Quick Review
If you are reviewing this repo for collection or ecosystem inclusion, the fastest path is:
verify the flagship workflow:
evidence-report "Python 3.13 stable release" --claim "Python 3.13 is the latest stable release" --deep --jsonreview the ecosystem contract: docs/ecosystem-readiness.md
review the free dual-provider bootstrap: docs/searxng-self-hosted.md
review Gemini gallery readiness: docs/gemini-submission-checklist.md
60-second verification
Install and verify the public surface:
pip install cross-validated-search
search-web "Python 3.13 release" --json
verify-claim "Python 3.13 is the latest stable release" --deep --max-pages 2 --json
evidence-report "Python 3.13 stable release" --claim "Python 3.13 is the latest stable release" --deep --jsonTypical evidence-report JSON shape:
{
"verdict": "contested",
"confidence": "MEDIUM",
"coverage_warnings": [
"Single-provider evidence path. Add another provider when possible."
],
"analysis": {
"report_model": "evidence-report-v2",
"provider_diversity": 1,
"page_aware": true,
"support_score": 1.42,
"conflict_score": 0.61,
"coverage_warning_count": 1
}
}If you are evaluating the repo for ecosystem collection, start with docs/ecosystem-readiness.md.
Why this exists
Most search wrappers stop at “here are some results.” This repository goes one step further:
returns structured search results with citations
reads full pages when snippets are not enough
classifies evidence as supporting, conflicting, or neutral
generates a higher-level evidence report with citation-ready sources and next steps
exposes explainable confidence signals instead of a black-box claim
works across CLI, MCP, Gemini, OpenClaw, and other agent workflows
Current capabilities
search-web
Use live search for factual or time-sensitive queries.
search-web "Python 3.13 release"
search-web "OpenAI release news" --type news --timelimit w
search-web "人工智能最新进展" --region zh-cn --jsonbrowse-page
Read the full text of a URL when snippets are not enough.
browse-page "https://example.com/article"
browse-page "https://example.com/article" --jsonverify-claim
Check whether a claim looks supported, contested, likely false, or still under-evidenced.
verify-claim "Python 3.13 is the latest stable release"
verify-claim "OpenAI released GPT-5 this week" --timelimit w --json
verify-claim "Python 3.13 is the latest stable release" --with-pages --max-pages 2evidence-report
Generate a compact report that combines search, verification, citations, and follow-up guidance.
evidence-report "Python 3.13 stable release"
evidence-report "Python 3.13 stable release" --claim "Python 3.13 is the latest stable release" --deep --jsonThe report now includes:
verdict rationale that explains why the score landed where it did
stance summary buckets for supporting, conflicting, and neutral evidence
coverage warnings when provider diversity, domain diversity, or page-aware depth look weak
citation-ready source digests and recommended next steps
Free dual-provider setup
If you want the strongest free setup, self-host SearXNG and pair it with ddgs:
./scripts/start-searxng.sh
export CROSS_VALIDATED_SEARCH_SEARXNG_URL="http://127.0.0.1:8080"
./scripts/validate-free-path.shOr use the compose file directly:
cp .env.searxng.example .env
docker compose -f docker-compose.searxng.yml up -dFull setup and validation guide: docs/searxng-self-hosted.md.
The current verification model is evidence-aware-heuristic-v3, and the flagship report surface is evidence-report-v2. Together they use:
keyword overlap between the claim and returned evidence
contradiction markers in titles and snippets
source-quality heuristics
source freshness when a parseable date exists
domain diversity across the evidence set
optional page text from top fetched sources
optional provider diversity when a second provider is configured
Details and limitations are documented in docs/trust-model.md. For a quick product-level comparison with plain search wrappers, see docs/why-not-just-search.md. The next calibration step is outlined in docs/benchmark-plan.md.
Installation
pip install cross-validated-searchOr install from source:
git clone https://github.com/wd041216-bit/cross-validated-search.git
cd cross-validated-search
pip install -e .Python 3.10+ is required.
Platform support
Surface | Status | Notes |
CLI | Yes |
|
MCP | Yes |
|
Gemini CLI | Yes |
|
OpenClaw | Yes |
|
Claude Code / Cursor / Continue / Copilot | Yes | Bundled skill and instruction files |
Verification model
verify-claim returns one of five verdicts:
Verdict | Meaning |
| Strong support, low conflict, and enough domain diversity |
| Evidence leans positive but is not decisive |
| Support and conflict both carry meaningful weight |
| Conflict is strong and support is weak |
| Evidence exists but is too weak for a firmer claim |
This is an evidence-aware heuristic system, not a fact-level proof engine. Today it still has three important limits:
default install still starts with
ddgs; the recommended collection-grade free path isddgs + self-hosted searxngpage-aware verification is optional and still heuristic rather than full-document entailment
no benchmark-driven confidence calibration yet
MCP example
Add the server to your MCP client:
{
"mcpServers": {
"cross-validated-search": {
"command": "cross-validated-search-mcp",
"args": []
}
}
}Development
Run the test suite:
python -m unittest discover -s tests -vBuild distributables:
python -m buildRun deterministic benchmark regressions:
python benchmarks/run_benchmark.pyRoadmap
The next upgrades needed for ecosystem-grade collection are:
calibrate provider weighting and add stronger provider-specific tests
improve page-aware verification beyond snippet and keyword heuristics
add benchmark fixtures and regression scoring
improve the flagship
evidence-reportworkflow with richer source summarization and calibration
License
MIT License.