Provider capability matrix
This table is generated from Harn's live provider capability rules. Model pattern is the model_match rule used by the runtime; first match wins within each provider. Version min is the optional inclusive lower bound for provider-specific model versions; extends marks an overlay whose unset fields resolve from later matching rows.
Regenerate with make gen-provider-matrix and verify with make check-provider-matrix.
| Provider | Model pattern | Version min | Thinking | Vision | Audio | Video | Streaming | Files API | JSON schema | Prompt | Output mode | Prefill | Role | Tool prompt | Thinking blocks | Default tools | Native tools | Text tools | Parity | Tools | Cache | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
anthropic | claude-mythos-preview* | any; extends | no | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | anthropic/claude-mythos-preview* | any; extends | no | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-fable-* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-mythos-* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-fable-* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-mythos-* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-haiku-* | >=4.7 | adaptive | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=5.0; extends | no | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-opus-* | >=4.8; extends | no | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-opus-* | >=4.7 | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-5* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-* | >=4.7 | adaptive | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-haiku-* | >=4.5 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=4.6 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=4.0 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-* | >=4.6 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-* | >=4.0 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-haiku-* | >=4.7 | adaptive | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.7 | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-5* | any | adaptive,effort | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-* | >=4.7 | adaptive | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-haiku-* | >=4.5 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.6 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.0 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-* | >=4.6 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-* | >=4.0 | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-* | any | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-* | any | enabled | yes | yes | yes | no | yes | yes | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
atlas | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
azure_openai | gpt-* | any | no | no | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
azure_openai | o1* | any | no | no | no | no | no | yes | no | no | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
azure_openai | o3* | any | no | no | no | no | no | yes | no | no | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
azure_openai | o4* | any | no | no | no | no | no | yes | no | no | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
baseten | *glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
baseten | *kimi-k2* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
baseten | *deepseek-v4* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
baseten | *gpt-oss* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
baseten | *nemotron* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
baseten | * | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
bedrock | anthropic.claude-* | any | no | no | no | no | no | yes | no | no | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | no |
bedrock | *claude* | any | no | no | no | no | no | yes | no | no | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | no |
bedrock | * | any | no | no | no | no | no | yes | no | no | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
cerebras | gpt-oss-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
cerebras | zai-glm-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
cerebras | llama-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
cerebras | qwen-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
cloudflare_ai_gateway | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
cohere | command-* | any | adaptive | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
dashscope | dashscope/qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | dashscope/qwen* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | qwen* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
deepinfra | *deepseek* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | json | yes | yes | native_unreliable | yes | yes |
deepinfra | *qwen3.7* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *qwen3.6* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | no |
deepinfra | *kimi-* | any | enabled | yes | no | no | yes | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *gpt-oss* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | text | no | yes | native_unreliable | yes | no |
deepinfra | * | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
deepseek | deepseek-v4-pro* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepseek | deepseek-v4-flash* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
fireworks | accounts/fireworks/models/gpt-oss-* | any | effort | no | no | no | no | yes | no | no | markdown | native_json | no | system | json | reasoning_summary | text | no | yes | text_only | yes | no |
fireworks | accounts/fireworks/models/glm-5p* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | json | yes | yes | native_unreliable | yes | yes |
fireworks | accounts/fireworks/models/deepseek-v4* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
fireworks | accounts/fireworks/models/kimi-k2p* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
fireworks | accounts/fireworks/models/minimax-m3* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | yes |
fireworks | *qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
fireworks | *qwen3p6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
fireworks | *qwen* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
flexai | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
friendli | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
gemini | gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
gemini | models/gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
gemini | gemini-2.5-flash* | any | enabled,adaptive,effort | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
gemini | models/gemini-2.5-flash* | any | enabled,adaptive,effort | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
gemini | gemini-2.5* | any | enabled,adaptive,effort | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
gemini | models/gemini-2.5* | any | enabled,adaptive,effort | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
gemini | gemini-3.5* | any | enabled,adaptive | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
gemini | models/gemini-3.5* | any | enabled,adaptive | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
gemini | gemini-3.1* | any | enabled,adaptive | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
gemini | models/gemini-3.1* | any | enabled,adaptive | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
gemini | gemini-* | any | no | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
gemini | models/gemini-* | any | no | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
github_models | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
groq | groq/compound* | any | no | no | no | no | no | yes | no | no | markdown | none | no | system | json | none | none | no | no | unsupported | no | no |
groq | *gpt-oss-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
groq | qwen/qwen3.6* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
groq | llama-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
huggingface | qwen/qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
huggingface | qwen/qwen3-coder* | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
huggingface | qwen/* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
huggingface | deepseek-ai/deepseek-v3* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
hunyuan | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
hyperbolic | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
inception | mercury-2 | any | effort | no | no | no | no | yes | no | native | plain | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
inception | mercury-coder-* | any | no | no | no | no | no | yes | no | delimited | plain | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
llamacpp | *qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | json | no | yes | text_only | yes | no |
llamacpp | *qwen3* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | json | no | yes | text_only | yes | no |
llamacpp | *devstral-small-2* | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | json | no | yes | text_only | yes | no |
local | *qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
local | *qwen3* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
local | gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
minimax | minimax-m3* | any | adaptive | yes | no | no | yes | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
minimax | minimax-m2.7* | any | enabled | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | json | yes | yes | native_unreliable | yes | yes |
minimax | minimax-m2.5* | any | enabled | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
minimax | minimax-m2* | any | enabled | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
minimax | minimax-text-* | any | no | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
mistral | mistral-medium-3-5* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
mistral | mistral-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
mistral | codestral-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
mistral | devstral-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
mlx | *qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
mlx | *qwen3* | any | enabled | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
moonshot | *kimi-k3* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | yes |
moonshot | *kimi-k2.7-code* | any | enabled | yes | no | no | yes | yes | no | native | markdown | native_json | no | system | json | inline | json | yes | yes | native_unreliable | yes | yes |
moonshot | *kimi* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nebius | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
nvidia | *gpt-oss-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
nvidia | *nemotron-3-nano-omni* | any | enabled | yes | yes | no | yes | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
nvidia | *nemotron-3-nano-30b-a3b* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | no |
nvidia | *nemotron-3* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
nvidia | *deepseek-v4* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *minimax-m3* | any | adaptive | yes | no | no | yes | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *minimax-m2.7* | any | enabled | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *kimi-k2.6* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
nvidia | *step-3.7-flash* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | yes |
nvidia | *mistral* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
nvidia | *gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
nvidia | * | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
ollama | llava* | any | no | yes | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
ollama | bakllava* | any | no | yes | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
ollama | llama3.2-vision* | any | no | yes | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
ollama | llama3.2* | any | no | no | no | no | no | yes | no | format_kw | markdown | native_json | no | system | json | none | native | yes | no | native_only | yes | no |
ollama | gemma3* | any | no | yes | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
ollama | gemma4:12b* | any | no | no | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | none | text | no | yes | text_only | yes | no |
ollama | gemma4* | any | no | yes | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | none | text | no | yes | text_only | yes | no |
ollama | qwen3.6* | any | enabled | no | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | inline | json | no | yes | text_only | yes | no |
ollama | qwen3* | any | enabled | no | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | inline | native | yes | no | native_only | yes | no |
ollama | devstral-small-2* | any | no | no | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | none | json | no | yes | text_only | yes | no |
openai | gpt-4o* | any | no | yes | yes | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | gpt-4.1* | any | no | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | gpt-*codex* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | gpt-5.6* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | gpt-* | >=5.4 | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | gpt-* | >=5.1 | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | gpt-* | >=5.0 | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | gpt-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | o1* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | o3* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | o4* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-4o* | any | no | yes | yes | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | openai/gpt-4.1* | any | no | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | openai/gpt-*codex* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-5.6* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-* | >=5.4 | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-* | >=5.1 | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-* | >=5.0 | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/gpt-* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | openai/o1* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/o3* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openai | openai/o4* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openrouter | anthropic/claude-fable-* | any | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-mythos-* | any | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-haiku-* | >=4.7 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-haiku-* | >=4.5 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-sonnet-* | >=4.7 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-sonnet-* | >=4.6 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-opus-* | >=4.7 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-opus-* | >=4.6 | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-* | any | no | no | no | no | no | yes | no | tool_use | xml | xml_tagged | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.7-plus | any | enabled | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.7-max | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.6-plus | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.6-flash | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | qwen/qwen3-coder-plus | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | text | yes | yes | native_unreliable | yes | yes |
openrouter | qwen/qwen3-coder-flash | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | text | yes | yes | native_unreliable | yes | yes |
openrouter | qwen/qwen3-coder* | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | text | yes | yes | native_unreliable | yes | no |
openrouter | qwen/qwen3-max | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen-plus | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | yes |
openrouter | qwen/* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | deepseek/deepseek-v4* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | deepseek/deepseek-v3.2* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | text | yes | yes | native_unreliable | yes | yes |
openrouter | deepseek/deepseek-v3* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | deepseek/deepseek-chat-v3.1* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | deepseek/deepseek-chat* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
openrouter | deepseek/deepseek-r1-0528* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | deepseek/deepseek-r1 | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openrouter | mistralai/mistral-medium-3-5* | any | effort | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
openrouter | mistralai/mistral* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | mistralai/devstral* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | moonshotai/kimi-k2.7-code | any | enabled | yes | no | no | yes | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
openrouter | moonshotai/kimi-k2* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | google/gemini-2.5* | any | enabled,effort | yes | yes | yes | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | google/gemini-3.5* | any | enabled,adaptive | yes | yes | yes | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | google/gemma-4* | any | no | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | meta-llama/llama-4* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | meta-llama/llama-3* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | minimax/minimax-m3* | any | adaptive | yes | no | no | yes | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | minimax/minimax-m2.7* | any | no | no | no | no | no | yes | no | delimited | plain | none | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | minimax/minimax-m2* | any | no | no | no | no | no | yes | no | delimited | plain | none | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | z-ai/glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
openrouter | kwaipilot/kat-coder-pro-v2 | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | interchangeable | yes | yes |
openrouter | openai/gpt-oss-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | text | no | yes | text_only | yes | no |
openrouter | stepfun/step-3.7-flash | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | yes |
openrouter | x-ai/grok-* | any | adaptive | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | bytedance-seed/* | any | enabled | yes | no | no | yes | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | cohere/north-mini-code:free | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | nvidia/nemotron-3* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | openrouter/free | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
parasail | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
qianfan | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
sambanova | *deepseek-v3.2* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | no |
sambanova | *deepseek* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
sambanova | *llama* | any | no | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
sambanova | *minimax* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
sambanova | *gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
sambanova | *gpt-oss* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | text | no | yes | native_unreliable | yes | no |
sambanova | * | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
siliconflow | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
together | Qwen/Qwen3.7-Max | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
together | qwen/qwen3.6* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | qwen/qwen3-coder* | any | no | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
together | qwen/* | any | enabled | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | deepseek-ai/deepseek-v3* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
together | openai/gpt-oss-* | any | effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
together | meta-llama/Llama-3.3-70B-Instruct-Turbo | any | no | no | no | no | no | yes | no | no | markdown | none | no | system | json | none | native | yes | yes | unknown | yes | no |
together | deepseek-ai/deepseek-v4* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
together | moonshotai/kimi-k2* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | zai-org/glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
together | minimaxai/minimax-m3* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
together | minimaxai/minimax-m2.7* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
together | google/gemma-4* | any | enabled | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | together/nvidia/nemotron-3* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | moonshotai/* | any | no | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
vercel_ai_gateway | google/gemini-3.1* | any; extends | enabled,adaptive | yes | yes | yes | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
vercel_ai_gateway | * | any; extends | no | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
vertex | gemini-* | any | no | no | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
volcengine_ark | * | any | no | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
xai | grok-* | any | adaptive | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
zai | glm-5.2* | any | enabled,effort | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
zai | glm-5.1* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | yes |
zai | glm-4* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | no |
zai | glm-5* | any | enabled | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | text | yes | yes | native_unreliable | yes | no |
Tool-format recommendations by catalog model
This section starts from the checked-in provider catalog. Recommended format follows the live capability matrix. Empirical columns are layered only when --empirical <path> is supplied; checked-in output is therefore reproducible from the repository alone. Rows without sampled benchmark evidence show catalog capability notes when present, otherwise data not yet collected.
| Provider | Model | Recommended format | Parity | Native pass | Text pass | Samples | Last evaluated | Confidence | Evidence |
|---|---|---|---|---|---|---|---|---|---|
anthropic | claude-3-5-haiku-20241022 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-3-5-sonnet-20240620 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-3-5-sonnet-20241022 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-3-opus-20240229 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-fable-5 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-haiku-4-5-20251001 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-1-20250805 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-20250514 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-5-20251101 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-6 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-7 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-4-8 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-opus-5 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-sonnet-4-20250514 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-sonnet-4-5 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-sonnet-4-5-20250929 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-sonnet-4-6 | native | unknown | - | - | - | - | - | data not yet collected |
anthropic | claude-sonnet-5 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/deepseek-ai/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/moonshotai/Kimi-K2.5 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/moonshotai/Kimi-K2.6 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/moonshotai/Kimi-K2.7-Code | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/nvidia/Nemotron-120B-A12B | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/openai/gpt-oss-120b | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/zai-org/GLM-4.7 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/zai-org/GLM-5 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>. |
baseten | baseten/zai-org/GLM-5.1 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>. |
baseten | baseten/zai-org/GLM-5.2 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>. |
cerebras | gpt-oss-120b | native | unknown | - | - | - | - | - | data not yet collected |
cerebras | llama-3.3-70b | native | unknown | - | - | - | - | - | data not yet collected |
cerebras | zai-glm-4.7 | native | unknown | - | - | - | - | - | data not yet collected |
cohere | command-a-plus-05-2026 | native | unknown | - | - | - | - | - | data not yet collected |
dashscope | dashscope/qwen3-coder-next | native | unknown | - | - | - | - | - | data not yet collected |
dashscope | dashscope/qwen3-coder-plus | native | unknown | - | - | - | - | - | data not yet collected |
dashscope | dashscope/qwen3.5-397b-a17b | native | unknown | - | - | - | - | - | data not yet collected |
dashscope | dashscope/qwen3.6-35b-a3b | native | unknown | - | - | - | - | - | data not yet collected |
dashscope | dashscope/qwen3.7-max | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/MiniMaxAI/MiniMax-M2.7-Turbo | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507 | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/Qwen/Qwen3.5-397B-A17B | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/Qwen/Qwen3.6-27B | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 forced-format sweep (N=5): DeepInfra Qwen3.6-35B-A3B native bills empty completions (1/5) and fenced-JSON is flaky (2/5); heredoc text carried a backslash-heavy Zig body byte-clean 5/5. |
deepinfra | deepinfra/Qwen/Qwen3.6-35B-A3B | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 forced-format sweep (N=5): DeepInfra Qwen3.6-35B-A3B native bills empty completions (1/5) and fenced-JSON is flaky (2/5); heredoc text carried a backslash-heavy Zig body byte-clean 5/5. |
deepinfra | deepinfra/Qwen/Qwen3.7-Max | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/deepseek-ai/DeepSeek-V3.2 | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/deepseek-ai/DeepSeek-V4-Flash | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/deepseek-ai/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/moonshotai/Kimi-K2.7-Code | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/openai/gpt-oss-120b | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): DeepInfra native billed completion_tokens=86 with no dispatchable tool call or answer (Harmony reasoning-channel-only / upstream contract violation), repeated ~10x -> run unusable. Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68. |
deepinfra | deepinfra/zai-org/GLM-4.6 | native | unknown | - | - | - | - | - | data not yet collected |
deepinfra | deepinfra/zai-org/GLM-5.2 | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted a malformed native call whose function name was the whole JSON payload; fenced JSON text-channel tools completed the loop. |
deepseek | deepseek-v4-flash | native | unknown | - | - | - | - | - | data not yet collected |
deepseek | deepseek-v4-pro | native | unknown | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/deepseek-v4-pro | native | unknown | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/glm-5p1 | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted XML <tool_use> text instead of provider-native tool_calls. JSON tools completed the loop when auto reasoning was disabled; text tools did not. |
fireworks | accounts/fireworks/models/glm-5p2 | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted XML <tool_use> text instead of provider-native tool_calls. JSON tools completed the loop when auto reasoning was disabled; text tools did not. |
fireworks | accounts/fireworks/models/gpt-oss-120b | text | text_only | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/kimi-k2p5 | native | unknown | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/kimi-k2p6 | native | unknown | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/kimi-k2p7-code | native | unknown | - | - | - | - | - | data not yet collected |
fireworks | accounts/fireworks/models/minimax-m3 | native | interchangeable | - | - | - | - | - | catalog note: 2026-07-18 credentialed probe (harn 0.10.23, direct Fireworks /v1, N=2): native carried the large backslash/quote/unicode string argument byte-exact on tool_choice auto and required (2/2); the Harn text-tool channel parsed byte-exact 2/2 (finish=stop, no reasoning over-run). |
gemini | gemini-2.5-flash | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-2.5-flash-lite | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-2.5-pro | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.1-flash-lite | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.1-pro-preview | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.5-flash | native | unknown | - | - | - | - | - | data not yet collected |
gemini | models/gemma-4-26b-a4b-it | native | unknown | - | - | - | - | - | data not yet collected |
gemini | models/gemma-4-31b-it | native | unknown | - | - | - | - | - | data not yet collected |
groq | groq/compound | none | unsupported | - | - | - | - | - | data not yet collected |
groq | groq/compound-mini | none | unsupported | - | - | - | - | - | data not yet collected |
groq | groq/openai/gpt-oss-120b | native | unknown | - | - | - | - | - | data not yet collected |
groq | groq/openai/gpt-oss-20b | native | unknown | - | - | - | - | - | data not yet collected |
groq | llama-3.1-8b-instant | native | unknown | - | - | - | - | - | data not yet collected |
groq | llama-3.3-70b-versatile | native | unknown | - | - | - | - | - | data not yet collected |
groq | qwen/qwen3.6-27b | native | unknown | - | - | - | - | - | data not yet collected |
huggingface | Qwen/Qwen3-Coder-480B-A35B-Instruct | native | unknown | - | - | - | - | - | data not yet collected |
inception | mercury-2 | native | unknown | - | - | - | - | - | catalog note: Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet. |
inception | mercury-coder-small | native | unknown | - | - | - | - | - | catalog note: Mercury Coder Small supports tool use on the OpenAI-compatible API; structured object generation was not documented as GA in the source pass. |
llamacpp | qwen3.6-35b-a3b | json | text_only | - | - | - | - | - | catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none. |
llamacpp | qwen3.6-35b-a3b-ud-q4-k-xl | json | text_only | - | - | - | - | - | catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none. |
llamacpp | qwen3.6-35b-a3b-ud-q5-k-xl | json | text_only | - | - | - | - | - | catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none. |
local | gemma-4-12b-it | native | unknown | - | - | - | - | - | data not yet collected |
local | gemma-4-26b-a4b-it | native | unknown | - | - | - | - | - | data not yet collected |
local | gemma-4-31b-it | native | unknown | - | - | - | - | - | data not yet collected |
local | gemma-4-e2b-it | native | unknown | - | - | - | - | - | data not yet collected |
local | gemma-4-e4b-it | native | unknown | - | - | - | - | - | data not yet collected |
minimax | MiniMax-M2 | native | unknown | - | - | - | - | - | data not yet collected |
minimax | MiniMax-M2.5 | native | unknown | - | - | - | - | - | data not yet collected |
minimax | MiniMax-M2.5-highspeed | native | unknown | - | - | - | - | - | data not yet collected |
minimax | MiniMax-M2.7 | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and prose claiming the tool had run; fenced JSON text-channel tools completed the loop. |
minimax | MiniMax-M2.7-highspeed | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and prose claiming the tool had run; fenced JSON text-channel tools completed the loop. |
minimax | MiniMax-M3 | native | unknown | - | - | - | - | - | data not yet collected |
minimax | MiniMax-Text-01 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | codestral-2508 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | devstral-medium-2512 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | devstral-small-2512 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | mistral-large-2512 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | mistral-medium-3-5 | native | unknown | - | - | - | - | - | data not yet collected |
mistral | mistral-small-2603 | native | unknown | - | - | - | - | - | data not yet collected |
mlx | unsloth/Qwen3.6-35B-A3B-UD-MLX-4bit | native | unknown | - | - | - | - | - | data not yet collected |
mlx | unsloth/Qwen3.6-35B-A3B-UD-MLX-8bit | native | unknown | - | - | - | - | - | data not yet collected |
moonshot | moonshot/kimi-k2.5 | native | unknown | - | - | - | - | - | data not yet collected |
moonshot | moonshot/kimi-k2.6 | native | unknown | - | - | - | - | - | data not yet collected |
moonshot | moonshot/kimi-k2.7-code | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and claimed the tool was unavailable. Harn JSON tools completed the loop; text tools also pass after fixing text-mode history projection. |
moonshot | moonshot/kimi-k2.7-code-highspeed | json | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and claimed the tool was unavailable. Harn JSON tools completed the loop; text tools also pass after fixing text-mode history projection. |
moonshot | moonshot/kimi-k3 | native | interchangeable | - | - | - | - | - | catalog note: 2026-07-18 credentialed probe (harn 0.10.23, direct Moonshot /v1, tool_choice=auto, N=2): native carried the large backslash/quote/unicode string argument byte-exact 2/2, and the Harn text-tool channel parsed byte-exact 2/2 with no reasoning over-run. Forced tool_choice (required/specified) returns HTTP 400 'incompatible with thinking enabled' and is not an available mode. |
nvidia | nvidia/deepseek-v4-flash | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/deepseek-v4-pro | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/kimi-k2.6 | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/minimax-m2.7 | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/minimax-m3 | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/mistral-medium-3.5-128b | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/nemotron-3-nano-30b-a3b | native | interchangeable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke: NVIDIA NIM Nemotron 3 Nano completed both native and JSON tool loops with reasoning disabled. Earlier native false negatives were caused by Harn's parser treating terse final answers as billed no-ops; keep native preferred. |
nvidia | nvidia/nemotron-3-nano-omni-30b-a3b-reasoning | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/nemotron-3-super-120b-a12b | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/nemotron-3-ultra-550b-a55b | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/openai/gpt-oss-120b | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/openai/gpt-oss-20b | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/step-3.7-flash | native | interchangeable | - | - | - | - | - | data not yet collected |
nvidia | nvidia/z-ai/glm-5.1 | text | native_unreliable | - | - | - | - | - | catalog note: GLM-5.x's native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls — a weight-intrinsic behavior reproduced across every GLM-5 host probed (zai/Baseten live, Together + OpenRouter agent-loop smoke, DeepInfra, Fireworks glm-5p*). NVIDIA serves the same weights, so the same leak applies; pin the clean heredoc text channel for family parity. Flagged by the native_unreliable-family consistency gate. |
ollama | devstral-small-2:24b | json | text_only | - | - | - | - | - | data not yet collected |
ollama | gemma4:12b-mlx | text | text_only | - | - | - | - | - | data not yet collected |
ollama | gemma4:12b-mxfp8 | text | text_only | - | - | - | - | - | data not yet collected |
ollama | gemma4:12b-nvfp4 | text | text_only | - | - | - | - | - | data not yet collected |
ollama | gemma4:26b | text | text_only | - | - | - | - | - | data not yet collected |
ollama | llama3.2 | native | native_only | - | - | - | - | - | data not yet collected |
openai | gpt-4-turbo | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-4.1 | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-4.1-mini | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-4.1-nano | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-4o | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-4o-mini | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.3-codex | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.4 | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.4-mini | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.4-nano | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.4-pro | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.5 | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.5-pro | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.6-luna | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.6-sol | native | unknown | - | - | - | - | - | data not yet collected |
openai | gpt-5.6-terra | native | unknown | - | - | - | - | - | data not yet collected |
openai | o1 | native | unknown | - | - | - | - | - | data not yet collected |
openai | o1-mini | native | unknown | - | - | - | - | - | data not yet collected |
openai | o3 | native | unknown | - | - | - | - | - | data not yet collected |
openai | o3-mini | native | unknown | - | - | - | - | - | data not yet collected |
openai | o4-mini | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | Qwen/Qwen3.5-9B | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-fable-5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-haiku-4-5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-opus-4.8 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-opus-4.8-fast | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-opus-5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-sonnet-4-6 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | anthropic/claude-sonnet-5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | bytedance-seed/seed-2.0-lite | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | cohere/north-mini-code:free | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | deepseek/deepseek-v3.2 | text | native_unreliable | - | - | - | - | - | catalog note: OpenRouter DeepSeek V3.2 advertises native tools, but coding-agent runs observed provider-native failures; default to Harn text tools and recover DSML markers. |
openrouter | deepseek/deepseek-v4-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | deepseek/deepseek-v4-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemini-2.5-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemini-3.5-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemma-4-26b-a4b-it | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemma-4-31b-it | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | kwaipilot/kat-coder-pro-v2 | native | interchangeable | - | - | - | - | - | catalog note: Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for KAT-Coder-Pro V2. |
openrouter | minimax/minimax-m2 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | minimax/minimax-m2.5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | minimax/minimax-m2.7 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | minimax/minimax-m3 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | mistralai/mistral-large-2512 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | mistralai/mistral-medium-3-5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | mistralai/mistral-small-2603 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | moonshotai/kimi-k2.6 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | moonshotai/kimi-k2.7-code | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 forced-format sweep (N=5): OpenRouter Kimi-K2.7-Code native dispatched 5/5 but double-escaped backslash bodies (1/5 fidelity); fenced-JSON emitted no parseable Harn call (0/5). Heredoc text carried the body byte-clean 5/5. |
openrouter | nvidia/nemotron-3-super-120b-a12b:free | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.4-mini | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.4-nano | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.4-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.5-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-luna | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-luna-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-sol | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-sol-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-terra | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-5.6-terra-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | openai/gpt-oss-120b | text | text_only | - | - | - | - | - | data not yet collected |
openrouter | openrouter/free | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3-coder | text | native_unreliable | - | - | - | - | - | catalog note: OpenRouter Qwen3-Coder Flash native tools exhausted the coding-agent fixture while text tools completed; default to Harn text tools for preset parity. |
openrouter | qwen/qwen3-coder-next | text | native_unreliable | - | - | - | - | - | catalog note: OpenRouter Qwen3-Coder Flash native tools exhausted the coding-agent fixture while text tools completed; default to Harn text tools for preset parity. |
openrouter | qwen/qwen3.5-397b-a17b | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.5-plus-20260420 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.6-35b-a3b | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.6-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.6-max-preview | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.6-plus | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.7-max | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | qwen/qwen3.7-plus | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | stepfun/step-3.7-flash | native | interchangeable | - | - | - | - | - | catalog note: Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for Step 3.7 Flash with reasoning enabled. |
openrouter | x-ai/grok-4.5 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | z-ai/glm-5 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks. |
openrouter | z-ai/glm-5.1 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks. |
openrouter | z-ai/glm-5.2 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks. |
openrouter | z-ai/glm-5v-turbo | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks. |
sambanova | sambanova/DeepSeek-V3.2 | native | interchangeable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke: SambaNova DeepSeek-V3.2 completed both native and JSON tool loops with reasoning disabled. Earlier native false negatives were caused by Harn's parser treating terse final answers as billed no-ops; keep native preferred. |
sambanova | sambanova/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
sambanova | sambanova/Llama-4-Maverick | native | unknown | - | - | - | - | - | data not yet collected |
sambanova | sambanova/Meta-Llama-3.3-70B-Instruct | native | unknown | - | - | - | - | - | data not yet collected |
sambanova | sambanova/MiniMax-M2.7 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 forced-format sweep (N=5): SambaNova MiniMax-M2.7 corrupted a backslash-heavy body on BOTH native (0/5) and fenced-JSON (0/5); heredoc text carried it byte-clean 5/5. |
sambanova | sambanova/gemma-4-31B-it | native | unknown | - | - | - | - | - | data not yet collected |
sambanova | sambanova/gpt-oss-120b | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 Harn agent-loop (gpt-oss-120b, zig-feat, tool grounding present): SambaNova native ended with a provider/tool-protocol failure (Harmony empty tool_calls / reasoning-channel-only class). Text/heredoc is the clean pay-per-token channel. See vLLM #22578/#44216, SGLang #8976/#10738, openai/harmony #68. |
together | MiniMaxAI/MiniMax-M2.7 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-24 forced-format sweep (N=5): Together MiniMax-M2.7 native 1/5 fidelity, fenced-JSON 2/5; heredoc text 4/5 (best on both dispatch and fidelity). Backslash-heavy bodies only round-trip on the escape-free text channel. Supersedes the 2026-06-20 json pin. |
together | MiniMaxAI/MiniMax-M3 | text | native_unreliable | - | - | - | - | - | catalog note: Family-on-host consistency pin: Together MiniMax-M2.7 native was 1/5 fidelity in the 2026-06-24 sweep; no M3-on-Together probe yet, so inherit text rather than an optimistic native pin. |
together | Qwen/Qwen2.5-7B-Instruct-Turbo | native | unknown | - | - | - | - | - | data not yet collected |
together | Qwen/Qwen3-Coder-Next-FP8 | native | unknown | - | - | - | - | - | data not yet collected |
together | Qwen/Qwen3.5-397B-A17B | native | unknown | - | - | - | - | - | data not yet collected |
together | Qwen/Qwen3.6-Plus | native | unknown | - | - | - | - | - | data not yet collected |
together | Qwen/Qwen3.7-Max | native | unknown | - | - | - | - | - | data not yet collected |
together | Qwen/Qwen3.7-Plus | native | unknown | - | - | - | - | - | data not yet collected |
together | deepseek-ai/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
together | google/gemma-4-31B-it | native | unknown | - | - | - | - | - | data not yet collected |
together | meta-llama/Llama-3.3-70B-Instruct-Turbo | native | unknown | - | - | - | - | - | catalog note: Together documents native tool calls for this serverless sample route; add live parity probes before broadening to all Together-hosted Llama variants. |
together | moonshotai/Kimi-K2.6 | native | unknown | - | - | - | - | - | data not yet collected |
together | moonshotai/Kimi-K2.7-Code | native | unknown | - | - | - | - | - | data not yet collected |
together | openai/gpt-oss-20b | native | unknown | - | - | - | - | - | data not yet collected |
together | together/nvidia/nemotron-3-ultra-550b-a55b | native | unknown | - | - | - | - | - | data not yet collected |
together | zai-org/GLM-5 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. |
together | zai-org/GLM-5.1 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. |
together | zai-org/GLM-5.2 | text | native_unreliable | - | - | - | - | - | catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. |
vercel_ai_gateway | vercel/anthropic/claude-haiku-4.5 | native | unknown | - | - | - | - | - | data not yet collected |
vercel_ai_gateway | vercel/google/gemini-3.1-flash-lite-preview | native | unknown | - | - | - | - | - | data not yet collected |
vercel_ai_gateway | vercel/openai/gpt-5.4-nano | native | unknown | - | - | - | - | - | data not yet collected |
xai | grok-4.3 | native | unknown | - | - | - | - | - | data not yet collected |
xai | grok-4.5 | native | unknown | - | - | - | - | - | data not yet collected |
xai | grok-build-0.1 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-4.5 | text | native_unreliable | - | - | - | - | - | catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin. |
zai | glm-4.5-air | text | native_unreliable | - | - | - | - | - | catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin. |
zai | glm-4.6 | text | native_unreliable | - | - | - | - | - | catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin. |
zai | glm-4.7 | text | native_unreliable | - | - | - | - | - | catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin. |
zai | glm-5 | text | native_unreliable | - | - | - | - | - | catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5). |
zai | glm-5-turbo | text | native_unreliable | - | - | - | - | - | catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5). |
zai | glm-5.1 | text | native_unreliable | - | - | - | - | - | catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5). |
zai | glm-5.2 | text | native_unreliable | - | - | - | - | - | catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5). |