And the checking-afterwards part, because you will not eliminate this entirely and you found it by luck this time.
Log every tool call with its outcome, and keep them alongside the final output. You did have this, which is why you caught it: make it something you can query rather than something you happen to look at.
Alert on the combination. A run that contains a failed tool call and also produced a confident final answer is exactly the pattern to flag. That is a query you can write once and it catches this class permanently.
Make the agent cite. If every figure in the output has to name the tool call it came from, an invented number has nowhere to hide - either it has no citation, or it cites a call that failed, and both are detectable automatically.
Spot check runs regularly, particularly after any prompt or model change. This behaviour varies between models and between versions of the same model, so a setup that was reliable can become less so without you touching it.
One uncomfortable thing worth accepting: this failure mode is not fully solvable at the model layer. Build so that a wrong answer is caught by something other than a human noticing, because the whole problem is that it does not look wrong.