Skip to main content
PATCH

Authorizations

x-api-key
string
header
required

Path Parameters

tool_id
string
required

The unique identifier of the tool. For system tools this is the tool's name (e.g. end_call).

Example:

"tabc123def456"

Body

application/json
name
string

New function name. Same naming and uniqueness rules as on create.

Example:

"get_current_weather"

description
string

New description. Max 10000 characters (combined with parameters).

parameters
object

Replace the JSON Schema for the tool's arguments. Reserved tavus_* property names are rejected.

delivery
object | null

Replace the delivery config. null resets to the default { app_message: true }.

trigger_type
enum<string>
Available options:
in_call,
post_call
origin
enum<string> | null
Available options:
llm,
vision,
audio
on_call
enum<string> | null
Available options:
generate_filler,
static_filler,
silent,
passthrough
on_resolve
enum<string> | null
Available options:
generate_response,
response_in_result,
add_to_context,
fire_and_forget
static_filler
string | null

Response

Tool updated

A standalone tool definition. Returned by every tool endpoint and embedded in the data array of the PAL-tool endpoints.

tool_id
string

Unique identifier for the tool. System tools use their name as the tool_id (e.g. end_call).

Example:

"tabc123def456"

owner_id
integer | null

Internal user ID that owns the tool. null for built-in system tools.

Example:

3675

name
string

Function name the LLM uses to call the tool.

Example:

"get_weather"

description
string

Natural-language description of the tool.

Example:

"Get the current weather for a city"

parameters
object

JSON Schema describing the tool's arguments.

Example:
delivery
object

How the tool call is dispatched. Exactly one channel must be enabled:

  • app_message: true alone - the call is delivered to your frontend over the Daily data channel as a conversation.tool_call event.
  • api set with app_message: false - Tavus makes an HTTPS request to api.url.

If delivery is omitted on create, the default is { "app_message": true }.

is_system_tool
boolean

Whether this is a built-in system tool. System tools cannot be modified or deleted.

Example:

false

trigger_type
enum<string>

When the tool runs. post_call tools execute server-side after the conversation ends via delivery.api (HTTPS webhook).

Available options:
in_call,
post_call
Example:

"in_call"

origin
enum<string> | null

Live modality for in-call tools. Null for post-call tools.

Available options:
llm,
vision,
audio
Example:

"llm"

on_call
enum<string> | null

What the PAL does while the tool call is in flight. Always null for perception tools.

Available options:
generate_filler,
static_filler,
silent,
passthrough
Example:

"generate_filler"

on_resolve
enum<string> | null

What the PAL does after the tool returns.

Available options:
generate_response,
response_in_result,
add_to_context,
fire_and_forget
Example:

"generate_response"

static_filler
string | null

Phrase the PAL speaks while the tool call is in flight. Set when on_call is static_filler.

Example:

"Sure, let me grab that for you."

created_at
string

ISO 8601 timestamp of when the tool was created.

Example:

"2026-05-15T10:30:00"

updated_at
string

ISO 8601 timestamp of when the tool was last updated.

Example:

"2026-05-15T10:30:00"