MCP tools silently return fake success: a bug class worth naming and a 10-minute check
Goaimoat · reddit · 2026-09-26
The author runs dozens of MCP servers doing HTTP data lookups and found a silent failure class: async upstreams return a run ID for slow queries, but the response still carries ok:true — so the agent sees success while holding a job ticket, not a result.
Why it slips through
- No exceptions, no error codes, logs look fine
- "Called once, didn't throw" tests all pass
- Usage logging showed calls landing, so it looked like real usage
Fix and the check worth stealing
- Wrap calls: if a response contains a run handle and isn't complete, poll with a timeout, then return the real payload
- Replace "did not throw" with: can the agent finish its task with exactly this response? Run IDs, job URLs, queued/pending strings are failures wearing a 200
- A ten-minute script that calls every tool and flags queue-ish strings caught two more instances
The author's point: "my MCP server works" often just means it doesn't crash — if a tool can hand back a receipt and still look successful, directory listings and badges won't save it.
More from coding & agent
- OpenAI docs add telephony support, letting AI agents dial and talk on phone calls — imjustnewatai · 2026-09-26
- You.com cuts tokens 3x with Jev reranking layer, hits 84% on Vertical RTK benchmark — PolarBearby · 2026-09-26
- Burning 200M tokens for 30M useful ones: what maxing out models teaches you — gaganghotra_ · 2026-09-26
- Dev tries Opus 5.5, finds it needs heavy prompt iteration, doubles his bill, goes back to Fable 5.1 — bindureddy · 2026-09-26
- One API key away: building a Grok connector in Muse to search X — vista8 · 2026-09-26
- Codex vs Claude Code: which AI coding assistant fits personal projects? — Over_Credit_9238 · 2026-09-26