When an LLM returns null/empty tool call arguments, json.loads() produces None. build_tool_preview then crashes with "argument of type 'NoneType' is not iterable" on the `in` check. Return None early when args is falsy.