Skip to content

Studio block reference ​

This page explains the purpose, configuration, and outputs of the nine standard blocks. Availability depends on your organization. The palette may also offer other blocks with their own fields and outputs. See the workflow model for basic information, configuration, and links.

Simple message ​

Returns fixed text or text enriched with variables. Use it for a response without an LLM, a confirmation, a fallback, or temporary diagnostics.

FieldRequiredDescription
MessageYesReturned text; accepts variables and helpers

Output: message, for example {{simpleMessage-1.message}}.

txt
Hello {{userData.givenName}}, your request is: {{userMessage}}

To inspect a value during development:

txt
{{codeblock documents.body}}

Best practices: keep messages short, connect technical failures to a user-friendly message, and remove debug blocks before publication.

Common errors: an empty message, a misspelled variable, an unconnected fallback, or sensitive data exposed by a debug helper.

HTTP request ​

Calls an internal or external API to query a business service, run a specialized search, or send data.

Current RAG architecture

For RAG document search, use MCP Retriever with MCP - List tools and MCP - Call tools. The HTTP block remains useful for business APIs that do not provide an MCP interface.

HTTP request exchanges
100 %
HTTP request exchangesThe workflow runs the HTTP request. The API returns its status and response, then the block exposes body and metadata. Workflow. HTTP request. API1. Run the block2. URL, method, headers, body3. Status and response4. body, metadataWorkflowWorkflowHTTP requestHTTP requestAPIAPI
FieldRequiredDefaultDescription
URLYes-API address
HTTP methodYes-GET, POST, PUT, PATCH, or DELETE
HTTP headersNo{}JSON object containing headers
TimeoutYes30Timeout in seconds
Stop when request failsNotrueTriggers the failure branch
Accepted HTTP codesYes[200]JSON array of successful codes
Request body typeNorawraw, formData, or x-www-form-urlencoded
Request bodyNo-Data sent to the API
Response formatNoJSONJSON, Text, or Binary

Headers:

json
{
  "Authorization": "Bearer {{customParams.mcpAccessToken}}",
  "Content-Type": "application/json"
}

Accepted codes:

json
[200, 201, 204]

Search body:

json
{
  "query": "{{userMessage}}",
  "limit": 5
}

Outputs: body and metadata, for example {{http-1.body}}.

Best practices: test the API outside Studio, use a business alias such as customer-api, add the correct Content-Type, and connect After failure.

Common errors: invalid URL, malformed headers object or codes array, incorrect reference, wrong response format, or a timeout that is too short.

Data Sources ​

Selects the document or tabular sources to use and prepares their parameters for the block that will consume them.

FieldRequiredDescription
Embedding modelYesModel used by the sources; choose one with an index
Data sourcesYesOne or more sources compatible with the selected model
  1. Choose the embedding model first.
  2. Select the sources you need from the suggestions.
  3. Connect this block to the block that will use the sources, through its Contextual ports section.

A model marked no index provisioned cannot be selected. If no sources are offered, check their compatibility with the chosen model. After a model change, Studio removes sources that are no longer compatible: review the selection again.

The block prepares the selection’s parameters. Searching and answer generation are performed by the blocks or tools that use those parameters.

Outputs: llmConnectorId, dataSourceIds, index, embeddingModel, and dimensions. For example, {{dataSources-1.dataSourceIds}} is the list of selected source identifiers. The index, model name, and dimensions are filled automatically from the chosen model.

For a source connection, one Data Sources block can be connected to the consuming block; it can contain several sources. Follow the source and tool connection guide for the canvas steps.

Variables ​

Creates or recalculates values to simplify a reference, share data between blocks, or retain it during a conversation.

A single block can define several variables. The block is empty when added: click Add a variable for each value to create, and Delete the variable to remove one.

For each variable:

FieldRequiredDefaultDescription
ScopeYesRequestRequest or Conversation
NameYes-Unique variable name
ValueYes-Value or expression to store; accepts several lines

Request limits the value to the current execution. Conversation retains it across several messages.

txt
Variable 1
Scope: Request
Name: userEmail
Value: {{userData.email}}

Variable 2
Scope: Request
Name: supportGuidelines
Value:
Answer in English.
Always cite the source used.

