ReliAgent checks the tool call your agent just made — name, parameters, and response — and tells you what a green checkmark won't: a hallucinated answer, a stuck loop, a model quietly losing confidence in its own output.
Each one flags on its own signal — no shared threshold to tune before ReliAgent is useful.
The model invents a plausible-sounding detail to fill a gap instead of admitting it doesn't know.
Response quality slips as the context window fills — the signal getting lost in accumulated noise.
The response contradicts, or invents facts not supported by, the tool's own output.
The same tool, called with the same parameters, again and again — no progress being made.
The model's own reported confidence craters call over call — a leading indicator, not a lagging one.
The response breaks the shape or type your code was told to expect — and if a schema leans on a JSON Schema keyword we can't fully verify, you get an honest partial-verification note instead of a silent pass.
The same tool called again, but the values behind it quietly changed — not a fresh request, something slipping.
A call that took meaningfully longer than your own recent average, or longer than you said you'd tolerate.
No dashboard, no login screen — just one call your code already knows how to make.
Right after your agent's tool call returns, POST the call and its response to /run.
All eight failure modes checked in one pass: pass, warn, fail, or critical — well under a second.
A specific next step comes back with it — reset state, inject a directive, or switch tools.