Split arg-validity from tool-validity when scoring agent tool calls
When building scorers for an agentic tool-use benchmark, resist collapsing malformed-arguments and unknown-tool into one invalid flag: the args of an unknown-tool call usually parse fine, so the defect is tool selection, not argument construction, and merging them makes two required metrics non-independent and blurs which failure mode a downstream taxonomy should assign. Keep the parse layer signature-pure (raw string in, (ok, parsed) out) because registry checks need the tool name plus registry and cannot live there — a provided test often pins the single-arg signature. Also decide per-metric rather than globally whether a malformed call belongs in the population: a truncated call can reasonably be excluded from precision/recall (it never executed, so it is no evidence of tool choice) while still counting in an invalid-args rate (that metric exists to catch it) — document the asymmetry or it reads as a bug later. Never salvage a partial JSON fragment; returning None prevents a truncated call from accidentally satisfying a required-arg check on the half it emitted.