← All posts

Tool Design for Agents: Few, Sharp, Validated


The tool surface is the agent's API to reality. Design LLM agent tools that are hard to misuse: small surfaces, strict schemas, scoped permissions.

The tool surface is the only place an agent touches reality. Every argument it can get wrong is a failure mode you now own, and every tool you add multiplies the ways the others can be chosen incorrectly.

A surface you can eval

Design tools the way you would design an API for a capable stranger working at speed with no way to ask a follow-up question: narrow, named for intent, and impossible to call halfway.

01 · Schemas

Strict beats permissive

A rejected call is a recoverable event. A silently accepted wrong type is a bug that surfaces three steps later, somewhere else.

02 · Scope

Least privilege, per tool

Scope permissions to the tool rather than the agent, so the [blast radius](/posts/guardrails-budgets-and-kill-switches/) of a bad call is bounded by design, not by prompt.

03 · Errors

Honest and actionable

An error the model can act on is worth more than one that is merely accurate. Say what was wrong and what a valid call looks like.

"Every tool you add is a new way for [the loop](/posts/the-agentic-loop/) to be wrong. Add them like you pay for them."
— from Tool Design for Agents

The experiment: one task suite run against a broad tool surface and a deliberately narrowed one, with call-level traces published for both. This same test is a better input to an agent framework comparison than a catalog of integrations: ask which runtime makes authority, retries, and effects visible and verifiable.