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 | Reasoning excludes | 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 | none | 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 | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-fable-5-1* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-fable-* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-mythos-* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-fable-* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-mythos-* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-haiku-* | >=4.7 | adaptive | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=5.0; extends | no | none | 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 | none | 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 | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-5* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-* | >=4.7 | adaptive | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-haiku-* | >=4.5 | enabled | none | yes | yes | yes | no | yes | yes | native | xml | native_json | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=4.6 | enabled | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-opus-* | >=4.5; extends | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-opus-* | >=4.0 | enabled | none | 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 | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | claude-sonnet-* | >=4.5; extends | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | claude-sonnet-* | >=4.0 | enabled | none | 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 | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.7 | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-5* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-* | >=4.7 | adaptive | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-haiku-* | >=4.5 | enabled | none | yes | yes | yes | no | yes | yes | native | xml | native_json | yes | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.6 | enabled | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-opus-* | >=4.5; extends | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | anthropic/claude-opus-* | >=4.0 | enabled | none | 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 | none | yes | yes | yes | no | yes | yes | native | xml | native_json | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
anthropic | anthropic/claude-sonnet-* | >=4.5; extends | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | json | no | yes | text_only | yes | no |
anthropic | anthropic/claude-sonnet-* | >=4.0 | enabled | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
baseten | *kimi-k2* | any | enabled | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
baseten | * | any | no | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
bedrock | anthropic.claude-sonnet-4-5-20250929-v1:0 | any; extends | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
bedrock | meta.llama3-1-70b-instruct-v1:0 | any; extends | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
bedrock | anthropic.claude-* | any | no | none | 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 | none | no | no | no | no | yes | no | no | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | no |
bedrock | * | any | no | none | no | no | no | no | yes | no | no | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
cerebras | gpt-oss-* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
cerebras | gemma-4-31b | any | enabled | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
cerebras | zai-glm-* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
cerebras | llama-* | any | no | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
cerebras | qwen-* | any | no | none | 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 | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
cohere | command-* | any | adaptive | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
dashscope | qwen3.6-plus | any; extends | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | dashscope/qwen3.6* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | dashscope/qwen* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | qwen3.6* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
dashscope | qwen* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
deepinfra | *kimi-k3* | any | enabled,effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *qwen3.8* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *deepseek* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *glm-5.2* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | json | yes | yes | native_unreliable | yes | yes |
deepinfra | *glm-5* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
deepinfra | *qwen3.7* | any | enabled | none | 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 | none | 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 | none | 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 | none | 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 | none | 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,effort | temperature,top_p,presence_penalty,frequency_penalty | 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,effort | temperature,top_p,presence_penalty,frequency_penalty | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
fireworks | accounts/fireworks/models/qwen3p6-plus | any; extends | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
fireworks | accounts/fireworks/models/gpt-oss-* | any | effort | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
fireworks | accounts/fireworks/models/deepseek-v4* | any | enabled | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
fireworks | *qwen3p6* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
fireworks | *qwen* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
flexai | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
friendli | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
gemini | gemma-4* | models/gemma-4* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
gemini | gemini-3.6-flash* | models/gemini-3.6-flash* | any; extends | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
gemini | gemini-3.7* | models/gemini-3.7* | any; extends | effort | none | no | no | no | no | yes | no | no | plain | none | no | system | json | reasoning_summary | json | no | yes | text_only | yes | no |
gemini | gemini-3.8* | models/gemini-3.8* | any; extends | effort | none | no | no | no | no | yes | no | no | plain | none | no | system | json | reasoning_summary | json | no | yes | text_only | yes | no |
gemini | gemini-3.6* | models/gemini-3.6* | gemini-3.7* | models/gemini-3.7* | gemini-3.8* | models/gemini-3.8* | any | enabled,adaptive,effort | none | 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.5-flash-lite | any | enabled,adaptive,effort | none | 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-flash-lite | any | enabled,adaptive,effort | none | yes | yes | yes | no | yes | yes | native | xml,markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
gemini | gemini-2.5-flash* | any | enabled,adaptive,effort | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | no | markdown | none | no | system | json | none | none | no | no | unsupported | no | no |
groq | *gpt-oss-* | any | effort | none | 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 | toggle | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
groq | qwen/qwen3.8* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | no |
groq | llama-* | any | no | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | text | yes | yes | native_unreliable | yes | no |
huggingface | qwen/qwen3-coder* | any | no | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
huggingface | qwen/* | any | enabled | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
hunyuan | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
hyperbolic | * | any | no | none | 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 | none | 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 | none | no | no | no | no | yes | no | delimited | plain | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
llamacpp | *qwen3.6* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | interchangeable | yes | no |
llamacpp | *qwen3* | any | enabled | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | json | no | yes | text_only | yes | no |
llamacpp | * | any | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
local | *qwen3.6* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
local | *qwen3* | any | enabled | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
local | gemma-4* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
local | * | any | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
meta | muse-spark-* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
minimax | minimax-m3* | any | adaptive | none | 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 | none | 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 | none | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
minimax | minimax-m2* | any | enabled | none | no | no | no | no | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
minimax | minimax-text-* | any | no | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
mistral | codestral-* | any | no | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
mistral | devstral-* | any | no | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
mlx | *qwen3* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
mlx | * | any | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
mock | mock-minimal* | any | no | none | no | no | no | no | yes | no | no | markdown | none | no | system | json | none | text | no | yes | text_only | yes | no |
mock | mock | mock-* | any | adaptive,effort | none | yes | yes | yes | no | yes | yes | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
moonshot | *kimi-k3* | any | effort | none | 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 | none | 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 | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nebius | * | any | no | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | yes | no | no | yes | yes | no | delimited | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *kimi-k2.6* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
nvidia | *step-3.7-flash* | any | enabled | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | yes |
nvidia | *mistral* | any | no | none | 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 | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
nvidia | * | any | no | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
ollama | llava* | any | no | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | format_kw | markdown | delimited | no | system | json | none | json | no | yes | text_only | yes | no |
ollama | * | any | no | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
openai | gpt-4o* | any | no | none | yes | yes | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
openai | gpt-4.1* | any | no | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
openai | gpt-*codex* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-6* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-5.6* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-5.4* | openai/gpt-5.4* | any; extends | no | temperature | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
openai | gpt-* | >=5.4 | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-* | >=5.1 | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-* | >=5.0 | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | gpt-* | any | no | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
openai | o1* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | o3* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | o4* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-4o* | any | no | none | yes | yes | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-4.1* | any | no | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-*codex* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-6* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-5.6* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-* | >=5.4 | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-* | >=5.1 | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-* | >=5.0 | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/gpt-* | any | no | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/o3* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openai | openai/o4* | any | effort | none | yes | no | no | no | yes | no | native | markdown | native_json | no | developer | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
openrouter | qwen/qwen3.6-35b-a3b | any; extends | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | qwen/qwen3.6-plus* | any; extends | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
openrouter | anthropic/claude-fable-* | any | no | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | 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 | none | yes | yes | yes | no | yes | no | tool_use | xml | xml_tagged | no | system | xml | thinking_blocks | native | yes | yes | unknown | yes | yes |
openrouter | anthropic/claude-* | any | no | none | yes | yes | yes | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | yes |
openrouter | qwen/* | any | enabled | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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.6* | google/gemini-3.7* | google/gemini-3.8* | any | enabled,adaptive,effort | none | 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-flash-lite | any | enabled,adaptive,effort | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | delimited | plain | none | no | system | json | none | native | yes | yes | unknown | yes | no |
openrouter | z-ai/glm-5.3-flash | any; extends | no | none | yes | no | no | yes | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
openrouter | z-ai/glm-5.3* | any; extends | effort | none | no | no | no | no | yes | no | no | plain | none | no | system | json | reasoning_summary | json | no | yes | text_only | yes | no |
openrouter | z-ai/glm-5* | any | enabled,effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
openrouter | kwaipilot/kat-coder-pro-v2 | any | no | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
parasail | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
qianfan | * | any | no | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | interchangeable | yes | no |
sambanova | *deepseek* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
sambanova | *llama* | any | no | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
sambanova | *minimax* | any | enabled | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
siliconflow | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
together | Qwen/Qwen3.6-Plus | any; extends | enabled | none | yes | no | no | no | yes | no | native | markdown | delimited | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | Qwen/Qwen3.8-2.4T-A95B | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
together | Qwen/Qwen3.7-Max | any | enabled | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | delimited | no | system | json | none | native | yes | yes | unknown | yes | no |
together | qwen/* | any | enabled | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
together | moonshotai/kimi-k3 | any | enabled,effort | none | yes | 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 | none | 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 | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
together | minimaxai/minimax-m3* | any | enabled | none | 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 | none | 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 | none | 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 | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
together | moonshotai/* | any | no | none | 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 | none | 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 | none | no | no | no | no | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
vertex | gemini-* | any | no | none | no | no | no | no | yes | no | no | markdown | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
volcengine_ark | * | any | no | none | no | no | no | no | yes | no | native | plain | native_json | no | system | json | none | native | yes | yes | unknown | yes | no |
xai | grok-* | any | adaptive | none | yes | no | no | no | yes | no | native | markdown | native_json | no | system | json | reasoning_summary | native | yes | yes | unknown | yes | yes |
zai | glm-5.3-flash | any; extends | no | none | yes | no | no | yes | yes | no | no | plain | none | no | system | json | none | json | no | yes | text_only | yes | no |
zai | glm-5.3* | any | effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
zai | glm-5.2* | any | enabled,effort | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
zai | glm-5.1* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | yes |
zai | glm-4* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | yes | no |
zai | glm-5* | any | enabled | none | no | no | no | no | yes | no | native | markdown | native_json | no | system | json | inline | native | yes | yes | unknown | 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-fable-5-1 | 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-Flash-0731 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/deepseek-ai/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/deepseek-ai/DeepSeek-V4-Pro-0813 | 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/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.2 | native | unknown | - | - | - | - | - | data not yet collected |
baseten | baseten/zai-org/GLM-5.2-Fast | native | unknown | - | - | - | - | - | data not yet collected |
bedrock | anthropic.claude-sonnet-4-5-20250929-v1:0 | native | unknown | - | - | - | - | - | data not yet collected |
bedrock | meta.llama3-1-70b-instruct-v1:0 | native | unknown | - | - | - | - | - | data not yet collected |
cerebras | gemma-4-31b | native | unknown | - | - | - | - | - | data not yet collected |
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/Qwen/Qwen3.8-2.4T-A95B | 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/moonshotai/Kimi-K3 | 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-08-15 live probe: native channel emits 38 duplicate tool_calls for one intent under tool_choice=required (deterministic 4/4, sync + streaming); tool_choice=auto is clean. Host-specific to DeepInfra's GLM-5.2 deployment — GLM-5.1/GLM-4.7/DeepSeek on the same host and GLM-5.2 on five other hosts each return a single call. Fenced JSON text-channel tools dispatch correctly. |
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-5p2 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. Fireworks glm-5p2 verified on tool_choice=auto and required, sync and streaming. |
fireworks | accounts/fireworks/models/gpt-oss-120b | text | text_only | - | - | - | - | - | 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 | gemini-3.5-flash-lite | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.6-flash | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.7-flash | native | unknown | - | - | - | - | - | data not yet collected |
gemini | gemini-3.8-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 | qwen/qwen3.6-27b | native | unknown | - | - | - | - | - | data not yet collected |
groq | qwen/qwen3.8-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 | native | interchangeable | - | - | - | - | - | catalog note: 2026-08-19 CUDA receipt, llama-server b9994-14d3ba45f on an RTX 5090 host, Qwen3.6-35B-A3B-UD-Q4_K_XL, n_ctx 65536, chat template sha256 55d4931433fe, harn 0.10.105. Independent replication of the 2026-08-18 Metal receipt (llama-server b10360-48d22e295), which superseded the 2026-07-19 #5162 CUDA receipt. That reversal is now ATTRIBUTED, where the Metal receipt could only say hardware, runtime build, and revision all differed. This arm holds hardware at CUDA and still finds native working, so it was not hardware; and the #5162 arm was never a native arm at all. The mechanism is the one this row already states about the Metal arm: with native_tools = false no tools array reaches the wire and the arm cannot be measured. #5162's surviving invocation and stderr show it passed a tool_format override, which clears the FORMAT gate only, and no capability override. A static read of the July revision 38067db78 confirms the two gates are independent: the format gate is cleared by override_reason, a separate gate rewrites native to json on a text_only route with no override argument, and the tools array is attached only when the RESOLVED format is native, so no branch at that revision could put tools on the wire for this row. #5162 therefore measured the half-cleared state and never measured native. Stated at its true strength: the invocation and its output were read and the July-era code has no path that could have served a tools array, but no July request body survives to be read, and an unrecorded capability override in that lane cannot be excluded by observation, only judged unlikely because such an override is a deliberate act that the Metal receipt's author documented explicitly when they used it. Six coding-agent fixtures, two replicates, three forced formats, 36 runs, pre-registered validity gate held with skipped_runs = 0 in every arm. Completion: native 10/12, tagged text 10/12, fenced JSON 8/12, cell-for-cell identical to the Metal receipt. Six of the eight failures are no-tool-diagnosis failing 0/2 in ALL THREE arms; that is the grader defect harn#6843, which is fixed on the Metal receipt's branch and NOT on this one, so it reproduces as expected and is not a capability read. On the ten measurable cells: native 10/10, text 10/10, json 8/10. NO CLAIM of a native completion advantage is made: 12 runs per arm cannot separate 10/12 from 8/12, and the generated overlay's preferred_tool_format = native is the classifier's TIEBREAK DEFAULT rather than an empirical result, while its confidence = high means only that sample size and replicate count cleared a floor. What the receipt does establish is that the native channel returns parseable tool calls on this route under CUDA: 57 requests carried a tools array of up to 6 tools and 63 native tool calls came back on the structured channel, counted twice by independent paths (an intercepting proxy on the wire and the per-run rows) which agree exactly, and not read from a parsed_tool_calls field. CONSTRAINED DECODING IS NOT INVOKED: zero of the 57 tool-bearing requests carried grammar, json_schema, response_format, or any guided_* field. All 29 response_format requests carried NO tools and are repair/output-contract turns, reproducing on CUDA the correction the Metal receipt made about its own arm; the arm is therefore native over a plain tools channel with the repair-turn contract active. THROUGHPUT, which neither prior receipt measured: excluding 22 of 225 degenerate sub-20-token completions whose per-second rates are division artifacts, tool-bearing requests ran a median 247.1 tok/s (p10 244.8, p90 248.8, n=55) against 247.4 tok/s (p10 233.9, p90 250.0, n=148) without tools. The 30-40% constrained-decoding tax seen on grammar-bearing routes does not appear here, consistent with no grammar being applied. Prompt cost measured on the wire: native median 2444 system-prompt characters against 8473 for the text channel, which must teach its dialect every turn. Secondary, over 12 runs per arm: wall 41.0s native / 35.9s text / 49.4s json; iterations 57 / 66 / 68; tool calls 63 / 56 / 52; REJECTED tool calls 8 / 4 / 3, the most on native. BLIND SPOTS: one quant, one host, one llama.cpp build, where the July sweep covered three quants; two replicates is the classifier's floor and not convergence grade; the 29 repair turns cannot be attributed to particular arms by request shape, only shown to carry no tools; the server held a warm 21k-token prompt cache at the start and that was not controlled for, though the rig interleaves formats; and the #5162 attribution above rests on that run's invocation, its stderr, and a static read of its revision, NOT on any surviving request body, because none does. server_parser = none. |
llamacpp | qwen3.6-35b-a3b-ud-q4-k-xl | native | interchangeable | - | - | - | - | - | catalog note: 2026-08-19 CUDA receipt, llama-server b9994-14d3ba45f on an RTX 5090 host, Qwen3.6-35B-A3B-UD-Q4_K_XL, n_ctx 65536, chat template sha256 55d4931433fe, harn 0.10.105. Independent replication of the 2026-08-18 Metal receipt (llama-server b10360-48d22e295), which superseded the 2026-07-19 #5162 CUDA receipt. That reversal is now ATTRIBUTED, where the Metal receipt could only say hardware, runtime build, and revision all differed. This arm holds hardware at CUDA and still finds native working, so it was not hardware; and the #5162 arm was never a native arm at all. The mechanism is the one this row already states about the Metal arm: with native_tools = false no tools array reaches the wire and the arm cannot be measured. #5162's surviving invocation and stderr show it passed a tool_format override, which clears the FORMAT gate only, and no capability override. A static read of the July revision 38067db78 confirms the two gates are independent: the format gate is cleared by override_reason, a separate gate rewrites native to json on a text_only route with no override argument, and the tools array is attached only when the RESOLVED format is native, so no branch at that revision could put tools on the wire for this row. #5162 therefore measured the half-cleared state and never measured native. Stated at its true strength: the invocation and its output were read and the July-era code has no path that could have served a tools array, but no July request body survives to be read, and an unrecorded capability override in that lane cannot be excluded by observation, only judged unlikely because such an override is a deliberate act that the Metal receipt's author documented explicitly when they used it. Six coding-agent fixtures, two replicates, three forced formats, 36 runs, pre-registered validity gate held with skipped_runs = 0 in every arm. Completion: native 10/12, tagged text 10/12, fenced JSON 8/12, cell-for-cell identical to the Metal receipt. Six of the eight failures are no-tool-diagnosis failing 0/2 in ALL THREE arms; that is the grader defect harn#6843, which is fixed on the Metal receipt's branch and NOT on this one, so it reproduces as expected and is not a capability read. On the ten measurable cells: native 10/10, text 10/10, json 8/10. NO CLAIM of a native completion advantage is made: 12 runs per arm cannot separate 10/12 from 8/12, and the generated overlay's preferred_tool_format = native is the classifier's TIEBREAK DEFAULT rather than an empirical result, while its confidence = high means only that sample size and replicate count cleared a floor. What the receipt does establish is that the native channel returns parseable tool calls on this route under CUDA: 57 requests carried a tools array of up to 6 tools and 63 native tool calls came back on the structured channel, counted twice by independent paths (an intercepting proxy on the wire and the per-run rows) which agree exactly, and not read from a parsed_tool_calls field. CONSTRAINED DECODING IS NOT INVOKED: zero of the 57 tool-bearing requests carried grammar, json_schema, response_format, or any guided_* field. All 29 response_format requests carried NO tools and are repair/output-contract turns, reproducing on CUDA the correction the Metal receipt made about its own arm; the arm is therefore native over a plain tools channel with the repair-turn contract active. THROUGHPUT, which neither prior receipt measured: excluding 22 of 225 degenerate sub-20-token completions whose per-second rates are division artifacts, tool-bearing requests ran a median 247.1 tok/s (p10 244.8, p90 248.8, n=55) against 247.4 tok/s (p10 233.9, p90 250.0, n=148) without tools. The 30-40% constrained-decoding tax seen on grammar-bearing routes does not appear here, consistent with no grammar being applied. Prompt cost measured on the wire: native median 2444 system-prompt characters against 8473 for the text channel, which must teach its dialect every turn. Secondary, over 12 runs per arm: wall 41.0s native / 35.9s text / 49.4s json; iterations 57 / 66 / 68; tool calls 63 / 56 / 52; REJECTED tool calls 8 / 4 / 3, the most on native. BLIND SPOTS: one quant, one host, one llama.cpp build, where the July sweep covered three quants; two replicates is the classifier's floor and not convergence grade; the 29 repair turns cannot be attributed to particular arms by request shape, only shown to carry no tools; the server held a warm 21k-token prompt cache at the start and that was not controlled for, though the rig interleaves formats; and the #5162 attribution above rests on that run's invocation, its stderr, and a static read of its revision, NOT on any surviving request body, because none does. server_parser = none. |
llamacpp | qwen3.6-35b-a3b-ud-q5-k-xl | native | interchangeable | - | - | - | - | - | catalog note: 2026-08-19 CUDA receipt, llama-server b9994-14d3ba45f on an RTX 5090 host, Qwen3.6-35B-A3B-UD-Q4_K_XL, n_ctx 65536, chat template sha256 55d4931433fe, harn 0.10.105. Independent replication of the 2026-08-18 Metal receipt (llama-server b10360-48d22e295), which superseded the 2026-07-19 #5162 CUDA receipt. That reversal is now ATTRIBUTED, where the Metal receipt could only say hardware, runtime build, and revision all differed. This arm holds hardware at CUDA and still finds native working, so it was not hardware; and the #5162 arm was never a native arm at all. The mechanism is the one this row already states about the Metal arm: with native_tools = false no tools array reaches the wire and the arm cannot be measured. #5162's surviving invocation and stderr show it passed a tool_format override, which clears the FORMAT gate only, and no capability override. A static read of the July revision 38067db78 confirms the two gates are independent: the format gate is cleared by override_reason, a separate gate rewrites native to json on a text_only route with no override argument, and the tools array is attached only when the RESOLVED format is native, so no branch at that revision could put tools on the wire for this row. #5162 therefore measured the half-cleared state and never measured native. Stated at its true strength: the invocation and its output were read and the July-era code has no path that could have served a tools array, but no July request body survives to be read, and an unrecorded capability override in that lane cannot be excluded by observation, only judged unlikely because such an override is a deliberate act that the Metal receipt's author documented explicitly when they used it. Six coding-agent fixtures, two replicates, three forced formats, 36 runs, pre-registered validity gate held with skipped_runs = 0 in every arm. Completion: native 10/12, tagged text 10/12, fenced JSON 8/12, cell-for-cell identical to the Metal receipt. Six of the eight failures are no-tool-diagnosis failing 0/2 in ALL THREE arms; that is the grader defect harn#6843, which is fixed on the Metal receipt's branch and NOT on this one, so it reproduces as expected and is not a capability read. On the ten measurable cells: native 10/10, text 10/10, json 8/10. NO CLAIM of a native completion advantage is made: 12 runs per arm cannot separate 10/12 from 8/12, and the generated overlay's preferred_tool_format = native is the classifier's TIEBREAK DEFAULT rather than an empirical result, while its confidence = high means only that sample size and replicate count cleared a floor. What the receipt does establish is that the native channel returns parseable tool calls on this route under CUDA: 57 requests carried a tools array of up to 6 tools and 63 native tool calls came back on the structured channel, counted twice by independent paths (an intercepting proxy on the wire and the per-run rows) which agree exactly, and not read from a parsed_tool_calls field. CONSTRAINED DECODING IS NOT INVOKED: zero of the 57 tool-bearing requests carried grammar, json_schema, response_format, or any guided_* field. All 29 response_format requests carried NO tools and are repair/output-contract turns, reproducing on CUDA the correction the Metal receipt made about its own arm; the arm is therefore native over a plain tools channel with the repair-turn contract active. THROUGHPUT, which neither prior receipt measured: excluding 22 of 225 degenerate sub-20-token completions whose per-second rates are division artifacts, tool-bearing requests ran a median 247.1 tok/s (p10 244.8, p90 248.8, n=55) against 247.4 tok/s (p10 233.9, p90 250.0, n=148) without tools. The 30-40% constrained-decoding tax seen on grammar-bearing routes does not appear here, consistent with no grammar being applied. Prompt cost measured on the wire: native median 2444 system-prompt characters against 8473 for the text channel, which must teach its dialect every turn. Secondary, over 12 runs per arm: wall 41.0s native / 35.9s text / 49.4s json; iterations 57 / 66 / 68; tool calls 63 / 56 / 52; REJECTED tool calls 8 / 4 / 3, the most on native. BLIND SPOTS: one quant, one host, one llama.cpp build, where the July sweep covered three quants; two replicates is the classifier's floor and not convergence grade; the 29 repair turns cannot be attributed to particular arms by request shape, only shown to carry no tools; the server held a warm 21k-token prompt cache at the start and that was not controlled for, though the rig interleaves formats; and the #5162 attribution above rests on that run's invocation, its stderr, and a static read of its revision, NOT on any surviving request body, because none does. 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 |
meta | muse-spark-1.1 | native | unknown | - | - | - | - | - | data not yet collected |
meta | muse-spark-1.2 | native | unknown | - | - | - | - | - | data not yet collected |
meta | muse-spark-1.2-contributor | native | unknown | - | - | - | - | - | data not yet collected |
meta | muse-spark-1.3 | native | unknown | - | - | - | - | - | data not yet collected |
meta | muse-spark-1.3-contributor | 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 | 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. A 2026-08-26 direct control confirmed that K3 accepts tool_choice=required with reasoning_effort=max and returns a native tool call. |
nvidia | nvidia/deepseek-v4-flash-0731 | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/kimi-k2.6 | native | unknown | - | - | - | - | - | data not yet collected |
nvidia | nvidia/minimax-m3 | 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/nemotron-3.5-lightning-30b-a3b | 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 |
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 | gpt-6-astra | 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 |
openai | text-embedding-3-small | not supported | 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-flash-0731 | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | deepseek/deepseek-v4-pro | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | deepseek/deepseek-v4-pro-0813 | 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/gemini-3.5-flash-lite | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemini-3.6-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemini-3.7-flash | native | unknown | - | - | - | - | - | data not yet collected |
openrouter | google/gemini-3.8-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 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
openrouter | z-ai/glm-5.1 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
openrouter | z-ai/glm-5.2 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
openrouter | z-ai/glm-5.3 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
openrouter | z-ai/glm-5.3-flash | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
openrouter | z-ai/glm-5v-turbo | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. OpenRouter z-ai/glm-5.2 verified on tool_choice=auto and required, sync and streaming. |
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/MiniMax-M3 | 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 | Qwen/Qwen3.8-2.4T-A95B | native | unknown | - | - | - | - | - | data not yet collected |
together | deepseek-ai/DeepSeek-V4-Flash-0731 | native | unknown | - | - | - | - | - | data not yet collected |
together | deepseek-ai/DeepSeek-V4-Pro | native | unknown | - | - | - | - | - | data not yet collected |
together | deepseek-ai/DeepSeek-V4-Pro-0813 | 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 | moonshotai/Kimi-K3 | 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.2 | native | unknown | - | - | - | - | - | catalog note: 2026-08-15 cross-host native re-probe: single clean message.tool_calls, empty content, no <tool_call> markup. Together zai-org/GLM-5.2 verified on tool_choice=auto (sync + streaming) and required. Caveat: under tool_choice=required 1 of 4 runs returned the schema placeholder {"city":"string"} instead of the real argument; tool_choice=auto was clean in every run. |
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 |
vertex | vertex/gemini-2.5-flash | 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 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-4.5-air | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-4.6 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-4.7 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5-turbo | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5.1 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5.2 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5.3 | native | unknown | - | - | - | - | - | data not yet collected |
zai | glm-5.3-flash | native | unknown | - | - | - | - | - | data not yet collected |