The Problem
Agent frameworks make it easy to call a tool and hard to make that tool reliable. A browser-based tool is slow and flaky. A raw HTTP fetch returns a wall of HTML that the model has to summarize before it can act. A homegrown search integration ends up reimplementing half of what a SERP API already does, badly. Every agent team eventually hits the same wall: giving the agent the web is trivial in demos and painful in production because the underlying tool has the wrong shape for an LLM to consume.
The Scavio Solution
Scavio fits the shape of an agent tool exactly. It takes a query, it returns parsed snippets with source URLs, it completes in under two seconds, and the response is small enough to pass back into the context without blowing past the model's limits. You expose a single tool called web_search, the agent calls it whenever it needs the live web, and the tool returns a result that slots into the agent's reasoning chain without further processing. No browser, no HTML, no token-heavy intermediate summarization step.
Before
Before Scavio, agent teams hacked together Puppeteer tools, raw fetch plus readability, or scraped Google directly. Each approach had its own failure mode and its own timeout saga.
After
After Scavio, the agent has one deterministic web tool. Latency is predictable, output is parsed, and the chain-of-tool-calls actually completes without a babysitter watching the trace.
Who It Is For
Agent builders working with OpenAI Agents SDK, Anthropic tool use, LangGraph, or CrewAI. If your agent needs reliable web access and you are tired of wrapping brittle scrapers, this is the cleanest path.
Key Benefits
- Single tool definition works for OpenAI, Anthropic, and Gemini
- Parsed snippets fit inside sub-thousand-token tool responses
- Predictable sub-two-second latency keeps agent loops snappy
- Supports web, video, and product search from one tool schema
- No browser infrastructure or HTML post-processing required
Python Example
from openai import OpenAI
import requests, json
API_KEY = "your_scavio_api_key"
client = OpenAI()
def web_search(query: str) -> str:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query},
timeout=10,
)
return json.dumps(r.json().get("organic", [])[:5])
tools = [{
"type": "function",
"function": {
"name": "web_search",
"description": "Search the live web and return top results",
"parameters": {"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]},
},
}]
print(web_search("who won euro 2028 qualifiers last night"))JavaScript Example
const API_KEY = "your_scavio_api_key";
export async function webSearch(query) {
const r = 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: "google", query }),
});
const data = await r.json();
return JSON.stringify((data.organic ?? []).slice(0, 5));
}
export const webSearchTool = {
type: "function",
function: {
name: "web_search",
description: "Search the live web and return top results",
parameters: {
type: "object",
properties: { query: { type: "string" } },
required: ["query"],
},
},
};Platforms Used
Web search with knowledge graph, PAA, and AI overviews
YouTube
Video search with transcripts and metadata
Amazon
Product search with prices, ratings, and reviews
Walmart
Product search with pricing and fulfillment data