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 | 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, userData.name, userData.givenName, userData.familyName, userData.userId | Common user attributes |
userData.organizationId, userData.attributes, userData.iamProfiles | Organization, attributes, and IAM profiles |
locale, timezone | Language and time zone |
userData information (name, email, profiles, and attributes) comes from your organization’s user administration. userData.attributes contains the attributes defined for the signed-in person; the list is empty when none is defined. For an anonymous user, userData.email is anonymous and the other information, attributes included, is not filled in.
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.
To use all of a block’s outputs at once, reference the block without an output name: {{http-1}} is the complete object produced by http-1. This reference is also offered by input assistance.
| Block | Main outputs |
|---|---|
| Simple message | message |
| HTTP request | body, metadata |
| Data Sources | llmConnectorId, dataSourceIds, index, embeddingModel, dimensions |
| Variables | Directly named variables |
| Condition | hasMatch, matchedIndex, nextStep |
| LLM instruction | raw, metadata, messages, instruction, tools, model, maxTokens |
| LLM request | content, genericToolCalls, metadata |
| MCP - List tools | tools, toolServerRouting, metadata |
| MCP - Call tools | metadata, toolCallResults |
For other blocks offered by your organization, select their outputs from the input suggestions. Reference names depend on the block and its alias.
Create a variable
The Variables block creates one or more directly named values. Click Add a variable for each one:
| Scope | Name | Value |
|---|---|---|
Request | userEmail | {{userData.email}} |
The value is then available as {{userEmail}}. A value can span several lines, for example to store guidelines reused in several instructions.
Avoid spaces, accents, special characters, and duplicate names.
Write a reference
In compatible fields, type {{ and choose a suggestion. Suggestions include workflow variables; check that the producing block will run before the block using its output on the route being tested.
| Need | Reference |
|---|---|
| User message | {{userMessage}} |
| Current date | {{datetime.date}} |
| HTTP body | {{http-1.body}} |
| Selected source identifiers | {{dataSources-1.dataSourceIds}} |
| 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}}These parameters depend on the integration in use. Test that it sends the expected values.
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.