Pass data between blocks
Variables carry information from one block to another: user messages, HTTP responses, instructions, LLM answers, tools, or tool results.
Scopes
| Scope | Lifetime | Examples |
|---|---|---|
SYSTEM | Provided by the platform for every execution | userMessage, datetime, customParams |
USER | Tied to the signed-in user | userData.email, locale, timezone |
CONVERSATION | Retained across several messages | conversationHistory, collected information |
REQUEST | Limited to the current path | documents.body, chatCompletion-1.content |
Use REQUEST by default. Reserve CONVERSATION for information that must survive across turns.
Global variables
| Variable | Purpose |
|---|---|
userMessage / query | User request |
datetime, datetime.date, datetime.hour, datetime.minute | Current date and time |
customParams | Parameters supplied by a web integration |
llmAppId, organizationId, workflowId | Context identifiers |
workflowExecutionId, queryExecutionId | Execution identifiers |
conversationHistory | Conversation history |
userData | User object |
userData.email, name, givenName, familyName, userId | Common user attributes |
userData.organizationId, attributes, iamProfiles | Organization, attributes, and IAM profiles |
locale, timezone | Language and time zone |
Block outputs
By default, an output reference uses this format:
{{blockIdentifier.variableName}}For example, {{http-1.body}} is the response body produced by http-1.
If http-1 receives the alias documents, the reference becomes {{documents.body}}. Aliases improve readability but must remain unique.
| Block | Main outputs |
|---|---|
| Simple message | message |
| HTTP request | body, metadata |
| Variables | Directly named variables |
| Condition | hasMatch, matchedIndex, nextStep |
| LLM instruction | raw, metadata, messages, instruction, tools |
| LLM request | content, genericToolCalls, metadata |
| MCP - List tools | tools, toolServerRouting, metadata |
| MCP - Call tools | metadata, toolCallResults |
Create a variable
The Variables block creates a directly named value:
| Scope | Name | Value |
|---|---|---|
REQUEST | userEmail | {{userData.email}} |
The value is then available as {{userEmail}}.
Avoid spaces, accents, special characters, and duplicate names.
Write a reference
In compatible fields, type {{ and choose a suggestion. This prevents typos and references to blocks that are not available on the route.
| Need | Reference |
|---|---|
| User message | {{userMessage}} |
| Current date | {{datetime.date}} |
| HTTP body | {{http-1.body}} |
| Prepared instruction | {{generatePrompt-1.instruction}} |
| LLM answer | {{chatCompletion-1.content}} |
| Tool calls | {{chatCompletion-1.genericToolCalls}} |
| MCP tools | {{listTools-1.tools}} |
| MCP routing | {{listTools-1.toolServerRouting}} |
A reference can be embedded in text:
Hello {{userData.givenName}}, your request is: {{userMessage}}Or in JSON:
{
"query": "{{userMessage}}",
"email": "{{userData.email}}"
}Integration parameters with customParams
customParams carries runtime values even when they are unknown during configuration:
{{customParams.mcpAuthorization}}
{{customParams.mcpAccessToken}}
{{customParams.source}}Studio intentionally skips some validation for references beginning with customParams..
Debug a variable
Temporarily add a Simple message:
{{codeblock documents.body}}To force a display language:
{{codeblock documents.body "json"}}Remove this block before publication if it might reveal a secret or personal data.