All nodes/AI/Stream Observers

Catch Tool Call

Intercepts the agent's tool calls in real time and streams them to the Extra panel. By default there is no stream port; enable "Explicit Extra stream port" for an explicit edge to an Extra Section.

Catch Tool Call
Output
Stream

Type in the graph: catch_tool_call

Try it

Minimal working workflow

Entry
AI Agent
Catch Tool Call
LLM
Buffer MemoryS
Exit
  • Execute + Data
  • Extension
  • LLM
  • Memory
  • Execute + Data + Streaming
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Runs as pasted

When to use it

Catch Tool Call shows what the AI Agent is busy with right now: which tool it called and with which arguments. In the chat these are blocks in the Extra panel — one per call, with the tool’s name in the header. Its neighbours tap the other channels of the same agent: Catch Output takes the answer text, Catch Thinking the model’s reasoning.

How it works

The node is not a step in the graph: it has neither an execution input nor a data output. Wire its Output port into the agent’s Extensions port.

Every call opens a block and prints a preview line of the arguments. Tools that can report their progress — Web Search, Fetch Webpage, Web Search (OpenRouter), Chat History Tool, Generate Image, Text → Speech — append their phases into the same block; each of those nodes carries its own switch for streaming progress into Catch. A tool’s result is not streamed: you see the call and the progress, not the answer.

The “Include” and “Exclude” lists are matched against the name the model knows the tool by (websearch, fetch_webpage, agent_memory_set), not the node’s label on the canvas. For a subagent and for the WF tool you set that name yourself in the “Tool name” field. A non-empty “Include” list means “only these”.

Some nodes adjust their own appearance in the stream: Agent Plan hides its internal agent_todo_* calls by default, and Agent Memory prints a short line instead of raw JSON. Both switches live on those nodes, not here.

Common mistakes

  • Putting a node type or label into a filter. Nothing will match, so the list either filters nothing out or — in “Include” — hides everything.
  • Adding websearch and fetch_webpage to “Progress streaming tools”. They are in that set by default; the field is there for the other tools.
  • Turning on “Explicit Extra stream port” and drawing no edge. The switch disables the built-in stream into the Extra panel — with no edge to an ExtraSection nothing is shown.

Inputs

Outputs

PortWirePayloadNotes
OutputoutputExtensionlink_extension
StreamstreamStreamingstreaming

Configuration

FieldTypeDefaultDescription
Exclude tool namesexclude_tool_namesarray<string>[]

Never stream tool calls whose name is in this list

Explicit Extra stream portexpose_extra_stream_portbooleanfalse

When off (default): stream to the Extra panel without a graph wire; the stream port is hidden. When on: the stream port is shown — connect it to an Extra Section (or other allowed sink). Built-in self-streaming is disabled; only an explicit streaming edge sends output.

Include tool namesinclude_tool_namesarray<string>[]

If non-empty, only stream tool calls whose name is in this list

Progress streaming toolsstream_progress_toolsarray<string>[]

Tool names that emit multi-line progress during execution (defaults include websearch and fetch_webpage)

Use formatted previewuse_formatted_streambooleantrue

Format non-progress tool previews via registry; off uses raw name: args