Update an agent tool
Partially updates a tool: only the fields you send change. Array fields (headers,
pathParams, queryParams, bodyParams, dynamicVariableAssignments) and authConfig are
replaced as a whole, not merged, so send the complete list. type cannot be changed.
Sending authType: none erases the stored credentials; sending toolCallSound: null removes
the waiting sound.
Checks run in this order: agent exists and is provisioned (409 AGENT_PROVISIONING), tool
exists, a changed url (and any authConfig.tokenUrl) resolves to a public address, a new
name does not collide with another tool of the agent.
Side effects. Rebuilds and pushes the agent’s full tool list to the voice engine. If the push
fails, every column is restored to its previous value and the request answers 500. A changed
description changes when the model decides to call the tool from the next conversation on.
The mutation is written to the audit log.
Idempotency. Safe to retry: sending the same body again produces the same tool (only
updated_at moves).
Webhook events. audit.log_recorded for endpoints subscribed to it. See Webhooks.
Access
- Required scope:
write. - Rate limit: Configuration mutations — 10 requests/min per workspace, shared with other agent configuration writes, in addition to the General API limit. See Rate limits.
- Plan: Available on every plan.
Authentication
Workspace API key: jl_ followed by 64 lowercase hex characters, created by the workspace owner in the
dashboard (Settings → API Keys) and sent as Authorization: Bearer jl_.... The plaintext is shown once,
at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys.
Operations restricted to admins or owners reject keys without the full scope with 403, and say so in
their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret —
that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds.
See Authentication.
Path parameters
Request
New function name; must not collide with another tool of the agent (409).
New endpoint. When it changes, it is re-checked against private addresses through DNS.
New authentication scheme; none also erases stored credentials.
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.
New waiting sound, or null to remove it.
Full replacement list of response-to-variable mappings (stored only).
Response
A webhook tool as returned by the API. Keys are snake_case (the request bodies use
camelCase). auth_config is never returned.

