Built-in tools enabled when an agent does not set builtinTools at all.
These are the "cognitive" builtins — a private reasoning scratchpad
(think), session notes (remember/recall), and a safe calculator —
which measurably improve policy adherence and argument fidelity in
tool-heavy conversations (cf. Anthropic's tau-bench "think" tool results).
They are side-effect-free outside the session, so they are safe defaults.
Setting builtinTools explicitly (including []) overrides this list.
Trimming this to ["calculate"] was tried, on the theory that each of the
others costs an LLM round trip before the agent says anything and a call
cannot afford that. The theory did not survive measurement: on tau2's voice
tasks the model under test never invoked think or calculate at all — not
even when the prompt demanded a calculator for a dollar figure it was about
to quote — so an unused builtin costs nothing, and the one paired comparison
available favoured keeping think (4/5 correct writes with it, 3/5 without).
A latency argument needs a latency measurement; that one had none.
Built-in tools enabled when an agent does not set
builtinToolsat all. These are the "cognitive" builtins — a private reasoning scratchpad (think), session notes (remember/recall), and a safe calculator — which measurably improve policy adherence and argument fidelity in tool-heavy conversations (cf. Anthropic's tau-bench "think" tool results). They are side-effect-free outside the session, so they are safe defaults. SettingbuiltinToolsexplicitly (including[]) overrides this list.Trimming this to
["calculate"]was tried, on the theory that each of the others costs an LLM round trip before the agent says anything and a call cannot afford that. The theory did not survive measurement: on tau2's voice tasks the model under test never invokedthinkorcalculateat all — not even when the prompt demanded a calculator for a dollar figure it was about to quote — so an unused builtin costs nothing, and the one paired comparison available favoured keepingthink(4/5 correct writes with it, 3/5 without). A latency argument needs a latency measurement; that one had none.