Picks a good provider
News, research, shopping and technical searches do not all need the same search service.
Web search for AI agents
Give your AI agent better web search and clean page reading. Start with one provider, add more when you need them, and keep the original links behind every result. If one service fails, Web Search Plus can try another.
Product demo
This two-minute demo shows an agent searching the web, reading sources, and switching providers when needed.
Why it exists
Different searches work better in different places. Web Search Plus chooses from the providers you have and keeps your agent working when one of them has a bad day.
News, research, shopping and technical searches do not all need the same search service.
Missing key, provider problem or empty result? It can move to the next option instead of stopping the whole task.
You keep the original sources and can ask for extra details about which provider ran, what failed and how long it took.
Search providers
Web Search Plus works with 13 search providers and can read pages through 9 of them. You only need one provider to get started.
Local & keyless paths
No commercial provider key does not always mean local. Choose the boundary you actually want: a self-hosted search endpoint, a local Search + Extract sidecar, or an opt-in public keyless service.
Local metasearch and browser-backed extraction through a separately installed loopback MCP service.
Hound / Master Fetch · independent MIT project by Bishesh Bhandari
Your own metasearch endpoint for broad web discovery without a commercial WSP provider account.
self_hosted automatic search pool.Search-only in WSP · your infrastructure, policy and availability
A public Search + Extract endpoint that can work without an API key, but does not run locally.
Per-IP limits and no SLA · convenient fallback, not local infrastructure
For developers
This feature sheet shows the two tools, provider setup and routing options in one place.
Under the hood
Web Search Plus understands the kind of search, chooses a provider and tries the next one if needed. You can ask for the technical details when you want them.
Is it research, news, shopping, local search or a page to read?
It picks a suitable provider from the ones you configured.
If the first provider fails or returns nothing, another can take over.
Turn on quality_report=true when you want to see which provider ran and how long it took.
{
// example quality report
"query_intent": "research",
"provider_used": "tavily",
"reason": "research intent + key available",
"fallback_chain": ["brave", "serper"],
"fallbacks_taken": 0,
"results_returned": 8,
"metadata": { "intent_rerank": true },
"authority_signals": {
"canonical_top_result": true,
"canonical_domain_hits": 3
},
"elapsed_ms": 742
}
Install paths
Hermes Agent and OpenClaw Plugin are both primary flagship paths. NanoClaw gets its own utility-skill front-end, and the MCP server keeps every other client on the same routing engine.
The best fit for OpenClaw. It adds web search, clean page reading and provider settings. Version 3.3 brings a provider health view and an extraction benchmark, lets you pin a single provider per call, keeps long pages readable with the full text available on demand, and can connect a local Hound sidecar.
stable · native OpenClaw plugin
openclaw plugins install clawhub:web-search-plus-plugin-v2The best fit for Hermes. It adds web search and clean page reading. Version 3.3 keeps more useful text from long pages, combines supporting details more carefully, and can finish broad research sooner. Hound remains an optional, separately installed integration.
hermes plugins update web-search-plushermes plugins install robbyczgw-cla/hermes-web-search-plus --enableAdds the Web Search Plus command-line tool to NanoClaw containers. No MCP server is required.
/add-web-search-plusUse Web Search Plus in Claude Desktop, Cursor, NanoBot and other MCP apps. It provides two simple tools: search the web and read a page.
uvx --from web-search-plus-mcp==3.3.0 web-search-plus-mcpA portable Web Search Plus skill for OpenClaw installations that do not use the native plugin.
stable compatibility option · ClawHub latest
openclaw skills install web-search-plusQuickstart
Choose your client. Copy button included because typing config JSON on mobile is cruel and unusual punishment.
# OpenClaw Plugin openclaw plugins install clawhub:web-search-plus-plugin-v2 # Configure at least one provider key in plugin config plugins.entries.web-search-plus-plugin-v2.config.braveApiKey=your-brave-key plugins.entries.web-search-plus-plugin-v2.config.tavilyApiKey=your-tavily-key plugins.entries.web-search-plus-plugin-v2.config.exaApiKey=your-exa-key plugins.entries.web-search-plus-plugin-v2.config.linkupApiKey=your-linkup-key
# Hermes Agent — fresh install hermes plugins install robbyczgw-cla/hermes-web-search-plus --enable python ~/.hermes/plugins/web-search-plus/setup.py setup # Upgrade an existing install hermes plugins update web-search-plus # Restart/reload Hermes, then use: web_search_plus(query="latest AI model releases", quality_report=true) web_extract_plus(urls=["https://example.com/docs"])
{
"mcpServers": {
"web-search-plus": {
"command": "uvx",
"args": ["--from", "web-search-plus-mcp==3.3.0", "web-search-plus-mcp"],
"env": {
"YOU_API_KEY": "your-key",
"SERPER_API_KEY": "your-key",
"LINKUP_API_KEY": "your-key"
}
}
}
}{
"mcpServers": {
"web-search-plus": {
"command": "uvx",
"args": ["--from", "web-search-plus-mcp==3.3.0", "web-search-plus-mcp"],
"env": {
"YOU_API_KEY": "your-key",
"SERPER_API_KEY": "your-key",
"LINKUP_API_KEY": "your-key"
}
}
}
}{
"tools": {
"mcpServers": {
"web-search-plus": {
"command": "uvx",
"args": ["--from", "web-search-plus-mcp==3.3.0", "web-search-plus-mcp"],
"env": {
"YOU_API_KEY": "your-key",
"SERPER_API_KEY": "your-key",
"LINKUP_API_KEY": "your-key"
}
}
}
}
}Current state
The page tracks the release train: Hermes, MCP and the OpenClaw Plugin all on v3.3.0, plus the current NanoClaw paths — no fossilized release copy.
The OpenClaw plugin completes the source-only port and joins the rest of Web Search Plus on the 3.3.0 line. Two new tools ship with it: web_search_health_plus, a read-only view of in-process provider health, and web_extract_benchmark_plus, an explicit-only extraction benchmark capped at three provider calls. Per-call routing_override_provider now pins exactly one provider with no silent fallback, extraction stays inside operator ceilings with page-on-demand full text through content_ref, and Hound can be connected as an optional loopback-only sidecar. Compatibility note: Perplexity direct and the Kilo Perplexity gateway are gone from the provider schema, runtime and config — they are not source-only evidence providers. Release notes →
Bounded heading-aware extraction spans retain the body beneath a matching heading; provenance-safe result enrichment preserves contributing observations and adds explainable fetch hints; completion-order Research can stop after a conservative diversity quorum while preempted providers remain visible. The interaction ideas are independently adapted from Hound / Master-Fetch v11.2.0, the MIT-licensed project by Bishesh Bhandari (@dondai1234). Hound code is not bundled or claimed as Robby's code.
The standalone package realigns from 1.2.0 to the portable WSP 3.3 engine version without breaking its two MCP tools. It carries the same semantic spans, provenance-safe enrichment, Research quorum and repaired quality_report projection, with Hound still connected only as a separately installed sidecar.
Optional local Search + Extract through Hound 11.1.6, connected as a loopback-only MCP sidecar. Hound stays separately installed and explicit-only by default; WSP retains source-only output, SSRF checks, bounded context, cache ownership and truthful provider receipts. Credit: Hound / Master Fetch, created by Bishesh Bhandari (@dondai1234).
The standalone package tracks the portable WSP 3.2 engine: 13 Search and 9 Extract providers, Hound sidecar support, explicit MCP/httpx dependency floors, packaged setup guidance and truthful provider identity on fresh cache hits.
Patch release for two Provider SDK integration defects found in post-release review. Extraction requests served by SDK-discovered providers no longer fail closed inside the extraction-cache identity: they contribute a deterministic identity derived from their spec and the non-secret scalar settings of their config section, while unknown, unregistered providers still fail closed. And the providers.d non-production gate now acts before module execution — fixtures declaring production=False are skipped without being imported unless the explicit opt-in is set. No behavioural changes for built-in providers or any search path; existing caches remain valid. Release notes →
The standalone MCP package syncs the portable Web Search Plus v3.1.1 engine: budget preflight, diversity scoring, self-hosted profiles, shadow-policy observations, semantic extraction spans, the versioned extraction-cache identity, and the public wsp_sdk with fail-closed providers.d discovery — while keeping the stable two-tool MCP boundary. v1.0.1 before it fixed auto-request fallback in the MCP projection. Release notes →
WSP 3.1 ships everything 3.0 deferred, plus the quality and budget layers around it — every feature opt-in, defaults functionally unchanged. A deterministic shadow routing policy now runs beside Classic Routing v2, persists its would-be decisions (never query text) and reports agreement and provider divergences in the read-only Operator Console; Classic remains authoritative and WSP_ROUTING_CLASSIC_ONLY=1 still wins. Budget preflight checks provider-call caps, daily quota, timeout and context budgets before the first provider call and degrades deterministically or aborts with a typed error. Quality reports gain a diversity diagnosis (registrable-domain coverage, canonical-URL duplication, near-duplicate content, provider mix). The extraction cache gets a versioned, request-exact identity contract — no wrong hits after endpoint, budget or extraction-config changes. A self-hosted profile runs automatic routing on SearXNG and keyless Keenable without commercial keys. Opt-in semantic spans return query-conditioned passages under a mechanical offset contract (NFC, Unicode codepoints, half-open ranges). And the new provider SDK makes a provider one self-contained providers.d module with scaffolding and a conformance suite — zero core-file edits. New Console endpoint: per-provider daily health trends. v3.1.1 hardens SDK receipt provenance and test-state isolation, restores schema-generator parity, and removes wall-clock flakes from journal concurrency tests. Release notes →
WSP 3.0.2 hardens registered Search/Extract entrypoints, bounded Research fan-out, cache identity, immutable full-text references and timeout snapshots. Building on v3.0, Web Search Plus is a source-only evidence engine: frozen native v3 request/response contracts with v2 compatibility projections, lossless provider observations captured before filtering/dedup/rerank/truncation, typed provider errors with complete attempt history and truthful routing/cache receipts, deterministic bounded-context extraction with page-on-demand full-text storage, SQLite operational state (dry-run-first migration, verified backups, idempotent apply, digest-checked rollback), a local loopback-only, token-authenticated, read-only Operator Console, direct extraction benchmarking with privacy-safe aggregate history, Classic Routing v2 kill switches and Brave in the default auto-pool. Compatibility note: WSP 3.0 is mechanically source-only — the native Perplexity and Kilo-Perplexity answer endpoints are no longer registered; existing keys are ignored, not deleted. The public Hermes tools remain web_search_plus and web_extract_plus. Release notes →
Shared cache operations now preserve provider health, performance and usage telemetry, invalid UTF-8 foreign JSON no longer crashes stats or clear, and Parallel extraction gets a fair 60k-per-result default budget for long pages. Release notes →
Patch release for Hermes Agent v0.18 standalone plugin discovery: Web Search Plus now loads from outside the plugin directory without cwd-sensitive sibling imports, while v2.8 keeps truncate-and-store extraction, unified freshness filters and provider benchmarking.
Private/internal extraction target URLs are blocked before provider dispatch, keyless-provider setup is smoother, and setup.py fastpath checks whether current public Hermes is routed through Web Search Plus cleanly.
GroktoCrawl can be used as a local Firecrawl-compatible backend through the existing firecrawl.api_url and firecrawl.scrape_url overrides; no separate provider or default backend required.
Keenable joins the Hermes provider lineup for search and extraction. Use KEENABLE_API_KEY for authenticated calls; the keyless public endpoint is opt-in and disabled by default.
Config-driven provider gating now covers both search and extraction. Firecrawl and any other provider can be disabled centrally in config.json without touching release code.
Corrective routing release: normal provider=auto Search and Extract requests once again expand to multiple candidates and continue after quota or rate-limit failures. Explicit provider selections remain strict unless fallback is requested. The release adds boundary regressions that reproduce the former one-candidate plan and prove an executed second-provider fallback after a simulated 429. Release notes →
The standalone MCP package now tracks the portable Web Search Plus v3.0.2 source-only contract: canonical v3 evidence and receipts, truthful multi-provider Research, bounded extraction and immutable full-text references, cache provenance, typed failures, and a stable two-tool MCP boundary for web_search and web_extract. Release notes →
Feature sync with Web Search Plus v2.5–v2.9 for the standalone skill runtime: Keenable, freshness controls, news search, Serper extraction, locale routing, adaptive provider memory, stronger SSRF guards and long-page handling.
Feature sync with the current Web Search Plus engine: Keenable, freshness controls, news search, Serper extraction, locale routing, SSRF target guards, long-page handling and Parallel extraction budget tuning.
Native plugin release adds research mode, authority reranking, quality signals and retry jitter; ClawHub artifact verified and install-smoked through OpenClaw.
Dedicated NanoClaw front-end packages the shared engine as a self-contained wsp CLI skill for agent containers — search and extract, no MCP bridge required.
FAQ
No. One provider is enough. Commercial APIs use their own keys; SearXNG can be self-hosted, Keenable has an opt-in public tier, and Hound can run as a separately installed local sidecar without a provider API key.
Hermes Agent and OpenClaw natively as flagship plugins, NanoClaw through a dedicated utility-skill front-end, plus Claude Desktop, Claude Code, Cursor, NanoBot and any other MCP-compatible client through the standalone web-search-plus-mcp server on PyPI.
The router falls through the chain: a missing key, provider error or empty result set moves the request to the next candidate automatically. The quality report records every fallback that was taken, so nothing fails silently.
Both. web_search_plus handles live search across 13 source-only search providers, and web_extract_plus pulls clean content from URLs across 9 extraction providers with the same fallback behavior.
The router itself is free and open source. Commercial provider costs depend on what you configure. Self-hosted SearXNG and local Hound avoid provider request fees, but still cost machine time, bandwidth and maintenance. See the provider guide for the honest caveats.