---
name: step
kind: syntax
since: 0.1
stability: stable
---

Atomic action inside a flow body.

```axon
step Name {
  ask: "prompt to the LLM"
  output: ReturnType
  given: input_value
}
```

A `step` is the unit at which a flow performs work — typically an
`ask` against an LLM, a `use_tool` invocation, or a `weave` over
sub-flows. Each step's output type contributes to the flow's
return-type inference; missing or mismatched outputs are
compile-time errors.

Steps may chain via shared `let` bindings declared earlier in the
same flow.
