Multi-Platform Portability & Model Upgrades

Web Search Across Platforms: Absent, Basic, or Full

Claude's server-side web search isn't one feature with one availability answer — it's three tiers depending on platform. Code that assumes the tool exists everywhere fails in three different ways.

Claude 3P 101 · Updated July 2026 · Unofficial guide

Web search is a server-side tool: you declare it in the tools array, and the platform — not your code — executes the searches and feeds results back to the model mid-request. That "the platform executes it" detail is exactly why availability fragments across deployment surfaces. Client-implemented tools travel everywhere because you run them; server-side tools only exist where the operator has built the execution machinery.

The three tiers

PlatformWeb searchNotes
Claude API (1P)FullAll variants, incl. newer _20260209-generation tooling
Claude Platform on AWSFullSame-day parity surface; server tools supported
Amazon BedrockAbsentNo web search, web fetch, or code execution
Google Vertex AIBasic onlyweb_search_20250305; no _20260209 dynamic filtering
Microsoft FoundryBetaHosted-on-Anthropic deployments only

Absent (Bedrock). Anthropic's Bedrock documentation lists web search among the server-side tools not supported there, alongside web fetch and code execution. A request declaring the tool won't degrade gracefully — there is simply no server-side search machinery on that surface. Teams on Bedrock that need grounded answers typically implement search as a client tool: the model requests a search, your code calls a search provider, and you return results (ideally as search_result content blocks, which Bedrock does support).

Basic (Vertex AI). Vertex supports web search, but only the web_search_20250305 variant. The newer _20260209 generation — the one with dynamic filtering — is not supported there. Google's own pricing page lists Claude web search at $10 per 1,000 searches, matching Anthropic's rate. If your prompt engineering leans on newer search-variant behavior, results on Vertex will differ, not just cost the same.

Full (1P and Claude Platform on AWS). Both Anthropic-operated surfaces support the tool fully at $10 per 1,000 searches plus standard token costs; each search counts as one use regardless of results returned, and errored searches are not billed. On Foundry, web search is in beta and — like all server-side tools there — available only on Hosted-on-Anthropic deployments; against an Azure-hosted deployment such requests return 400 by design.

Gate the tool at initialization, not per request

Platform capability is static for the lifetime of a deployment, so resolve it once when the process starts. A small capability map beats runtime probing — it's deterministic, testable, and doesn't burn a request to find out what you already know at deploy time:

WEB_SEARCH_BY_PLATFORM = {
    "anthropic":  {"type": "web_search_20260209", "name": "web_search"},
    "claude_aws": {"type": "web_search_20260209", "name": "web_search"},
    "vertex":     {"type": "web_search_20250305", "name": "web_search"},
    "bedrock":    None,   # server-side search unavailable
    "foundry":    None,   # enable only for Hosted-on-Anthropic deployments
}

def build_tools(platform: str, base_tools: list) -> list:
    ws = WEB_SEARCH_BY_PLATFORM[platform]
    return base_tools + [ws] if ws else base_tools

Two design notes. First, when the tool is absent, decide explicitly what replaces it: a client-implemented search tool, a retrieval pipeline, or a prompt that tells the model it has no live web access (so it stops offering to search). Silent removal without prompt adjustment produces a model that confidently references "current" information it cannot fetch. Second, keep the variant string in the capability map, not scattered through prompt-building code — when Vertex or Foundry availability changes, you want one line to update.

Rule of thumb: treat every server-side tool (web search, web fetch, code execution) as platform-conditional, and every client-implemented tool (bash, text editor, your own functions) as portable. That single distinction predicts most of the Claude feature matrix.

Web fetch is even more restricted

Teams often pair web search with the web fetch tool — search finds pages, fetch pulls a specific URL's full content. Fetch is narrower still: available on the first-party API and Claude Platform on AWS, absent on both Bedrock and Vertex AI, and beta on Foundry. So on Vertex you can have Claude search but not retrieve a full page server-side, which changes how much you can ground answers in primary sources. Where it does exist, web fetch carries no per-use fee beyond standard token costs — but fetched pages can be large (Anthropic estimates a 500 kB PDF at roughly 125,000 tokens), so set max_content_tokens to cap what a single fetch can pull into your bill. Put fetch in the same per-platform capability map as search, and give each entry its own fallback story.

Where to go next

The web search tool reference covers request and response shapes; the three web-search versions explains what the variants differ on; and Vertex web search grounding goes deeper on the Google-side experience. For the whole availability picture, see the feature matrix.

Sources