---
title: "List Mcp Tools"
method: GET
path: "/v1/mcp/servers/{mcp_server_id}/tools"
tags: ["mcp"]
---

# List Mcp Tools

`GET /v1/mcp/servers/{mcp_server_id}/tools`

List the tools a stored MCP server exposes to the authenticated workspace.

Call this once per server when preparing a model or workflow run, and reuse
the answer for every tool from that server for the length of the run: there
is no cross-run cache in this version, so a later run rediscovers and
staleness stays bounded without any invalidation state to keep.

The response is the whole authorized catalog or an error. It is never
partial, because a caller would read a short catalog as the complete input
to its own authorization and risk policy. The single exception is
``warnings``, which names a tool whose descriptor Otari could not carry.

A tool the server removes after discovery may still be proposed from the
run's snapshot; execution then returns the remote server's own typed error.

## Path parameters

- `mcp_server_id` string, uuid, required

## Response `200`

Successful Response

- McpToolsResponse — The authorized catalog for one stored server. Carries no server URL, no credential, and no allowlist entry that the live catalog did not return (R-DISC-2). ``server_revision`` is what an application persists with a proposed call and sends back to ``/v1/mcp/execute``, so a stored-configuration change between the two is refused rather than executed.
  - `server_id` string, uuid, required
  - `server_revision` string, required — An opaque revision of the stored server's URL, credential, enabled state and allowlist. It detects Otari-side and platform-side configuration changes only: a remote server that changes its own catalog or a tool's behavior behind an unchanged URL will not move it.
  - `tools` McpToolDefinition[], required
    - `annotations` object, nullable — The server's MCP annotations, untrusted metadata rather than policy.
    - `description` string, nullable — The server's own description, untrusted.
    - `input_schema` object, required — The tool's MCP inputSchema, unmodified.
    - `name` string, required — The remote MCP tool name to send back to /v1/mcp/execute.
  - `warnings` McpToolWarning[], required
    - `code` string, required
    - `tool_name` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `402` — Payment Required
- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Content
- `429` — Too Many Requests
- `500` — Internal Server Error
- `502` — Bad Gateway
- `503` — Service Unavailable

## Changes

- **2026-09-10** `80c117c36f36` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/mozilla-ai/apis/otari/changes/v1/mcp/servers/:mcp_server_id/tools/get.md)

---

[API](https://skmtc.dev/mozilla-ai/apis/otari.md) · [All operations](https://skmtc.dev/mozilla-ai/apis/otari/llms.txt) · [OpenAPI document](https://skmtc.dev/mozilla-ai/apis/otari/revisions/80c117c36f36?raw)
