A harness's tool vocabulary, split by the purity floor that admits it. The
read-only/side-effecting split is harness-specific (it comes from the
dialect's builtinAgentTools − sideEffectingTools), so the concrete unions
are supplied by the adapter; core only describes the SHAPE.
readOnly: tools a pure unit may declare (observation only).
bounded: tools a bounded unit may declare — the read-only set PLUS the
decidable side-effecting tools (Write/Edit/NotebookEdit) AND Bash (its
command is decided at RUNTIME by the gate; the floor admits the tool). Bars
MCP / unknown / wildcard.
The default (string at both) imposes no constraint — any tool is accepted at
every level, the historical behaviour of an untyped agent()/skill().
A harness's tool vocabulary, split by the purity floor that admits it. The read-only/side-effecting split is harness-specific (it comes from the dialect's
builtinAgentTools−sideEffectingTools), so the concrete unions are supplied by the adapter; core only describes the SHAPE.readOnly: tools apureunit may declare (observation only).bounded: tools aboundedunit may declare — the read-only set PLUS the decidable side-effecting tools (Write/Edit/NotebookEdit) ANDBash(its command is decided at RUNTIME by the gate; the floor admits the tool). Bars MCP / unknown / wildcard.The default (
stringat both) imposes no constraint — any tool is accepted at every level, the historical behaviour of an untypedagent()/skill().