I’ve been building LLM apps and keep running into a really nasty failure mode:

The request looks successful (HTTP 200 / response structure is “valid”)

The model outputs tool_calls

But the UI or the next assistant step behaves like the tool never actually ran (missing info, the model “fills in the blanks,” or it just skips the tool-related part)

The most annoying part is that this kind of failure is often silent. If you only monitor “request success,” you’ll never see the real break point.