This block directly creates {{userEmail}} and {{supportGuidelines}}. It does not expose traditional outputs prefixed with its identifier.

Best practices: prefer Request, use short names without spaces or special characters, and avoid duplicates, which are reported in the issues panel.

Condition ​

Selects a route according to one or more rules: data available, sufficient score, authorized profile, or tool calls requested.

Choose a route with a condition
100 %
Choose a route with a conditionEach case has an output. If no case matches, the Else output is used. Condition : Choose the next step : Case 1 : Case 2 : Fallback message. Block A. Block B. Simple message : Fallback messageCondition : Choose the next stepConditionChoose the next stepIfCase 1IfCase 2ElseFallback messageBlock ABlock ABlock BBlock BSimple message : Fallback messageSimple messageFallback message
FieldRequiredDescription
ExpressionYesRule to evaluate
Next blockYesDestination when the rule is true
ElseRecommendedDestination when no rule matches

The Expression field is not a text template: do not wrap the entire expression in {{ and }}.

NeedExpression
Tool calls are presentgt (length chatCompletion-1.genericToolCalls) 0
Score and email domainand (gte score 70) (match userData.email "@wikit\\.ai$")
High priority or urgent messageor (eq ticket.priority "high") (contains userMessage "urgent")
Between one and five documentsand (gte (length documents.body) 1) (lte (length documents.body) 5)
No document or low confidenceor (eq (length documents.body) 0) (lt confidenceScore 0.5)

Available operators include equality and inequality, gt/gte/lt/lte, and, or, not, match, and contains. To test for an empty list, compare its length with zero: eq (length myList) 0.

Outputs: hasMatch, matchedIndex, and nextStep.

Best practices: keep rules simple, clearly name destinations, provide an Else case, and test every branch.

LLM instruction ​

Prepares what is sent to the model: system instruction, history, documents, tools, and token budget. It prepares data but does not generate the final answer.

Prepare an LLM instruction
100 %
Prepare an LLM instructionThe instruction combines the message and history, plus documents and tools when enabled. User message : userMessage. History : conversationHistory. Documents : When enabled. Tools : When enabled. LLM instruction. instructionUser message : userMessageUser messageuserMessageHistory : conversationHistoryHistoryconversationHistoryDocuments : When enabledDocumentsWhen enabledTools : When enabledToolsWhen enabledLLM instructionLLM instructioninstructioninstruction
Main fieldRequiredDescription
LLM modelYesModel used to prepare and estimate the prompt
LLM connector nameYesFilled after selecting the model, or entered as a variable
InstructionNoSystem instruction with optional variables

To choose the model at runtime, enter a variable in LLM connector name, for example {{selectedModel}}. The LLM model list is then disabled and shows Defined by variable.

Advanced configurationDefaultDescription
Maximum tokens128000Prompt budget; accepts a fixed value or a variable
Tools{{listTools-1.tools}}Prefilled reference to adapt to the actual catalog or disable without MCP
Document configurationDisabledJSON array of documents to inject when needed
Expiration messages-Replacement for old documents/tool results

Document configuration is disabled when the block is added. Enable it only when injecting documents from a variable. Example:

json
[
  {
    "varName": "{{documents.body}}",
    "documentType": "elasticsearch",
    "expiresAfter": 3,
    "maxDocumentsTokens": 16000
  }
]

This configuration remains available for sources already stored in a variable and for legacy integrations. In new RAG workflows, MCP Retriever results are automatically appended to conversationHistory by MCP - Call tools; leave Document configuration disabled.

Tools: {{listTools-1.tools}}.

Outputs: raw, metadata, messages, instruction, tools, model, and maxTokens. A common reference is {{generatePrompt-1.instruction}}, or its alias equivalent. model returns the model used and maxTokens the applied budget, which is useful when these values are defined by a variable.

txt
Answer only from the provided documents.
User question: {{userMessage}}

Best practices: keep the instruction structured, separate rules from dynamic data, and enable documents or tools only when needed.

Common errors: no model selected, wrong document reference, tools enabled without an MCP catalog, invalid JSON, or insufficient token budget.

LLM request ​

Calls the model with the prepared instruction and produces a text answer or tool requests.

