---
title: "Get a server tool"
method: GET
path: "/tools/{name}"
tags: ["Tools"]
---

# Get a server tool

`GET /tools/{name}`

One server tool by canonical name or any accepted alias, with the models that run it natively.

## Path parameters

- `name` string, required — Canonical `openrouter:*` name or any accepted `tools[].type` alias

## Response `200`

The server tool

- GetToolResponse
  - `data` ServerToolDetails, required
    - `aliases` ServerToolInputName[], required — Every spelling accepted in `tools[].type` for this tool, including the canonical `id`, and what the call surfaces as under each
      - `api_formats` string[], required — API formats that accept this spelling in `tools[].type`
      - `output_names` ServerToolOutputName[], required — 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
        - `api_format` 'responses' | 'chat-completions' | 'anthropic-messages', required
        - `name` string — Anthropic Messages `server_tool_use` block `name`, when the call surfaces as one
        - `type` string, required — Output item `type` on Responses, content block `type` on Anthropic Messages, `reasoning_details[].type` on Chat Completions
      - `type` string, required
    - `default_engine` string, nullable, required — 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
    - `docs_url` string, uri, required
    - `engines` ServerToolEngine[], required
      - `byok` 'required' | 'optional' | 'none', required — 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`
      - `data_regions` string[], required — 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.
      - `default_mode` string, nullable, required — 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
      - `executed_by` 'provider' | 'openrouter' | 'client', required — Who runs the tool call: the model provider during inference (`provider`), OpenRouter (`openrouter`), or the caller's application after the call is returned (`client`).
      - `id` string, nullable, required — The `parameters.engine` value that selects this engine; null for the single engine of a tool without an engine parameter
      - `name` string, required
      - `pricing` ServerToolPrice[], required — The rows OpenRouter bills; non-empty exactly when `pricing_source` is `openrouter`
        - `max_units_per_call` integer, required
        - `mode` string, nullable, required — The `parameters.mode` this price applies to; null for prices that do not depend on the mode. A request bills exactly one `request` row
        - `price` string, required — USD per unit, as a decimal string
        - `unit` string, required
      - `pricing_doc_url` string, nullable, required — Where the rates are documented when `pricing_source` is `provider` or `byok`; null otherwise
      - `pricing_source` 'openrouter' | 'provider' | 'byok' | 'none', required — 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)
    - `fallback_engine` string, nullable, required — 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
    - `id` string, required — Canonical `openrouter:*` name; the stable `tools[].type` on every API format in `supported_api_formats`
    - `input_schema` object, required — JSON Schema of the arguments the model emits when calling the tool
    - `name` string, required
    - `native_support` object, required — Endpoints whose provider runs this tool itself during inference. Zero for tools no provider runs natively.
      - `endpoint_count` integer, required
      - `model_count` integer, required
      - `models` ServerToolNativeModel[], required
        - `providers` string[], required
        - `slug` string, required
    - `output_schema` object, nullable, required — JSON Schema of the result returned to the model; null when undeclared
    - `parameters_schema` object, required — JSON Schema for the caller-side `tools[].parameters` object
    - `status` 'active' | 'deprecated', required
    - `summary` string, required — One sentence for cards and search results; never sent to a model
    - `supported_api_formats` string[], required
    - `tool_description` string, required — The description sent upstream as the function tool description

## Other responses

- `308` — An alias was given; `Location` is the canonical tool URL
- `401` — Unauthorized - Authentication required or invalid credentials
- `403` — Forbidden - Authentication successful but insufficient permissions
- `404` — Not Found - Resource does not exist
- `500` — Internal Server Error - Unexpected server error

## Changes

- **2026-09-29** `79c170c680ed` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openrouterteam/apis/openrouter-api/changes/tools/:name/get.md)

---

[API](https://skmtc.dev/openrouterteam/apis/openrouter-api.md) · [All operations](https://skmtc.dev/openrouterteam/apis/openrouter-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openrouterteam/apis/openrouter-api/revisions/ae97b5c6983d?raw)
