Update a tool
Revision-protected partial update. type is immutable. Sending ••• for a secret keeps the stored value. A stale revision returns 409 revision_conflict. Required scope: assistants:write.
Authorizations
API key (fam_..., created under Settings → API Keys) or an OAuth 2.0 access token (fam_at_...). Keys can be restricted to scopes such as assistants:read, calls:write, campaigns:write, automations:read, dashboards:read, dashboards:write, leads:write, segments:write, loop:read, loop:write, phone_numbers:write, sip_trunks:write, knowledge:write, voices:read, billing:read, settings:write, platform:read, platform:write; a *:write scope implies the matching *:read. Automation and dashboard endpoints also accept the legacy calls:* scope. Keys without scope restrictions have full access.
Path Parameters
Tool ID.
Body
Create/update payload for a reusable tool. On update, type is immutable and sending ••• for a secret config value keeps the stored value unchanged.
Required for PATCH to prevent lost concurrent updates.
x >= 1Tool name — becomes the LLM function name.
^[a-zA-Z][a-zA-Z0-9_-]{0,63}$What the tool does — shown to the LLM as the function description.
1000api = HTTP API tool, mcp = external MCP server, builtin = built-in capability (call transfer & co.). Immutable after creation.
api, mcp, builtin Type-specific configuration. api: { method, url, headers, parameters[], static_values, response_mapping, timeout_ms, async, filler_phrase, speak_after }. speak_after (default true): when false, the tool completes silently without an LLM spoken reply. mcp: { url, auth_type, auth_header_name, auth_value_encrypted, allowed_tools[], tool_options: { [toolName]: { cancellable, on_duplicate, report_progress } }, timeout_ms }; on_duplicate is allow, reject, replace, or confirm, and replace requires cancellation. builtin: exactly one built-in tool item { type: call_transfer|warm_call_transfer|end_call|…|collect_payment_card|set_variable, description?, stripe_connection_id? for collect_payment_card, allowed_keys? for set_variable, ... } — same shape as one element of an assistant's builtin_tools array; secrets are masked as ••• in responses.
Whether the tool is active (default true).
Response
The updated tool (secret values masked).
A reusable tool of the account. Secret values inside config (auth values, header values) are always masked as •••.