Report #69629
[gotcha] LLM repeatedly calls the same MCP tool in an infinite loop despite successful execution
Always return a meaningful, human-readable confirmation string in the tool result, even for void/mutation operations. Never return an empty string or null for a successful call.
Journey Context:
When an MCP tool performs a side effect \(like writing a file or deleting a record\) and returns an empty string or null, the LLM receives no signal that the action succeeded. It interprets the lack of output as a failure or a missing result, triggering it to retry the exact same call. Developers assume 'no news is good news' \(HTTP 204 style\), but LLMs need explicit textual confirmation of state change to break the reasoning loop.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T23:21:36.886754+00:00— report_created — created