Tool reference
Every action an agent can take. Each tool pill has three states: on (green), requires approval (amber), or off. See the Tool approvals page for how the approval flow works.
Reading the same account with several agents
Reading tools keep a private position per agent. They do not use the read/unread flag, because that flag is shared: if you open a group on your phone, or a second agent reads the same inbox first, the flag flips and the message would otherwise disappear for everyone else. So two agents can watch the same Gmail account or Telegram groups for different purposes and each will see every message once.
Google (Gmail and Calendar)
| Tool | What it does |
|---|---|
read_unread_emails | Lists inbox mail that arrived since the agent's last run, oldest first: sender, subject, date and a short preview snippet. Mail you have already opened yourself is still included. Only considers mail received on or after the day the agent was created — older backlog is out of scope. Skips anything this agent already handled, and tells you how many it skipped. Does not include the full body or attachments. |
search_emails | Searches with Gmail syntax such as from:bob after:2026/01/01. Unlike reading unread mail, this returns everything that matches - including messages already handled. |
send_email | Sends a new plain-text email. No formatting, no attachments. |
reply_to_email | Replies to a message in its existing thread, so the conversation stays together. |
archive_email | Removes a message from the inbox. It is not deleted and stays in All Mail. |
list_calendar_events | Lists events on the primary Google Calendar between two dates. Defaults to today. |
create_calendar_event | Creates an event on the primary calendar. Optional attendees get a Google invite. |
Telegram Bot
| Tool | What it does |
|---|---|
send_telegram_message | Sends a message to the chat linked at setup, or replies to a specific sender when the run was started by an inbound Telegram message. It cannot message someone who has never written to the bot. |
Telegram Account
| Tool | What it does |
|---|---|
send_telegram_message | Sends a message to any username or phone number, as you. |
read_telegram_messages | Every new message in your chats and groups since the agent's last run, grouped by chat and oldest first — whether or not you have read them yourself. Each line names the sender (name, @username, #id) and replies quote the message they answer. At most the newest 30 messages per chat; if a busy group had more, the tool says so. Your own messages and media contents are not included (a photo shows as [photo]). |
Twilio and Setod phone numbers
| Tool | What it does |
|---|---|
send_sms | Sends an SMS from the number. Recipients must be in international format, like +14155551234. Every message passes a safety check (credential requests, shortened or raw-IP links are blocked; borderline messages wait for your approval). On a Setod number, cold sends also need identity verification and count against the daily limits — see Setod phone numbers. |
place_call | Setod numbers only. Places an outbound call that the agent handles live, with a purpose and opening line. Needs an enabled Phone trigger on the agent, respects calling hours in the recipient's time zone (weekdays 9:00–21:30, weekends 10:00–18:00), hangs up on voicemail, and counts against voice minutes and the daily call cap. |
Slack
| Tool | What it does |
|---|---|
post_to_slack | Posts a message to the Slack channel linked at setup. Supports plain text and Slack markdown (*bold*, _italic_, `code`, ```block```). Dry-run mode simulates the post without sending. |
WhatsApp Business
| Tool | What it does |
|---|---|
send_whatsapp_message | Sends a text message to a WhatsApp number. Use E.164 format without the leading +, e.g. 15551234567. Only works within 24 hours of the customer's last message — after that the tool returns an error explaining the window is closed. |
read_whatsapp_messages | Returns recent inbound WhatsApp messages from customers who have written to your number, newest first. |
Appears when an Instagram Business connector is attached. Reads are free to call; the three replies start as requiring approval.
| Tool | What it does |
|---|---|
get_instagram_posts | Lists recent posts with their IDs (default 10, max 30). Call it first to find the post you want comments for. |
get_instagram_comments | Comments on one post, with comment IDs and authors (default 20, max 50). |
read_instagram_messages | Recent inbound direct messages, with the sender id needed to reply. |
reply_to_instagram_comment | Replies publicly under a comment. |
reply_to_instagram_dm | Replies to a direct message. Meta only allows a reply within 24 hours of the user's last message. |
hide_instagram_comment | Hides a comment from the public post without deleting it. |
delete_instagram_comment | Deletes a comment. Irreversible, so leave it on approval. |
Tables
Every table you create under Tables gives each attached agent four tools named after the table, for example leads_search, leads_get, leads_create and leads_update. Search filters by any column and returns matching rows with their ids; create and update respect the table's unique columns and types. There is no delete tool — rows are only deleted by people in the dashboard. Row counts are capped per plan (Free 5,000, Pro 50,000, Business unlimited).
MCP servers
Tools come from the frozen list on the connector - names and arguments depend on the server (GitHub, Linear, Notion, or a custom URL). Attach the connector on the Agent tab and enable the pills you want. Write-like names start as requiring approval. See the MCP servers page.
Web search
These two are different from the rest: there is no account to connect. Turn them on per agent under Settings, and they appear automatically.
| Tool | What it does |
|---|---|
search_web | Searches the web and returns titles, links and short snippets. Appears when Web search is on. How many results come back depends on your results setting. |
fetch_page | Reads a URL. Web pages come back as text with the markup stripped and every link kept as 'label (url)', so the agent can follow a listing through to its detail pages. Data files — CSV, JSON, XML — come back as-is, which is usually the better source when a site publishes one. Long content is truncated. Only appears when Read full pages is also on. |
fetch_and_query_csv | Downloads a CSV from a URL (up to 10 MB) and runs a read-only SQL query over it, so the agent never has to read a big file into its context. Called with the URL alone it returns the columns, types and a sample row; called with SQL it returns the matching rows (table name is always tbl, capped at 200 rows). Appears alongside fetch_page. |
Knowledge
Appears automatically once the agent has at least one indexed document on its Knowledge tab. No document, no tool.
| Tool | What it does |
|---|---|
search_knowledge | Searches the documents uploaded to this agent and returns the best-matching passages with the file each came from. |
query_data | Appears when a CSV or Excel file is uploaded. Runs one read-only SQL statement over those files as tables — filter, count, sort, join, total — and returns up to 200 rows. The agent is shown every table's columns and a sample row, so instructions should say what to find, not how. |
Memory
On by default (Keep exact state in the agent’s Settings). Everything stored is visible and editable on the agent’s Memory tab. See the memory page for when to use this versus Remember past runs.
| Tool | What it does |
|---|---|
memory_get | Reads one stored value by key. The tool's description already lists every key with a short preview, so the agent rarely needs to look before it reads. |
memory_set | Stores or overwrites one value (a number, text, list or object up to 16 KB). Saved immediately — a run that fails later keeps what it stored. Keys starting with shared: are visible to every agent in the workspace. |
memory_delete | Removes one key. |
memory_list | Lists stored keys with previews, optionally filtered by prefix. |
Two accounts of the same kind
If an agent has two Gmail accounts attached, the tool names get a suffix so the model can tell them apart - send_email_sales and send_email_support. Mention the account in your instructions when this happens.
A failing tool does not stop the run
When a tool errors, the error text is handed back to the model as the result and the run continues. That is usually what you want - a temporary Gmail hiccup should not abandon the whole job - but it does mean a run can finish as “succeeded” having quietly failed at one step. Only when every tool call in the run failed is the run itself marked as an error. The transcript shows each error.