> ## 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. # List server tools > Lists every server tool OpenRouter can run on behalf of a model: accepted `tools[].type` spellings per API format, the engines behind it with their pricing, and how many endpoints run it natively. ## OpenAPI ````yaml /openapi/openapi.yaml get /tools openapi: 3.1.0 info: contact: email: support@openrouter.ai name: OpenRouter Support url: https://openrouter.ai/docs description: OpenAI-compatible API with additional OpenRouter features license: name: MIT url: https://opensource.org/licenses/MIT title: OpenRouter API version: 1.0.0 servers: - description: Production server url: https://openrouter.ai/api/v1 x-speakeasy-server-id: production security: - apiKey: [] tags: - description: API key management endpoints name: API Keys - description: Analytics and usage endpoints name: Analytics - description: Anthropic Messages endpoints name: Anthropic Messages - description: BYOK endpoints name: BYOK - description: >- Submit, list, poll, and delete asynchronous batches of inference requests. See https://openrouter.ai/docs/batch-quickstart. name: Batch - description: Benchmarks endpoints name: Benchmarks - description: Chat completion endpoints name: Chat - description: Task classification market-share endpoints name: Classifications - description: Containers endpoints name: Containers - description: Credit management endpoints name: Credits - description: >- Public OpenRouter usage datasets. Data returned by these endpoints is licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): reuse and republish it, including commercially, with attribution to OpenRouter. name: Datasets - description: Text embedding endpoints name: Embeddings - description: Endpoint information name: Endpoints - description: External Users endpoints name: External Users - description: Files endpoints name: Files - description: Generation history endpoints name: Generations - description: Guardrail Policies endpoints name: Guardrail Policies - description: Guardrails endpoints name: Guardrails - description: Images endpoints name: Images - description: Model information endpoints name: Models - description: OAuth authentication endpoints name: OAuth - description: Observability endpoints name: Observability - description: Organization endpoints name: Organization - description: Presets endpoints name: Presets - description: Private Endpoints endpoints name: Private Endpoints - description: Private Providers endpoints name: Private Providers - description: Provider information endpoints name: Providers - description: Rerank endpoints name: Rerank - description: OpenAI-compatible Responses API endpoints name: Responses - description: >- Management endpoints for SCIM group-to-workspace mappings, authenticated with a management key. These are not the SCIM 2.0 connector endpoints for your identity provider. In your identity provider, enter the SCIM endpoint URL shown when you enable provisioning under Settings > Members > SCIM Mappings. See https://openrouter.ai/docs/guides/features/scim-mappings#set-up-provisioning. name: SCIM - description: Speech-to-text endpoints name: STT x-displayName: Transcriptions - description: >- System One endpoints for models such as Jev, compatible with the TypeSafe SDKs. See https://openrouter.ai/docs/guides/community/typesafe-sdk. name: SystemOne x-displayName: System One - description: Text-to-speech endpoints name: TTS x-displayName: Speech - description: >- The catalog of server tools OpenRouter runs on behalf of a model: accepted `tools[].type` spellings per API format, engines and pricing, and which endpoints run each tool natively. See https://openrouter.ai/docs/guides/features/server-tools. name: Tools - description: >- Store host-bound secrets for a workspace or for one intern. Scope is selected by the API key. Responses return metadata only, never secret values. See https://openrouter.ai/docs/guides/ori/vault. name: Vault - description: Video Generation endpoints name: Video Generation - description: Workspaces endpoints name: Workspaces - description: Alpha feature endpoints for Decisions requests name: alpha.decisions - description: Alpha feature endpoints for Extractions requests name: alpha.extractions externalDocs: description: OpenRouter Documentation url: https://openrouter.ai/docs paths: /tools: get: tags: - Tools summary: List server tools description: >- Lists every server tool OpenRouter can run on behalf of a model: accepted `tools[].type` spellings per API format, the engines behind it with their pricing, and how many endpoints run it natively. operationId: listTools parameters: - description: >- Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned in: query name: offset required: false schema: default: 0 description: >- Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned example: 0 minimum: 0 type: - integer - 'null' - description: >- Maximum number of records to return (max 100). When both offset and limit are omitted, the full list is returned in: query name: limit required: false schema: default: 50 description: >- Maximum number of records to return (max 100). When both offset and limit are omitted, the full list is returned example: 50 maximum: 100 minimum: 1 type: integer - description: Only tools usable on this API format in: query name: api_format required: false schema: description: Only tools usable on this API format enum: - responses - chat-completions - anthropic-messages example: responses type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ListToolsResponse' description: The server tool catalog '401': content: application/json: example: error: code: 401 message: Missing Authentication header schema: $ref: '#/components/schemas/UnauthorizedResponse' description: Unauthorized - Authentication required or invalid credentials '403': content: application/json: example: error: code: 403 message: Only management keys can perform this operation schema: $ref: '#/components/schemas/ForbiddenResponse' description: Forbidden - Authentication successful but insufficient permissions '404': content: application/json: example: error: code: 404 message: Resource not found schema: $ref: '#/components/schemas/NotFoundResponse' description: Not Found - Resource does not exist '500': content: application/json: example: error: code: 500 message: Internal Server Error schema: $ref: '#/components/schemas/InternalServerResponse' description: Internal Server Error - Unexpected server error security: - bearer: [] components: schemas: ListToolsResponse: properties: data: items: $ref: '#/components/schemas/ServerTool' type: array links: properties: next: description: >- URL for the next page of results, or null if this is the last page example: null type: - string - 'null' required: - next type: object total_count: description: Total number of tools example: 12 type: integer required: - data - total_count - links type: object UnauthorizedResponse: description: Unauthorized - Authentication required or invalid credentials example: error: code: 401 message: Missing Authentication header properties: error: $ref: '#/components/schemas/UnauthorizedResponseErrorData' openrouter_metadata: additionalProperties: {} type: - object - 'null' user_id: type: - string - 'null' required: - error type: object ForbiddenResponse: description: Forbidden - Authentication successful but insufficient permissions example: error: code: 403 message: Only management keys can perform this operation properties: error: $ref: '#/components/schemas/ForbiddenResponseErrorData' openrouter_metadata: additionalProperties: {} type: - object - 'null' user_id: type: - string - 'null' required: - error type: object NotFoundResponse: description: Not Found - Resource does not exist example: error: code: 404 message: Resource not found properties: error: $ref: '#/components/schemas/NotFoundResponseErrorData' openrouter_metadata: additionalProperties: {} type: - object - 'null' user_id: type: - string - 'null' required: - error type: object InternalServerResponse: description: Internal Server Error - Unexpected server error example: error: code: 500 message: Internal Server Error properties: error: $ref: '#/components/schemas/InternalServerResponseErrorData' openrouter_metadata: additionalProperties: {} type: - object - 'null' user_id: type: - string - 'null' required: - error type: object ServerTool: properties: aliases: description: >- Every spelling accepted in `tools[].type` for this tool, including the canonical `id`, and what the call surfaces as under each items: $ref: '#/components/schemas/ServerToolInputName' type: array default_engine: description: >- 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 example: native type: - string - 'null' docs_url: format: uri type: string engines: items: $ref: '#/components/schemas/ServerToolEngine' type: array fallback_engine: description: >- 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 example: exa type: - string - 'null' id: description: >- Canonical `openrouter:*` name; the stable `tools[].type` on every API format in `supported_api_formats` example: openrouter:web_search type: string input_schema: additionalProperties: {} description: JSON Schema of the arguments the model emits when calling the tool example: properties: {} type: object type: object name: example: Web search type: string native_support: $ref: '#/components/schemas/ServerToolNativeSupport' output_schema: additionalProperties: {} description: >- JSON Schema of the result returned to the model; null when undeclared example: properties: {} type: object type: - object - 'null' parameters_schema: additionalProperties: {} description: JSON Schema for the caller-side `tools[].parameters` object example: properties: {} type: object type: object status: enum: - active - deprecated example: active type: string summary: description: One sentence for cards and search results; never sent to a model type: string supported_api_formats: items: enum: - responses - chat-completions - anthropic-messages type: string type: array tool_description: description: The description sent upstream as the function tool description type: string required: - id - name - summary - tool_description - status - docs_url - aliases - supported_api_formats - default_engine - fallback_engine - parameters_schema - input_schema - output_schema - engines - native_support type: object UnauthorizedResponseErrorData: description: Error data for UnauthorizedResponse example: code: 401 message: Missing Authentication header properties: code: type: integer message: type: string metadata: additionalProperties: {} type: - object - 'null' required: - code - message type: object ForbiddenResponseErrorData: description: Error data for ForbiddenResponse example: code: 403 message: Only management keys can perform this operation properties: code: type: integer message: type: string metadata: additionalProperties: {} type: - object - 'null' required: - code - message type: object NotFoundResponseErrorData: description: Error data for NotFoundResponse example: code: 404 message: Resource not found properties: code: type: integer message: type: string metadata: additionalProperties: {} type: - object - 'null' required: - code - message type: object InternalServerResponseErrorData: description: Error data for InternalServerResponse example: code: 500 message: Internal Server Error properties: code: type: integer message: type: string metadata: additionalProperties: {} type: - object - 'null' required: - code - message type: object ServerToolInputName: properties: api_formats: description: API formats that accept this spelling in `tools[].type` items: enum: - responses - chat-completions - anthropic-messages type: string type: array output_names: description: >- What the call surfaces as on each accepting API format when requested under this spelling; a format is absent when the call is not visible to the caller items: $ref: '#/components/schemas/ServerToolOutputName' type: array type: example: web_search_20250305 type: string required: - type - api_formats - output_names type: object ServerToolEngine: properties: byok: description: >- Whether the engine needs the caller's own key, saved in plugin settings: `required` (OpenRouter holds none), `optional` (OpenRouter's key is used unless the caller saved one), or `none` enum: - required - optional - none example: none type: string data_regions: description: >- The data regions whose requests this engine serves without leaving the region. A request pinned to a region can only use engines that list it; `global` is always listed. example: - global - us items: enum: - global - europe - us type: string type: array default_mode: description: >- The `parameters.mode` a request without one runs and bills as; null for engines without modes. The `pricing[]` row with this `mode` is what an unmoded request bills example: auto type: - string - 'null' executed_by: $ref: '#/components/schemas/ServerToolExecutedBy' id: description: >- The `parameters.engine` value that selects this engine; null for the single engine of a tool without an engine parameter example: exa type: - string - 'null' name: example: Exa type: string pricing: description: >- The rows OpenRouter bills; non-empty exactly when `pricing_source` is `openrouter` items: $ref: '#/components/schemas/ServerToolPrice' type: array pricing_doc_url: description: >- Where the rates are documented when `pricing_source` is `provider` or `byok`; null otherwise example: null type: - string - 'null' pricing_source: description: >- Who bills the engine's calls beyond the model's tokens: `openrouter` (the `pricing` rows, from the caller's credits), `provider` (a per-call tool fee from the model's provider on the inference call, at its own rates), `byok` (the engine's vendor, against the caller's own key), or `none` (no charge) enum: - openrouter - provider - byok - none example: openrouter type: string required: - id - name - executed_by - data_regions - byok - default_mode - pricing_source - pricing_doc_url - pricing type: object ServerToolNativeSupport: description: >- Endpoints whose provider runs this tool itself during inference. Zero for tools no provider runs natively. example: endpoint_count: 18 model_count: 12 properties: endpoint_count: example: 18 type: integer model_count: example: 12 type: integer required: - endpoint_count - model_count type: object ServerToolOutputName: properties: api_format: enum: - responses - chat-completions - anthropic-messages type: string name: description: >- Anthropic Messages `server_tool_use` block `name`, when the call surfaces as one example: web_search type: string type: description: >- Output item `type` on Responses, content block `type` on Anthropic Messages, `reasoning_details[].type` on Chat Completions example: web_search_call type: string required: - api_format - type type: object ServerToolExecutedBy: description: >- Who runs the tool call: the model provider during inference (`provider`), OpenRouter (`openrouter`), or the caller's application after the call is returned (`client`). enum: - provider - openrouter - client example: openrouter type: string ServerToolPrice: properties: max_units_per_call: type: integer mode: description: >- The `parameters.mode` this price applies to; null for prices that do not depend on the mode. A request bills exactly one `request` row example: auto type: - string - 'null' price: description: USD per unit, as a decimal string example: '0.007' type: string unit: example: request type: string required: - mode - unit - price - max_units_per_call type: object securitySchemes: apiKey: description: API key as bearer token in Authorization header scheme: bearer type: http bearer: description: API key as bearer token in Authorization header scheme: bearer type: http ````