Knowledge & tools

Tools & function calling

Tools let an agent do things, not just talk: look up an order, create a ticket, hit your API. The agent decides when to call a tool based on the conversation, and you control how it runs.

What a tool is

A tool is a configured capability the agent can invoke. Tools come in types: built-in actions, credentialed integrations, and custom HTTP calls to your own endpoints. Browse the available types and any presets from the tool catalog, then create a configuration for the ones you want.

Ask User (previously Ask a Human) is a credential-free built-in tool for autonomous agents: it lets a run pause and ask you for a decision before acting, with the question appearing in the Review queue. Assign it like any other built-in; there's no configuration. An agent you chat with on the web console can ask you questions without it.
Verify Claim is a credential-free built-in tool that independently fact-checks a single claim against the bot's knowledge base, web search, and tool results before the agent asserts it. Assign it like any other built-in; there's no configuration. See the Verify Claim tool.
Web Search is a credential-free built-in tool for looking things up on the live web. If you see it in your tool catalog, assign it like any other built-in; there's no key to enter and nothing to configure. See web search tools.
Discover Capabilities is a credential-free built-in that lets an agent tell you which tools it could use but does not have turned on yet. It is meant for you and your team rather than for customers. It is handy while you are testing an agent, or on internal agents you use yourself, so the agent is aware of what it could do and can point you to a capability worth enabling. Assign it like any other built-in; there's nothing to configure.
Export Document is a credential-free built-in that saves an agent's writing as a file people can download: an EPUB e-book, a Word document (DOCX), or a PDF, named after its title. The file goes into your media library, and the agent's reply comes with a link to download it. If you see it in your tool catalog, assign it like any other built-in; there's nothing to configure.

Assign tools to a bot

When you create a bot from scratch, it starts with a set of built-in tools already assigned, so it can do useful things right away without any setup. You can keep, adjust, or remove any of them, and add more of your own on top. Each assignment can carry per-bot guidance and execution behavior:

  • Tool instructions: extra guidance for when and how to use it.
  • Speak during / after execution: whether a voice agent narrates the call.
  • Error handling: passthrough (let the agent see and react to the error) or hide.
  • Approval: whether an agent run pauses for a human before this tool runs. Never (default), Always, or When destructive (only for tools that delete data or send it externally). See approvals for what happens when a tool pauses.

Assigning replaces a bot's full tool set, so send the complete list you want. See the Tools API.

When a tool keeps failing

Tools fail now and then. A service is down, a key has expired, or a request was wrong. An agent doesn't keep hammering a tool that isn't working: if the same tool fails twice in one reply, with no successful call in between, the agent stops using tools for that reply. It then tells the person plainly what failed, what it did manage to finish, and what they can do next. Several failed calls made at the same moment count as one.

This works the same way on every channel, in live chats and in unattended runs. An autonomous run that ends like this shows as stopped early, with the reason the '<tool name>' tool kept failing.

For a custom HTTP tool, a response with an error status (400 or above) counts as a failed call, and its card in the conversation shows the error. The agent still sees the status and what the service sent back, so it can explain what went wrong.

Build a tool from your API docs

Don't want to hand-write a configuration? Tool discovery reads an API's documentation and drafts the configuration for you; review and save. It's available in the dashboard and over the API.

Test before you ship

Run a tool with sample parameters to confirm it works and returns what you expect, before you assign it to a live agent. The Test dialog fills in the parameters the tool accepts, and it really runs the tool against the live system, so start with a harmless call. Credentials and presets are covered next in Tool presets & credentials.

Classify what a tool can do

Each tool carries three safety flags that govern how it behaves in unattended runs: read-only (on by default; turn it off for a tool that writes, creates, or sends), destructive, and sends data externally. Destructive only applies when the tool isn't read-only. Classify a tool by what its credential can actually do (an SSH tool wired to a read-only account can be left non-destructive). These flags only restrict autonomous runs; interactive chat is never affected. (Tools imported from an MCP server may also carry an idempotent "safe to retry" annotation. It is informational only and has no behavioral effect today.)