> ## 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. # ServerToolDetails ## Example Usage ```typescript theme={null} import { ServerToolDetails } from "@openrouter/sdk/models"; let value: ServerToolDetails = { aliases: [ { apiFormats: [ "anthropic-messages", ], outputNames: [], type: "web_search_20250305", }, ], defaultEngine: "native", docsUrl: "https://mysterious-testing.info", engines: [], fallbackEngine: "exa", id: "openrouter:web_search", inputSchema: { "properties": {}, "type": "object", }, name: "Web search", nativeSupport: { endpointCount: 18, modelCount: 12, models: [ { providers: [ "Anthropic", "Google", ], slug: "anthropic/claude-4.5-sonnet", }, ], }, outputSchema: { "properties": {}, "type": "object", }, parametersSchema: { "properties": {}, "type": "object", }, status: "active", summary: "", supportedApiFormats: [ "anthropic-messages", ], 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.NativeSupport](../models/nativesupport.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.ServerToolDetailsStatus](../models/servertooldetailsstatus.mdx) | ✔️ | N/A | active | | `summary` | *string* | ✔️ | One sentence for cards and search results; never sent to a model | | | `supportedApiFormats` | [models.ServerToolDetailsSupportedApiFormat](../models/servertooldetailssupportedapiformat.mdx)\[] | ✔️ | N/A | | | `toolDescription` | *string* | ✔️ | The description sent upstream as the function tool description | |