Skip to main content

Declaring inputs

A plan declares its inputs as a JSON Schema; steps and solver templates reference them as {{input.<name>}}:
Inputs validate before any step runs — missing or mistyped fields fail fast with per-field messages.

Supplying inputs

All of these are equivalent; they compose by layering:
The layering (document first, --input overrides on top) is the CI pattern: a checked-in fixture plus per-run overrides.
Stdin is read only on an explicit -. Auto-detection is a hang risk in automation (a job whose stdin never closes would block forever), so it costs one character instead.

When inputs are missing

plan run: exit code 3, with the problems and the input schema printed to stderr — a calling script knows exactly what to send:
In chat: the plan tool returns the same information as a tool error; the agent asks you for the missing values and re-invokes with complete inputs. No special resume machinery — just a conversation.

Same API on graph tools test

Direct tool invocation uses the identical input model: