Overview
This pipeline runs daily research tasks using Nous Research Hermes models with Scavio providing search grounding. Hermes agents receive a list of research topics, use function calling to invoke the Scavio search tool, and produce structured research summaries. Each research task uses 5-15 search calls depending on topic complexity. Budget controls prevent runaway costs.
Trigger
Cron schedule (daily at 8 AM UTC)
Schedule
Runs daily at 8:00 AM UTC
Workflow Steps
Load research topics
Read the day's research topics from configuration or queue.
Initialize Hermes agent with search tool
Set up Hermes model with Scavio search as a callable function tool with budget limits.
Execute research per topic
For each topic, let Hermes agent autonomously search and synthesize findings.
Collect and validate results
Gather agent outputs, validate citations, check budget usage per topic.
Output research summaries
Write structured research summaries with citations to storage.
Python Implementation
import requests
import json
API_KEY = "your_scavio_api_key"
MAX_SEARCHES_PER_TOPIC = 10
search_count = 0
def scavio_search(query: str, platform: str = "google") -> dict:
"""Search tool for Hermes agent."""
global search_count
if search_count >= MAX_SEARCHES_PER_TOPIC:
return {"error": "Search budget exceeded for this topic"}
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": platform, "query": query, "ai_overview": True},
timeout=15,
)
res.raise_for_status()
search_count += 1
data = res.json()
return {
"organic": [{"title": r.get("title", ""), "snippet": r.get("snippet", ""), "link": r.get("link", "")} for r in data.get("organic", [])[:5]],
"ai_overview": data.get("ai_overview", {}).get("text", ""),
}
# Hermes tool definition for function calling
TOOL_DEFINITION = {
"type": "function",
"function": {
"name": "web_search",
"description": "Search the web for current information",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"},
"platform": {"type": "string", "enum": ["google", "reddit", "amazon"], "default": "google"},
},
"required": ["query"],
},
},
}
# Simulate agent research
topics = ["Google AI Mode impact on SEO 2026", "Best search APIs for AI agents"]
for topic in topics:
search_count = 0
result = scavio_search(topic)
print(f"Topic: {topic}")
print(f" Searches used: {search_count}/{MAX_SEARCHES_PER_TOPIC}")
print(f" Results: {len(result['organic'])} organic, AI Overview: {'yes' if result['ai_overview'] else 'no'}")JavaScript Implementation
const API_KEY = "your_scavio_api_key";
const MAX_SEARCHES = 10;
let searchCount = 0;
async function scavioSearch(query, platform = "google") {
if (searchCount >= MAX_SEARCHES) return { error: "Budget exceeded" };
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform, query, ai_overview: true }),
});
searchCount++;
const data = await res.json();
return { organic: (data.organic ?? []).slice(0, 5), aiOverview: data.ai_overview?.text ?? "" };
}
searchCount = 0;
const r = await scavioSearch("Google AI Mode SEO impact 2026");
console.log(`Results: ${r.organic.length}, Budget: ${searchCount}/${MAX_SEARCHES}`);Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit