ctx.tools.
One exception: Goal Check rows under the Goals & Handoff channel are not event
actions — they are per-goal verification code whose return value is the verdict,
stored on the goal itself (Purpose page) and merely editable here too. See
Goals & Goal Checks.
Creating an event action
- Pick a channel / category (Conversation, Tools, Goals & Handoff, Billing, Automation, Email, Messaging, Feeds, Webhook, or Connectors).
- Pick an event within that channel. The info box shows exactly what data the event passes to your script.
- Click Create action, then write your script in the editor on the right.
The script
Your code defineshandle(event, ctx):
event— the event payload. Every field is documented in the info box next to the event selector.ctx.tools.<name>(input)— call the agent’s tools (send email, read mail, web search, memory, run code, and more). Calls are billed and rate-limited exactly as when the agent calls them.ctx.audit(event, data)— record a structured note.
async def handle(event, ctx)); the language is
auto-detected and selectable per action.
Channels & events
Actions run fire-and-forget and cannot block, drop, or rewrite an event. To gate or
transform inbound messages, use the event pre-processor;
to control the chat flow, use Hooks.