Compatibility: Pactmark 0.1.x. No network, no external account. The memory-backed runtime is an
ephemeral development profile and deliberately fails production readiness.
Run it
What it demonstrates
A complete run
Accepted, planned, one tool call, completed — with a real artifact and evidence record at the
end.
A deterministic model driver
An async generator that yields a
tool_call then a final. Fully reproducible.Default-deny policy in the smallest possible form
One rule for R1; everything else denied.
Honest readiness
productionReady: false, because a memory store is not durability.The tool
examples/minimal-tool-agent/src/example.ts
egress: { mode: "none" } and a frozen fixture together mean this tool is incapable of reaching
anything. That is what makes it a good first example — nothing about it can surprise you.
The model driver
The driver names the tool by registration digest. That is not incidental — it is how the
example demonstrates that a tool whose schema or security metadata changed cannot be reached by an
old reference.
The capabilities declaration
The run
What comes out
Figure 1. Even this minimal run produces the full structure: ordered events, a derived projection, a content-addressed artifact and a bounded evidence record.What it does not support
Modify it to learn something
1
Change maxToolCalls to 0
Watch the run terminate on budget rather than on completion.
2
Remove the R1 rule from the policy
The tool call is denied with
KAF_POLICY_DENIED — and the tool executor records zero calls.3
Change the tool's input schema without bumping the version
The registration digest changes and the driver’s reference no longer resolves.
4
Ask for a sku the fixture does not have
available: false — the tool returns a truthful negative rather than an error.Build it yourself
The same agent, written from scratch with every object explained.
Workspace agent
The next step up: bounded filesystem access with real denial paths.