Tool Outputs
Define what your tool returns to the caller. The Outputs node lets you map values from any previous step into one or more named outputs that are returned by the tool (and shown in the UI preview, embeds, and API responses).
Create output fields
- Click the Outputs node → Add output.
- Set an Output variable name (e.g.,
summary,links,raw_html). - Provide the Value using variables from earlier nodes with
{{ }}.
Example (from a Web Scraper step named web_scrape):
{{web_scrape.text}}
- Use Add output again to publish multiple values.
- Use the trash icon to remove a field or rename any key at any time.
Referencing step data
Use dot notation to reference a node’s fields: {{node_name.field}}
You can return structured objects/arrays by writing JSON and inserting variables:
{
"title": "{{llm.summary_title}}",
"status": "{{api_call.status}}",
"items": {{web_scrape.links}}
}
The Outputs tab inside each step’s drawer shows that step’s available fields; copy those names into the Outputs node’s Value boxes.
Preview & debug
The Last Run panel inside the Outputs node renders the evaluated outputs from your most recent run (toggle Pretty or copy to clipboard).
If you see “No output value present”, re-run the upstream steps and then the Outputs node.
Undefined variables resolve to empty values; check node names and field paths.
How outputs are returned
The tool returns a single JSON object where each Output variable name becomes a top-level key:
Agents, embeds, and server integrations consume this object directly. Use clear, stable keys so downstream consumers don’t break.
Best practices
- Name clearly: use lowercase with underscores (e.g.,
extracted_text,result_items). - Keep it lean: publish only what callers need; avoid huge blobs when a summary will do.
- Structure over strings: prefer JSON objects/arrays for machine-readable results.
- Sanitize where needed: apply Guardrails on upstream steps if outputs must exclude PII, toxic text, or competitor terms.
- One Outputs node per tool: place it at the end for a single, predictable return shape.
Common examples
LLM result to text
summary → {{llm.output_text}}
API status and body
status → {{api_call.status}}
data → {{api_call.response}}
Combined object
{
"summary": "…",
"links": ["…", "…"],
"status": 200
}
{
"query": "{{start_point.query}}",
"answer": "{{llm.output_text}}",
"sources": {{web_research.top_links}}
}
That’s it—wire your step fields into the Outputs node, preview in Last Run, and your tool is ready to return clean, structured results.
Selecting which step outputs to keep
By default, every key a step produces is persisted and carried forward in the run. For each step, you can instead select which keys of that step's output get kept — the unselected keys are dropped and not stored.
This per-step filtering matters in two situations:
- Large outputs: When a step returns a large payload, dropping the keys you don't need reduces the stored output size and helps avoid errors caused by oversized outputs.
- Foreach loops: When a step runs inside a foreach loop, limiting the output to only the useful keys keeps each iteration's result lean and removes the need for an extra Python Code step just to filter the output JSON.
How to use it
- Open the step whose output you want to trim.
- In the step's Outputs configuration, select the keys you want to keep.
- Keys you don't select are excluded from the persisted output and won't be available to downstream steps or the Outputs node.
Keep the keys that downstream steps actually reference, and drop the rest — especially for high-volume foreach steps and steps that return large blobs.