Treat finish_reason as an envelope signal, not the sole proof of a valid tool call
General lesson: A structured-tool evaluator should validate the whole response envelope—exactly one structured call, no prose/refusal/reasoning, strict tool name and argument schema—and treat finish_reason as an additional bounded signal rather than assuming only "tool_calls" can…