Automations & triggers
Beyond on-demand runs, agents can run on their own — on a clock or in response to something happening.
Automations (schedules)
An automation runs an agent on a cron schedule. You pick the agent, the schedule, an optional input message, and an owner — the automation runs as that owner, so it uses the owner’s connection credentials. You can also choose whether a schedule runs the agent’s stable version or its live draft.
Triggers (events)
A trigger fires an agent from an external event — a new Gmail message, a Slack mention, a GitHub PR event, and so on — via Composio. Like automations, an event run executes as the trigger’s owner.
Each fired run shows up in Runs attributed to its trigger (manual / schedule / event) so you can tell automated activity from hand runs.
External webhooks
An external webhook lets any outside system fire an agent by POSTing to a TAS URL — useful when the event source isn’t a Composio toolkit. Clay is the first-class example: Clay sends an enriched row to TAS, and the agent does the work (e.g. upsert Attio, enroll a sequence).
Create one on the agent’s detail page, under External webhooks:
- Add a webhook with a name (and, as an admin, an owner to run as). TAS shows the endpoint URL and a bearer token — copy both now; the token is shown only once (rotate to issue a new one).
- The caller POSTs to the URL with the token in an
Authorization: Bearerheader and a JSON body. TAS verifies the token, queues a run, and acks immediately (HTTP 202) — fire-and-forget. The agent receives the request body as its input (envelope:{ "trigger_type": "webhook", "webhook": "<name>", "payload": <your JSON> }), and its instructions +tools_moduleinterpret the fields.
curl -X POST https://<your-tas>/api/hooks/webhook/<id> \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"email":"sam@acme.com","domain":"acme.com"}'Wiring it into Clay
In Clay, add an HTTP API column: method POST, the endpoint URL, a header
Authorization: Bearer <token> (Clay’s encrypted “Headers account” is built for
this), and a JSON body mapped from your table columns. Clay fires a request per
row; each one queues a run.
The agent typically needs a Secret or connection to write results back (to Clay, Attio, etc.) from its Python tools — the webhook only starts the run.
Runs fired this way appear in Runs as Event. Bad/missing token → 401, a disabled webhook → 403, too many in a short window → 429.