Tools Overview
Tools let your Phonic Agent take actions beyond conversation — retrieving information, calling your own functions, injecting extra context, transferring calls, or using Model Context Protocol (MCP) servers. You can create tools two ways, and they behave identically at runtime:
- In the dashboard — on the Tools page, click Create tool and pick a type.
- Through the API/SDK — call
tools.create(andtools.update,tools.list,tools.delete).
execution_mode) so you can move between the two freely.Tool Definition
Every custom tool shares the same core definition:
- Name (
name) — a unique, snake_case identifier (lowercase letters, numbers, and underscores). - Description (
description) — tells the agent what the tool does and when to call it. Max 2000 characters. - Parameters (
parameters) — the arguments the agent supplies when calling the tool. Each parameter has aname,description,is_requiredflag, and atypeofstring,integer,number,boolean, orarray(arrays also take anitem_type). - Timeout — how long the agent waits for a response before treating the call as failed. The exact field depends on the tool type (see each type’s guide).
The name, description, and parameters make up the tool schema the language model sees. How the tool is executed depends on its type.
call_info, conversation_id, from_phone_number, to_phone_number, and twilio_call_sid. These are supplied automatically for phone calls (see Webhook Tools → Call Context Information).Tool Types
Phonic supports the following tool types. In the dashboard, the Create tool menu exposes the first five; MCP tools and other built-ins are configured elsewhere. Each type has its own guide with fields and SDK examples.
The sections below (sync vs async, behavior configuration, attaching tools to agents) apply across all tool types.
Sync vs Async Tools
The execution mode (execution_mode) controls whether the agent waits for the tool before continuing:
- Sync — the agent waits for the tool to complete before continuing. Once the output is received, the agent uses it to generate a response. If the user speaks while the tool is executing, the tool call is interrupted. Good for tools that return information the agent needs right away.
- Webhook: the conversation waits for your endpoint’s response.
- WebSocket: the conversation waits for the
tool_call_outputmessage.
- Async — the agent continues the conversation without waiting. Async tools are not interrupted by user speech. When the result arrives it’s added to the agent’s context, but doesn’t immediately trigger a response. Good for background work (e.g. writing to a database) or fetching data that may be useful later.
Only custom_webhook and custom_websocket tools support choosing an execution mode. Context tools, transfer tools, and built-in tools always run in sync mode.
Tool Behavior Configuration
Beyond the schema and execution mode, tools expose switches that shape when and how the agent uses them. Each maps directly to a dashboard toggle and an API field. All default to the values below.
Using Tools with Your Agents
Once you’ve created tools, attach them to an agent by including their names in the tools array (and MCP servers in mcp_servers):
If you’ve included WebSocket tools in your agent, see the WebSocket Tools guide to learn how to handle those tool calls.