AI Chat Assistant
Use the AI Assistant to build, configure, debug, and analyze workflows through natural-language conversation.
The AI Chat Assistant is an interactive panel in the workflow editor that builds, edits, and explains your workflows through conversation. It's the same surface for "create a new automation from scratch", "adapt this template to my case", "what's wrong with this run?", and "review this workflow for issues" - the assistant detects which mode you're in from the message you send.
Accessing the Assistant
Click the Sparkles icon in the editor toolbar to open the Chat panel on the right side of the canvas. It uses the same slot as the Inspector and Execution Panel - only one is visible at a time, and switching tabs preserves panel state.
What the Assistant can do
| Mode | Triggered by | Output |
|---|---|---|
| Build | "create a workflow that…", "add a slack alert when…" | Adds nodes, edges, and node configs in place |
| Adapt | Opening a template, "set this up for my case" | Asks ONE focused setup question, applies one or two changes per turn |
| Debug | A failed run + "fix it" / /debug | Explains the failure in plain English and proposes one fix |
| Analyze | /analyze | Static review with findings grouped by Critical / Warning / Info |
| Explain | "what does this workflow do?" | Plain-language walkthrough of nodes and data flow |
You can switch modes mid-conversation - the assistant follows the latest user intent rather than locking into a behavior.
Workspace awareness
Every reply is grounded in the resources actually configured for the current workspace:
- AI Providers - only models from connected providers are suggested
- MCP Servers - only tools from servers assigned to this workspace; full param schemas are loaded
- Knowledge Bases - surfaced for Agent context or
ragAction nodes - Forms - surfaced as
triggerType: "form"candidates with their field shapes - Templates - clone-ready workflows from the org library
- Global Variables - referenced via
{{global.<key>}} - Last Execution Outputs - real shapes from the most recent successful run, used to write correct
{{steps.<id>.output.<field>}}references instead of inventing field names
If a required resource is missing, the assistant emits a request_setup card with an inline form (Save button included) instead of telling you to leave the chat.
Where values live - the lifecycle taxonomy
When the assistant needs a value (a project key, an API base URL, a date range, a model name), it picks where the value belongs from a fixed five-row table - the choice depends on the value's lifecycle, not on what's easiest to wire up:
| Lifecycle of the value | Right home | Reference syntax |
|---|---|---|
| Same on every run, configured once at workspace level (API base URL, default channel, bucket name) | Global Variable | {{global.<KEY>}} |
| Different on every run, supplied by whatever fires the workflow (project, customer, payload, form fields) | Trigger input | {{trigger.data.<field>}} or {{trigger.data.fields.<name>}} |
| Computed in-flow at runtime (timestamp, derived id, parsed substring, conditional default, reshaped JSON) | Transform Action | {{steps.<transform-id>.output.<field>}} |
| Truly fixed for the lifetime of this workflow definition (a specific report id, an enum) | Literal in node config | - |
| Per-iteration value inside a loop body | Loop variable | {{item}} / {{index}} |
If the lifecycle is ambiguous ("is this workflow always for one project, or many?") the assistant asks one clarifying question before committing - it doesn't default to globals just because they're easy. Globals that should have been trigger inputs leak across runs and force a separate workflow per variant.
Action cards (Apply / Apply all)
The assistant doesn't write changes silently. Every mutation it proposes - adding a node, updating a config, creating a global variable, requesting a missing setup - renders as a compact action card in the chat:
- The card shows the operation, the target node, and a diff/summary of what will change.
- Click Apply to execute that single action.
- When the assistant emits multiple cards in one turn (e.g. "add three nodes and wire them up"), the chat shows an Apply all button at the top of the group - one click, in order, with structural changes (
add_node,add_edge,update_node) batched and re-rendered as a single canvas update.
You stay in control: cards are not auto-applied. You can also reject a card or ask the assistant to revise it before applying.
Tool params - structured, not free-form
Tool / MCP-server actions in the chat use structured parameter forms rather than free-form JSON. When the assistant proposes a mcp Action node, the card surfaces the tool's full param schema with typed inputs, defaults, and inline validation.
- For params whose values come from upstream output, the assistant pre-fills
{{steps.<id>.output.<field>}}references using last-run inference - it inspects the real output shape from the most recent successful execution rather than guessing field names. - If a referenced upstream node hasn't run yet, the field stays empty and is marked so you can fill it in.
This means the configurations the assistant proposes are usually runnable as-is: the references resolve against shapes the executor has actually seen.
Propose-time validation
Before the assistant tells you "ready to run", it calls validate_requirements as a final checkpoint. The check runs at propose time - not at click-Apply time - so you don't apply a card and then discover later that a prerequisite is missing.
The validator surfaces:
- MCP servers referenced by the proposed graph but not yet configured / not assigned to this workspace
- Tools that exist on the server but require credentials the org hasn't set
- Globals referenced in node configs but not yet in the workspace's Global Context
- Forms referenced by
triggerType: "form"but not enabled on the workspace
Each item comes back as its own card (request_setup or set_global_variable) with a working save form, so you can resolve everything without leaving the chat.
Determinism
Chat completions use a fixed temperature of 0.3 for tool calls and structured output. Lower temperature gives near-reproducible, schema-conformant tool calls - important when the assistant is editing your workflow rather than writing prose. Conversational replies use the same setting; if you ask the same question twice, you'll get a similar (not identical) answer.
Slash commands
| Command | Effect |
|---|---|
/analyze | Run the AI Workflow Analyzer over the current workflow and explain findings |
/debug | Treat the most recent failed execution as context and propose one targeted fix |
You can also trigger these implicitly - "review this for problems" works the same as /analyze.
Tips
- Reference nodes by name, not internal id: "update the Fetch Data node" beats "update node-3".
- Talk in any language - the assistant answers in the language you wrote the message in.
- One ask per turn beats five. The assistant intentionally proposes one or two changes per reply when adapting a template; let it apply, see the canvas update, then continue.
- For build mode, start with the goal. "When a Slack message contains 'urgent', create a Jira ticket and assign it to me" gives the assistant enough to compose the graph end-to-end. "Improve my workflow" does not.