Skip to content

Core Nodes

Every flow must have exactly one start node. It defines the entry point and trigger configuration.

{
"id": "start-1",
"type": "start",
"position": { "x": 0, "y": 0 },
"data": {
"type": "start",
"inputVariable": "input",
"welcomeMessage": "Hello! How can I help you?",
"trigger": {
"type": "manual"
}
}
}
FieldTypeDefaultDescription
inputVariablestring"input"Variable name receiving user input
welcomeMessagestringGreeting shown before first input
triggerTriggerConfigHow the flow is activated

The core workhorse — sends messages to an LLM with a system prompt, tools, and context.

{
"id": "agent-1",
"type": "agent",
"position": { "x": 0, "y": 200 },
"data": {
"type": "agent",
"modelId": "openai/gpt-4o-mini",
"systemPrompt": "You are a helpful assistant.",
"temperature": 0.7,
"maxTokens": 4096,
"responseTone": "professional",
"mcpTools": [],
"brandMemoryCollectionIds": [],
"outputVariable": "response",
"streaming": true,
"chatHistoryLimit": 20,
"maxToolIterations": 10
}
}
FieldTypeDefaultDescription
modelIdstringModel ID from OpenRouter (e.g., openai/gpt-4o)
systemPromptstringInstructions for the agent
temperaturenumber0.7Response randomness (0–2)
maxTokensnumber4096Maximum response length
responseTonestringTone: professional, casual, friendly, formal, technical, creative
mcpToolsAgentMCPServerConfig[][]MCP tool server configurations
maxToolIterationsnumber10Max tool-call loop iterations (max 50)
brandMemoryCollectionIdsstring[][]RAG collection IDs
outputVariablestringVariable to store the response
streamingbooleantrueStream the response
chatHistoryLimitnumberLimit chat history messages (0 = none)
routingStrategyRoutingStrategyDynamic model selection
fileAccessFileAccessConfigFile access permissions
{
"mcpTools": [
{
"catalogId": "memory",
"name": "Memory",
"transport": "streamable-http",
"url": "http://mcp-memory:8001/mcp",
"authType": "none",
"selectedTools": ["create_memory", "search_memory"],
"timeout": 30000
}
]
}

Routes input to different branches based on LLM classification.

{
"id": "classify-1",
"type": "classify",
"data": {
"type": "classify",
"modelId": "openai/gpt-4o-mini",
"categories": [
{ "id": "question", "name": "Question", "description": "User is asking a question" },
{ "id": "complaint", "name": "Complaint", "description": "User has a complaint" },
{ "id": "praise", "name": "Praise", "description": "User is giving positive feedback" }
],
"instructions": "Classify the user's intent",
"confidenceThreshold": 0.7
}
}

Each category ID becomes a source handle for outgoing edges.

Terminates the flow and returns output.

{
"id": "end-1",
"type": "end",
"data": {
"type": "end",
"status": "success",
"outputVariable": "response",
"targetPlatform": "twitter",
"platformConnectionId": "conn-123"
}
}
FieldTypeDescription
statussuccess | error | cancelledCompletion status
outputVariablestringVariable with the final output
messagestringStatic message (if no variable)
targetPlatformstringPlatform to post response to

Non-executable annotation node for documentation on the canvas.

{
"id": "note-1",
"type": "note",
"data": {
"type": "note",
"content": "This section handles user authentication",
"backgroundColor": "#1a1a2e",
"width": 300,
"height": 150
}
}

Delegates to a sub-agent by slug or ID.

{
"id": "ref-1",
"type": "agent_ref",
"data": {
"type": "agent_ref",
"agentRef": "research-assistant",
"refType": "slug",
"inputMapping": { "message": "{{input.query}}" },
"outputVariable": "research_result",
"inheritContext": true,
"timeout": 60000
}
}

Runs multiple agents and combines results.

{
"id": "pool-1",
"type": "agent_pool",
"data": {
"type": "agent_pool",
"agents": [
{ "ref": "writer", "refType": "slug", "weight": 1 },
{ "ref": "editor", "refType": "slug", "weight": 1 }
],
"strategy": "best_of",
"evaluationPrompt": "Pick the best written response",
"evaluatorModelId": "openai/gpt-4o",
"maxConcurrency": 3,
"agentTimeout": 30000
}
}

Strategies: best_of, aggregate, vote, fastest

Processes an array of items in parallel with a map agent, then reduces results.

{
"id": "mr-1",
"type": "map_reduce",
"data": {
"type": "map_reduce",
"inputVariable": "articles",
"mapAgentRef": "summarizer",
"mapAgentRefType": "slug",
"itemTemplate": "Summarize: {{item.title}}\n{{item.content}}",
"reduceStrategy": "concatenate",
"maxConcurrency": 5
}
}

Reduce strategies: concatenate, merge, custom