Tutorial

How to Fix Hermes Agent Web Search Failures

Hermes Agent web_search returns empty results? Learn how to replace the unreliable DuckDuckGo backend with a reliable search API via MCP.

Hermes Agent's built-in web_search skill uses DuckDuckGo scraping which frequently fails with empty results, rate limiting, or timeouts. This tutorial replaces it with a reliable search API backend via MCP, fixing the 'web_search returned no results' error permanently.

Prerequisites

  • Hermes Agent installed (v0.10+)
  • A Scavio API key from scavio.dev

Walkthrough

Step 1: Diagnose the issue

Hermes web_search fails because DuckDuckGo rate-limits automated requests. Check your Hermes logs for the error pattern.

Bash
# Common error in Hermes logs:
# [WARN] web_search: DuckDuckGo returned 0 results for query 'python fastapi'
# [ERROR] web_search: Request timed out after 10s
# [WARN] web_search: Rate limited by DuckDuckGo (429)

# Check your Hermes config:
cat ~/.hermes/config.yaml | grep -A5 web_search

Step 2: Add Scavio MCP as search provider

Configure Hermes to use Scavio MCP server for web search instead of DuckDuckGo.

# In ~/.hermes/config.yaml, add MCP server:
mcp_servers:
  scavio:
    url: "https://mcp.scavio.dev/mcp"
    headers:
      x-api-key: "your_scavio_api_key"
    tools:
      - google_search
      - reddit_search
      - youtube_search

Step 3: Create a search skill override

Override the default web_search skill to use the MCP-provided google_search tool.

# Create ~/.hermes/skills/reliable_search.yaml:
name: reliable_search
description: Web search using Scavio API (replaces DuckDuckGo)
trigger: "search for|look up|find information about|web search"
action: |
  Use the google_search tool from the scavio MCP server.
  For Reddit-specific queries, use reddit_search instead.
  For video content, use youtube_search.
  Always return the top 5 results with title, URL, and snippet.

Step 4: Disable default web_search

Prevent Hermes from falling back to the broken DuckDuckGo scraper.

# In ~/.hermes/config.yaml, disable built-in web_search:
skills:
  disabled:
    - web_search  # Disable DuckDuckGo-based search
  # reliable_search skill (above) will handle search queries instead

Step 5: Test the fix

Verify search works reliably with the new backend.

Bash
# In Hermes chat:
> Search for best Python web framework 2026

# Expected: Hermes uses scavio google_search tool, returns results
# Previously: Empty results or timeout from DuckDuckGo

# Test Reddit search:
> Search Reddit for Python framework recommendations

# Test YouTube search:
> Find YouTube tutorials about FastAPI

Python Example

Python
import requests, os

def hermes_search(query: str, platform: str = 'google') -> list:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'},
        json={'platform': platform, 'query': query}, timeout=10)
    return resp.json().get('organic', [])[:5]

JavaScript Example

JavaScript
async function hermesSearch(query, platform = 'google') {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
    body: JSON.stringify({platform, query})
  });
  return (await resp.json()).organic?.slice(0, 5) || [];
}

Expected Output

JSON
Hermes Agent with reliable web search via Scavio MCP, replacing the broken DuckDuckGo scraper with a managed API backend.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Hermes Agent installed (v0.10+). A Scavio API key from scavio.dev. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Hermes Agent web_search returns empty results? Learn how to replace the unreliable DuckDuckGo backend with a reliable search API via MCP.