# A timeout does not tell you whether the tool ran

> Source: <https://dev.to/chrissellers/a-timeout-does-not-tell-you-whether-the-tool-ran-367j>
> Published: 2026-10-27 05:30:11+00:00

When an agent calls a tool and the response never arrives, you know one thing: you stopped waiting. You do not know whether the tool did the work.

That gap is where duplicate emails, duplicate tickets and duplicate charges come from. The retry is reasonable. The missing information is the problem.

In AMW (Agent Middleware, Preview), which I am building, a lost response after the send is recorded as delivery_uncertain. AMW never sends that call again on its own. It keeps the state visible so a person or the tool owner can decide.

A same key retry returns the original receipt instead of dispatching again. A new key is a new request. That is the whole contract, and it is narrower than exactly once on purpose.

If you run agents against MCP tools, I would like you to try to break it: github.com/agentmiddleware/agent-middleware

Chris
