Pre-release Harn is pre-1.0 — the language, standard library, and CLI may change between releases. See the release notes

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.

ProviderModel patternVersion minThinkingReasoning excludesVisionAudioPDFVideoStreamingFiles APIJSON schemaPromptOutput modePrefillRoleTool promptThinking blocksDefault toolsNative toolsText toolsParityToolsCache
anthropicclaude-mythos-preview*any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicanthropic/claude-mythos-preview*any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-fable-5-1*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-fable-*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-mythos-*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-fable-*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-mythos-*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-haiku-*>=4.7adaptivenoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=5.0; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-opus-*>=4.8; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-opus-*>=4.7adaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-5*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.7adaptivenoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-haiku-*>=4.5enablednoneyesyesyesnoyesyesnativexmlnative_jsonyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=4.6enablednoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=4.5; extendsnononenonononoyesnonativeplainnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-opus-*>=4.0enablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.6enablednoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.5; extendsnononenonononoyesnonativeplainnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-sonnet-*>=4.0enablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-haiku-*>=4.7adaptivenoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.7adaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-5*anyadaptive,effortnoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.7adaptivenoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-haiku-*>=4.5enablednoneyesyesyesnoyesyesnativexmlnative_jsonyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.6enablednoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.5; extendsnononenonononoyesnonativeplainnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
anthropicanthropic/claude-opus-*>=4.0enablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.6enablednoneyesyesyesnoyesyesnativexmlnative_jsonnosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.5; extendsnononenonononoyesnonativeplainnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
anthropicanthropic/claude-sonnet-*>=4.0enablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-*anyenablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-*anyenablednoneyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
atlas*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
azure_openaigpt-*anynononenonononoyesnonomarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
azure_openaio1*anynononenonononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
azure_openaio3*anynononenonononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
azure_openaio4*anynononenonononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
baseten*glm-5*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
baseten*kimi-k2*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
baseten*deepseek-v4*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
baseten*gpt-oss*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
baseten*nemotron*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
baseten*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
bedrockanthropic.claude-sonnet-4-5-20250929-v1:0any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
bedrockmeta.llama3-1-70b-instruct-v1:0any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
bedrockanthropic.claude-*anynononenonononoyesnonoxmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesno
bedrock*claude*anynononenonononoyesnonoxmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesno
bedrock*anynononenonononoyesnonomarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
cerebrasgpt-oss-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
cerebrasgemma-4-31banyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
cerebraszai-glm-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
cerebrasllama-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
cerebrasqwen-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
cloudflare_ai_gateway*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
coherecommand-*anyadaptivenoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
dashscopeqwen3.6-plusany; extendsenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopedashscope/qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopedashscope/qwen*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopeqwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopeqwen*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
deepinfra*kimi-k3*anyenabled,effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*qwen3.8*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*deepseek*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*glm-5.2*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinejsonyesyesnative_unreliableyesyes
deepinfra*glm-5*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*qwen3.7*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*qwen3.6*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesno
deepinfra*kimi-*anyenablednoneyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*gpt-oss*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyesnative_unreliableyesno
deepinfra*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
deepseekdeepseek-v4-pro*anyenabled,efforttemperature,top_p,presence_penalty,frequency_penaltynonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepseekdeepseek-v4-flash*anyenabled,efforttemperature,top_p,presence_penalty,frequency_penaltynonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/qwen3p6-plusany; extendsenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
fireworksaccounts/fireworks/models/gpt-oss-*anyeffortnonenonononoyesnonomarkdownnative_jsonnosystemjsonreasoning_summarytextnoyestext_onlyyesno
fireworksaccounts/fireworks/models/glm-5p*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/deepseek-v4*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/kimi-k2p*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/minimax-m3*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
fireworks*qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
fireworks*qwen3p6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
fireworks*qwen*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
flexai*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
friendli*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
geminigemma-4* | models/gemma-4*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
geminigemini-3.6-flash* | models/gemini-3.6-flash*any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
geminigemini-3.7* | models/gemini-3.7*any; extendseffortnonenonononoyesnonoplainnonenosystemjsonreasoning_summaryjsonnoyestext_onlyyesno
geminigemini-3.8* | models/gemini-3.8*any; extendseffortnonenonononoyesnonoplainnonenosystemjsonreasoning_summaryjsonnoyestext_onlyyesno
geminigemini-3.6* | models/gemini-3.6* | gemini-3.7* | models/gemini-3.7* | gemini-3.8* | models/gemini-3.8*anyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-3.5-flash-liteanyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminimodels/gemini-3.5-flash-liteanyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-2.5-flash*anyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminimodels/gemini-2.5-flash*anyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminigemini-2.5*anyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminimodels/gemini-2.5*anyenabled,adaptive,effortnoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminigemini-3.5*anyenabled,adaptivenoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminimodels/gemini-3.5*anyenabled,adaptivenoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-3.1*anyenabled,adaptivenoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminimodels/gemini-3.1*anyenabled,adaptivenoneyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-*anynononeyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
geminimodels/gemini-*anynononeyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
github_models*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
groqgroq/compound*anynononenonononoyesnonomarkdownnonenosystemjsonnonenonenonounsupportednono
groq*gpt-oss-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
groqqwen/qwen3.6*anytogglenonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
groqqwen/qwen3.8*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
groqllama-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
huggingfaceqwen/qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinetextyesyesnative_unreliableyesno
huggingfaceqwen/qwen3-coder*anynononenonononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
huggingfaceqwen/*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
huggingfacedeepseek-ai/deepseek-v3*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
hunyuan*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
hyperbolic*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
inceptionmercury-2anyeffortnonenonononoyesnonativeplainnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
inceptionmercury-coder-*anynononenonononoyesnodelimitedplaindelimitednosystemjsonnonenativeyesyesunknownyesno
llamacpp*qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesinterchangeableyesno
llamacpp*qwen3*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinejsonnoyestext_onlyyesno
llamacpp*devstral-small-2*anynononenonononoyesnonativemarkdowndelimitednosystemjsonnonejsonnoyestext_onlyyesno
llamacpp*anynononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
local*qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
local*qwen3*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
localgemma-4*anyenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
local*anynononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
metamuse-spark-*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
minimaxminimax-m3*anyadaptivenoneyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
minimaxminimax-m2.7*anyenablednonenonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinejsonyesyesnative_unreliableyesyes
minimaxminimax-m2.5*anyenablednonenonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
minimaxminimax-m2*anyenablednonenonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
minimaxminimax-text-*anynononenonononoyesnodelimitedmarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
mistralmistral-medium-3-5*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
mistralmistral-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mistralcodestral-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mistraldevstral-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mlx*qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
mlx*qwen3*anyenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
mlx*anynononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
mockmock-minimal*anynononenonononoyesnonomarkdownnonenosystemjsonnonetextnoyestext_onlyyesno
mockmock | mock-*anyadaptive,effortnoneyesyesyesnoyesyesnativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
moonshot*kimi-k3*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
moonshot*kimi-k2.7-code*anyenablednoneyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinejsonyesyesnative_unreliableyesyes
moonshot*kimi*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nebius*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
nvidia*gpt-oss-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
nvidia*nemotron-3-nano-omni*anyenablednoneyesyesnoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*nemotron-3-nano-30b-a3b*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesno
nvidia*nemotron-3*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*deepseek-v4*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nvidia*minimax-m3*anyadaptivenoneyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
nvidia*kimi-k2.6*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nvidia*step-3.7-flash*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
nvidia*mistral*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
nvidia*gemma-4*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
ollamallava*anynononeyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamabakllava*anynononeyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamallama3.2-vision*anynononeyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamallama3.2*anynononenonononoyesnoformat_kwmarkdownnative_jsonnosystemjsonnonenativeyesnonative_onlyyesno
ollamagemma3*anynononeyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamagemma4:12b*anynononenonononoyesnoformat_kwmarkdowndelimitednosystemjsonnonetextnoyestext_onlyyesno
ollamagemma4*anynononeyesnononoyesnoformat_kwmarkdowndelimitednosystemjsonnonetextnoyestext_onlyyesno
ollamaqwen3.6*anyenablednonenonononoyesnoformat_kwmarkdowndelimitednosystemjsoninlinejsonnoyestext_onlyyesno
ollamaqwen3*anyenablednonenonononoyesnoformat_kwmarkdowndelimitednosystemjsoninlinenativeyesnonative_onlyyesno
ollamadevstral-small-2*anynononenonononoyesnoformat_kwmarkdowndelimitednosystemjsonnonejsonnoyestext_onlyyesno
ollama*anynononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
openaigpt-4o*anynononeyesyesnonoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openaigpt-4.1*anynononeyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openaigpt-*codex*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-6*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-5.6*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-5.4* | openai/gpt-5.4*any; extendsnotemperaturenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
openaigpt-*>=5.4effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-*>=5.1effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-*>=5.0effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaigpt-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaio1*anyeffortnonenonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openaio3*anyeffortnonenonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openaio4*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-4o*anynononeyesyesnonoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openaiopenai/gpt-4.1*anynononeyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openaiopenai/gpt-*codex*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-6*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-5.6*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-*>=5.4effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-*>=5.1effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-*>=5.0effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/gpt-*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaiopenai/o1*anyeffortnonenonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/o3*anyeffortnonenonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openaiopenai/o4*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesyes
openrouterqwen/qwen3.6-35b-a3bany; extendsenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouterqwen/qwen3.6-plus*any; extendsenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouteranthropic/claude-fable-*anynononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-mythos-*anynononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-haiku-*>=4.7nononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-haiku-*>=4.5nononeyesyesyesnoyesnotool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-sonnet-*>=4.7nononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-sonnet-*>=4.6nononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-opus-*>=4.7nononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-opus-*>=4.6nononeyesyesyesnoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-*anynononeyesyesyesnoyesnotool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouterqwen/qwen3.7-plusanyenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.7-maxanyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6-plusanyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6-flashanyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouterqwen/qwen3-coder-plusanynononenonononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesyes
openrouterqwen/qwen3-coder-flashanynononenonononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesyes
openrouterqwen/qwen3-coder*anynononenonononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesno
openrouterqwen/qwen3-maxanynononenonononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesyes
openrouterqwen/qwen-plusanynononenonononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesyes
openrouterqwen/*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouterdeepseek/deepseek-v4*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-v3.2*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextyesyesnative_unreliableyesyes
openrouterdeepseek/deepseek-v3*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-chat-v3.1*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-chat*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openrouterdeepseek/deepseek-r1-0528*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-r1anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openroutermistralai/mistral-medium-3-5*anyeffortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openroutermistralai/mistral*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermistralai/devstral*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermoonshotai/kimi-k2.7-codeanyenablednoneyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
openroutermoonshotai/kimi-k2*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
openroutergoogle/gemini-2.5*anyenabled,effortnoneyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemini-3.6* | google/gemini-3.7* | google/gemini-3.8*anyenabled,adaptive,effortnoneyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemini-3.5-flash-liteanyenabled,adaptive,effortnoneyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemini-3.5*anyenabled,adaptivenoneyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemma-4*anynononeyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermeta-llama/llama-4*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermeta-llama/llama-3*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openrouterminimax/minimax-m3*anyadaptivenoneyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterminimax/minimax-m2.7*anynononenonononoyesnodelimitedplainnonenosystemjsonnonenativeyesyesunknownyesno
openrouterminimax/minimax-m2*anynononenonononoyesnodelimitedplainnonenosystemjsonnonenativeyesyesunknownyesno
openrouterz-ai/glm-5.3-flashany; extendsnononeyesnonoyesyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
openrouterz-ai/glm-5.3*any; extendseffortnonenonononoyesnonoplainnonenosystemjsonreasoning_summaryjsonnoyestext_onlyyesno
openrouterz-ai/glm-5*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
openrouterkwaipilot/kat-coder-pro-v2anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesinterchangeableyesyes
openrouteropenai/gpt-oss-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyestext_onlyyesno
openrouterstepfun/step-3.7-flashanyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
openrouterx-ai/grok-*anyadaptivenoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterbytedance-seed/*anyenablednoneyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
openroutercohere/north-mini-code:freeanyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
openrouternvidia/nemotron-3*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
openrouteropenrouter/freeanyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
parasail*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
qianfan*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
sambanova*deepseek-v3.2*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesno
sambanova*deepseek*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
sambanova*llama*anynononeyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
sambanova*minimax*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
sambanova*gemma-4*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
sambanova*gpt-oss*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyesnative_unreliableyesno
sambanova*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
siliconflow*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
togetherQwen/Qwen3.6-Plusany; extendsenablednoneyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
togetherQwen/Qwen3.8-2.4T-A95Banyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
togetherQwen/Qwen3.7-Maxanyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
togetherqwen/qwen3.6*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
togetherqwen/qwen3-coder*anynononenonononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
togetherqwen/*anyenablednonenonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
togetherdeepseek-ai/deepseek-v3*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
togethermoonshotai/kimi-k3anyenabled,effortnoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
togetheropenai/gpt-oss-*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
togethermeta-llama/Llama-3.3-70B-Instruct-Turboanynononenonononoyesnonomarkdownnonenosystemjsonnonenativeyesyesunknownyesno
togetherdeepseek-ai/deepseek-v4*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
togethermoonshotai/kimi-k2*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togetherzai-org/glm-5*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
togetherminimaxai/minimax-m3*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
togetherminimaxai/minimax-m2.7*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
togethergoogle/gemma-4*anyenablednoneyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togethertogether/nvidia/nemotron-3*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togethermoonshotai/*anynononenonononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
vercel_ai_gatewaygoogle/gemini-3.1*any; extendsenabled,adaptivenoneyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
vercel_ai_gateway*any; extendsnononenonononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
vertexgemini-*anynononenonononoyesnonomarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
volcengine_ark*anynononenonononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
xaigrok-*anyadaptivenoneyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
zaiglm-5.3-flashany; extendsnononeyesnonoyesyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
zaiglm-5.3*anyeffortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
zaiglm-5.2*anyenabled,effortnonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
zaiglm-5.1*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
zaiglm-4*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
zaiglm-5*anyenablednonenonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno

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.

ProviderModelRecommended formatParityNative passText passSamplesLast evaluatedConfidenceEvidence
anthropicclaude-3-5-haiku-20241022nativeunknown-----data not yet collected
anthropicclaude-3-5-sonnet-20240620nativeunknown-----data not yet collected
anthropicclaude-3-5-sonnet-20241022nativeunknown-----data not yet collected
anthropicclaude-3-opus-20240229nativeunknown-----data not yet collected
anthropicclaude-fable-5nativeunknown-----data not yet collected
anthropicclaude-fable-5-1nativeunknown-----data not yet collected
anthropicclaude-haiku-4-5-20251001nativeunknown-----data not yet collected
anthropicclaude-opus-4-1-20250805nativeunknown-----data not yet collected
anthropicclaude-opus-4-20250514nativeunknown-----data not yet collected
anthropicclaude-opus-4-5-20251101nativeunknown-----data not yet collected
anthropicclaude-opus-4-6nativeunknown-----data not yet collected
anthropicclaude-opus-4-7nativeunknown-----data not yet collected
anthropicclaude-opus-4-8nativeunknown-----data not yet collected
anthropicclaude-opus-5nativeunknown-----data not yet collected
anthropicclaude-sonnet-4-20250514nativeunknown-----data not yet collected
anthropicclaude-sonnet-4-5nativeunknown-----data not yet collected
anthropicclaude-sonnet-4-5-20250929nativeunknown-----data not yet collected
anthropicclaude-sonnet-4-6nativeunknown-----data not yet collected
anthropicclaude-sonnet-5nativeunknown-----data not yet collected
basetenbaseten/deepseek-ai/DeepSeek-V4-Flash-0731nativeunknown-----data not yet collected
basetenbaseten/deepseek-ai/DeepSeek-V4-Pronativeunknown-----data not yet collected
basetenbaseten/deepseek-ai/DeepSeek-V4-Pro-0813nativeunknown-----data not yet collected
basetenbaseten/moonshotai/Kimi-K2.6nativeunknown-----data not yet collected
basetenbaseten/moonshotai/Kimi-K2.7-Codenativeunknown-----data not yet collected
basetenbaseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55Bnativeunknown-----data not yet collected
basetenbaseten/openai/gpt-oss-120bnativeunknown-----data not yet collected
basetenbaseten/zai-org/GLM-4.7nativeunknown-----data not yet collected
basetenbaseten/zai-org/GLM-5.2nativeunknown-----data not yet collected
basetenbaseten/zai-org/GLM-5.2-Fastnativeunknown-----data not yet collected
bedrockanthropic.claude-sonnet-4-5-20250929-v1:0nativeunknown-----data not yet collected
bedrockmeta.llama3-1-70b-instruct-v1:0nativeunknown-----data not yet collected
cerebrasgemma-4-31bnativeunknown-----data not yet collected
cerebrasgpt-oss-120bnativeunknown-----data not yet collected
cerebrasllama-3.3-70bnativeunknown-----data not yet collected
cerebraszai-glm-4.7nativeunknown-----data not yet collected
coherecommand-a-plus-05-2026nativeunknown-----data not yet collected
dashscopedashscope/qwen3-coder-nextnativeunknown-----data not yet collected
dashscopedashscope/qwen3-coder-plusnativeunknown-----data not yet collected
dashscopedashscope/qwen3.5-397b-a17bnativeunknown-----data not yet collected
dashscopedashscope/qwen3.6-35b-a3bnativeunknown-----data not yet collected
dashscopedashscope/qwen3.7-maxnativeunknown-----data not yet collected
deepinfradeepinfra/MiniMaxAI/MiniMax-M2.7-Turbonativeunknown-----data not yet collected
deepinfradeepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507nativeunknown-----data not yet collected
deepinfradeepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbonativeunknown-----data not yet collected
deepinfradeepinfra/Qwen/Qwen3.5-397B-A17Bnativeunknown-----data not yet collected
deepinfradeepinfra/Qwen/Qwen3.6-27Btextnative_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.
deepinfradeepinfra/Qwen/Qwen3.6-35B-A3Btextnative_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.
deepinfradeepinfra/Qwen/Qwen3.7-Maxnativeunknown-----data not yet collected
deepinfradeepinfra/Qwen/Qwen3.8-2.4T-A95Bnativeunknown-----data not yet collected
deepinfradeepinfra/deepseek-ai/DeepSeek-V3.2nativeunknown-----data not yet collected
deepinfradeepinfra/deepseek-ai/DeepSeek-V4-Flashnativeunknown-----data not yet collected
deepinfradeepinfra/deepseek-ai/DeepSeek-V4-Pronativeunknown-----data not yet collected
deepinfradeepinfra/moonshotai/Kimi-K2.7-Codenativeunknown-----data not yet collected
deepinfradeepinfra/moonshotai/Kimi-K3nativeunknown-----data not yet collected
deepinfradeepinfra/openai/gpt-oss-120btextnative_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.
deepinfradeepinfra/zai-org/GLM-4.6nativeunknown-----data not yet collected
deepinfradeepinfra/zai-org/GLM-5.2jsonnative_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.
deepseekdeepseek-v4-flashnativeunknown-----data not yet collected
deepseekdeepseek-v4-pronativeunknown-----data not yet collected
fireworksaccounts/fireworks/models/deepseek-v4-pronativeunknown-----data not yet collected
fireworksaccounts/fireworks/models/glm-5p2nativeunknown-----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.
fireworksaccounts/fireworks/models/gpt-oss-120btexttext_only-----data not yet collected
fireworksaccounts/fireworks/models/kimi-k2p6nativeunknown-----data not yet collected
fireworksaccounts/fireworks/models/kimi-k2p7-codenativeunknown-----data not yet collected
fireworksaccounts/fireworks/models/minimax-m3nativeinterchangeable-----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).
geminigemini-2.5-flashnativeunknown-----data not yet collected
geminigemini-2.5-flash-litenativeunknown-----data not yet collected
geminigemini-2.5-pronativeunknown-----data not yet collected
geminigemini-3.1-flash-litenativeunknown-----data not yet collected
geminigemini-3.1-pro-previewnativeunknown-----data not yet collected
geminigemini-3.5-flashnativeunknown-----data not yet collected
geminigemini-3.5-flash-litenativeunknown-----data not yet collected
geminigemini-3.6-flashnativeunknown-----data not yet collected
geminigemini-3.7-flashnativeunknown-----data not yet collected
geminigemini-3.8-flashnativeunknown-----data not yet collected
geminimodels/gemma-4-26b-a4b-itnativeunknown-----data not yet collected
geminimodels/gemma-4-31b-itnativeunknown-----data not yet collected
groqgroq/compoundnoneunsupported-----data not yet collected
groqgroq/compound-mininoneunsupported-----data not yet collected
groqgroq/openai/gpt-oss-120bnativeunknown-----data not yet collected
groqgroq/openai/gpt-oss-20bnativeunknown-----data not yet collected
groqqwen/qwen3.6-27bnativeunknown-----data not yet collected
groqqwen/qwen3.8-27bnativeunknown-----data not yet collected
huggingfaceQwen/Qwen3-Coder-480B-A35B-Instructnativeunknown-----data not yet collected
inceptionmercury-2nativeunknown-----catalog note: Inception documents OpenAI-compatible tool use for Mercury 2; no Harn parity probe has run yet.
inceptionmercury-coder-smallnativeunknown-----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.
llamacppqwen3.6-35b-a3bnativeinterchangeable-----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.
llamacppqwen3.6-35b-a3b-ud-q4-k-xlnativeinterchangeable-----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.
llamacppqwen3.6-35b-a3b-ud-q5-k-xlnativeinterchangeable-----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.
localgemma-4-12b-itnativeunknown-----data not yet collected
localgemma-4-26b-a4b-itnativeunknown-----data not yet collected
localgemma-4-31b-itnativeunknown-----data not yet collected
localgemma-4-e2b-itnativeunknown-----data not yet collected
localgemma-4-e4b-itnativeunknown-----data not yet collected
metamuse-spark-1.1nativeunknown-----data not yet collected
metamuse-spark-1.2nativeunknown-----data not yet collected
metamuse-spark-1.2-contributornativeunknown-----data not yet collected
metamuse-spark-1.3nativeunknown-----data not yet collected
metamuse-spark-1.3-contributornativeunknown-----data not yet collected
minimaxMiniMax-M2nativeunknown-----data not yet collected
minimaxMiniMax-M2.5nativeunknown-----data not yet collected
minimaxMiniMax-M2.5-highspeednativeunknown-----data not yet collected
minimaxMiniMax-M2.7jsonnative_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.
minimaxMiniMax-M2.7-highspeedjsonnative_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.
minimaxMiniMax-M3nativeunknown-----data not yet collected
minimaxMiniMax-Text-01nativeunknown-----data not yet collected
mistralcodestral-2508nativeunknown-----data not yet collected
mistralmistral-large-2512nativeunknown-----data not yet collected
mistralmistral-medium-3-5nativeunknown-----data not yet collected
mistralmistral-small-2603nativeunknown-----data not yet collected
mlxunsloth/Qwen3.6-35B-A3B-UD-MLX-4bitnativeunknown-----data not yet collected
mlxunsloth/Qwen3.6-35B-A3B-UD-MLX-8bitnativeunknown-----data not yet collected
moonshotmoonshot/kimi-k2.5nativeunknown-----data not yet collected
moonshotmoonshot/kimi-k2.6nativeunknown-----data not yet collected
moonshotmoonshot/kimi-k2.7-codejsonnative_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.
moonshotmoonshot/kimi-k2.7-code-highspeedjsonnative_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.
moonshotmoonshot/kimi-k3nativeinterchangeable-----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.
nvidianvidia/deepseek-v4-flash-0731nativeunknown-----data not yet collected
nvidianvidia/kimi-k2.6nativeunknown-----data not yet collected
nvidianvidia/minimax-m3nativeunknown-----data not yet collected
nvidianvidia/nemotron-3-nano-30b-a3bnativeinterchangeable-----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.
nvidianvidia/nemotron-3-nano-omni-30b-a3b-reasoningnativeunknown-----data not yet collected
nvidianvidia/nemotron-3-super-120b-a12bnativeunknown-----data not yet collected
nvidianvidia/nemotron-3-ultra-550b-a55bnativeunknown-----data not yet collected
nvidianvidia/nemotron-3.5-lightning-30b-a3bnativeunknown-----data not yet collected
nvidianvidia/openai/gpt-oss-120bnativeunknown-----data not yet collected
nvidianvidia/openai/gpt-oss-20bnativeunknown-----data not yet collected
nvidianvidia/step-3.7-flashnativeinterchangeable-----data not yet collected
ollamadevstral-small-2:24bjsontext_only-----data not yet collected
ollamagemma4:12b-mlxtexttext_only-----data not yet collected
ollamagemma4:12b-mxfp8texttext_only-----data not yet collected
ollamagemma4:12b-nvfp4texttext_only-----data not yet collected
ollamagemma4:26btexttext_only-----data not yet collected
ollamallama3.2nativenative_only-----data not yet collected
openaigpt-4-turbonativeunknown-----data not yet collected
openaigpt-4.1nativeunknown-----data not yet collected
openaigpt-4.1-mininativeunknown-----data not yet collected
openaigpt-4.1-nanonativeunknown-----data not yet collected
openaigpt-4onativeunknown-----data not yet collected
openaigpt-4o-mininativeunknown-----data not yet collected
openaigpt-5.3-codexnativeunknown-----data not yet collected
openaigpt-5.4nativeunknown-----data not yet collected
openaigpt-5.4-mininativeunknown-----data not yet collected
openaigpt-5.4-nanonativeunknown-----data not yet collected
openaigpt-5.4-pronativeunknown-----data not yet collected
openaigpt-5.5nativeunknown-----data not yet collected
openaigpt-5.5-pronativeunknown-----data not yet collected
openaigpt-5.6-lunanativeunknown-----data not yet collected
openaigpt-5.6-solnativeunknown-----data not yet collected
openaigpt-5.6-terranativeunknown-----data not yet collected
openaigpt-6-astranativeunknown-----data not yet collected
openaio1nativeunknown-----data not yet collected
openaio1-mininativeunknown-----data not yet collected
openaio3nativeunknown-----data not yet collected
openaio3-mininativeunknown-----data not yet collected
openaio4-mininativeunknown-----data not yet collected
openaitext-embedding-3-smallnot supportedunknown-----data not yet collected
openrouterQwen/Qwen3.5-9Bnativeunknown-----data not yet collected
openrouteranthropic/claude-fable-5nativeunknown-----data not yet collected
openrouteranthropic/claude-haiku-4-5nativeunknown-----data not yet collected
openrouteranthropic/claude-opus-4.8nativeunknown-----data not yet collected
openrouteranthropic/claude-opus-4.8-fastnativeunknown-----data not yet collected
openrouteranthropic/claude-opus-5nativeunknown-----data not yet collected
openrouteranthropic/claude-sonnet-4-6nativeunknown-----data not yet collected
openrouteranthropic/claude-sonnet-5nativeunknown-----data not yet collected
openrouterbytedance-seed/seed-2.0-litenativeunknown-----data not yet collected
openroutercohere/north-mini-code:freenativeunknown-----data not yet collected
openrouterdeepseek/deepseek-v3.2textnative_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.
openrouterdeepseek/deepseek-v4-flashnativeunknown-----data not yet collected
openrouterdeepseek/deepseek-v4-flash-0731nativeunknown-----data not yet collected
openrouterdeepseek/deepseek-v4-pronativeunknown-----data not yet collected
openrouterdeepseek/deepseek-v4-pro-0813nativeunknown-----data not yet collected
openroutergoogle/gemini-2.5-flashnativeunknown-----data not yet collected
openroutergoogle/gemini-3.5-flashnativeunknown-----data not yet collected
openroutergoogle/gemini-3.5-flash-litenativeunknown-----data not yet collected
openroutergoogle/gemini-3.6-flashnativeunknown-----data not yet collected
openroutergoogle/gemini-3.7-flashnativeunknown-----data not yet collected
openroutergoogle/gemini-3.8-flashnativeunknown-----data not yet collected
openroutergoogle/gemma-4-26b-a4b-itnativeunknown-----data not yet collected
openroutergoogle/gemma-4-31b-itnativeunknown-----data not yet collected
openrouterkwaipilot/kat-coder-pro-v2nativeinterchangeable-----catalog note: Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for KAT-Coder-Pro V2.
openrouterminimax/minimax-m2nativeunknown-----data not yet collected
openrouterminimax/minimax-m2.5nativeunknown-----data not yet collected
openrouterminimax/minimax-m2.7nativeunknown-----data not yet collected
openrouterminimax/minimax-m3nativeunknown-----data not yet collected
openroutermistralai/mistral-large-2512nativeunknown-----data not yet collected
openroutermistralai/mistral-medium-3-5nativeunknown-----data not yet collected
openroutermistralai/mistral-small-2603nativeunknown-----data not yet collected
openroutermoonshotai/kimi-k2.6nativeunknown-----data not yet collected
openroutermoonshotai/kimi-k2.7-codetextnative_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.
openrouternvidia/nemotron-3-super-120b-a12b:freenativeunknown-----data not yet collected
openrouteropenai/gpt-5.4-mininativeunknown-----data not yet collected
openrouteropenai/gpt-5.4-nanonativeunknown-----data not yet collected
openrouteropenai/gpt-5.4-pronativeunknown-----data not yet collected
openrouteropenai/gpt-5.5nativeunknown-----data not yet collected
openrouteropenai/gpt-5.5-pronativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-lunanativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-luna-pronativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-solnativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-sol-pronativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-terranativeunknown-----data not yet collected
openrouteropenai/gpt-5.6-terra-pronativeunknown-----data not yet collected
openrouteropenai/gpt-oss-120btexttext_only-----data not yet collected
openrouteropenrouter/freenativeunknown-----data not yet collected
openrouterqwen/qwen3-codertextnative_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.
openrouterqwen/qwen3-coder-nexttextnative_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.
openrouterqwen/qwen3.5-397b-a17bnativeunknown-----data not yet collected
openrouterqwen/qwen3.5-plus-20260420nativeunknown-----data not yet collected
openrouterqwen/qwen3.6-35b-a3bnativeunknown-----data not yet collected
openrouterqwen/qwen3.6-flashnativeunknown-----data not yet collected
openrouterqwen/qwen3.6-max-previewnativeunknown-----data not yet collected
openrouterqwen/qwen3.6-plusnativeunknown-----data not yet collected
openrouterqwen/qwen3.7-maxnativeunknown-----data not yet collected
openrouterqwen/qwen3.7-plusnativeunknown-----data not yet collected
openrouterstepfun/step-3.7-flashnativeinterchangeable-----catalog note: Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for Step 3.7 Flash with reasoning enabled.
openrouterx-ai/grok-4.5nativeunknown-----data not yet collected
openrouterz-ai/glm-5nativeunknown-----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.
openrouterz-ai/glm-5.1nativeunknown-----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.
openrouterz-ai/glm-5.2nativeunknown-----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.
openrouterz-ai/glm-5.3nativeunknown-----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.
openrouterz-ai/glm-5.3-flashnativeunknown-----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.
openrouterz-ai/glm-5v-turbonativeunknown-----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.
sambanovasambanova/DeepSeek-V3.2nativeinterchangeable-----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.
sambanovasambanova/DeepSeek-V4-Pronativeunknown-----data not yet collected
sambanovasambanova/Llama-4-Mavericknativeunknown-----data not yet collected
sambanovasambanova/Meta-Llama-3.3-70B-Instructnativeunknown-----data not yet collected
sambanovasambanova/MiniMax-M2.7textnative_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.
sambanovasambanova/MiniMax-M3textnative_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.
sambanovasambanova/gemma-4-31B-itnativeunknown-----data not yet collected
sambanovasambanova/gpt-oss-120btextnative_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.
togetherMiniMaxAI/MiniMax-M2.7textnative_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.
togetherMiniMaxAI/MiniMax-M3textnative_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.
togetherQwen/Qwen2.5-7B-Instruct-Turbonativeunknown-----data not yet collected
togetherQwen/Qwen3-Coder-Next-FP8nativeunknown-----data not yet collected
togetherQwen/Qwen3.5-397B-A17Bnativeunknown-----data not yet collected
togetherQwen/Qwen3.6-Plusnativeunknown-----data not yet collected
togetherQwen/Qwen3.7-Maxnativeunknown-----data not yet collected
togetherQwen/Qwen3.7-Plusnativeunknown-----data not yet collected
togetherQwen/Qwen3.8-2.4T-A95Bnativeunknown-----data not yet collected
togetherdeepseek-ai/DeepSeek-V4-Flash-0731nativeunknown-----data not yet collected
togetherdeepseek-ai/DeepSeek-V4-Pronativeunknown-----data not yet collected
togetherdeepseek-ai/DeepSeek-V4-Pro-0813nativeunknown-----data not yet collected
togethergoogle/gemma-4-31B-itnativeunknown-----data not yet collected
togethermeta-llama/Llama-3.3-70B-Instruct-Turbonativeunknown-----catalog note: Together documents native tool calls for this serverless sample route; add live parity probes before broadening to all Together-hosted Llama variants.
togethermoonshotai/Kimi-K2.6nativeunknown-----data not yet collected
togethermoonshotai/Kimi-K2.7-Codenativeunknown-----data not yet collected
togethermoonshotai/Kimi-K3nativeunknown-----data not yet collected
togetheropenai/gpt-oss-20bnativeunknown-----data not yet collected
togethertogether/nvidia/nemotron-3-ultra-550b-a55bnativeunknown-----data not yet collected
togetherzai-org/GLM-5.2nativeunknown-----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_gatewayvercel/anthropic/claude-haiku-4.5nativeunknown-----data not yet collected
vercel_ai_gatewayvercel/google/gemini-3.1-flash-lite-previewnativeunknown-----data not yet collected
vercel_ai_gatewayvercel/openai/gpt-5.4-nanonativeunknown-----data not yet collected
vertexvertex/gemini-2.5-flashnativeunknown-----data not yet collected
xaigrok-4.3nativeunknown-----data not yet collected
xaigrok-4.5nativeunknown-----data not yet collected
xaigrok-build-0.1nativeunknown-----data not yet collected
zaiglm-4.5nativeunknown-----data not yet collected
zaiglm-4.5-airnativeunknown-----data not yet collected
zaiglm-4.6nativeunknown-----data not yet collected
zaiglm-4.7nativeunknown-----data not yet collected
zaiglm-5nativeunknown-----data not yet collected
zaiglm-5-turbonativeunknown-----data not yet collected
zaiglm-5.1nativeunknown-----data not yet collected
zaiglm-5.2nativeunknown-----data not yet collected
zaiglm-5.3nativeunknown-----data not yet collected
zaiglm-5.3-flashnativeunknown-----data not yet collected