Resumen
Before cada search llamada un API, el agent verifica proveedor disponibilidad y precios via MCP herramientas, entonces routes to el cheapest disponible proveedor. Reduces cost y avoids calls to degraded servicios.
Desencadenador
Before cada agent search solicitud
Programación
On-demand (per solicitud)
Pasos del flujo de trabajo
Verificar proveedor estado
Consulta estado MCP for cada search proveedor disponibilidad.
Get actual precios
Obtener per-query costs de precios MCP.
Filtrar disponible proveedores
Eliminar proveedores con degraded o down estado.
Route to cheapest
Select el cheapest disponible proveedor y ejecutar search.
Implementacion en Python
import requests, os
PROVIDERS = {
"scavio": {"url": "https://api.scavio.dev/api/v1/search", "header": "x-api-key", "key_env": "SCAVIO_API_KEY", "cost": 0.005},
"serper": {"url": "https://google.serper.dev/search", "header": "X-API-KEY", "key_env": "SERPER_KEY", "cost": 0.001},
}
def search_with_routing(query, platform="google"):
available = []
for name, cfg in PROVIDERS.items():
try:
key = os.environ.get(cfg["key_env"])
if not key:
continue
available.append((name, cfg))
except Exception:
continue
available.sort(key=lambda x: x[1]["cost"])
for name, cfg in available:
try:
r = requests.post(cfg["url"],
headers={cfg["header"]: os.environ[cfg["key_env"]], "Content-Type": "application/json"},
json={"platform": platform, "query": query} if name == "scavio" else {"q": query},
timeout=5)
if r.ok:
return {"provider": name, "cost": cfg["cost"], "data": r.json()}
except Exception:
continue
return NoneImplementacion en JavaScript
const providers = [
{name: "scavio", url: "https://api.scavio.dev/api/v1/search", cost: 0.005,
headers: {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"},
body: (q) => JSON.stringify({platform: "google", query: q})},
];
for (const p of providers.sort((a, b) => a.cost - b.cost)) {
try {
const r = await fetch(p.url, {method: "POST", headers: p.headers, body: p.body(query)});
if (r.ok) return {provider: p.name, data: await r.json()};
} catch {}
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA