> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # ServerTool ## Example Usage ```typescript theme={null} import { ServerTool } from "@openrouter/sdk/models"; let value: ServerTool = { aliases: [], defaultEngine: "native", docsUrl: "https://upset-tenement.org", engines: [ { byok: "none", dataRegions: [ "global", "us", ], defaultMode: "auto", executedBy: "openrouter", id: "exa", name: "Exa", pricing: [], pricingDocUrl: null, pricingSource: "openrouter", }, ], fallbackEngine: "exa", id: "openrouter:web_search", inputSchema: { "properties": {}, "type": "object", }, name: "Web search", nativeSupport: { endpointCount: 18, modelCount: 12, }, outputSchema: { "properties": {}, "type": "object", }, parametersSchema: { "properties": {}, "type": "object", }, status: "active", summary: "", supportedApiFormats: [], toolDescription: "", }; ``` ## Fields | Field | Type | Required | Description | Example | | - | - | - | - | - | | `aliases` | [models.ServerToolInputName](../models/servertoolinputname.mdx)\[] | ✔️ | Every spelling accepted in `tools[].type` for this tool, including the canonical `id`, and what the call surfaces as under each | | | `defaultEngine` | *string* | ✔️ | The engine a request without `parameters.engine` (or with `engine: "auto"`) runs on; `native` applies where the endpoint runs the tool itself, otherwise `fallback_engine`. A request pinned to a data region skips either engine when its `data_regions` does not list that region. Null for a tool without an engine parameter | native | | `docsUrl` | *string* | ✔️ | N/A | | | `engines` | [models.ServerToolEngine](../models/servertoolengine.mdx)\[] | ✔️ | N/A | | | `fallbackEngine` | *string* | ✔️ | The engine an unpinned request runs on when `default_engine` is `native` and the endpoint does not run the tool itself; null when there is no fallback | exa | | `id` | *string* | ✔️ | Canonical `openrouter:*` name; the stable `tools[].type` on every API format in `supported_api_formats` | openrouter:web\_search | | `inputSchema` | Record\ | ✔️ | JSON Schema of the arguments the model emits when calling the tool | \{ "properties": \{}, "type": "object" } | | `name` | *string* | ✔️ | N/A | Web search | | `nativeSupport` | [models.ServerToolNativeSupport](../models/servertoolnativesupport.mdx) | ✔️ | Endpoints whose provider runs this tool itself during inference. Zero for tools no provider runs natively. | \{ "endpoint\_count": 18, "model\_count": 12 } | | `outputSchema` | Record\ | ✔️ | JSON Schema of the result returned to the model; null when undeclared | \{ "properties": \{}, "type": "object" } | | `parametersSchema` | Record\ | ✔️ | JSON Schema for the caller-side `tools[].parameters` object | \{ "properties": \{}, "type": "object" } | | `status` | [models.ServerToolStatus](../models/servertoolstatus.mdx) | ✔️ | N/A | active | | `summary` | *string* | ✔️ | One sentence for cards and search results; never sent to a model | | | `supportedApiFormats` | [models.ServerToolSupportedApiFormat](../models/servertoolsupportedapiformat.mdx)\[] | ✔️ | N/A | | | `toolDescription` | *string* | ✔️ | The description sent upstream as the function tool description | |