Server Tools
Server tools run on our side of the wire: the gateway injects the tool, executes it when the model calls it, feeds the result back to the model, and loops until the model finishes. You get the final answer in one request — no client-side tool loop.
| Tool | Backed by | What it does |
|---|---|---|
| Web search | Firecrawl | Searches the web and returns result snippets + URLs to the model |
| Web fetch | Firecrawl | Fetches a specific URL and returns extracted page content |
| PDF parsing | Mistral OCR | Extracts text (incl. scans) from PDF/file inputs before the model sees them |
| Image generation | Google Gemini | Generates images from text prompts (“Nano Banana”); 3 quality modes, 1K–4K |
| Datetime | — (local) | Returns the current UTC time, optionally localized to an IANA timezone |
Activating tools
Activation follows your ingress format’s idiom, at functional parity with OpenRouter’s server-tools suite.
Web search & fetch
Attach the web plugin to any request (OpenAI-format shown; the same plugins extension
field applies to all three ingress formats):
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{ "role": "user", "content": "What changed in the EU AI Act this month?" }
],
"plugins": [{ "id": "web" }]
}The model decides when to search or fetch; tool activity is visible in the response’s tool-call trace and itemized in your usage events.
Image generation
Generate images from text prompts with Google’s “Nano Banana” (Gemini) models,
activated per request through the same plugins or tools array you use for other
server tools.
Chat Completions / Messages
Attach the image plugin to any request. mode defaults to smart; size defaults to
medium:
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{
"role": "user",
"content": "Generate a diagram of a Kubernetes cluster with three worker nodes."
}
],
"plugins": [{ "id": "image", "mode": "smart", "size": "medium" }]
}Modes
Three quality tiers, each backed by a specific Gemini model:
| Mode | Model | Notes |
|---|---|---|
| Fast | gemini-3.1-flash-lite-image | Cheapest; always 1K (clamped) |
| Smart | gemini-3.1-flash-image | Default when mode is omitted |
| Pro | gemini-3-pro-image | Highest fidelity, largest files |
Size
size controls output resolution. It’s optional and defaults to medium:
| Size | Resolution |
|---|---|
low | 1K |
medium | 2K |
high | 4K |
Fast mode is 1K-only — medium and high are clamped to low without error.
When image generation isn’t configured
If the operator hasn’t configured an image provider for your workspace, the tool
returns a truthful status: "not_configured" result and is not billed. The
model sees the message and can relay that the tool isn’t available — it is not a
thrown error, so the request completes normally.
Output
The tool returns the generated image (base64 or URL) to the model. Each generation
appears as a tool_usage line in your usage events and ledger.
Datetime
A trivial local tool — no external provider, no network call, free of charge. The model calls it to ground itself in the current time (useful for “today”, “this week”, relative dates, log freshness).
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [{ "role": "user", "content": "What is today's date in Dubai?" }],
"plugins": [{ "id": "datetime" }]
}The tool returns UTC (utc ISO string + epoch_ms). If the model passes an IANA
timezone (e.g. Asia/Dubai), the result also carries a local string; an unknown
timezone yields a timezone_error hint instead of throwing.
Pricing
Server-tool executions are billed against your workspace credits as separate, itemized ledger lines tied to the same request — your activity page and monthly statements show model usage and tool usage side by side, per request. Each tool’s per-use rate is published on the Pricing page.
The server-tools API surface is the newest part of the gateway; field names follow the OpenRouter plugin idiom and will be frozen with the generated OpenAPI schema. Check this page and the changelog before hard-coding activation payloads.