SWIRLS_

From intent to primitives

Say what you want in plain language; this table tells you which Swirls primitives build it.

Every Swirls system is a handful of primitives wired together. This page maps common intents to the primitives that express them. It works in both directions: humans use it to find the right blocks, and agents use it to turn a natural-language request into a .swirls file.

Run things

You wantPrimitives
Run a procedure the same way every timeworkflow
Run something every Monday at 9amschedule + trigger + workflow
Start a run when another app calls uswebhook + trigger + workflow
Start a run when someone fills in a formform + trigger + workflow
Do one step for every item in a list, or repeat until a conditionmap (sequential), fanout (concurrent), or while node (node types)
Pause until a person approvesreview
Retry, skip, or fall back when a step failsfailure policies
Call one workflow from anotherworkflow node (node types)

Add judgment

You wantPrimitives
A step that requires judgment, not exact rulesagent + an agent node in the workflow
Chat with an AI that can use our proceduresagent with workflows as tools
The agent answers in Slack or Linearagent + channel + connection
A chat assistant on our own websiteagent + web channel, see Embed agent chat
Give the agent your playbooks and domain knowledgeskill + agent skills:
Give the agent tools from a remote MCP servermcp + agent mcp:
Restrict what tools the agent uses for routine workagent profile (agents)
Let an agent delegate subtasksagent team (agents)

Keep state

You wantPrimitives
Save what a workflow produced and reuse itstream
See stream data as a spreadsheet, or add a per-row computed columnview
Shared files between workflows and agentsdisk
Read or write our existing databasepostgres + postgres nodes
Provision a relational database instead of running one ourselvesdatabase block + a type: database node to read or write it
Backfill or transform data after a schema changemigration block on the managed database
Give an agent a workspace it can exploredisk

Talk to other services

You wantPrimitives
Call an API with a key we holdsecret + credential profile (auth block) + http node
Post to Slack, Linear, Discord, LinkedIn, or Microsoft without managing keysconnection + http node
Call a provider API operation with typed inputs and outputsaction + integration node (node types)
Send email from a workflowemail node (node types)
Scrape a web pagescrape node (node types)
Discover URLs from a search querysearch node (node types)
Research the web with AI (multi-query search, URL extraction, entity discovery)parallel node — Parallel.ai API (node types)
Validate inputs and outputs between stepsschema

Control who gets in

You wantPrimitives
Only finance can use the bookkeeping agentrole + policy
Map our org chart onto the systemrole per group + policy grants
The execs reach everything, everyone else nothingallow exec -> agent * in a policy
Our employees sign in with our own identity providerOIDC federation + role mapping
Protect a public form with a passwordtype: basic credential profile on the form
Verify webhook calls with a shared secretwebhook secret: + header: (resources)

Give people a surface

You wantPrimitives
A portal over the system: chat with the agent, see the data, kick off runsapp with expose naming the agent, workflow, view, or database
Show a view as a page without building a frontendapp + view in its expose
Let the team read a managed database without the dashboard's operator toolingapp + database <name> { access read } in its expose

A worked example

"When a customer submits the contact form, summarize it with AI, post it to the sales Slack, and keep a record. Only the sales team can run the follow-up workflow manually."

Five intents, six primitives, one file you can review in a pull request.

On this page