Claude Code ships with a built-in web_search MCP tool that is conservative by design: Google only, low rate limits, US region. Most agent workflows in 2026 need Reddit, YouTube, and retail. This tutorial disables the built-in and registers Scavio MCP as the replacement with broader coverage.
Prerequisites
- Claude Code latest
- A Scavio API key
- Node.js 20+
Walkthrough
Step 1: Disable the built-in web_search
Edit the Claude Code settings to opt out of the bundled tool.
// ~/.claude/settings.json
{
"disabledTools": ["web_search"]
}Step 2: Install the Scavio MCP
Single npm install covers 10+ platforms.
npm install -g @scavio/mcpStep 3: Register the MCP
Add Scavio to your .mcp.json.
{
"mcpServers": {
"scavio": {
"command": "scavio-mcp",
"env": { "SCAVIO_API_KEY": "sk_live_..." }
}
}
}Step 4: Verify the swap
In Claude Code, /mcp list should show Scavio tools and no built-in web_search.
/mcp listStep 5: Use broader platforms
Claude now has Reddit, YouTube, Amazon, Walmart access via one MCP.
> Use scavio to find top Reddit threads on MCP tool governance this month.Python Example
import os, requests
# Scavio has one endpoint per platform - there is no dispatcher endpoint and no
# `platform` request param, so the selector lives in your code.
SCAVIO = "https://api.scavio.dev"
SCAVIO_ENDPOINTS = {
"google": "/api/v2/google",
"reddit": "/api/v1/reddit/search",
"youtube": "/api/v1/youtube/search",
"amazon": "/api/v1/amazon/search",
"walmart": "/api/v1/walmart/search",
}
SCAVIO_QUERY_KEY = {"youtube": "search"}
SCAVIO_RESULTS_KEY = {"google": "organic_results", "reddit": "results",
"youtube": "results", "amazon": "products", "walmart": "products"}
def scavio_url(platform):
return SCAVIO + SCAVIO_ENDPOINTS[platform or "google"]
def scavio_body(platform, query):
return {SCAVIO_QUERY_KEY.get(platform or "google", "query"): query}
def scavio_payload(payload, platform="google"):
"""Google v2 passes Google's response through as-is; every other endpoint
wraps its payload in `data`. Item fields differ per platform (see
https://scavio.dev/docs), so only the result list is normalised here."""
platform = platform or "google"
out = payload if platform == "google" else payload["data"]
return {**out, "results": out.get(SCAVIO_RESULTS_KEY[platform], [])}
API_KEY = os.environ['SCAVIO_API_KEY']
def scavio(query, platform="google"):
r = requests.post(scavio_url(platform),
headers={'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'},
json=scavio_body(platform, query))
r.raise_for_status()
return scavio_payload(r.json(), platform)
print(scavio('mcp tool governance 2026', platform='reddit'))JavaScript Example
// Scavio has one endpoint per platform - there is no dispatcher endpoint and no
// `platform` request param, so the selector lives in your code.
const SCAVIO = "https://api.scavio.dev";
const SCAVIO_ENDPOINTS = {
google: "/api/v2/google",
reddit: "/api/v1/reddit/search",
youtube: "/api/v1/youtube/search",
amazon: "/api/v1/amazon/search",
walmart: "/api/v1/walmart/search",
};
const SCAVIO_QUERY_KEY = { youtube: "search" };
const SCAVIO_RESULTS_KEY = { google: "organic_results", reddit: "results",
youtube: "results", amazon: "products", walmart: "products" };
const scavioUrl = (platform) => SCAVIO + SCAVIO_ENDPOINTS[platform || "google"];
const scavioBody = (platform, query) =>
({ [SCAVIO_QUERY_KEY[platform || "google"] || "query"]: query });
// Google v2 passes Google's response through as-is; every other endpoint wraps
// its payload in `data`. Item fields differ per platform (see
// https://scavio.dev/docs), so only the result list is normalised here.
function scavioPayload(json, platform = "google") {
const p = platform || "google";
const out = p === "google" ? json : json.data;
return { ...out, results: out[SCAVIO_RESULTS_KEY[p]] || [] };
}
const API_KEY = process.env.SCAVIO_API_KEY;
export async function scavio(query, platform) {
const body = platform ? { query, platform } : { query };
const r = await fetch(scavioUrl(body.platform), {
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify(scavioBody(body.platform, body.query ?? body.search))
});
return scavioPayload(r.json(), body.platform);
}Expected Output
Claude Code no longer shows web_search. Scavio MCP exposes search, reddit_search, youtube_search, amazon_search, walmart_search tools. Rate limits follow your Scavio plan, not Anthropic defaults.