{"slug": "a-timeout-does-not-tell-you-whether-the-tool-ran", "title": "A timeout does not tell you whether the tool ran", "summary": "A developer building AMW (Agent Middleware, Preview) has designed the system so that a lost tool response after a send is recorded as delivery_uncertain rather than retried automatically, keeping the state visible for a person or tool owner to resolve. Under the contract, a retry with the same key returns the original receipt instead of dispatching again, while a new key counts as a new request — a deliberately narrower guarantee than exactly-once. The developer is inviting users running agents against MCP tools to test the open-source project at github.com/agentmiddleware/agent-middleware.", "body_md": "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.\n\nThat gap is where duplicate emails, duplicate tickets and duplicate charges come from. The retry is reasonable. The missing information is the problem.\n\nIn 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.\n\nA 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.\n\nIf you run agents against MCP tools, I would like you to try to break it: github.com/agentmiddleware/agent-middleware\n\nChris", "url": "https://wpnews.pro/news/a-timeout-does-not-tell-you-whether-the-tool-ran", "canonical_source": "https://dev.to/chrissellers/a-timeout-does-not-tell-you-whether-the-tool-ran-367j", "published_at": "2026-10-27 05:30:11+00:00", "updated_at": "2026-10-27 05:42:39.172723+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools"], "entities": ["AMW", "Agent Middleware", "MCP", "Chris"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/a-timeout-does-not-tell-you-whether-the-tool-ran", "markdown": "https://wpnews.pro/news/a-timeout-does-not-tell-you-whether-the-tool-ran.md", "text": "https://wpnews.pro/news/a-timeout-does-not-tell-you-whether-the-tool-ran.txt", "jsonld": "https://wpnews.pro/news/a-timeout-does-not-tell-you-whether-the-tool-ran.jsonld"}}