def score_case(case: dict, result: dict) -> tuple[bool, str]: answer = str(result.get("answer", "")) expected = str(case.get("expected_answer_contains", "")) if expected and expected.lower() not in answer.lower(): return False, "answer substring mismatch" if len(result.get("tool_calls", [])) != int(case.get("expected_tool_calls", 0)): return False, "tool call count mismatch" return True, "ok"