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 minThinkingVisionAudioPDFVideoStreamingFiles APIJSON schemaPromptOutput modePrefillRoleTool promptThinking blocksDefault toolsNative toolsText toolsParityToolsCache
anthropicclaude-mythos-preview*any; extendsnononononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicanthropic/claude-mythos-preview*any; extendsnononononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-fable-*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-mythos-*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-fable-*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-mythos-*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-haiku-*>=4.7adaptiveyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=5.0; extendsnononononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-opus-*>=4.8; extendsnononononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
anthropicclaude-opus-*>=4.7adaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-5*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.7adaptiveyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-haiku-*>=4.5enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=4.6enabledyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-opus-*>=4.0enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.6enabledyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-sonnet-*>=4.0enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-haiku-*>=4.7adaptiveyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.7adaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-5*anyadaptive,effortyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.7adaptiveyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-haiku-*>=4.5enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.6enabledyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-opus-*>=4.0enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.6enabledyesyesyesnoyesyestool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-sonnet-*>=4.0enabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicclaude-*anyenabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
anthropicanthropic/claude-*anyenabledyesyesyesnoyesyestool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
atlas*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
azure_openaigpt-*anynononononoyesnonomarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
azure_openaio1*anynononononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
azure_openaio3*anynononononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
azure_openaio4*anynononononoyesnonomarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
baseten*glm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
baseten*kimi-k2*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
baseten*deepseek-v4*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
baseten*gpt-oss*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
baseten*nemotron*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
baseten*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
bedrockanthropic.claude-*anynononononoyesnonoxmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesno
bedrock*claude*anynononononoyesnonoxmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesno
bedrock*anynononononoyesnonomarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
cerebrasgpt-oss-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
cerebraszai-glm-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
cerebrasllama-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
cerebrasqwen-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
cloudflare_ai_gateway*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
coherecommand-*anyadaptiveyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
dashscopedashscope/qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopedashscope/qwen*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopeqwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
dashscopeqwen*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
deepinfra*deepseek*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*glm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinejsonyesyesnative_unreliableyesyes
deepinfra*qwen3.7*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*qwen3.6*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesno
deepinfra*kimi-*anyenabledyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepinfra*gpt-oss*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyesnative_unreliableyesno
deepinfra*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
deepseekdeepseek-v4-pro*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
deepseekdeepseek-v4-flash*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/gpt-oss-*anyeffortnonononoyesnonomarkdownnative_jsonnosystemjsonreasoning_summarytextnoyestext_onlyyesno
fireworksaccounts/fireworks/models/glm-5p*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinejsonyesyesnative_unreliableyesyes
fireworksaccounts/fireworks/models/deepseek-v4*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/kimi-k2p*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
fireworksaccounts/fireworks/models/minimax-m3*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
fireworks*qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
fireworks*qwen3p6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
fireworks*qwen*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
flexai*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
friendli*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
geminigemma-4*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
geminimodels/gemma-4*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
geminigemini-2.5-flash*anyenabled,adaptive,effortyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminimodels/gemini-2.5-flash*anyenabled,adaptive,effortyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminigemini-2.5*anyenabled,adaptive,effortyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminimodels/gemini-2.5*anyenabled,adaptive,effortyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
geminigemini-3.5*anyenabled,adaptiveyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminimodels/gemini-3.5*anyenabled,adaptiveyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-3.1*anyenabled,adaptiveyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminimodels/gemini-3.1*anyenabled,adaptiveyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
geminigemini-*anynoyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
geminimodels/gemini-*anynoyesyesyesnoyesyesnativexml,markdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
github_models*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
groqgroq/compound*anynononononoyesnonomarkdownnonenosystemjsonnonenonenonounsupportednono
groq*gpt-oss-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
groqqwen/qwen3.6*anynononononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
groqllama-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
huggingfaceqwen/qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
huggingfaceqwen/qwen3-coder*anynononononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
huggingfaceqwen/*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
huggingfacedeepseek-ai/deepseek-v3*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
hunyuan*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
hyperbolic*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
inceptionmercury-2anyeffortnonononoyesnonativeplainnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
inceptionmercury-coder-*anynononononoyesnodelimitedplaindelimitednosystemjsonnonenativeyesyesunknownyesno
llamacpp*qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinejsonnoyestext_onlyyesno
llamacpp*qwen3*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinejsonnoyestext_onlyyesno
llamacpp*devstral-small-2*anynononononoyesnonativemarkdowndelimitednosystemjsonnonejsonnoyestext_onlyyesno
local*qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
local*qwen3*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
localgemma-4*anyenabledyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
minimaxminimax-m3*anyadaptiveyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
minimaxminimax-m2.7*anyenablednonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinejsonyesyesnative_unreliableyesyes
minimaxminimax-m2.5*anyenablednonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
minimaxminimax-m2*anyenablednonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
minimaxminimax-text-*anynononononoyesnodelimitedmarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
mistralmistral-medium-3-5*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
mistralmistral-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mistralcodestral-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mistraldevstral-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
mlx*qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
mlx*qwen3*anyenabledyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
moonshot*kimi-k3*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
moonshot*kimi-k2.7-code*anyenabledyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinejsonyesyesnative_unreliableyesyes
moonshot*kimi*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nebius*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
nvidia*gpt-oss-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
nvidia*nemotron-3-nano-omni*anyenabledyesyesnoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*nemotron-3-nano-30b-a3b*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesno
nvidia*nemotron-3*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*deepseek-v4*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nvidia*minimax-m3*anyadaptiveyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
nvidia*minimax-m2.7*anyenablednonononoyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
nvidia*kimi-k2.6*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
nvidia*glm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
nvidia*step-3.7-flash*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
nvidia*mistral*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
nvidia*gemma-4*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
nvidia*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
ollamallava*anynoyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamabakllava*anynoyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamallama3.2-vision*anynoyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamallama3.2*anynononononoyesnoformat_kwmarkdownnative_jsonnosystemjsonnonenativeyesnonative_onlyyesno
ollamagemma3*anynoyesnononoyesnonomarkdownnative_jsonnosystemjsonnonejsonnoyestext_onlyyesno
ollamagemma4:12b*anynononononoyesnoformat_kwmarkdowndelimitednosystemjsonnonetextnoyestext_onlyyesno
ollamagemma4*anynoyesnononoyesnoformat_kwmarkdowndelimitednosystemjsonnonetextnoyestext_onlyyesno
ollamaqwen3.6*anyenablednonononoyesnoformat_kwmarkdowndelimitednosystemjsoninlinejsonnoyestext_onlyyesno
ollamaqwen3*anyenablednonononoyesnoformat_kwmarkdowndelimitednosystemjsoninlinenativeyesnonative_onlyyesno
ollamadevstral-small-2*anynononononoyesnoformat_kwmarkdowndelimitednosystemjsonnonejsonnoyestext_onlyyesno
openaigpt-4o*anynoyesyesnonoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaigpt-4.1*anynoyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaigpt-*codex*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaigpt-5.6*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaigpt-*>=5.4effortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaigpt-*>=5.1effortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaigpt-*>=5.0effortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaigpt-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaio1*anyeffortnonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openaio3*anyeffortnonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openaio4*anyeffortyesnononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-4o*anynoyesyesnonoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaiopenai/gpt-4.1*anynoyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaiopenai/gpt-*codex*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-5.6*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-*>=5.4effortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-*>=5.1effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-*>=5.0effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/gpt-*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openaiopenai/o1*anyeffortnonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/o3*anyeffortnonononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openaiopenai/o4*anyeffortyesnononoyesnonativemarkdownnative_jsonnodeveloperjsonreasoning_summarynativeyesyesunknownyesno
openrouteranthropic/claude-fable-*anynononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-mythos-*anynononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-haiku-*>=4.7nononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-haiku-*>=4.5nononononoyesnotool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-sonnet-*>=4.7nononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-sonnet-*>=4.6nononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-opus-*>=4.7nononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-opus-*>=4.6nononononoyesnotool_usexmlxml_taggednosystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouteranthropic/claude-*anynononononoyesnotool_usexmlxml_taggedyessystemxmlthinking_blocksnativeyesyesunknownyesyes
openrouterqwen/qwen3.7-plusanyenabledyesnononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.7-maxanyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6-plusanyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6-flashanyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterqwen/qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouterqwen/qwen3-coder-plusanynononononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesyes
openrouterqwen/qwen3-coder-flashanynononononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesyes
openrouterqwen/qwen3-coder*anynononononoyesnonativemarkdowndelimitednosystemjsonnonetextyesyesnative_unreliableyesno
openrouterqwen/qwen3-maxanynononononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesyes
openrouterqwen/qwen-plusanynononononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesyes
openrouterqwen/*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
openrouterdeepseek/deepseek-v4*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-v3.2*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextyesyesnative_unreliableyesyes
openrouterdeepseek/deepseek-v3*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-chat-v3.1*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-chat*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesyes
openrouterdeepseek/deepseek-r1-0528*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterdeepseek/deepseek-r1anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openroutermistralai/mistral-medium-3-5*anyeffortyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
openroutermistralai/mistral*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermistralai/devstral*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermoonshotai/kimi-k2.7-codeanyenabledyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
openroutermoonshotai/kimi-k2*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
openroutergoogle/gemini-2.5*anyenabled,effortyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemini-3.5*anyenabled,adaptiveyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openroutergoogle/gemma-4*anynoyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermeta-llama/llama-4*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openroutermeta-llama/llama-3*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
openrouterminimax/minimax-m3*anyadaptiveyesnonoyesyesnodelimitedmarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
openrouterminimax/minimax-m2.7*anynononononoyesnodelimitedplainnonenosystemjsonnonenativeyesyesunknownyesno
openrouterminimax/minimax-m2*anynononononoyesnodelimitedplainnonenosystemjsonnonenativeyesyesunknownyesno
openrouterz-ai/glm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
openrouterkwaipilot/kat-coder-pro-v2anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesinterchangeableyesyes
openrouteropenai/gpt-oss-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyestext_onlyyesno
openrouterstepfun/step-3.7-flashanyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesyes
openrouterx-ai/grok-*anyadaptiveyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
openrouterbytedance-seed/*anyenabledyesnonoyesyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
openroutercohere/north-mini-code:freeanyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
openrouternvidia/nemotron-3*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
openrouteropenrouter/freeanyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
parasail*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
qianfan*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
sambanova*deepseek-v3.2*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesinterchangeableyesno
sambanova*deepseek*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
sambanova*llama*anynoyesnononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
sambanova*minimax*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
sambanova*gemma-4*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
sambanova*gpt-oss*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarytextnoyesnative_unreliableyesno
sambanova*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
siliconflow*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
togetherQwen/Qwen3.7-Maxanyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesyes
togetherqwen/qwen3.6*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
togetherqwen/qwen3-coder*anynononononoyesnonativemarkdowndelimitednosystemjsonnonenativeyesyesunknownyesno
togetherqwen/*anyenablednonononoyesnonativemarkdowndelimitednosystemjsoninlinenativeyesyesunknownyesno
togetherdeepseek-ai/deepseek-v3*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesyes
togetheropenai/gpt-oss-*anyeffortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesno
togethermeta-llama/Llama-3.3-70B-Instruct-Turboanynononononoyesnonomarkdownnonenosystemjsonnonenativeyesyesunknownyesno
togetherdeepseek-ai/deepseek-v4*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
togethermoonshotai/kimi-k2*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togetherzai-org/glm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
togetherminimaxai/minimax-m3*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
togetherminimaxai/minimax-m2.7*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
togethergoogle/gemma-4*anyenabledyesnononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togethertogether/nvidia/nemotron-3*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinenativeyesyesunknownyesno
togethermoonshotai/*anynononononoyesnonativemarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
vercel_ai_gatewaygoogle/gemini-3.1*any; extendsenabled,adaptiveyesyesyesnoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
vercel_ai_gateway*any; extendsnononononoyesnonoplainnonenosystemjsonnonejsonnoyestext_onlyyesno
vertexgemini-*anynononononoyesnonomarkdownnative_jsonnosystemjsonnonenativeyesyesunknownyesno
volcengine_ark*anynononononoyesnonativeplainnative_jsonnosystemjsonnonenativeyesyesunknownyesno
xaigrok-*anyadaptiveyesnononoyesnonativemarkdownnative_jsonnosystemjsonreasoning_summarynativeyesyesunknownyesyes
zaiglm-5.2*anyenabled,effortnonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
zaiglm-5.1*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesyes
zaiglm-4*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesno
zaiglm-5*anyenablednonononoyesnonativemarkdownnative_jsonnosystemjsoninlinetextyesyesnative_unreliableyesno

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-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-Pronativeunknown-----data not yet collected
basetenbaseten/moonshotai/Kimi-K2.5nativeunknown-----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/nvidia/Nemotron-120B-A12Bnativeunknown-----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-5textnative_unreliable-----catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>.
basetenbaseten/zai-org/GLM-5.1textnative_unreliable-----catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>.
basetenbaseten/zai-org/GLM-5.2textnative_unreliable-----catalog note: 2026-06-23 live Baseten probe: forced native/off emitted visible <tool_call><arg_key>... content with no provider-native tool_calls; Harn heredoc text tools emitted parseable <tool_call>\nadd({ ... })\n</tool_call>.
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/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/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-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted a malformed native call whose function name was the whole JSON payload; fenced JSON text-channel tools completed the loop.
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-5p1jsonnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted XML <tool_use> text instead of provider-native tool_calls. JSON tools completed the loop when auto reasoning was disabled; text tools did not.
fireworksaccounts/fireworks/models/glm-5p2jsonnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted XML <tool_use> text instead of provider-native tool_calls. JSON tools completed the loop when auto reasoning was disabled; text tools did not.
fireworksaccounts/fireworks/models/gpt-oss-120btexttext_only-----data not yet collected
fireworksaccounts/fireworks/models/kimi-k2p5nativeunknown-----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
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
groqllama-3.1-8b-instantnativeunknown-----data not yet collected
groqllama-3.3-70b-versatilenativeunknown-----data not yet collected
groqqwen/qwen3.6-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-a3bjsontext_only-----catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.
llamacppqwen3.6-35b-a3b-ud-q4-k-xljsontext_only-----catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.
llamacppqwen3.6-35b-a3b-ud-q5-k-xljsontext_only-----catalog note: 2026-07-19 #5162 CUDA receipt: freshly restarted ghcr.io/ggml-org/llama.cpp:server-cuda servers used --jinja, --reasoning-format deepseek, --chat-template-kwargs {"enable_thinking":false}, -np 1, -fa on, and q8_0 K/V cache. Six coding-agent fixtures were forced through native and JSON text formats with two replicates per format on Q4_K_XL (native 2/12, text 8/12; -ngl 999, -c 65536), Q5_K_XL (native 0/12, text 8/12; -ngl 999, -c 65536), and Q8_0 base (native 2/12, text 8/12; -ngl 35, -c 16384 because the 36.9 GB model does not fit this 32 GiB GPU). All rows reached high classifier confidence; see .harn-runs/coding-agent-bench/latest/tool_mode_parity_overlay.toml and the per-quant receipts. Native remained unreliable across the family, so keep JSON text tooling; server_parser = none.
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
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
mistraldevstral-medium-2512nativeunknown-----data not yet collected
mistraldevstral-small-2512nativeunknown-----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. Forced tool_choice (required/specified) returns HTTP 400 'incompatible with thinking enabled' and is not an available mode.
nvidianvidia/deepseek-v4-flashnativeunknown-----data not yet collected
nvidianvidia/deepseek-v4-pronativeunknown-----data not yet collected
nvidianvidia/kimi-k2.6nativeunknown-----data not yet collected
nvidianvidia/minimax-m2.7nativeunknown-----data not yet collected
nvidianvidia/minimax-m3nativeunknown-----data not yet collected
nvidianvidia/mistral-medium-3.5-128bnativeunknown-----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/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
nvidianvidia/z-ai/glm-5.1textnative_unreliable-----catalog note: GLM-5.x's native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls — a weight-intrinsic behavior reproduced across every GLM-5 host probed (zai/Baseten live, Together + OpenRouter agent-loop smoke, DeepInfra, Fireworks glm-5p*). NVIDIA serves the same weights, so the same leak applies; pin the clean heredoc text channel for family parity. Flagged by the native_unreliable-family consistency gate.
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
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
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-pronativeunknown-----data not yet collected
openroutergoogle/gemini-2.5-flashnativeunknown-----data not yet collected
openroutergoogle/gemini-3.5-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-5textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks.
openrouterz-ai/glm-5.1textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks.
openrouterz-ai/glm-5.2textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks.
openrouterz-ai/glm-5v-turbotextnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop. OpenRouter reasoning-on text tools emitted malformed tool markup, so auto reasoning is off for agent/code/verify tasks.
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/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
togetherdeepseek-ai/DeepSeek-V4-Pronativeunknown-----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
togetheropenai/gpt-oss-20bnativeunknown-----data not yet collected
togethertogether/nvidia/nemotron-3-ultra-550b-a55bnativeunknown-----data not yet collected
togetherzai-org/GLM-5textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop.
togetherzai-org/GLM-5.1textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop.
togetherzai-org/GLM-5.2textnative_unreliable-----catalog note: 2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and hallucinated a result token; heredoc text tools completed the loop.
vercel_ai_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
xaigrok-4.3nativeunknown-----data not yet collected
xaigrok-4.5nativeunknown-----data not yet collected
xaigrok-build-0.1nativeunknown-----data not yet collected
zaiglm-4.5textnative_unreliable-----catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.
zaiglm-4.5-airtextnative_unreliable-----catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.
zaiglm-4.6textnative_unreliable-----catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.
zaiglm-4.7textnative_unreliable-----catalog note: Family-consistency pin: GLM native channels emit <tool_call> markup as content (2026-06-23 Baseten GLM-5.2 probe); no zai-direct GLM-4.7 probe yet, so inherit the family verdict rather than an optimistic native pin.
zaiglm-5textnative_unreliable-----catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5).
zaiglm-5-turbotextnative_unreliable-----catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5).
zaiglm-5.1textnative_unreliable-----catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5).
zaiglm-5.2textnative_unreliable-----catalog note: GLM-5.x native channel emits <tool_call><arg_key>... markup as content instead of OpenAI message.tool_calls (2026-06-23 live Baseten probe, see 39-baseten.toml); heredoc text tools parse cleanly. Same family pinned native_unreliable on Fireworks (glm-5p*) and DeepInfra (glm-5).