ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Build Hermes Research Pipeline Using Search API
Tutorial

How to Build Hermes Research Pipeline Using Search API

Build an automated research pipeline for Hermes agent using search API. Multi-step research with source verification.

Get Free API KeyAPI Docs

Hermes agents can research topics but need structured search to do it well. This tutorial builds a multi-step research pipeline where the agent searches, gathers sources, verifies facts across results, and produces a sourced research brief. Each research task uses 3-5 searches at $0.015-0.025 total.

Prerequisites

  • Python 3.8+
  • requests library
  • A Scavio API key from scavio.dev
  • Hermes agent framework

Walkthrough

Step 1: Build the research search tool

Create a search function optimized for research tasks with source extraction.

Python
import os, requests, json
from datetime import datetime
from collections import defaultdict

API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}

def research_search(query, depth='standard'):
    """Search optimized for research. Returns structured sources."""
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10).json()
    sources = []
    for r in data.get('organic_results', []):
        source = {
            'title': r.get('title', ''),
            'url': r.get('link', ''),
            'snippet': r.get('snippet', ''),
            'domain': r.get('displayed_link', '').split('/')[0],
            'position': r.get('position', 0),
        }
        sources.append(source)
    related = [q.get('question', '') for q in data.get('people_also_ask', [])]
    featured = data.get('featured_snippet', {})
    return {
        'query': query,
        'sources': sources,
        'related_questions': related,
        'featured_answer': featured.get('snippet', ''),
        'source_count': len(sources),
    }

# Test
result = research_search('what is model context protocol mcp 2026')
print(f'Query: {result["query"]}')
print(f'Sources: {result["source_count"]}')
print(f'Featured answer: {result["featured_answer"][:80]}...' if result['featured_answer'] else 'No featured answer')
for s in result['sources'][:3]:
    print(f'  [{s["domain"]:20}] {s["title"][:50]}')

Step 2: Build multi-step research pipeline

Chain searches together to research a topic from multiple angles.

Python
def research_pipeline(topic, angles=None):
    """Multi-step research pipeline for Hermes agent."""
    if not angles:
        angles = [
            f'{topic}',
            f'{topic} comparison alternatives',
            f'{topic} tutorial getting started',
        ]
    all_sources = []
    all_facts = []
    print(f'\n=== Researching: {topic} ===')
    for i, angle in enumerate(angles, 1):
        print(f'\n  Step {i}: "{angle[:50]}"')
        result = research_search(angle)
        all_sources.extend(result['sources'])
        if result['featured_answer']:
            all_facts.append({'fact': result['featured_answer'][:150], 'query': angle})
        print(f'    Sources: {result["source_count"]} | Featured: {"yes" if result["featured_answer"] else "no"}')
        # Use related questions for deeper research
        if result['related_questions'] and i == 1:
            for rq in result['related_questions'][:2]:
                angles.append(rq)
                print(f'    Added follow-up: {rq[:50]}')
    # Deduplicate sources by domain
    seen = set()
    unique_sources = []
    for s in all_sources:
        if s['domain'] not in seen:
            seen.add(s['domain'])
            unique_sources.append(s)
    return {
        'topic': topic,
        'queries': len(angles),
        'unique_sources': unique_sources,
        'facts': all_facts,
        'cost': len(angles) * 0.005,
    }

research = research_pipeline('model context protocol MCP')
print(f'\n  Queries: {research["queries"]} | Unique sources: {len(research["unique_sources"])}')
print(f'  Facts found: {len(research["facts"])}')
print(f'  Cost: ${research["cost"]:.3f}')

Step 3: Generate the research brief

Compile research into a structured brief with citations.

Python
def generate_brief(research):
    print(f'\n{"=" * 60}')
    print(f'  RESEARCH BRIEF: {research["topic"]}')
    print(f'  Date: {datetime.now().strftime("%Y-%m-%d")}')
    print(f'  Queries: {research["queries"]} | Sources: {len(research["unique_sources"])}')
    print(f'{"=" * 60}')
    # Key facts
    if research['facts']:
        print(f'\n  Key Findings:')
        for i, f in enumerate(research['facts'], 1):
            print(f'    {i}. {f["fact"][:80]}')
            print(f'       Source query: "{f["query"][:40]}"')
    # Source overview
    print(f'\n  Sources ({len(research["unique_sources"])} unique):')
    for s in research['unique_sources'][:10]:
        print(f'    [{s["domain"]:25}] {s["title"][:45]}')
    # Authority breakdown
    domains = [s['domain'] for s in research['unique_sources']]
    authority = {
        'official': sum(1 for d in domains if any(w in d for w in ['github.com', '.dev', '.io'])),
        'news': sum(1 for d in domains if any(w in d for w in ['techcrunch', 'verge', 'arstechnica'])),
        'community': sum(1 for d in domains if any(w in d for w in ['reddit', 'stackoverflow', 'hackernews'])),
    }
    print(f'\n  Source Authority:')
    for cat, count in authority.items():
        print(f'    {cat:15} {count} sources')
    print(f'\n  Research cost: ${research["cost"]:.3f}')
    print(f'  Time: ~{research["queries"]}s (vs 30-60s with browser search)')

generate_brief(research)

Python Example

Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

def research(topic):
    for angle in [topic, f'{topic} tutorial', f'{topic} alternatives']:
        data = requests.post('https://api.scavio.dev/api/v1/search',
            headers=SH, json={'query': angle, 'country_code': 'us'}, timeout=10).json()
        results = data.get('organic_results', [])
        print(f'{angle[:30]:30} | {len(results)} sources')

research('model context protocol')
print('Cost: $0.015')

JavaScript Example

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
for (const angle of ['model context protocol', 'MCP tutorial', 'MCP alternatives']) {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query: angle, country_code: 'us' })
  }).then(r => r.json());
  console.log(`${angle}: ${(data.organic_results || []).length} sources`);
}

Expected Output

JSON
Query: what is model context protocol mcp 2026
Sources: 10
Featured answer: Model Context Protocol (MCP) is an open standard for connecting...
  [modelcontextprotocol] Model Context Protocol - Official Documentation
  [github.com           ] MCP Specification - GitHub Repository

=== Researching: model context protocol MCP ===
  Queries: 5 | Unique sources: 28
  Facts found: 3
  Cost: $0.025

============================================================
  RESEARCH BRIEF: model context protocol MCP
  Date: 2026-05-21
  Queries: 5 | Sources: 28
============================================================

  Research cost: $0.025
  Time: ~5s (vs 30-60s with browser search)

Related Tutorials

  • How to Add API Search to Hermes Without Browser
  • How to Fix Hermes SearXNG Blocking with API Fallback
  • How to Configure Pi Agent with Multiple Search Backends

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.

Python 3.8+. requests library. A Scavio API key from scavio.dev. Hermes agent framework. A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, 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.

Related Resources

Best Of

Best Search API for Hermes Agent in 2026

Read more
Best Of

Best Search Backends for Hermes Agent (May 2026)

Read more
Use Case

Hermes Agent Research Pipeline

Read more
Use Case

Hermes Agent Search API Reliability

Read more
Solution

Add Unified Search to Multi-Agent Systems with Scavio

Read more
Glossary

Search API Provider Landscape (2026)

Read more

Start Building

Build an automated research pipeline for Hermes agent using search API. Multi-step research with source verification.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy