A web-search plugin for the Hermes agent runtime that replaces single-provider search tools with a capability-based layer: it exposes two tools — websearchplus for routed multi-provider search and webextractplus for clean URL extraction — and routes across whichever providers the user has actually configured. Routing v2 spans 14 search providers and 8 extraction-capable providers (You.com, Serper, Exa, Firecrawl, Tavily, Linkup, Perplexity, Brave, SearXNG, and others); no single key is required, and providers without keys are simply skipped.
The design leans conservative and bounded. A core pool of providers handles automatic routing while the rest stay guarded until explicitly opted in; failing providers go on escalating cooldown; an opt-in research mode enforces a wall-clock budget and keeps partial results. Large extracted pages return a head/tail preview with the full cleaned text stored on disk for paged reading, rather than flooding the agent context. Extraction rejects loopback, RFC1918, and cloud-metadata URLs before dispatch, and unapplied filters, quota failures, or empty results are reported in response metadata instead of hidden.
Routing is class-aware — it detects query classes such as news, shopping, docs/API, GitHub, academic, CVE/security, finance, and weather, plus language hints — and adapts to recent provider latency and error rates within bounds. Freshness windows, news vertical, and country/language locale are explicit parameters, and a built-in benchmark compares configured providers on success rate, latency, and result quality to suggest a priority order. Written in Python with a stdlib-only runtime; a TypeScript/OpenClaw port exists as a sibling project.
