Skip to content

Node reference

A workflow is built from nodes, grouped in the palette by what they do. This is the catalogue — the same icons and colors you see in the editor. Every node reads earlier nodes’ values with {{ nodename.field }} references and publishes its own fields for later nodes to read the same way.

The nodes that move data in, out, and around your graph.

Declares the parameters your workflow takes — name, type, default, and description. You supply these values when you run the workflow. Required parameters (no default) are checked before a run starts. Publishes: parameters — read a value as {{ input.parameters.<name> }}.

Collects the final results. Map each output field to a value from another node, e.g. {{ summary.text }}. This is what a run returns and what gets delivered. Publishes: result — the mapping you defined.

Branches the workflow. It evaluates an expression and sends the flow down a true or false path, so later nodes only run when they should. Publishes: branch (which way it went) and value (the evaluated result).

Runs a section of the workflow once for each item in a list — sequentially or several at a time. Covered in detail in Loops. Publishes: results (a list, in input order) and count.

The nodes that think.

A single call to an AI model. Give it a prompt (with {{ }} references to other nodes), pick the model, and optionally set max tokens and reasoning effort. Use it for a discrete step — summarize, classify, rewrite, extract. Publishes: text (the model’s answer) and usage (token counts).

A model that can use tools in a loop until a task is done, not just answer once. Use it when a step needs to investigate, call tools, and decide its own next move. Covered in detail in Agents. Publishes: result/text (final answer), tool_calls, iterations, stop_reason, usage.

The nodes that compute.

Runs Python in a private sandbox. It reads upstream values from an inputs dict, can read files attached to the workflow (mounted read-only at inputs/), and assigns its answer to a variable called result. Any files it writes are uploaded and exposed for later nodes (see Delivery & files). Use it for anything code does best — transform data, call a library, do real math, render a file. Publishes: result (your result variable), stdout, stderr, and files.

Fills in a text template with values from other nodes, using {{ }} placeholders. Use it to assemble a prompt, an email body, or a final document from pieces. If a reference points at something that doesn’t exist, the run stops with a clear error instead of producing garbled text. Publishes: text — the rendered string.

Built-in things a workflow can do. (These are preset Tool nodes.)

Sends an email — to you by default, or to recipients you specify — with a Markdown, HTML, or plain-text body and optional attachments. See Delivery & files. Publishes: result and is_error.

Generates an image from a prompt — the same engine as image generation in chat. Publishes: result and is_error.

Searches the live web and returns results your other nodes can use. Publishes: result and is_error.

The nodes that reach outside Catalyst.

Calls a tool from one of your connected integrations (MCP) — or a built-in tool. You pick the tool and fill in its arguments from other nodes’ values. Publishes: result and is_error.

Makes an HTTP request — method, headers, body, timeout. Use it to call any API that doesn’t have a dedicated integration. A 4xx/5xx response marks the node as failed so the workflow can handle it. Publishes: status, body, and headers.

Runs another saved workflow as a single step and returns its output. Use it to factor a common sequence out once and reuse it everywhere — the same idea as a function call. Publishes: result and status.

You rarely draw every connection by hand. When one node references another with {{ othernode.field }}, Catalyst infers the dependency and runs things in the right order. If any node fails, the nodes that depend on it are skipped (and shown as skipped) rather than running on missing data — so a workflow fails loudly and clearly, never silently.

Want to see it built end to end? Start with Build your first workflow.