get_custom_tool
Fetch one custom tool's full connector definition by its name (as shown by
list_custom_tools): the HTTP method, the URL / header / body
templates, the input schema, and the auth scheme. Use it to inspect a tool before editing, or
to copy its definition.
The auth secret is never returned — only the auth type (a bearer token, header, or basic credential is set in the dashboard, never exposed over MCP).
You can read any tool you can see, including one from your organization's shared catalogue. A tool you can't see reads as not found — its existence is never revealed.
The name is caller-relative: bare selects personal content for a standalone credential and the
organization catalogue for an organization credential; me/name selects the represented
member's private organization space, and <team>/name selects a bound team.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The tool to fetch, named exactly as list_custom_tools shows it. |
Response
| Field | Type | Description |
|---|---|---|
name | string | The tool's name. |
description | string | The tool's description, when it has one. |
http_method | string | The HTTP method of the outbound request. |
url_template | string | The URL template, with {placeholder} substitution. |
headers | object | Header name → value-template map. |
body_template | string | The request-body template, when the tool sends a body. |
input_schema | object | The JSON Schema describing the tool's arguments. |
auth | object | The auth scheme — its type, plus header_name for header auth. Never the secret. |
Example
{
"name": "weather"
}
Result:
{
"name": "weather",
"description": "Fetch the weather for a city",
"http_method": "GET",
"url_template": "https://api.example.com/weather/{city}",
"headers": {},
"input_schema": { "type": "object", "properties": { "city": { "type": "string" } } },
"auth": { "type": "none" }
}
Errors
Each failure carries a precise code in the response. A domain rejection — a not-found or a capability denial — is returned as a tool result with isError: true, so the agent can read the code and self-correct; malformed arguments and server faults are JSON-RPC protocol errors.
| Code | Cause | Delivered as |
|---|---|---|
custom_tool_not_found | No such tool is visible to you — it doesn't exist or is out of scope. | tool error (isError) |
capability_denied | The credential lacks the Tools capability required for governed tool use. | tool error (isError) |
invalid_arguments | The arguments are missing or don't match the input schema. | protocol error (invalid_params) |
internal_error | An unexpected error occurred. | protocol error (internal_error) |
Notes
- The auth secret is never part of the response. Secrets are set and kept in the dashboard.
- To copy a tool, read its definition here, then use
create_custom_tool. - Reading a tool counts as one tool call against your plan's tool-invocation allowance.