Configuring Step Types
A deep dive into each pipeline step type, its configuration tabs, and how to set it up.
Overview
When you click + Add Step inside a stage, the step detail dialog opens. Each step has a General tab (name, type, description, timeout, retries), and depending on the step type, additional tabs become available.
This guide covers every step type, its icon/color in the pipeline editor, and the configuration fields you will see in the dialog.
Step Type Reference
Inference
Brain icon, purple. Calls a language model with a system prompt and optional tools.
Tool Call
Wrench icon, amber. Directly invokes a tool without going through an LLM.
Source Query
Database icon, blue. Searches indexed sources using semantic similarity.
Source Ingest
Database icon, blue. Loads new data into the source index.
Source Get
Download icon, blue. Fetches specific sources by ID.
Memory Update
Database icon, green. Stores a memory entry for later retrieval.
Memory Query
Search icon, pink. Semantic search over stored memories.
Artifact Create
Package icon, orange. Creates and stores an artifact.
Artifact Query
Package icon, orange. Searches and retrieves artifacts.
Artifact Get
Download icon, orange. Fetches artifacts by ID (pinned/referenced).
Thread Update
MessageSquare icon, sky blue. Appends a message to a conversation thread.
Thread Query
MessageSquare icon, sky blue. Retrieves message history from a thread.
Approval
ShieldCheck icon, rose. Pauses execution and waits for human approval.
Inference
The inference step is the most commonly used step type. It calls a language model with your system prompt and any attached tools.
Dialog Tabs
| Tab | Purpose |
|---|---|
| General | Name, Step Type (locked after creation), Description, Timeout, Max Retries, Dependencies |
| Config | Logical model selection, Temperature, Max Tokens |
| Prompt | Full-screen Jinja2 editor with character count and variable count |
| Tools | Select MCP tool instances; set Tool Execution Mode and Max Tool Rounds |
| Conditions | Optional condition to control whether this step executes |
| Advanced | Execution Mode (Single / For Each), Event Streaming SSE config |
Prompt Tab
The Prompt tab presents a prompt.jinja2 editor with:
- A character count in the top-right corner
- A variable count badge showing how many
{{ }}variables are used - Syntax hints in the footer:
{{ }}for variable interpolation,{% %}for control flow - Context-aware variable autocomplete from the pipeline execution context
You are an assistant that answers questions about {{ endpoint_payload.topic }}.
Context from sources:
{{ stages.retrieval.steps.search.output }}
User question: {{ endpoint_payload.message }}Tools Tab
The Tools tab is labeled Tools & Skills and lets you attach MCP-compatible tool instances to the inference step.
- Search tool instances by name, slug, or description
- Click a row to toggle selection (checkbox + amber highlight)
- Selected tools appear as amber chips at the top
- When tools are selected, Execution Settings appears:
- Tool Execution Mode:
Single Turn(one tool call, then respond) orMulti Turn (Agentic)(loop until done) - Max Tool Rounds: 1--10 (only shown in multi-turn mode)
- Tool Execution Mode:
Advanced Tab -- For Each Mode
Under Execution Mode, you can switch from Single to For Each:
- Collection Path -- path to the array in context (e.g.,
stages.query.steps.search.chunks) - Item Alias -- variable name for the current item (e.g.,
chunk), accessible as{{ chunk }}in the prompt - Max Concurrency -- parallel executions (1--20)
- Item ID Path -- optional path to an ID field on each item
- Continue on Failure -- toggle to keep processing remaining items when one fails
Advanced Tab -- Event Streaming (SSE)
- Enable Event Publishing -- toggle on to publish step outputs as Server-Sent Events
- Stream Tokens -- (inference only) stream LLM tokens in real time
- Event Mode:
Domain Event(standardized name likeinference.completed) orCustom Event - Event Action:
Default,Primary(user-facing response), orSecondary(thinking/cognitive chain) - Event Message -- Jinja2 template for the event payload, with a variable picker
Tool Call
Directly invoke a tool without going through an LLM. Useful for deterministic operations.
Config Tab
- Tool Instance -- select which tool instance to call
- Input Mapping -- Jinja template to build the tool's input from execution context
Source Query
Searches your indexed sources using semantic similarity.
Config Tab
- Query -- Jinja template for the search query (e.g.,
{{ endpoint_payload.message }}) - Search Scope -- source-level, namespace, or workspace
- Source Selection -- optionally pin specific sources to search
- Top K -- number of chunks to retrieve
- Score Threshold -- minimum similarity score
- Reranking Model -- optional model for reranking results
- Logical Model -- embedding model to use for the query
Source Query vs Source Get
Use Source Query when you want semantic search across your knowledge base. Use Source Get when you already know the exact source IDs you need.
Source Ingest
Loads new content into the source index during pipeline execution.
Config Tab
- Content -- the document content to ingest (Jinja template)
- Metadata -- tags and metadata for the new source
Source Get
Fetches specific sources by their IDs.
Config Tab
- Source IDs -- list of source IDs or a Jinja template resolving to IDs (e.g.,
{{ endpoint_payload.source_ids }}) - Include Extracted Text -- toggle to include the full extracted text
- Include Metadata -- toggle to include source metadata
- Build Combined Context -- toggle to merge multiple sources into a single text block
- Context Separator -- string used between combined sources
Thread Update
Appends a message to a conversation thread.
Config Tab
- Content Template -- Jinja template for the message content
- Role -- message role (
user,assistant,system) - Source -- where the content originates (e.g.,
user_input)
Thread Query
Retrieves message history from a conversation thread.
Config Tab
- Max Messages -- number of recent messages to retrieve (default 20)
- Include System -- toggle to include system messages
- Include Tool -- toggle to include tool call messages
- Ascending -- toggle to reverse chronological order
Memory Update
Stores a memory entry scoped to a namespace.
Config Tab
- Type -- memory type: fact, preference, summary, entity, instruction, or custom
- Content -- Jinja template for the memory content
- Namespace -- where to store the memory
Memory Query
Searches stored memories using semantic similarity.
Config Tab
- Query -- Jinja template for the search query
- Types -- filter by memory type
- Top K -- number of entries to retrieve
Artifact Create
Creates and stores generated content (code, markdown, HTML, etc.).
Config Tab
- Name -- artifact name
- Type -- content type (code, markdown, html, image, etc.)
- Content -- Jinja template for the artifact body
- Scope -- execution, thread, or namespace
Artifact Query / Artifact Get
- Artifact Query -- search artifacts by query string within a scope
- Artifact Get -- fetch specific artifacts by ID, with toggles for content, file content, and metadata
Approval
Pauses pipeline execution and waits for a human to approve or reject before continuing.
Config Tab
- Approval Message -- what the approver sees (Jinja template)
- Timeout -- how long to wait before auto-rejecting
- Approvers -- who can approve (roles or specific users)
Step Conditions
Every step type supports a Conditions tab. Conditions control whether the step executes based on values in the execution context.
{
"field": "endpoint_payload.include_sources",
"operator": "equals",
"value": true
}Compound Conditions
You can combine multiple conditions with AND/OR logic for complex evaluation rules.