Measured compatibility
Tool-calling support matrix
A cell measures the whole stack: model x quant x server x server version. It is not a property of the model alone.
Red means the combination failed as tested, not that the weights are bad. The same weights can pass on one server and fail on another; where that is proven, the cell carries a cause annotation.
Every red cell links to the full request/response transcript that produced it when the result schema supplies a transcript path. Legacy schema v1 results do not record transcript paths. See the case studies under docs/case-studies/ for controlled comparisons.
The servers do not decode the same way. llama.cpp compiles the supplied tool definitions into a GBNF grammar and constrains decoding with it, so a call naming a function that was never supplied cannot be sampled there. Ollama and MLX LM generate unconstrained text and parse the tool call out of it afterwards. This systematically favours llama.cpp, so a llama.cpp-versus-Ollama difference is a property of the combination, not evidence of a server defect or a difference between models; the comparison that isolates the model is same-server.
Sample size and method: 50 distinct scenarios are represented in this result set. Each published cell is one run. Findings in the case studies are replicated across at least five runs per arm before a verdict is drawn, so a cell tells you what one run measured and a case study tells you what held up under repetition. The current case studies cover 90 runs across 18 quantization arms, and 40 runs across 8 arms for the peg-native anomaly.
Excluded rows
- Meta-Llama-3.1-8B-Instruct on llama.cpp (Q8_0, Q4_K_M, Q3_K_M) is excluded from the quantization conclusion because llama.cpp returns HTTP 500 on 7-9 of 50 scenarios per run for this model ("does not match the expected peg-native format"). These are server errors, not model failures, and are not comparable across arms. See the peg-native case study.
Measurement environment: Apple M4 Max, 64GB; macOS 26.5.2.
Current results
Scenario groups
Showing 32 result files.
| Model / quant / server | single_call |
parallel_calls |
streaming |
tool_choice_modes |
multi_turn |
negative_trap |
|---|---|---|---|---|---|---|
| granite3.1-dense-8b quant: not declared server: llama.cpp | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| meta-llama-3.1-8b-instruct-q3_k_m quant: Q3_K_M server: llama.cpp | 10/13 | 0/8 | 6/8 | 6/7 | 0/7 | 3/7 |
View 50 scenarios and row metadata
|
||||||
| meta-llama-3.1-8b-instruct-q4_k_m quant: Q4_K_M server: llama.cpp | 7/13 | 0/8 | 4/8 | 6/7 | 0/7 | 3/7 |
View 50 scenarios and row metadata
|
||||||
| meta-llama-3.1-8b-instruct-q8_0 quant: Q8_0 server: llama.cpp | 7/13 | 0/8 | 4/8 | 6/7 | 0/7 | 3/7 |
View 50 scenarios and row metadata
|
||||||
| phi4-mini quant: not declared server: llama.cpp | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-1.5b-instruct-q3_k_m quant: Q3_K_M server: llama.cpp | 13/13 | 6/8 | 8/8 | 7/7 | 0/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-1.5b-instruct-q4_k_m quant: Q4_K_M server: llama.cpp | 13/13 | 8/8 | 8/8 | 6/7 | 0/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-1.5b-instruct-q8_0 quant: Q8_0 server: llama.cpp | 13/13 | 8/8 | 8/8 | 7/7 | 0/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct-q3_k_m quant: Q3_K_M server: llama.cpp | 13/13 | 8/8 | 8/8 | 7/7 | 5/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct-q4_k_m quant: Q4_K_M server: llama.cpp | 13/13 | 8/8 | 8/8 | 7/7 | 2/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct-q8_0 quant: Q8_0 server: llama.cpp | 13/13 | 8/8 | 8/8 | 7/7 | 4/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| watt-tool-8b-q4_k_m quant: Q4_K_M server: llama.cpp | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| meta-llama-3.1-8b-instruct-4bit quant: 4bit server: MLX LM | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| mistral-7b-instruct-v0.3-4bit quant: 4bit server: MLX LM | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| phi4-mini-4bit quant: 4bit server: MLX LM | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-1.5b-instruct-4bit quant: 4bit server: MLX LM | 12/13 | 8/8 | 8/8 | 7/7 | 0/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct-4bit quant: 4bit server: MLX LM | 13/13 | 8/8 | 8/8 | 7/7 | 4/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct-8bit quant: 8bit server: MLX LM | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| gemma3-12b quant: not declared server: ollama | 0/13 | 0/8 | 0/8 | 0/7 | 0/7 | 0/7 |
View 50 scenarios and row metadata
|
||||||
| gemma3-4b quant: not declared server: ollama | 0/13 | 0/8 | 0/8 | 0/7 | 0/7 | 0/7 |
View 50 scenarios and row metadata
|
||||||
| granite3.1-dense-8b quant: not declared server: ollama | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| hermes3-8b quant: not declared server: ollama | 11/13 | 7/8 | 7/8 | 7/7 | 2/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| llama3-groq-tool-use-8b quant: not declared server: ollama | 12/13 | 8/8 | 7/8 | 6/7 | 0/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| llama3.1-8b quant: not declared server: ollama | 11/13 | 7/8 | 8/8 | 5/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| mistral-7b quant: not declared server: ollama | 11/13 | 8/8 | 6/8 | 6/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| phi4-mini quant: not declared server: ollama | 0/13 | 0/8 | 0/8 | 2/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| qwen2.5-7b-instruct quant: not declared server: ollama | 11/13 | 8/8 | 8/8 | 7/7 | 6/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen3-0.6b quant: not declared server: ollama | 7/13 | 5/8 | 4/8 | 6/7 | 0/7 | 5/7 |
View 50 scenarios and row metadata
|
||||||
| qwen3-1.7b quant: not declared server: ollama | 11/13 | 8/8 | 7/8 | 6/7 | 4/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen3-14b quant: not declared server: ollama | 12/13 | 8/8 | 8/8 | 7/7 | 5/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||
| qwen3-4b quant: not declared server: ollama | 13/13 | 8/8 | 8/8 | 7/7 | 1/7 | 6/7 |
View 50 scenarios and row metadata
|
||||||
| qwen3-8b quant: not declared server: ollama | 12/13 | 8/8 | 7/8 | 7/7 | 4/7 | 7/7 |
View 50 scenarios and row metadata
|
||||||