All nodes/AI/Agents

AI Agent

Autonomous agent with tool support. Receives a message, calls connected tools (tool_out) and returns a response. Requires an LLM node via link_llm. Optional: memory (conversation history), skills/extensions (tools).

AI Agent
LLMOutput
MessageAs Tool
Memory
Extensions

Type in the graph: ai_agent

ExecSubgraph

An error branch can be enabled (expose_error_output) to handle failures on their own path.

Ports can be split into separate execution and data handles.

Try it

Minimal working workflow

Entry
AI Agent
LLM
Buffer MemoryS
Exit
  • Execute + Data
  • LLM
  • Memory
  • Execute + Data + Streaming
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

Use an AI Agent when the model has to decide for itself what to do before answering: look something up in a knowledge base, call a tool, read the history — and only then reply. Tools go into the Extensions port, conversation memory into Memory, the model into LLM. If you need neither tools nor memory, LLM Response is simpler and more predictable.

How it works

The agent works in rounds. The model answers; if it asked for tools, every call in that round runs in parallel, the results go back into the conversation, and the next round begins. “Max Tool Iterations” (10 by default) bounds the rounds, not the calls: a single round can carry a dozen tool calls. To bound the work rather than the exchanges, set “Max Tool Calls”.

When a limit is reached the agent does not fail: tools are withdrawn and the model is told to answer from what it already has — the turn always ends with an answer.

Every round appears in the run log as its own “Call N” row: input, tool calls, result and tokens.

Subagents. Turn on “Expose as Tool” and fill in “Tool Name” — the usual output is replaced by an As Tool port that plugs into another agent’s Extensions. By default a subagent uses its parent’s model; to give it its own, switch “LLM Source” to external and connect a separate LLM node.

Common mistakes

  • Connecting a tool with an execution edge. Tools go into the Extensions port on their own edge type, and the model — not the graph — decides the order of calls. The port accepts any number of edges.
  • Leaving a subagent’s “Tool Name” empty. The node fails validation: that name is what the model calls the subagent by.
  • Writing nodes.<id>.output.text. What travels on the edge and into templates is the answer string itself: {{ nodes.<id>.output }}.
  • Piling everything onto one agent. When the tool list grows, split part of it into a subagent or plug in a whole workflow with the WF tool node; several tools can be grouped with Toolset.

Inputs

PortWirePayloadNotes
LLMllmLLMlink_llm

LLM config from llm node (registry or workspace connection)

shown when is_subagent = false or llm_source ≠ "from_parent"

MessageinputExecute + Dataexecute_datamessage

Run trigger and user message for the agent

MemorymemoryMemorylink_memory

Memory node providing conversation history

ExtensionsextensionsExtensionlink_extension

accepts many edges

Outputs

PortWirePayloadNotes
OutputoutputExecute + Data + Streamingexecute_data_streamingobject

shown when is_subagent = false

As Tooltool_outExtensionlink_extension

shown when is_subagent = true

Configuration

FieldTypeDefaultDescription
Message Sourcemessage_sourcestringconnected

connected — from edge; template — from template text

Options: connected — Connected input, template — Template

User Message Templateuser_prompt_templatestring""

Used when message source is template. Supports {{inputs.message}}, {{nodes.xxx.output.yyy}}

supports templates

shown when message_source = template

System Promptsystem_promptstring""

System prompt for the agent

supports templates

Advanced
Max Tool Iterationsmax_iterationsinteger10

Max tool iterations

Max Tool Callsmax_tool_callsintegernull

Maximum tool calls this agent may execute (null = run budget). Max Tool Iterations only bounds rounds — one round can carry dozens of calls.

Expose as Tool (Subagent)is_subagentbooleanfalse

When enabled, this agent can be connected as a tool to other agents

Descriptiondescriptionstring""

What this agent does. Used as tool description when Subagent mode is enabled.

shown when is_subagent = true

LLM Sourcellm_sourcestringfrom_parent

from_parent uses parent agent LLM when subagent; external uses link_llm

Options: from_parent — From parent agent, external — External (link_llm)

shown when is_subagent = true

Tool Namesubagent_namestring""

Function name used when this agent is called as a tool

shown when is_subagent = true

Enable Thinkingenable_thinkingbooleanfalse

After each tool call round, inject a prompt to guide the model's reasoning before continuing

Thinking Promptthinking_promptstringAnalyze the tool results and think about the next steps.

Message injected after tool results to guide the model's reasoning

supports templates

shown when enable_thinking = true

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.
  • split_ports_in — Show separate execution and data input handles instead of one combined port.
  • split_ports_out — Show separate execution and data output handles instead of one combined port.

Ready-made examples using this node