Definition
A tool execution failure occurs when an invoked tool rejects a request or cannot complete the requested operation. An uncertain outcome is a related case: the caller cannot tell whether the operation succeeded.
Invalid arguments may also be rejected before the tool is invoked. That is a validation failure before execution. Once invoked, a tool can reject its own arguments, encounter a dependency error, or finish only some steps before failing. If the caller times out while waiting, the tool may still be running or may have finished without a response.
Simple example
A support agent calls create_case_with_attachment to open a case and attach a customer log. The case is created, but the file store rejects the attachment. The tool reports an error. If the agent repeats the whole call, it may create a second case rather than attach the log to the first one.
If the error reaches the caller, it should include the case ID and say that the case exists. The remaining work is to attach the file or report that the case is incomplete.
Why it matters
An agent may treat any tool error as a reason to try again, or describe a partially completed operation as finished. Both can mislead the user. The caller needs to separate rejection before invocation, confirmed failure without side effects, and partial completion. A missing or inconclusive result leaves the outcome unknown. Execution records may help resolve it.
For actions that change state, assign a stable operation ID before the first attempt. Where possible, check downstream state to resolve an uncertain outcome before retrying. If the service supports idempotency, retry the same logical operation with the same identity and parameters. Otherwise, reconcile the result or hand it to an operator.
One important nuance
An operation ID helps trace attempts and match them to downstream records. It does not, by itself, stop a repeated write. Retrying a non-idempotent write while the first attempt’s outcome is uncertain requires idempotency enforcement covering the operation. Without it, retry only after confirming that the first attempt had no effect and can no longer take effect.