Mistral / Magistral / Ministral / Devstral ([TOOL_CALLS]) on ollama 7af39318
pass 100% strict pass 14 pass · 33 unsupported
Run
Checks
| Check | Pass | Soft | Fail | Error | Strict pass rate |
|---|---|---|---|---|---|
expected_match |
14 | 0 | 0 | 0 | 100% |
stream_equals_nonstream |
14 | 0 | 0 | 0 | 100% |
no_leakage |
14 | 0 | 0 | 0 | 100% |
arguments_json |
13 | 0 | 0 | 0 | 100% |
arguments_schema |
13 | 0 | 0 | 0 | 100% |
parallel_order |
2 | 0 | 0 | 0 | 100% |
2 fixture(s) failed only a synthetic strategy: char:* (which can split
special tokens), or a multi-token strategy this engine never produces because its server streams one token per event (one, special, rand:1:8, rand:2:8, rand:3:8, rand:4:8, rand:5:8). These are listed below but never count toward the status.
Fixtures needing attention
pass mistral/llamacpp-ministral3-marker-in-reasoning
Synthetic strategies (not counted): expected_match@one fail, stream_equals_nonstream@one fail, no_leakage@one fail
Minimal repro
uv run canitoolcall run --engine ollama --fixtures fixtures/mistral/imported.jsonl --id mistral/llamacpp-ministral3-marker-in-reasoning --strategy token --observed all
Set up the engine first with scripts/engines/ollama.sh; this run used ollama 7af39318.
The fixture is line 14 of fixtures/mistral/imported.jsonl.
The results file does not include the observed parses for this fixture.
Fixture
Provenance: engine_test, https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tests/test-chat.cpp#L2649-L2661.
Tags: single-call, reasoning, x-marker-in-reasoning, x-v13-compact, x-think-special-token.
Raw output
[THINK]Let me think about [TOOL_CALLS]special_function[ARGS]{"arg1":1} and more[/THINK][TOOL_CALLS]special_function[ARGS]{"arg1": 1}
Expected parse
{
"content": null,
"reasoning_content": "Let me think about [TOOL_CALLS]special_function[ARGS]{\"arg1\":1} and more",
"tool_calls": [
{
"arguments": {
"arg1": 1
},
"name": "special_function"
}
]
}
Fixture record (JSONL, ready to vendor into an engine's tests)
{"id": "mistral/llamacpp-ministral3-marker-in-reasoning", "family": "mistral", "models": ["mistralai/Ministral-3-14B-Reasoning-2512"], "spec_version": "0.1", "provenance": {"kind": "engine_test", "source_url": "https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tests/test-chat.cpp#L2649-L2661", "revision": "7fe450e19305b828c199d602c23a8337aaa1f03b", "license": "MIT", "generator": "scripts/fixtures/mistral/import_mistral.py", "attribution": "Copyright (c) 2023-2026 The ggml authors (MIT)."}, "tools": [{"type": "function", "function": {"name": "special_function", "parameters": {"type": "object", "properties": {"arg1": {"type": "integer", "description": "The arg."}}, "required": ["arg1"]}, "description": "I'm special"}}], "raw_output": "[THINK]Let me think about [TOOL_CALLS]special_function[ARGS]{\"arg1\":1} and more[/THINK][TOOL_CALLS]special_function[ARGS]{\"arg1\": 1}", "output_token_ids": [34, 12598, 1639, 3648, 2314, 1032, 9, 54332, 35214, 32, 19227, 2230, 1049, 2811, 1049, 1125, 1321, 2081, 35, 9, 54332, 35214, 32, 19227, 2230, 1049, 2811, 1032, 1049, 1125], "tokenizer": {"repo": "mistralai/Ministral-3-14B-Reasoning-2512", "revision": "51f9210f3cd20f3452a80d5819d15dc61cc50630", "mode": "mistral"}, "generation_prompt": "[/INST]", "thinking": true, "expected": {"content": null, "reasoning_content": "Let me think about [TOOL_CALLS]special_function[ARGS]{\"arg1\":1} and more", "tool_calls": [{"name": "special_function", "arguments": {"arg1": 1}}]}, "tags": ["single-call", "reasoning", "x-marker-in-reasoning", "x-v13-compact", "x-think-special-token"], "notes": "'fake tool call marker in reasoning'. Here the markers inside [THINK] are control-token ids (as a tokenizer that parses special tokens produces them): everything between [THINK] and [/THINK] is reasoning, and only the call after [/THINK] is a tool call."}
Parser configuration
{
"chunking": "one llama-server event per token; Add(delta, false) per non-empty group, then Add('', true)",
"detokenizer": "llama-server common_token_to_piece(special = id in preserved_tokens)",
"eog_stop": "tokens after the first end-of-generation token are dropped (llama-server stops there)",
"has_thinking_support": false,
"legacy_template_parser": false,
"llama_cpp_build": "b11081",
"nonstream": "per-token events concatenated (routes.go writeChatResponse)",
"ollama_commit": "7af393188defd52d370464de0d2064649cab9b41",
"parser": "ministral",
"parser_source": "Ollama library model config (registry.ollama.ai, fetched 2026-09-25): ministral-3, devstral-2",
"preserved_tokens": [
"[TOOL_CALLS]",
"[THINK]",
"[/THINK]",
"[ARGS]"
],
"think_effective": true,
"think_requested": true,
"tool_call_serialization": "openai.ToToolCalls",
"vocab_gguf": "mistralai--Ministral-3-14B-Reasoning-2512.vocab.gguf",
"vocab_gguf_converter_llama_cpp_commit": "a25c9865fe03c954c93fd755b5d79ae86ba99750",
"vocab_gguf_revision": "51f9210f3cd20f3452a80d5819d15dc61cc50630",
"vocab_gguf_revision_matches_tokenizer": true,
"vocab_gguf_sha256": "dde7ffb069c74ec4a86cf5a0ed23f6bad5e1e62d7a1936abf8fb6997d614e4dd"
}
pass mistral/llamacpp-ministral3-reasoning-call
Synthetic strategies (not counted): expected_match@one fail, stream_equals_nonstream@one fail, no_leakage@one fail
Minimal repro
uv run canitoolcall run --engine ollama --fixtures fixtures/mistral/imported.jsonl --id mistral/llamacpp-ministral3-reasoning-call --strategy token --observed all
Set up the engine first with scripts/engines/ollama.sh; this run used ollama 7af39318.
The fixture is line 12 of fixtures/mistral/imported.jsonl.
The results file does not include the observed parses for this fixture.
Fixture
Provenance: engine_test, https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tests/test-chat.cpp#L2615-L2622.
Tags: single-call, reasoning, numeric-arguments, x-v13-compact, x-think-special-token.
Raw output
[THINK]I'm
thinking[/THINK][TOOL_CALLS]special_function[ARGS]{"arg1":1}
Expected parse
{
"content": null,
"reasoning_content": "I'm\nthinking",
"tool_calls": [
{
"arguments": {
"arg1": 1
},
"name": "special_function"
}
]
}
Fixture record (JSONL, ready to vendor into an engine's tests)
{"id": "mistral/llamacpp-ministral3-reasoning-call", "family": "mistral", "models": ["mistralai/Ministral-3-14B-Reasoning-2512"], "spec_version": "0.1", "provenance": {"kind": "engine_test", "source_url": "https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tests/test-chat.cpp#L2615-L2622", "revision": "7fe450e19305b828c199d602c23a8337aaa1f03b", "license": "MIT", "generator": "scripts/fixtures/mistral/import_mistral.py", "attribution": "Copyright (c) 2023-2026 The ggml authors (MIT)."}, "tools": [{"type": "function", "function": {"name": "special_function", "parameters": {"type": "object", "properties": {"arg1": {"type": "integer", "description": "The arg."}}, "required": ["arg1"]}, "description": "I'm special"}}], "raw_output": "[THINK]I'm\nthinking[/THINK][TOOL_CALLS]special_function[ARGS]{\"arg1\":1}", "output_token_ids": [34, 1073, 4525, 1010, 1411, 34053, 35, 9, 54332, 35214, 32, 19227, 2230, 1049, 2811, 1049, 1125], "tokenizer": {"repo": "mistralai/Ministral-3-14B-Reasoning-2512", "revision": "51f9210f3cd20f3452a80d5819d15dc61cc50630", "mode": "mistral"}, "generation_prompt": "[/INST]", "thinking": true, "expected": {"content": null, "reasoning_content": "I'm\nthinking", "tool_calls": [{"name": "special_function", "arguments": {"arg1": 1}}]}, "tags": ["single-call", "reasoning", "numeric-arguments", "x-v13-compact", "x-think-special-token"]}
Parser configuration
{
"chunking": "one llama-server event per token; Add(delta, false) per non-empty group, then Add('', true)",
"detokenizer": "llama-server common_token_to_piece(special = id in preserved_tokens)",
"eog_stop": "tokens after the first end-of-generation token are dropped (llama-server stops there)",
"has_thinking_support": false,
"legacy_template_parser": false,
"llama_cpp_build": "b11081",
"nonstream": "per-token events concatenated (routes.go writeChatResponse)",
"ollama_commit": "7af393188defd52d370464de0d2064649cab9b41",
"parser": "ministral",
"parser_source": "Ollama library model config (registry.ollama.ai, fetched 2026-09-25): ministral-3, devstral-2",
"preserved_tokens": [
"[TOOL_CALLS]",
"[THINK]",
"[/THINK]",
"[ARGS]"
],
"think_effective": true,
"think_requested": true,
"tool_call_serialization": "openai.ToToolCalls",
"vocab_gguf": "mistralai--Ministral-3-14B-Reasoning-2512.vocab.gguf",
"vocab_gguf_converter_llama_cpp_commit": "a25c9865fe03c954c93fd755b5d79ae86ba99750",
"vocab_gguf_revision": "51f9210f3cd20f3452a80d5819d15dc61cc50630",
"vocab_gguf_revision_matches_tokenizer": true,
"vocab_gguf_sha256": "dde7ffb069c74ec4a86cf5a0ed23f6bad5e1e62d7a1936abf8fb6997d614e4dd"
}
Unsupported fixtures
The adapter declined these fixtures because this engine version has no parser for the family or model.
mistral/bug-devstral-glob-braces-in-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/llamacpp-devstral-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/llamacpp-v11-call-id: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/llamacpp-v11-call-id-parallel: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v11-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v11-no-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v11-parallel-calls: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v11-single-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-empty-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-marker-in-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-multiline-reasoning: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-no-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-parallel-calls: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-single-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-stop-at-open-marker: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-truncated-in-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v13think-truncated-in-reasoning: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v3-empty-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v3-no-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v3-parallel-calls: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/v3-single-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v11-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v11-parallel: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v11-single-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v11-think-text: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v13-think-no-end: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-arguments-before-name: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-content-before-call: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-malformed-not-json: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-name-inside-arguments: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-no-space: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not coveredmistral/vllm-v3-parallel: no built-in Ollama parser for this model at the pin; Ollama serves it through a Go template with the legacy tools parser or through llama-server's native chat (see the llamacpp engine); legacy template parser not covered
- pass strict match on every realistic strategy
- soft pass only whitespace differs (normalization
soft-v1) - fail a check failed
- error the harness failed, not the engine's parser
- unsupported the engine has no parser for this family or model