LLM request exchanges
100 %
LLM request exchangesThe request receives the instruction and calls the model, which returns content or tool calls. LLM instruction. LLM request. Model1. instruction2. Call the model3. content or genericToolCallsLLM instructionLLM instructionLLM requestLLM requestModelModel
Main fieldRequiredDefaultDescription
LLM modelYes-Generation model
LLM connector nameYes-Filled after selecting the model, or entered as a variable
Instruction variableYes-For example {{generatePrompt-1.instruction}}
LLM API URLYesLiteLLMCall endpoint

As with the LLM instruction, a variable entered in LLM connector name disables the LLM model list, which then shows Defined by variable.

Additional parametersDefaultDescription
HTTP headers-LLM API headers, as a JSON object
Timeout60Timeout in seconds
Temperature1Variation between 0 and 2
Maximum number of generated tokens-Maximum tokens produced by the model, reasoning included
Reasoning effortDisablednone, minimal, low, medium, high, xhigh, or max
StreamingtrueProgressive output
Tools{{listTools-1.tools}}Adapt to the actual catalog or disable without MCP
Strict modetrueEnforces tool schemas

A temperature of 0 suits factual answers; 0.5 favors stability; 1, the default, allows more variation; higher values make answers more creative and unpredictable.

Reasoning effort sets how long models that support it think before answering: higher effort improves complex tasks but increases response time and token usage. Keep Disable if you do not need it. Each model only accepts some of these values: an unsupported value makes the request fail and follow After failure.

Outputs: content, genericToolCalls, and metadata.

Best practices: place an LLM instruction immediately before this block, keep streaming enabled, and change the technical URL only when required.

MCP - List tools ​

Loads tools from one or more MCP servers so the model can request them later.

Load the MCP catalog
100 %
Load the MCP catalogThe list queries MCP servers and produces available tools and their routing. MCP - List tools. Server A. Server B. tools. toolServerRoutingMCP - List toolsMCP - List toolsServer AServer AServer BServer BtoolstoolstoolServerRoutingtoolServerRouting

For each server:

FieldRequiredDefaultDescription
MCP server nameYes-Business label
MCP server URLYes-MCP endpoint
MCP server headersNo{}Authentication and context
ToolsNo[]Allowed tools
MetaNo-Additional metadata, entered as key/value pairs

Use Get tools to query the server, then allow only the actions required by the workflow. An empty allowed-tools list leaves all of the server’s tools available.

Server headers:

json
{
  "Authorization": "{{customParams.mcpAuthorization}}"
}

In Meta, click Add Item for each metadata entry to send:

KeyValue
userEmail{{userData.email}}
channel{{customParams.source}}

The platform already sends organizationId, conversationId, llmAppId, queryExecutionId, workflowExecutionId, and userData to the server automatically. Do not use these keys in Meta: an entered value would replace the one provided by the platform.

Outputs: tools, toolServerRouting, and metadata.

This block can be placed in a path built one block at a time or connected to a block that offers a port for MCP tools. In the second case, it stays outside the main path; the consuming block prepares the catalog before using it. See the connection guide.

Common errors: wrong URL or token, invalid JSON, unavailable network access, tools not fetched, or an inconsistent selection.

MCP - Call tools ​

Runs calls requested by an LLM request. It consumes both genericToolCalls and the routing prepared by the tool catalog.

Execute requested tools
100 %
Execute requested toolsModel-requested calls and catalog routing supply the tool-call block, which produces results. LLM request. genericToolCalls. toolServerRouting. MCP - Call tools. toolCallResultsLLM requestLLM requestgenericToolCallsgenericToolCallstoolServerRoutingtoolServerRoutingMCP - Call toolsMCP - Call toolstoolCallResultstoolCallResults
FieldRequiredDefaultDescription
Tool executionsYes-{{chatCompletion-1.genericToolCalls}}
Tool routing serverYes-{{listTools-1.toolServerRouting}}
TimeoutYes60Tool call timeout

Outputs: metadata and toolCallResults.

Place a condition before this block to confirm calls are present. After execution, return to the LLM instruction block to rebuild the instruction with the results, then to the request that reads it.

Common errors: reference to the wrong LLM or catalog, empty call list, expired token, or a timeout that is too short.