The errors-are-instructions section is the part I'd underline. One thing I'd add next to the "Do not retry" message: that text is still only a request, and a model will occasionally retry anyway, so I'd back it with a counter in the loop that refuses a third identical call (same tool, same arguments) and returns a fixed "this exact call already failed twice" result. I'd also give the error object a retryable field of its own instead of leaving it to the prose, since a timeout and a not_found need opposite instructions and the model shouldn't have to infer which one it got from the wording.
Atlassian consultant and Forge developer at LeanZero. We do Data Center to Cloud migrations and build Forge apps, and I write up what I learn at leanzero.net.
Mihai_LeanZero
The errors-are-instructions section is the part I'd underline. One thing I'd add next to the "Do not retry" message: that text is still only a request, and a model will occasionally retry anyway, so I'd back it with a counter in the loop that refuses a third identical call (same tool, same arguments) and returns a fixed "this exact call already failed twice" result. I'd also give the error object a retryable field of its own instead of leaving it to the prose, since a timeout and a not_found need opposite instructions and the model shouldn't have to infer which one it got from the wording.