Skip to main content
List the tools a gateway exposes to you.

Request

Pass params.cursor to fetch a later page. Pages hold 50 tools; the cursor is an opaque offset returned as nextCursor.

Response

Tool names

The wire name is {namespace}_{tool} — one underscore, no double underscore. The namespace comes from the capability’s namespace field, which is unique per account. Do not assume a namespace from the capability’s display name — read it from GET /v1/capabilities.

Caching

cacheScope is private on every gateway, always — never public. The response is a function of the calling principal, not just the gateway. Two callers on one gateway legitimately receive different lists: autonomy annotations are computed per caller, and since workspace-anchor withholding landed, so is the membership of the list. A shared cache could serve an authenticated caller’s fuller tool list to an anonymous one. ttlMs is 300000 (5 minutes). It is a freshness hint, not a snapshot guarantee — the list may change before it expires, and pages carry no cross-page consistency guarantee. Because no list_changed notification is ever sent, this TTL is the only staleness signal a client gets. Staleness never grants authority. A stale allow annotation is a hint that the gate re-evaluates at dispatch and can still deny. Clients on protocol versions before 2026-07-28 receive both fields and will simply ignore them.

Withheld tools

Some tools cannot function without a workspace anchor. On an MCP gateway, an anonymous caller has no anchor, so those tools are removed from the list entirely rather than advertised and then failed at call time. They are also removed from the discovery corpus, so they are not callable by name either. Browser’s markdown, content, extract_json, scrape, and links work sessionlessly and stay listed. Guessing a withheld tool’s name and calling it returns an invalid-tool-name error — the same shape as a tool that does not exist, so the response does not confirm it is there.

Autonomy annotations

Each capability tool carries its static autonomy verdict:
Two properties to design around:
  • Denied tools stay listed. Omitting them would churn the surface on every policy edit and hide deliberate “exposed but never autonomous” intent.
  • No reason is on the wire. tools/list is reachable unauthenticated on public gateways, and the reason would name the account’s policy internals.
Meta-tools (the discovery and unified surfaces) are not namespaced capability tools and pass through unannotated. If the gateway cannot read the policy, the capability list, or the deny ledger, tools come back unannotated rather than annotated from partial inputs. Treat a missing _meta entry as “unknown”, never as “allowed”.

Presentation modes

A gateway renders its tools in one of four modes, set per gateway: Adaptive is the platform default. In Discovery and Unified modes the underlying tools are not directly callable — reaching them goes through the meta-tool.

Errors

Missing or invalid credentials fail during transport authentication, before this method runs — see Authentication.