The three kinds
HTTP
Runs on your server. Works on every call type. The workhorse.
Client
Runs in your app over WebSocket. Browser and WebSocket calls only.
Built-in
Platform call control — hang up, send touch tones.
The description is the trigger
Thedescription is the only thing the model uses to decide whether to call
your tool. It is not documentation — it is the trigger condition.
Name the phrasings callers actually use. Most “my tool never fires” problems are
description problems, not wiring problems.
Lifecycle
Tools belong to the workspace, and agents borrow them. One tool can serve every agent you have — fix a bug once and they all get it.There is also a legacy
/tools surface on an older auth model that does not
support encrypted credentials. Use /agent-tools for anything new.Naming rules
modelToolName is the function name the model sees. It must match
^[a-zA-Z][a-zA-Z0-9_]*$ — start with a letter, then letters, numbers, and
underscores only.
Where to go next
Parameters
The three maps, and which one to use.
Authentication
Credentials, safely.
Agent responses
What the agent does when a tool returns.
Long-running tools
Work that cannot finish in 40 seconds.