Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.opper.ai/llms.txt

Use this file to discover all available pages before exploring further.

Server-side tools are tools the provider runs for you — Anthropic’s web_search, OpenAI’s code_interpreter, Google’s googleSearch, and so on. Unlike function tools, there’s no round-trip: the model invokes the tool, the provider runs it, and the result comes back in the same response. Opper forwards these tools verbatim to each provider on that provider’s native endpoint. Surcharges (e.g. $10 / 1k web searches) bill as the provider reports them.

Where each tool lives

Server-side tools are endpoint-specific — each provider only accepts its own tools on its own compatibility endpoint. Send them anywhere else and you get a 400 with a hint pointing at the right endpoint.
ProviderEndpointTools
AnthropicPOST /v3/compat/v1/messagesweb_search_*, web_fetch_*, bash_*, computer_*, memory_*, text_editor_*, mcp_toolset, advisor_*
OpenAIPOST /v3/compat/responsesweb_search, file_search, code_interpreter, image_generation
GooglePOST /v3/compat/v1beta/models/{model}:generateContentgoogleSearch, codeExecution, urlContext, googleSearchRetrieval
Function tools (your own {type:"function",...} definitions) work on every endpoint — the restriction is just for provider-native server tools.

Examples

curl https://api.opper.ai/v3/compat/v1/messages \
  -H "Authorization: Bearer $OPPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "What were the top tech headlines today?"}],
    "tools": [{
      "type": "web_search_20250305",
      "name": "web_search",
      "max_uses": 3
    }]
  }'

Responses

Each provider’s native response shape comes back verbatim, so the official Anthropic / OpenAI / Google SDKs parse it without changes:
  • Anthropiccontent[] contains server_tool_use, web_search_tool_result (with the result URLs + encrypted content), and text blocks whose citations[] reference the sources the model actually grounded on.
  • OpenAI Responsesoutput[] contains web_search_call items (with the search queries) and message.content[].output_text.annotations[] url_citation entries.
  • Googlecandidates[0].groundingMetadata carries webSearchQueries, groundingChunks[].web (URI + title), groundingSupports, and searchEntryPoint.

Compact responses

Server-tool payloads can get heavy (Anthropic web_search results carry full snippets + per-result encrypted_content). Send X-Opper-Compact-Response: true to strip the bandwidth-heavy fields while preserving citation URLs and titles. Tradeoff: a compact response can’t be replayed to extend a cited multi-turn conversation, because Anthropic citation continuity needs the encrypted_index / encrypted_content that compact mode drops.

Routing through Bedrock and Vertex

When you route Claude through a cloud platform (bedrock/claude-*, vertexai/claude-*), the supported subset shrinks. Opper rejects with a clear 400 when you ask for something the cloud doesn’t carry.
ToolDirect AnthropicVertex AI ClaudeBedrock Claude
web_search_*
web_fetch_*
bash_* / computer_* / memory_* / text_editor_*
code_execution_*
mcp_toolset / advisor_*
Source: Anthropic’s Features not supported lists on each platform’s docs page.

Provider docs

For the full parameter set on each tool (filters, citation options, region settings, etc.), consult the provider’s own reference:

See also

  • server-tools-compare — runnable cookbook example: fans the same question out to all three providers in parallel and shows queries, citations, cost, and the compact-mode size delta side by side.