conduyt_create_automation
Create a new automation by specifying its name and trigger event, then build the action graph after converting human-readable names to UUIDs.
Instructions
Create a new automation. Requires a name and trigger event. Use conduyt_resolve_names to convert human-readable names to UUIDs before building actions.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Automation type — 'native' for the built-in graph engine (use `actions`), 'n8n' for an external n8n webhook (requires n8nWorkflowId + n8nWebhookUrl). For agent-built automations use 'native'. | |
| name | Yes | Automation name | |
| actions | No | Actions graph — v1: [{type, config}], v2: {nodes:[], startNodeId} | |
| schedule | No | 5-field cron expression (required if triggerEvent='scheduled') | |
| description | No | Description of what this automation does | |
| graphVersion | No | Graph version — 1 (legacy array) or 2 (node graph). Default 1 | |
| triggerEvent | Yes | Trigger event (e.g. 'contact.created', 'deal.stage_changed', 'tag.added', 'scheduled', or 'message.understood' — fires when the copilot has read an inbound text/email and understood its intent; list them all with conduyt_list_automation_events) | |
| n8nWebhookUrl | No | n8n webhook URL (required when kind='n8n') | |
| n8nWorkflowId | No | n8n workflow ID (required when kind='n8n') | |
| scheduleTimezone | No | IANA timezone for scheduled triggers (e.g. 'America/Los_Angeles') | |
| triggerConditions | No | Conditions that must match for the trigger to fire. Scalar filters like tagId/pipelineId/bookingPageIds, plus per-event config: for 'message.understood' filter on the reading with { filters: [{ field: 'trigger.intent', operator: 'equals', value: 'document_sent' }] } (intents: interested, question, callback_requested, appointment_confirm, appointment_cancel, document_sent, objection, not_interested, opt_out, wrong_number, unclear; also trigger.channel sms|email and trigger.sentiment positive|neutral|negative; {{trigger.summary}} / {{trigger.ask}} are merge fields downstream); for 'contact.untouched' pass { untouchedDays: N } (integer 1-365) to fire once per quiet episode when a contact has had no outreach for N+ days — without it the trigger is the minutes-scale speed-to-lead alert. Unknown keys on native events are rejected at create/publish (422). |