Boundary
The capability lives outside the model. The model may decide to call it later, but the tool itself is deterministic software.
Labs / Lab 01
Start with one deterministic capability that does one job, prints one result, and exits clearly.
What this adds
The term counter is deliberately boring. That is the point. A useful agent tool should have predictable arguments, predictable output, and predictable failure modes.
Once you trust the shell boundary, you can wrap it, validate it, and hand it to a host.
The capability lives outside the model. The model may decide to call it later, but the tool itself is deterministic software.
Bad arguments fail clearly, valid runs are repeatable, and the command is safe to invoke twice.
The Git CLI is the gold
standard here. Commands like git status and
git grep are exactly the kind of boring, dependable
tools you want an agent to call.
Most of the "agent magic" people describe is really a model choosing among deterministic tools like this one.