How tools work
When a caller says something that matches a tool’s trigger (defined in itsdescription field), the agent fires that tool automatically mid-conversation.
The key thing to understand: tools are attached to LLM models, not to agents directly.
Tool types
Whenever a tool talks to a third-party provider —
send_sms, send_email, or schedule_calendar_event — you’ll need a credential_id pointing at an integration for that provider. api_call, transfer_call, extract_information, and end_call don’t need one.Step 1 — Create a tool
api_call
OneInbox supports fully custom tools — define any action your agent should take by pointing it at an HTTP endpoint you control. The api_call tool type lets your agent call your own API mid-conversation to look up data, push to a CRM, trigger business logic, or take any other action your backend supports.
There is no limit to what you can do: the agent extracts the right parameters from the conversation, calls your endpoint, and can use the response to decide what to say next.
Nested parameters (full JSON Schema)
parameters only supports a flat list of fields. If your endpoint needs nested objects, arrays, or enums, use parameters_schema instead — a raw JSON Schema object, validated server-side before save. Use one or the other, not both:
send_sms
Sends a text message when triggered. No credential_id needed — the SMS is sent from the same number used to make the call (your purchased OneInbox number or your Twilio/Telnyx number registered with OneInbox).
The SMS sends from the same number used for the call — make sure that number has SMS capability enabled. When purchasing a number via OneInbox or registering your own Twilio/Telnyx number, verify that it supports SMS before using this tool.
send_email
Sends an email when triggered. Use this to deliver lead summaries to your sales team, send follow-up emails to callers, or notify someone when a key moment happens in a call.
Want every call to auto-send a summary SMS/email without a tool call? Set
post_call_sms / post_call_email directly on the agent instead — see
Agents. Tools fire mid-call based on a trigger; post-call
config fires once, automatically, after every call ends.schedule_calendar_event
Books a calendar event when triggered. Use this when you want the agent to schedule a demo or follow-up meeting directly during the call.
The agent must collect the attendee’s name and email during the call —
both are required by Cal.com to complete the booking. If the requested slot
has no availability (e.g. outside your Cal.com working hours), the booking
fails with HTTP 400.
transfer_call
Transfers the caller to a real phone number. Use this when the caller asks to speak with a human or needs to reach a specific team. OneInbox supports two transfer modes — cold (default) and warm.
Cold transfer
The default. The caller is transferred instantly — no briefing, no hold music. Use this when speed matters more than context handoff (e.g. routing to a general support queue).transfer_config entirely is equivalent to transfer_config.mode: "cold".
Warm transfer
The agent calls the human first, gives them a briefing (caller’s name, reason for calling, any relevant context), then bridges the caller in once the human is ready. The caller hears hold music during the consult. Use this when the human needs context before picking up — e.g. transferring to a sales manager for a high-value lead.extract_information
Silently captures structured data from the conversation as it happens — the agent doesn’t announce it to the caller. Use this to save lead qualification data, capture names and emails, or record key facts from the call.
The captured data is available in the call record after the call ends.
end_call
Hangs up the call cleanly. Use this at the end of a flow — after a booking, after the caller says goodbye, or when the agent has completed its task. Without this tool, the call continues until the silence timeout is reached.
Step 2 — Attach tools to your LLM model
Creating a tool makes it available in your account, but the agent can’t use it yet. You need to attach it to the LLM model linked to your agent. Use thellm_id from your agent’s create response — this is the AI brain that decides what to do during a call.
llm_id picks up the change immediately — no restart required.
Detach tools from a model
To remove tools from an LLM model without replacing the entire list, useremove_tool_ids:
tool_ids adds, remove_tool_ids detaches.
Step 3 — Reference tools in your system prompt
Thedescription on each tool is the trigger signal — the LLM reads it to decide when to fire the tool automatically. The system prompt gives the agent context and ordering for how to use tools in the flow.
Reference tools by their name field (the name you set when creating the tool), not by tool ID. The LLM matches the name to the tool it has available and fires it at the right moment.
Reading tool results after a call
After the call ends, the extracted data and tool activity appear in the call record. Stop the call first, wait a few seconds, then fetch:messages and analysis are only available after the call ends — both are empty while the call is active.
Manage tools
List all tools
Retrieve every tool in your account. Useful for finding tool IDs when you need to attach or update them.Update a tool
Change a tool’s name, description, or config. For example, update the trigger description to make the agent more (or less) sensitive to firing it.Delete a tool
Remove a tool permanently. If the tool is attached to an LLM model, detach it first usingremove_tool_ids (see Step 2 above), then delete it.