{"id":48374949,"url":"https://github.com/wd041216-bit/zero-api-key-web-search","last_synced_at":"2026-04-30T11:01:13.524Z","repository":{"id":345093017,"uuid":"1184456847","full_name":"wd041216-bit/zero-api-key-web-search","owner":"wd041216-bit","description":"Zero-API-key web search, browsing, and claim verification for AI agents.","archived":false,"fork":false,"pushed_at":"2026-04-19T22:02:04.000Z","size":20425,"stargazers_count":5,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T05:36:59.556Z","etag":null,"topics":["agent-tools","ai-agents","claim-verification","evidence-verification","fact-checking","mcp","model-context-protocol","python","source-citations","web-search"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/zero-api-key-web-search/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wd041216-bit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-17T15:52:49.000Z","updated_at":"2026-04-19T22:01:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wd041216-bit/zero-api-key-web-search","commit_stats":null,"previous_names":["wd041216-bit/free-web-search-ultimate","wd041216-bit/cross-validated-search"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/wd041216-bit/zero-api-key-web-search","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wd041216-bit%2Fzero-api-key-web-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wd041216-bit%2Fzero-api-key-web-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wd041216-bit%2Fzero-api-key-web-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wd041216-bit%2Fzero-api-key-web-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wd041216-bit","download_url":"https://codeload.github.com/wd041216-bit/zero-api-key-web-search/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wd041216-bit%2Fzero-api-key-web-search/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32462304,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-tools","ai-agents","claim-verification","evidence-verification","fact-checking","mcp","model-context-protocol","python","source-citations","web-search"],"created_at":"2026-04-05T18:00:31.772Z","updated_at":"2026-04-30T11:01:13.497Z","avatar_url":"https://github.com/wd041216-bit.png","language":"Python","funding_links":[],"categories":["MCP 服务器精选列表"],"sub_categories":["🌐 浏览器自动化与网页交互"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eZero-API-Key Web Search\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eFree web search, browsing \u0026 claim verification for AI agents.\u003c/strong\u003e\u003c/p\u003e\n  \u003cp\u003e\u003cem\u003eNo API keys. No accounts. No limits. 100% free.\u003c/em\u003e\u003c/p\u003e\n\n  [![PyPI](https://img.shields.io/pypi/v/zero-api-key-web-search?label=pypi)](https://pypi.org/project/zero-api-key-web-search/)\n  [![Python](https://img.shields.io/pypi/pyversions/zero-api-key-web-search)](https://python.org)\n  [![MCP](https://img.shields.io/badge/MCP-Ready-0f766e.svg)](https://modelcontextprotocol.io/)\n  [![Tests](https://img.shields.io/badge/tests-86%20passing-22c55e.svg)](./tests)\n  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\u003c/div\u003e\n\n---\n\n## What is this?\n\nA 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.\n\n- **Search**: Live results from DuckDuckGo (free) + optional SearXNG (self-hosted, free)\n- **Browse**: Extract clean text from any URL, stripping boilerplate automatically\n- **Verify**: Classify claims as supported / contested / likely false with evidence scores\n- **Report**: Generate citation-ready evidence reports with rationale and next steps\n\n## Quick start\n\n```bash\npip install zero-api-key-web-search\n\n# Search the web\nzero-search \"Python 3.13 release\" --json\n\n# Read a page\nzero-browse \"https://docs.python.org/3/whatsnew/\" --json\n\n# Verify a claim\nzero-verify \"Python 3.13 is the latest stable release\" --deep --json\n\n# Full evidence report\nzero-report \"Python 3.13 stable release\" \\\n  --claim \"Python 3.13 is the latest stable release\" --deep --json\n```\n\nLegacy CLI aliases (`search-web`, `browse-page`, `verify-claim`, `evidence-report`) also work.\n\n## Why this over a plain search wrapper?\n\n| Feature | Plain search | Zero-API-Key Web Search |\n| --- | --- | --- |\n| Live search results | ✅ | ✅ |\n| News / images / videos / books | ❌ | ✅ |\n| Region \u0026 time filtering | ❌ | ✅ |\n| Full-page text extraction | ❌ | ✅ |\n| Claim verification with evidence scores | ❌ | ✅ |\n| Supporting vs. conflicting evidence | ❌ | ✅ |\n| Citation-ready evidence reports | ❌ | ✅ |\n| Dual-provider cross-validation | ❌ | ✅ |\n| API key required | Often | **Never** |\n| Cost | Sometimes | **Free** |\n\n## MCP server\n\nWorks with Claude Code, Cursor, Copilot, and any MCP-compatible agent:\n\n```json\n{\n  \"mcpServers\": {\n    \"zero-api-key-web-search\": {\n      \"command\": \"zero-mcp\"\n    }\n  }\n}\n```\n\nFour tools exposed: `search_web`, `browse_page`, `verify_claim`, `evidence_report`.\n\n## Platform support\n\n| Platform | Status | Entry point |\n| --- | --- | --- |\n| **CLI** | Ready | `zero-search`, `zero-browse`, `zero-verify`, `zero-report` |\n| **MCP** | Ready | `zero-mcp` |\n| **Claude Code** | Ready | `.claude/skills/zero-api-key-web-search/SKILL.md` |\n| **Gemini** | Ready | `GEMINI.md` + `.gemini/SKILL.md` |\n| **Cursor** | Ready | `.cursor/rules/zero-api-key-web-search.md` |\n| **Copilot** | Ready | `.github/copilot/instructions.md` |\n| **Codex** | Ready | `.codex/SKILL.md` |\n| **Continue** | Ready | `.continue/skills/zero-api-key-web-search/SKILL.md` |\n| **Manus** | Ready | Root `SKILL.md` + `docs/manus.md` |\n| **Kiro** | Ready | `.kiro/steering/zero-api-key-web-search.md` |\n| **OpenClaw** | Ready | `zero_api_key_web_search/skills/SKILL.md` |\n\n## How verification works\n\n`zero-verify` uses the **evidence-aware heuristic v3** model:\n\n1. Search for the claim across available providers\n2. Score each source on keyword overlap, source quality, freshness\n3. Classify as supporting, conflicting, or neutral\n4. Optionally fetch top pages for deeper page-aware analysis\n5. Render a verdict with confidence and evidence breakdown\n\n| Verdict | Meaning |\n| --- | --- |\n| `supported` | Strong evidence, low conflict |\n| `likely_supported` | Leans positive, not decisive |\n| `contested` | Support and conflict both meaningful |\n| `likely_false` | Conflict strong, support weak |\n| `insufficient_evidence` | Too weak for any firmer verdict |\n\nThis is a heuristic evidence classifier, not a proof engine. See [docs/trust-model.md](docs/trust-model.md) for details and limitations.\n\n## Free dual-provider setup\n\nDefault install uses DuckDuckGo. For stronger cross-validated evidence, add a free self-hosted SearXNG:\n\n```bash\n./scripts/start-searxng.sh\nexport ZERO_SEARCH_SEARXNG_URL=\"http://127.0.0.1:8080\"\n./scripts/validate-free-path.sh\n```\n\nOr with Docker Compose:\n\n```bash\ncp .env.searxng.example .env\ndocker compose -f docker-compose.searxng.yml up -d\n```\n\nFull guide: [docs/searxng-self-hosted.md](docs/searxng-self-hosted.md).\n\n## Evidence report example\n\n```json\n{\n  \"verdict\": \"contested\",\n  \"confidence\": \"MEDIUM\",\n  \"executive_summary\": \"Evidence is split...\",\n  \"verdict_rationale\": [\"Source A supports...\", \"Source B contradicts...\"],\n  \"coverage_warnings\": [\"Single-provider evidence path.\"],\n  \"source_digest\": [\n    {\"title\": \"...\", \"url\": \"...\", \"classification\": \"supporting\", \"evidence_strength\": 3}\n  ],\n  \"next_steps\": [\"Add a second provider for cross-validation.\"]\n}\n```\n\n## Architecture\n\n```\nzero_api_key_web_search/\n  core.py              # UltimateSearcher — search, verify, report engine\n  browse_page.py       # Readability-style page text extraction\n  mcp_server.py        # MCP server (4 tools)\n  transport.py         # SSL/TLS helpers\n  search_web.py        # CLI: zero-search\n  browse_page.py       # CLI: zero-browse\n  verify_claim.py      # CLI: zero-verify\n  evidence_report.py   # CLI: zero-report\n  providers/\n    base.py            # SearchProvider protocol (sync + async)\n    ddgs.py            # DuckDuckGo provider\n    searxng.py         # SearXNG provider\n  skills/\n    SKILL.md           # Bundled OpenClaw skill\n```\n\nKey engineering features:\n\n- **Circuit breaker**: Trips after 3 consecutive provider failures, auto-resets after 60s\n- **Async support**: `asearch()` for concurrent provider calls via `asyncio.gather`\n- **Structured logging**: Configurable logging at search/verify/report entry points\n- **Readability heuristic**: Semantic HTML5 + ARIA roles + text density scoring\n- **Baseline comparison**: Majority-vote and keyword-count baselines in reports\n- **Sub-claim decomposition**: Targeted sub-queries for independent evidence gathering\n\n## Installation\n\n```bash\npip install zero-api-key-web-search\n```\n\nPython 3.10+ required. No API keys, no accounts, no configuration needed.\n\n## Development\n\n```bash\npip install -e \".[dev]\"\npython -m pytest tests/ -x           # 86 tests\nruff check zero_api_key_web_search/ tests/\npyright zero_api_key_web_search/     # 0 errors\ncoverage report --fail-under=80       # 85% coverage\n```\n\n## Verification for ecosystem reviewers\n\n1. `zero-report \"Python 3.13 stable release\" --claim \"Python 3.13 is the latest stable release\" --deep --json`\n2. [docs/ecosystem-readiness.md](docs/ecosystem-readiness.md)\n3. [docs/gemini-submission-checklist.md](docs/gemini-submission-checklist.md)\n4. [docs/trust-model.md](docs/trust-model.md)\n\n## License\n\nMIT License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwd041216-bit%2Fzero-api-key-web-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwd041216-bit%2Fzero-api-key-web-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwd041216-bit%2Fzero-api-key-web-search/lists"}