---
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.