Skip to content
SupportLogin
List host-side tools

List host-side tools

GET/api/v1/tools

Lists the tools the orchestrator can run inside a turn, each annotated with whether this caller can use it. Tools the caller cannot use are returned with a reason rather than hidden.

ReturnsExpand Collapse
object: "list"
data: array of object { server_label, type, name, 10 more }
server_label: string

The server_label to reference this connector by in a request, e.g. { "type": "mcp", "server_label": "slack" }.

type: "mcp"

Responses API tool type to send in the tools array.

name: string
description: string
auth: "none" or "platform" or "caller" or "connection"

Where the outbound credential comes from. connection tools use a connection you authorise once, or an authorization passed on the request; caller tools always take it from the request.

One of the following:
"none"
"platform"
"caller"
"connection"
connect: "oauth" or "secret"

How a connection tool is connected: oauth through the browser flow at connect_path, secret by storing one with POST /connections. Null for tools that use no stored connection.

One of the following:
"oauth"
"secret"
connect_path: string

For an oauth tool, the GET path (under the API prefix) that starts its browser connect flow — usually /oauth/{server_label}/connect; Google Drive uses /oauth/google/connect, the shared “Connect Google”. Null for tools not connected through OAuth.

logo_url: string

URL of the connector’s logo, for showing it in a UI. Null for tools without one.

mode: "hosted_proxy" or "remote_mcp"

How the tool connects. hosted_proxy: we run the MCP server against the provider API. remote_mcp: we connect as a client to the vendor-hosted MCP server.

One of the following:
"hosted_proxy"
"remote_mcp"
default_require_approval: "always" or "never"

Approval posture applied when the request’s tool entry does not set require_approval. Defaults to never; callers may require approval for all tools or specific write tools.

One of the following:
"always"
"never"
required_scope: string

Scope a scoped API key must hold to use this tool.

available: boolean

Whether this caller can use the tool right now.

unavailable_reason: optional "not_implemented" or "disabled" or "requires_plan" or "requires_scope"

Why the tool is unavailable. Returned rather than omitting the tool, so a caller can tell “not on your plan” from “does not exist”.

One of the following:
"not_implemented"
"disabled"
"requires_plan"
"requires_scope"

List host-side tools

curl https://api.prod.adaptionlabs.ai/api/v1/tools \
    -H "Authorization: Bearer $ADAPTION_API_KEY"
{
  "object": "list",
  "data": [
    {
      "server_label": "slack",
      "type": "mcp",
      "name": "Slack",
      "description": "description",
      "auth": "connection",
      "connect": "oauth",
      "connect_path": "/oauth/slack/connect",
      "logo_url": "https://proteus-prod-public.s3.us-east-1.amazonaws.com/connectors/slack.svg",
      "mode": "remote_mcp",
      "default_require_approval": "never",
      "required_scope": "mcp:slack",
      "available": false,
      "unavailable_reason": "not_implemented"
    }
  ]
}
Returns Examples
{
  "object": "list",
  "data": [
    {
      "server_label": "slack",
      "type": "mcp",
      "name": "Slack",
      "description": "description",
      "auth": "connection",
      "connect": "oauth",
      "connect_path": "/oauth/slack/connect",
      "logo_url": "https://proteus-prod-public.s3.us-east-1.amazonaws.com/connectors/slack.svg",
      "mode": "remote_mcp",
      "default_require_approval": "never",
      "required_scope": "mcp:slack",
      "available": false,
      "unavailable_reason": "not_implemented"
    }
  ]
}