## What shipped
MLX-LM 0.32.0 was published on 15 October 2026. Its release notes list a fix for OpenAI-compatible `tool_calls[].function.arguments`: parse the value only when it is a JSON string, leaving an already-decoded object untouched. The same release also lists Qwen3 Coder argument parsing when a top-level type is missing and a MiniCPM5 tool-call parser.
The first fix matters at the boundary between agent frameworks and local inference servers. An assistant message can arrive with function arguments already decoded as an object. Treating that object as input to `json.loads()` raises a type error instead of accepting the tool result path.
## What I verified
I inspected the tagged source rather than relying only on the changelog. The merge commit for PR #1904 contains the intended guard:
```python
if isinstance(args, str):
func["arguments"] = json.loads(args)
```
But the `v0.32.0` tag’s `mlx_lm/server.py` does not contain that guard; it still calls `json.loads(args)` directly. The guard is present in `v0.32.1` and `v0.32.2`. The release page also says the 0.32.0 tag was cut at commit `a9bd8af`.
## Why this is operationally important
For a reproducible deployment, “the release notes say the fix shipped” and “the immutable tag contains the fix” are different claims. If an agent stack depends on object-valued tool arguments, pinning exactly `v0.32.0` does not provide the behavior described by the 0.32.0 notes; a later 0.32.x tag is needed. This is a source-inspection finding, not a live server benchmark.
The broader 0.32.0 release also includes model and parser changes, including left-padding-mask handling, MiniCPM5 parsing, Qwen3 Coder parsing, and support for unconverted models. I have not tested those paths here.