App action tools are in Beta. Owners and admins see them once Beta Features is on under Settings → Workspace, and the workspace plan must include Automations. Other members see assigned app action tools but can’t change them.
How an app action tool works
A hair salon wants callback requests from callers in a spreadsheet. It creates an app action tool for the Google Sheets action “Add row”. The spreadsheet and the sheet are fixed values, the assistant fills in the caller’s name and request, and the phone number comes from the caller ID. Before the assistant writes the row, it reads the details back and asks the caller to confirm them. The tool appears in Agent Tools next to your other tools, and you assign it to assistants like any other tool. It works in every conversation channel:- phone calls, web calls and WhatsApp calls
- web chat, including Test Chat
- every messaging channel, such as WhatsApp, SMS, Telegram or Slack
- email, both the assistant’s own address and connected mailboxes
Choose the right kind of tool
An app action tool covers exactly one action in one app. For anything else, another tool type fits better:
For a single action, an app action tool is faster than a callable automation. The assistant sends each field directly, so no extra AI step has to pull the values out of a free-text request.
Before you start
Check these requirements first:- You’re an owner or admin of the workspace.
- Beta Features is on under Settings → Workspace.
- The workspace plan includes Automations, and its Tools & MCP limit has room for another tool.
- The app is connected under Automations → Connections. You can also connect it while you create the tool.
Create an app action tool
1
Choose the app and the action
Open Agent Tools and select New tool → App (Beta). You can also start from the Apps card under Agent Connectors, where an app logo opens that app directly, or select Use in assistant next to an app under Automations → Connections. The editor lists your connected apps. To add another app, select Connect an app: the same app list as in Automations opens, and you return here after signing in. Then pick the action. If the app has more than one connection, choose one under Connection.
2
Name the tool and say when to use it
Name is prefilled, for example
google_sheets_add_row. In Use when, describe the situation in which the assistant should call the tool, for example “When the caller asks for a callback.” Use at least 10 characters. A specific sentence works better than a short label.3
Choose where each value comes from
Each field of the action has a Value from setting, described in the next section. Required fields come first. Optional fields start as Off under More fields.
4
Decide whether the assistant asks first
For actions that change data, Ask first is on. Leave it on unless the change needs no confirmation. The section on Ask first below explains how it works.
5
Check the preview and test
What the assistant sees shows the tool exactly as the assistant receives it. Run a test under Test before you save, as described below.
6
Save and assign
Select Create tool, then assign the tool to assistants. In an assistant’s settings, Advanced → Tools → Add tool lists your Connected apps: select one to open the same editor, or select Connect an app to connect another app first. The tool is assigned when you select Add to assistant. An app action tool can’t be a Tool step in a flow yet; assign it to the assistant instead.
Set where each value comes from
Value from decides who provides the value of a field:
For AI fields, Famulor writes a description from the app’s field information, including the expected format, such as
YYYY-MM-DD, and an example. Type your own description to replace it. Up to 12 fields can use AI. Keep it to 8 or fewer: fewer fields make calls faster and more reliable.
The assistant never sees Fixed value and Variable fields and can’t change them. A fixed text can contain variables such as {{caller_number}} and the values of AI fields, written with the parameter name shown in What the assistant sees, for example {{start_time}}. When you paste a link to a Google Sheets, Docs, Drive, Notion or Airtable item, Famulor keeps only its ID.
A few more rules apply to fields:
- Phone fields start with the variable Caller number. On messaging channels, it holds the contact’s phone number.
- Required fields can’t be Off.
- Some fields take table rows, for example the values of a new spreadsheet row or the attendees of an event. They show Columns. For a spreadsheet row, select Add column for each value and name the column. For a list such as attendees, the app sets the columns, for example Email and Name; select Add row for each entry. Choose AI, Fixed value or Variable for each cell. A required column needs a value in every row.
- In a list such as attendees, optional columns start Off. Turn them on for a row when you need them. Number and yes/no cells take AI or Fixed value.
Ask first
Actions that change data, such as adding a row or creating a contact, have Ask first turned on by default. Actions that only read data never ask. With Ask first on, a change runs like this:- The assistant calls the tool. Nothing changes yet: Famulor returns a summary of the values.
- The assistant reads the summary to the customer and asks whether it’s correct.
- The assistant calls the tool again with the same values. This call runs the action in the app if the condition of the channel is met:
- In messaging and email, the customer has sent a new message since the summary.
- On calls and in web chat, at least 4 seconds have passed since the first call. There, Famulor can’t tell whether the customer answered.
Test before you use it
Test every tool before you assign it to an assistant that talks to customers. Under Test, enter sample values for the AI and variable fields and select Run test:- Actions that read data run for real.
- Actions that change data first run as a dry run, which changes nothing and shows what the assistant would read back. Select Run for real and confirm to make the change in the app.
What the assistant receives
Famulor shortens every result before the assistant reads it. It removes internal IDs, version numbers and values that look like secrets. It also cuts texts to 500 characters and lists to 10 items, and it limits the whole result to 2,000 characters. Under Advanced → Result, choose Selected fields to keep only the fields you pick from a successful test result. Through the API,result_config.max_chars raises the limit to 3,500 characters. The assistant receives results marked as external data, not as instructions.
Limits
When the app doesn’t answer in time, the result depends on the action. An action that reads data didn’t run, and the assistant can try again. For a change, the outcome is unknown: the assistant doesn’t retry and tells the customer that the team will check.
Edit, reconnect or delete a tool
Open the tool in Agent Tools to change its fields, Use when or Ask first. Runs lists the tool’s recent runs from every channel, including messaging, email and tests. A prepared change that waits for the customer and a dry run don’t appear there, because nothing ran in the app. Failed runs and runs with an unknown outcome show as errors. To use a different action, create a new tool.- You can switch the tool to another connection of the same app.
- When a connection expires, the tool shows Reconnect and doesn’t run until you reconnect it. Select Reconnect and sign in again: Famulor renews the same connection and brings you back to the tool. If the tool has unsaved changes, Famulor first asks whether to discard them. If the sign-in fails, the tool shows the error and Reconnect again.
- You can’t delete a connection that app action tools use. Move the tools to another connection or delete them first.
- To delete an app action tool, first remove it from every assistant that uses it. Then delete it like any other tool.
- App action tools can’t be moved to another workspace. Create the tool again in the other workspace.
API, MCP, CLI and SDK
You can create, read, change and test app action tools without the dashboard. Every request needs an owner or admin credential. Listing and reading actions, and creating, changing or testing a tool, also need a workspace plan with Automations. Listing actions and reading an action need the scopeautomations:read, reading a tool needs assistants:read, and creating, changing or testing a tool needs both assistants:write and automations:write. As in the dashboard, creating a tool also needs Beta Features.
App action tools also appear in
GET /api/v1/tools with an app_action summary. Assign them with PUT /api/v1/assistants/{id}/tools, or pass assistant_id when you create the tool; an unknown assistant returns 404 before the tool is created. GET /api/v1/tools/{id}/runs and the MCP tool list_tool_runs return the runs shown under Runs. Remove a tool from its assistants, then delete it with DELETE /api/v1/tools/{id}. The general PATCH /api/v1/tools/{id} can still rename a tool or turn it on and off; any other change there returns 409. The general test, POST /api/v1/tools/test or test_tool, also returns 409 for an app action tool.
Create a tool with the API
First, list the actions of a connection.q searches by name. Actions that delete data aren’t listed.
get-app-action. They list the action’s fields, each with its key, path, param and a suggested mode. In the create request, send only the fields you want to change, identified by path or key. You can set mode, value, variable and description; all other fields keep their suggested setting. This request creates the tool and assigns it to an assistant:
confirmation is ask_first or none; actions that read data never ask. To make sure the action hasn’t changed since you read it, also send its version: the request then fails if the action has a newer version. Save the body as tool.json and send it with famulor create-app-action-tool --input tool.json or POST /api/v1/tools/app-actions.
Then test the tool. values holds sample values for the AI and variable fields. Use each field’s param, the parameter name the assistant sees, not its key. The two often differ: the field startTime has the param start_time, and a column takes the name of the column, such as name. For a variable field, the variable name, such as caller_number, works too:
mode is dry_run, the default, or live. For an action that changes data, a live test also needs "confirm_write": true and changes real data in the app. The response contains model_text, the exact text the assistant would receive. For an action that changes data, read_back lists what the assistant would read back, also in a dry run.
Next steps
Agent Tools
Assign, edit and monitor all of your workspace’s tools
App Catalog
Connect apps and see what they can do in automations