Create an agent tool
Authentication
Path parameters
Request
Function name the model sees. Lowercase letters, digits and underscores, starting with a
letter. Unique per agent, compared case-insensitively (409 TOOL_NAME_CONFLICT otherwise).
Endpoint the provider calls, http or https. May contain {identifier} placeholders
filled from pathParams. Must not target private, loopback or reserved addresses: the
syntax is checked by validation and the hostname is also resolved through DNS (400 when it
resolves to a private IP).
Tool kind. Only webhook exists: the provider calls your HTTP endpoint.
HTTP method of the request. bodyParams are only sent with POST, PUT and PATCH;
with GET and DELETE they are stored but ignored.
Request headers. Only entries with value_type: fixed and a non-empty fixed_value are
sent; llm_prompt headers are ignored. Header values are returned by the read endpoints,
so treat them as visible to anyone with read access.
Values substituted into the matching {identifier} placeholders of url.
Query-string parameters. Model-filled ones are required unless required is false.
Top-level properties of the JSON request body (POST, PUT and PATCH only).
Declared authentication scheme, stored with authConfig. These two fields are not
currently part of the configuration pushed to the voice provider, so they do not
authenticate live calls today; send credentials as a fixed header instead.
Credentials matching authType. Encrypted at rest (AES-256-GCM, bound to the workspace),
never returned by any endpoint and excluded from agent version snapshots. On update the whole
object is replaced, and blank strings count as absent. Not currently part of the configuration
pushed to the voice provider.
When toolCallSound plays.
Sort key. Tools are listed and pushed by position, then by creation time.
Response
A webhook tool as returned by the API. Keys are snake_case (the request bodies use
camelCase). auth_config is never returned.

