These tools are offered in agent chats and in coding agent sessions. The circle agent, which answers
on its own in circles, only gets tools that need no approval.
Reading blocks
When the agent reads a conversation, each block appears as text inside a tag that names your app and the block type:- The text is the block’s stored projection: the agent text of every component in the tree. See Agent text.
- Text from your app is marked as data, so it can’t pose as instructions.
- Live counts from viewer inputs are added at read time.
- Parts limited by audience appear only when the member the agent works for passes that audience.
statusisopen,closed(final) orremoved.- The agent reads at most 20 blocks live per turn; beyond that, or when a block can’t be loaded, it
sees the block’s title and
summary.
textOf(block.tree).
Inserting blocks
Every block withinsertable: true becomes an insert tool named integration_insert_<slug>_<type>.
The tool’s description comes from the block’s title and description, and its arguments are the
block’s props schema plus an optional circle:
- Agent chats can’t hold blocks. The agent prepares the block and shows a preview in the chat; the member places it in a conversation with one click, or copies it. A prepared block nobody places is removed after 24 hours.
- The circle agent inserts the block into its reply in the circle.
block.created with origin: "agent".
Running actions
Each action rendered in a block becomes a tool namedintegration_action_<slug>_<type>_<action>. The agent calls it with the block’s id, and with args
and input when the action takes them:
args, it gets the only one. input (form values) is
free text the agent chooses, so actions with an input schema always ask for approval.
The action runs as the member the agent works for, with the same handler, validation and state
update as a button click. To keep an action away from agents, set agent: false; members
can still use it from the block.
Approval
An action call pauses the agent and shows an approval card in the chat unless all of these hold: the action isreadOnly, it isn’t destructive, it has no input, and it comes from a workspace
install. Development installs always ask.
- The card shows your app’s name and icon, what the action will do and a preview of the block it acts on.
- Only the member who started the agent’s turn can approve or deny it.
- On approval, the action runs as that member: your handler receives them as
actor. The result goes back to the agent, which continues its turn. - A card that nobody answers expires after 15 minutes, and the agent is told the action didn’t run.
actor, and your handler
should authorize them as it would for a click. See
Authorization.
A readOnly action may only return notice, fieldErrors, openUrl and options; Reintersect
drops any state, tree, actions, final, notify or revalidate it returns, so a read-only hint
can’t be used to change the block.
Hints
Changing an action’s
readOnly or destructive hint is part of the version’s access, so a version
that widens it waits for an admin to review it. See
Publishing new versions.
MCP tools
If your app provides an MCP server, its tools join the agent’s tools for members who have connected to it. Tools annotatedreadOnlyHint and openWorldHint: false run without asking;
other tools show an approval card. Workspace admins can set each tool to ask first, always ask, or
run without asking in Settings → Workspace → Integrations. When a tool asks the member for input
(an MCP elicitation form), the agent shows the form in the chat; requests that look like they ask for
a secret are refused.
Writing for agents
The agent knows only what your app tells it, so give it enough to act on:- Write the block
summaryas one sentence that states the current situation: “Ship v2: 3 go, 1 no go, deadline Thursday 17:00”. It’s also what notifications and Slack peers show. - Give every action a
descriptionthat says what it changes and when to use it. - Describe props and args with schema descriptions, including units and allowed values.
- Give icon-only buttons a
label, imagesalttext, tables alabeland charts atitle. They all become agent text. - Return a
noticefrom actions. The agent reads it as the action’s result.