> ## 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: "<value>",
  supportedApiFormats: [],
  toolDescription: "<value>",
};
```

## Fields

| Field | Type | Required | Description | Example |
| - | - | - | - | - |
| `aliases` | [models.ServerToolInputName](../models/servertoolinputname.mdx)\[] | :heavy\_check\_mark: | Every spelling accepted in `tools[].type` for this tool, including the canonical `id`, and what the call surfaces as under each | |
| `defaultEngine` | *string* | :heavy\_check\_mark: | 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* | :heavy\_check\_mark: | N/A | |
| `engines` | [models.ServerToolEngine](../models/servertoolengine.mdx)\[] | :heavy\_check\_mark: | N/A | |
| `fallbackEngine` | *string* | :heavy\_check\_mark: | 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* | :heavy\_check\_mark: | Canonical `openrouter:*` name; the stable `tools[].type` on every API format in `supported_api_formats` | openrouter:web\_search |
| `inputSchema` | Record\<string, *any*> | :heavy\_check\_mark: | JSON Schema of the arguments the model emits when calling the tool | \{<br />"properties": \{},<br />"type": "object"<br />} |
| `name` | *string* | :heavy\_check\_mark: | N/A | Web search |
| `nativeSupport` | [models.ServerToolNativeSupport](../models/servertoolnativesupport.mdx) | :heavy\_check\_mark: | Endpoints whose provider runs this tool itself during inference. Zero for tools no provider runs natively. | \{<br />"endpoint\_count": 18,<br />"model\_count": 12<br />} |
| `outputSchema` | Record\<string, *any*> | :heavy\_check\_mark: | JSON Schema of the result returned to the model; null when undeclared | \{<br />"properties": \{},<br />"type": "object"<br />} |
| `parametersSchema` | Record\<string, *any*> | :heavy\_check\_mark: | JSON Schema for the caller-side `tools[].parameters` object | \{<br />"properties": \{},<br />"type": "object"<br />} |
| `status` | [models.ServerToolStatus](../models/servertoolstatus.mdx) | :heavy\_check\_mark: | N/A | active |
| `summary` | *string* | :heavy\_check\_mark: | One sentence for cards and search results; never sent to a model | |
| `supportedApiFormats` | [models.ServerToolSupportedApiFormat](../models/servertoolsupportedapiformat.mdx)\[] | :heavy\_check\_mark: | N/A | |
| `toolDescription` | *string* | :heavy\_check\_mark: | The description sent upstream as the function tool description | |
