Tools
A tool lets an agent do something mid-conversation: look up an order, check a calendar, create a ticket. Without tools an agent can only talk about what it already knows.
Creating a tool
Tools are created once under Tools and reused by any agent. A tool has:
- a name and description - the model reads these to decide when to call it, so write them for the model, not for yourself
- a kind - what it actually does
- parameters - a JSON schema describing its arguments
Kinds
| Kind | What it does |
|---|---|
| HTTP | Calls your API. Method, URL, headers and body, with variables templated in. |
| Integration | Runs an action on a connection you configured under Settings - Integrations, such as booking an appointment or posting to Slack. The credentials stay encrypted and never appear in the tool. |
| Static | Returns a fixed value. Useful for testing and for constants. |
| MCP | Calls a tool on an MCP server. Press Discover and the server's own schema fills itself in. |
| Code | Runs a short script in an isolated sandbox with no network access. Available only when your operator has deployed the sandbox service. |
| Client | Resolved by the browser during a web call: the call is emitted to your page, your code answers it, and the answer goes back to the model. Use it for anything only the browser knows, such as the signed-in user or what is on screen. |
An Integration tool names its connection in the tool's own configuration. The model never picks the destination, only fills in the arguments, so a caller cannot talk an agent into posting somewhere it was not given.
A tool is what the agent calls during a conversation, to look something up or act on
it and then use the answer. Reacting to a call after it ends is a different job: use
an automation or a
webhook on session.completed.
Parameters
The parameters schema is the contract between the model and your tool. It is what the model fills in:
{
"type": "object",
"properties": {
"order_id": { "type": "string", "description": "The order number the caller gave" }
},
"required": ["order_id"]
}Describe each field. A field the model cannot understand is a field it will guess.
Giving a tool to an agent
Attach saved tools to the agent. During a conversation the model decides when to call them, calls them with arguments it extracted from what the caller said, and answers from the result.
The same tools work on a call and in chat - the agent behaves the same either way.
Tell the agent in the prompt when to use a tool: "When the caller asks about an order, use the Lookup Order tool and answer from what it returns." A tool the prompt never mentions gets called inconsistently.
Tools as a workflow step
In a workflow you can also place a tool node, which runs the tool at a fixed point in the flow rather than leaving the decision to the model. Use a node when the call must always happen; use an attached tool when the model should decide.
Safety
Outbound requests are validated before they are made: a tool cannot be pointed at internal or private network addresses. If you need a specific host allowed, that is an operator setting.
Every tool call and its result is recorded on the session, so you can see exactly what the agent called and what came back.