# `LlmCore.Agent.ToolDispatch.Components.ComposeOutput`
[🔗](https://github.com/fosferon/llm_core/blob/v0.3.0/lib/llm_core/agent/tool_dispatch/components/compose_output.ex#L1)

Formats collected results into a single consolidated output string.

Uses the recipe's custom compose function if provided, otherwise
falls back to structured markdown concatenation.

The composed string becomes the tool result that the LLM sees —
it should be informative and well-structured.

# `call`

```elixir
@spec call(
  LlmCore.Agent.ToolDispatch.Event.t(),
  keyword()
) :: LlmCore.Agent.ToolDispatch.Event.t()
```

Composes serial and parallel results into a final output string.

## Parameters

  * `event` — `%Event{}` with `serial_results`, `parallel_results`, `errors`
  * `opts` — ALF stage options (unused)

## Returns

  Updated `%Event{}` with `result` set to the composed output string.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
