[provider_defaults.anthropic]
message_wire_format = "anthropic"
native_tool_wire_format = "anthropic"
file_upload_wire_format = "anthropic"
files_api_supported = true
batch_wire_format = "anthropic_messages"
batch_input_mode = "inline_requests"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_max_requests = 100000
batch_max_input_bytes = 268435456
batch_result_retention_days = 29
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "per_request"
batch_cancellation = "supported"
batch_security_notes = [
"Message Batches are not eligible for Zero Data Retention.",
"Batch data is scoped to the workspace that owns the API key.",
"Request and response data is retained for up to 29 days unless deleted after processing.",
]
batch_operational_notes = [
"Most Message Batches complete within an hour, but callers must still budget for the published 24-hour window.",
]
seed_supported = false
frequency_penalty_supported = false
presence_penalty_supported = false
[provider_defaults.openai]
batch_wire_format = "openai"
batch_input_mode = "jsonl_file"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_max_requests = 50000
batch_max_input_bytes = 209715200
batch_result_retention_days = 30
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "per_request"
batch_cancellation = "supported"
batch_security_notes = [
"Batch rate limits use a separate provider pool from synchronous model calls.",
"Output and error files can use a configurable expiration between 1 hour and 30 days.",
]
batch_operational_notes = [
"Input files must group requests for one model; Harn manifests group by provider, model, wire format, and tool format.",
"Use stable custom_id values to rejoin unordered output and error rows.",
]
top_k_supported = false
[provider_defaults.openrouter]
reasoning_wire_format = "openrouter"
top_k_supported = false
[provider_defaults.huggingface]
top_k_supported = false
[provider_defaults.local]
top_k_supported = false
[provider_defaults.together]
batch_wire_format = "openai"
batch_input_mode = "jsonl_file"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "per_request"
batch_cancellation = "unknown"
reasoning_wire_format = "enabled"
[provider_defaults.ollama]
message_wire_format = "ollama"
image_url_input_supported = false
frequency_penalty_supported = false
presence_penalty_supported = false
[provider_defaults.gemini]
message_wire_format = "gemini"
file_upload_wire_format = "gemini"
files_api_supported = true
batch_wire_format = "gemini"
batch_input_mode = "jsonl_or_inline"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_max_input_bytes = 2147483648
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "per_request"
batch_cancellation = "supported"
batch_operational_notes = [
"Batch creation is not idempotent; persist Harn manifests and receipts before retrying provider create requests.",
"Context caching is supported for batch requests.",
"Use File API JSONL input for large gauntlets; inline requests have a smaller provider body-size cap.",
]
[provider_defaults.mistral]
batch_wire_format = "mistral"
batch_input_mode = "jsonl_or_inline"
batch_discount_percent = 50
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "unknown"
batch_cancellation = "unknown"
top_k_supported = false
[provider_defaults.cohere]
top_k_supported = false
[provider_defaults.xai]
batch_wire_format = "xai"
batch_input_mode = "jsonl_or_inline"
batch_turnaround_hours = 24
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "unknown"
batch_cancellation = "unknown"
top_k_supported = false
[provider_defaults.groq]
batch_wire_format = "openai"
batch_input_mode = "jsonl_file"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "per_request"
batch_cancellation = "unknown"
[provider_defaults.fireworks]
batch_wire_format = "fireworks"
batch_input_mode = "jsonl_file"
batch_discount_percent = 50
batch_turnaround_hours = 24
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "unknown"
batch_cancellation = "unknown"
batch_operational_notes = [
"Batch support is model-specific; Harn only marks catalog rows that advertise provider batch capability.",
"Prompt caching can combine with eligible batch jobs for additional savings.",
]
[provider_defaults.moonshot]
top_k_supported = false
[provider_defaults.zai]
reasoning_wire_format = "zai"
[provider_defaults.baseten]
top_k_supported = false
top_p_supported = false
[provider_defaults.deepinfra]
top_k_supported = false
[provider_defaults.sambanova]
top_k_supported = false
[provider_defaults.nvidia]
top_k_supported = false
[provider_defaults.nebius]
top_k_supported = false
[provider_defaults.flexai]
top_k_supported = false
[provider_defaults.hyperbolic]
top_k_supported = false
[provider_defaults.siliconflow]
top_k_supported = false
[provider_defaults.parasail]
batch_wire_format = "openai"
batch_input_mode = "jsonl_file"
batch_result_ordering = "custom_id_rejoin"
batch_partial_failure = "unknown"
batch_cancellation = "unknown"
top_k_supported = false
[provider_defaults.atlas]
top_k_supported = false
[provider_limits.anthropic]
max_concurrency = 12
min_concurrency = 1
adaptive = true
[provider_limits.anthropic.backoff]
base_ms = 1000
max_ms = 60000
multiplier = 2.0
jitter = true
[[provider.anthropic]]
model_match = "claude-fable-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = false
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-mythos-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = false
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-fable-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = false
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-mythos-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = false
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-haiku-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-opus-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-sonnet-5*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = true
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-sonnet-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-haiku-*"
version_min = [4, 5]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-opus-*"
version_min = [4, 6]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-opus-*"
version_min = [4, 0]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-sonnet-*"
version_min = [4, 6]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-sonnet-*"
version_min = [4, 0]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-haiku-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-opus-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-sonnet-5*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high", "xhigh", "max"]
reasoning_disable_supported = true
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-sonnet-*"
version_min = [4, 7]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["adaptive"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-haiku-*"
version_min = [4, 5]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-opus-*"
version_min = [4, 6]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
interleaved_thinking_supported = true
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-opus-*"
version_min = [4, 0]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-sonnet-*"
version_min = [4, 6]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-sonnet-*"
version_min = [4, 0]
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
defer_loading = true
tool_search = ["bm25", "regex"]
max_tools = 10000
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "claude-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.anthropic]]
model_match = "anthropic/claude-*"
native_tools = true
computer_use_style = "native_anthropic"
screenshot_scaling = "xga"
preferred_tool_format = "native"
prompt_caching = true
vision = true
audio_supported = true
pdf_supported = true
files_api_supported = true
structured_output = "tool_use"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openai]]
model_match = "gpt-4o*"
native_tools = true
preferred_tool_format = "native"
vision = true
audio_supported = true
structured_output = "native"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "gpt-4.1*"
native_tools = true
preferred_tool_format = "native"
vision_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "gpt-*codex*"
native_tools = true
preferred_tool_format = "native"
responses_api = true
chat_completions_unsupported = true
requires_completion_tokens = true
defer_loading = true
tool_search = ["hosted", "client"]
hosted_tools = ["web_search", "web_search_preview", "file_search", "code_interpreter", "image_generation", "computer_use", "mcp", "remote_mcp"]
remote_mcp = true
conversation_state = true
compaction = true
background_mode = true
tool_approval_policy = "provider_or_harn"
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "gpt-*"
version_min = [5, 4]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
defer_loading = true
tool_search = ["hosted", "client"]
responses_api = true
hosted_tools = ["web_search", "web_search_preview", "file_search", "code_interpreter", "image_generation", "computer_use", "mcp", "remote_mcp"]
computer_use_style = "native_openai"
screenshot_scaling = "original"
safety_ack_flow = true
remote_mcp = true
conversation_state = true
compaction = true
background_mode = true
tool_approval_policy = "provider_or_harn"
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "gpt-*"
version_min = [5, 1]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "gpt-*"
version_min = [5, 0]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "gpt-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "o1*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "o3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "o4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
vision_supported = true
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/gpt-4o*"
native_tools = true
preferred_tool_format = "native"
vision = true
audio_supported = true
structured_output = "native"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "openai/gpt-4.1*"
native_tools = true
preferred_tool_format = "native"
vision_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "openai/gpt-*codex*"
native_tools = true
preferred_tool_format = "native"
responses_api = true
chat_completions_unsupported = true
requires_completion_tokens = true
defer_loading = true
tool_search = ["hosted", "client"]
hosted_tools = ["web_search", "web_search_preview", "file_search", "code_interpreter", "image_generation", "computer_use", "mcp", "remote_mcp"]
remote_mcp = true
conversation_state = true
compaction = true
background_mode = true
tool_approval_policy = "provider_or_harn"
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/gpt-*"
version_min = [5, 4]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
defer_loading = true
tool_search = ["hosted", "client"]
responses_api = true
hosted_tools = ["web_search", "web_search_preview", "file_search", "code_interpreter", "image_generation", "computer_use", "mcp", "remote_mcp"]
computer_use_style = "native_openai"
screenshot_scaling = "original"
safety_ack_flow = true
remote_mcp = true
conversation_state = true
compaction = true
background_mode = true
tool_approval_policy = "provider_or_harn"
vision_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/gpt-*"
version_min = [5, 1]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/gpt-*"
version_min = [5, 0]
native_tools = true
preferred_tool_format = "native"
requires_completion_tokens = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/gpt-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openai]]
model_match = "openai/o1*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/o3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openai]]
model_match = "openai/o4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
vision_supported = true
requires_completion_tokens = true
reasoning_effort_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.ollama]]
model_match = "llava*"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "bakllava*"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "llama3.2-vision*"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "gemma3*"
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "gemma4:12b*"
vision_supported = false
native_tools = false
preferred_tool_format = "text"
structured_output = "format_kw"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "gemma4*"
vision_supported = true
native_tools = false
preferred_tool_format = "text"
structured_output = "format_kw"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "qwen3.6*"
native_tools = false
reserved_tool_call_token = true
structured_output = "format_kw"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/api/chat"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.ollama]]
model_match = "qwen3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "format_kw"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
server_parser = "ollama_qwen3coder"
honors_chat_template_kwargs = false
recommended_endpoint = "/api/generate-raw"
text_tool_wire_format_supported = false
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.llamacpp]]
model_match = "qwen3.6-35b-a3b-ud-q4-k-xl"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
reserved_tool_call_token = true
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "llamacpp"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
tool_mode_parity = "native"
tool_mode_parity_notes = "Harn-managed llama.cpp launch plus one-tool probe passed native and streaming native on 2026-06-05."
[[provider.llamacpp]]
model_match = "*qwen3.6*"
native_tools = false
preferred_tool_format = "json"
structured_output = "native"
reserved_tool_call_token = true
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.llamacpp]]
model_match = "*qwen3*"
native_tools = false
preferred_tool_format = "json"
structured_output = "native"
reserved_tool_call_token = true
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.llamacpp]]
model_match = "*devstral-small-2*"
native_tools = false
preferred_tool_format = "json"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.ollama]]
model_match = "devstral-small-2*"
native_tools = false
preferred_tool_format = "json"
structured_output = "format_kw"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/api/chat"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.local]]
model_match = "*qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.local]]
model_match = "*qwen3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.local]]
model_match = "gemma-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.mlx]]
model_match = "*qwen3.6*"
native_tools = true
preferred_tool_format = "native"
reserved_tool_call_token = true
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.mlx]]
model_match = "*qwen3*"
native_tools = true
preferred_tool_format = "native"
vision = true
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.dashscope]]
model_match = "dashscope/qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.dashscope]]
model_match = "dashscope/qwen*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.dashscope]]
model_match = "qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.dashscope]]
model_match = "qwen*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "accounts/fireworks/models/gpt-oss-*"
native_tools = false
preferred_tool_format = "text"
text_tool_wire_format_supported = true
supports_parallel_tool_calls = false
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
serving_precision = "trusted"
[[provider.fireworks]]
model_match = "accounts/fireworks/models/glm-5p*"
native_tools = true
preferred_tool_format = "json"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "accounts/fireworks/models/deepseek-v4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "accounts/fireworks/models/kimi-k2p*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "accounts/fireworks/models/minimax-m3*"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "unknown"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision = true
vision_supported = true
reasoning_text_promotable = false
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "*qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "*qwen3p6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.fireworks]]
model_match = "*qwen*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "anthropic/claude-fable-*"
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-mythos-*"
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-haiku-*"
version_min = [4, 7]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-haiku-*"
version_min = [4, 5]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-sonnet-*"
version_min = [4, 7]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-sonnet-*"
version_min = [4, 6]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-opus-*"
version_min = [4, 7]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-opus-*"
version_min = [4, 6]
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "anthropic/claude-*"
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
cache_breakpoint_style = "top_level"
structured_output = "tool_use"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = true
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.openrouter]]
model_match = "qwen/qwen3.7-plus"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
cache_breakpoint_style = "last_block"
vision_supported = true
vision = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "qwen/qwen3.7-max"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
cache_breakpoint_style = "last_block"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "qwen/qwen3.6-plus"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
prompt_caching = true
cache_breakpoint_style = "last_block"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
provider_route_denylist = ["Ambient"]
[[provider.openrouter]]
model_match = "qwen/qwen3.6-flash"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
prompt_caching = true
cache_breakpoint_style = "last_block"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
provider_route_denylist = ["Ambient"]
[[provider.openrouter]]
model_match = "qwen/qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
provider_route_denylist = ["Ambient"]
[[provider.openrouter]]
model_match = "qwen/qwen3-coder-plus"
native_tools = true
preferred_tool_format = "text"
reserved_tool_call_token = true
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "OpenRouter Qwen3-Coder Flash native tools exhausted the coding-agent fixture while text tools completed; default to Harn text tools for preset parity."
prompt_caching = true
cache_breakpoint_style = "last_block"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "qwen/qwen3-coder-flash"
native_tools = true
preferred_tool_format = "text"
reserved_tool_call_token = true
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "OpenRouter Qwen3-Coder Flash native tools exhausted the coding-agent fixture while text tools completed; default to Harn text tools for preset parity."
prompt_caching = true
cache_breakpoint_style = "last_block"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "qwen/qwen3-coder*"
native_tools = true
preferred_tool_format = "text"
reserved_tool_call_token = true
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "OpenRouter Qwen3-Coder Flash native tools exhausted the coding-agent fixture while text tools completed; default to Harn text tools for preset parity."
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "qwen/qwen3-max"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prompt_caching = true
cache_breakpoint_style = "last_block"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "qwen/qwen-plus"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prompt_caching = true
cache_breakpoint_style = "last_block"
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "qwen/*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.huggingface]]
model_match = "qwen/qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.huggingface]]
model_match = "qwen/qwen3-coder*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.huggingface]]
model_match = "qwen/*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "Qwen/Qwen3.7-Max"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
requires_streaming = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "qwen/qwen3.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "qwen/qwen3-coder*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.together]]
model_match = "qwen/*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.moonshot]]
model_match = "*kimi-k2.7-code*"
native_tools = true
preferred_tool_format = "json"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
video_supported = true
prompt_caching = true
allowed_tool_choice_modes = ["auto", "none"]
requires_tool_result_adjacency = true
temperature_supported = false
top_p_supported = false
frequency_penalty_supported = false
presence_penalty_supported = false
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.moonshot]]
model_match = "*kimi*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
prompt_caching = true
requires_tool_result_adjacency = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*deepseek*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*glm-5*"
native_tools = true
preferred_tool_format = "json"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*qwen3.7*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*qwen3.6*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*kimi-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision = true
vision_supported = true
video_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.deepinfra]]
model_match = "*gpt-oss*"
native_tools = false
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.deepinfra]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.sambanova]]
model_match = "*deepseek-v3.2*"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "interchangeable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.sambanova]]
model_match = "*deepseek*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.sambanova]]
model_match = "*llama*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.sambanova]]
model_match = "*minimax*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.sambanova]]
model_match = "*gemma-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.sambanova]]
model_match = "*gpt-oss*"
native_tools = false
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
serving_precision = "degraded"
[[provider.sambanova]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.nvidia]]
model_match = "*gpt-oss-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.nvidia]]
model_match = "*nemotron-3-nano-omni*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
video = true
audio = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*nemotron-3-nano-30b-a3b*"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "interchangeable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*nemotron-3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*deepseek-v4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*minimax-m3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
thinking_modes = ["adaptive"]
vision = true
vision_supported = true
video = true
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*minimax-m2.7*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*kimi-k2.6*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*glm-5*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*step-3.7-flash*"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "interchangeable"
prompt_caching = true
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_disable_supported = false
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*mistral*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.nvidia]]
model_match = "*gemma-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nvidia]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.baseten]]
model_match = "*glm-5*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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>`."
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
honors_chat_template_kwargs = true
chat_template_options_field = "chat_template_args"
reasoning_text_promotable = false
top_p_supported = true
top_k_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.baseten]]
model_match = "*kimi-k2*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
honors_chat_template_kwargs = true
chat_template_options_field = "chat_template_args"
vision = true
vision_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.baseten]]
model_match = "*deepseek-v4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.baseten]]
model_match = "*gpt-oss*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
prompt_caching = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.baseten]]
model_match = "*nemotron*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
honors_chat_template_kwargs = true
chat_template_options_field = "chat_template_args"
top_p_supported = true
top_k_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.baseten]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.together]]
model_match = "deepseek-ai/deepseek-v3*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled"]
prompt_caching = true
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.huggingface]]
model_match = "deepseek-ai/deepseek-v3*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled"]
prompt_caching = true
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "deepseek/deepseek-v4*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
prompt_caching = true
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "deepseek/deepseek-v3.2*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "OpenRouter DeepSeek V3.2 advertises native tools, but coding-agent runs observed provider-native failures; default to Harn text tools and recover DSML markers."
thinking_modes = ["enabled", "effort"]
prompt_caching = true
cache_breakpoint_style = "last_block"
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "deepseek/deepseek-v3*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
prompt_caching = true
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "deepseek/deepseek-chat-v3.1*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
prompt_caching = true
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "deepseek/deepseek-chat*"
native_tools = true
preferred_tool_format = "native"
prompt_caching = true
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "deepseek/deepseek-r1-0528*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
prompt_caching = true
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "deepseek/deepseek-r1"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
structured_output = "native"
top_k_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "mistralai/mistral-medium-3-5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
vision_supported = true
vision = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "mistralai/mistral*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "mistralai/devstral*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "moonshotai/kimi-k2.7-code"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision_supported = true
video_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
temperature_supported = false
top_p_supported = false
frequency_penalty_supported = false
presence_penalty_supported = false
allowed_tool_choice_modes = ["auto", "none"]
[[provider.openrouter]]
model_match = "moonshotai/kimi-k2*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.nebius]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "Nebius documents function calling and structured JSON output; Harn has not yet run model-family probes for every Token Factory route."
[[provider.flexai]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "FlexAI exposes model-level support flags through discovery; use live refresh/probes to tighten route-specific tool preferences."
[[provider.hyperbolic]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "Hyperbolic documents tool calling for selected Qwen/Llama routes; model-specific probes should override this wildcard if needed."
[[provider.siliconflow]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "SiliconFlow is OpenAI-compatible, but thinking controls are provider-specific on some model families; prefer live model probes before pinning reasoning-heavy agents."
[[provider.parasail]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "Parasail exposes an OpenAI-compatible serverless/batch API; use model-specific probes before relying on native tools for long agent loops."
[[provider.atlas]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
structured_output_mode = "native_json"
text_tool_wire_format_supported = true
tool_mode_parity = "unknown"
tool_mode_parity_notes = "Atlas is a coding-plan OpenAI-compatible route; Harn has no route-specific tool parity probes yet."
[[provider.openrouter]]
model_match = "google/gemini-2.5*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
prompt_caching = true
cache_breakpoint_style = "last_block"
vision_supported = true
vision = true
audio_supported = true
pdf_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.openrouter]]
model_match = "google/gemini-3.5*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "adaptive"]
prompt_caching = true
cache_breakpoint_style = "last_block"
vision_supported = true
vision = true
audio_supported = true
pdf_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "gemma-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.gemini]]
model_match = "models/gemma-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.gemini]]
model_match = "gemini-2.5-flash*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive", "effort"]
max_thinking_budget = 24576
reasoning_disable_supported = true
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "models/gemini-2.5-flash*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive", "effort"]
max_thinking_budget = 24576
reasoning_disable_supported = true
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "gemini-2.5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive", "effort"]
max_thinking_budget = 32768
reasoning_disable_supported = false
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "models/gemini-2.5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive", "effort"]
max_thinking_budget = 32768
reasoning_disable_supported = false
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "gemini-3.5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive"]
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prompt_caching = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "models/gemini-3.5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive"]
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prompt_caching = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "gemini-3.1*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive"]
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prompt_caching = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "models/gemini-3.1*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled", "adaptive"]
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prompt_caching = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.gemini]]
model_match = "gemini-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.gemini]]
model_match = "models/gemini-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
vision_supported = true
audio_supported = true
pdf_supported = true
files_api_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "google/gemma-4*"
native_tools = true
vision_supported = true
preferred_tool_format = "native"
structured_output = "native"
top_k_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "meta-llama/llama-4*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
top_k_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "meta-llama/llama-3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.together]]
model_match = "openai/gpt-oss-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_required_for_tools = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.together]]
model_match = "meta-llama/Llama-3.3-70B-Instruct-Turbo"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "unknown"
tool_mode_parity_notes = "Together documents native tool calls for this serverless sample route; add live parity probes before broadening to all Together-hosted Llama variants."
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.together]]
model_match = "deepseek-ai/deepseek-v4*"
native_tools = true
preferred_tool_format = "native"
thinking_modes = ["enabled", "effort"]
reasoning_effort_supported = true
prompt_caching = true
structured_output = "native"
server_parser = "none"
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.together]]
model_match = "moonshotai/kimi-k2*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "zai-org/glm-5*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
honors_chat_template_kwargs = false
reasoning_text_promotable = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "minimaxai/minimax-m3*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
honors_chat_template_kwargs = false
reasoning_text_promotable = false
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "minimaxai/minimax-m2.7*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
prompt_caching = true
honors_chat_template_kwargs = false
reasoning_text_promotable = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "google/gemma-4*"
native_tools = true
vision_supported = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
honors_chat_template_kwargs = false
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.together]]
model_match = "moonshotai/*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.mistral]]
model_match = "mistral-medium-3-5*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
vision_supported = true
vision = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.mistral]]
model_match = "mistral-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.mistral]]
model_match = "codestral-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.mistral]]
model_match = "devstral-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.cohere]]
model_match = "command-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
thinking_modes = ["adaptive"]
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.xai]]
model_match = "grok-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
thinking_modes = ["adaptive"]
prompt_caching = true
vision_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.groq]]
model_match = "*gpt-oss-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.groq]]
model_match = "qwen/qwen3.6*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.groq]]
model_match = "llama-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/chat/completions"
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.cerebras]]
model_match = "gpt-oss-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
tools_exclude_response_format = true
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_required_for_tools = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
serving_precision = "throttled"
[[provider.cerebras]]
model_match = "zai-glm-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
tools_exclude_response_format = true
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_none_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.cerebras]]
model_match = "llama-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
tools_exclude_response_format = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.cerebras]]
model_match = "qwen-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
tools_exclude_response_format = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.bedrock]]
model_match = "anthropic.claude-*"
native_tools = true
preferred_tool_format = "native"
message_wire_format = "anthropic"
native_tool_wire_format = "anthropic"
recommended_endpoint = "/model/{model}/converse"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.bedrock]]
model_match = "*claude*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/model/{model}/converse"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = true
prefers_markdown_scaffolding = false
structured_output_mode = "xml_tagged"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = true
thinking_block_style = "thinking_blocks"
[[provider.bedrock]]
model_match = "*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/model/{model}/converse"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.azure_openai]]
model_match = "gpt-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/openai/deployments/{deployment}/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.azure_openai]]
model_match = "o1*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/openai/deployments/{deployment}/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.azure_openai]]
model_match = "o3*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/openai/deployments/{deployment}/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.azure_openai]]
model_match = "o4*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/openai/deployments/{deployment}/chat/completions"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = true
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
[[provider.vertex]]
model_match = "gemini-*"
native_tools = true
preferred_tool_format = "native"
recommended_endpoint = "/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.deepseek]]
model_match = "deepseek-v4-pro*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
[[provider.deepseek]]
model_match = "deepseek-v4-flash*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
[[provider.deepseek]]
model_match = "deepseek-chat*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
prompt_caching = true
[[provider.deepseek]]
model_match = "deepseek-reasoner*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
[[provider.minimax]]
model_match = "minimax-m3*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
thinking_modes = ["adaptive"]
reasoning_wire_format = "minimax"
requires_completion_tokens = true
vision = true
vision_supported = true
video_supported = true
prompt_caching = true
reasoning_text_promotable = false
requires_tool_result_adjacency = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.minimax]]
model_match = "minimax-m2.7*"
native_tools = true
preferred_tool_format = "json"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "delimited"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
reasoning_text_promotable = false
requires_tool_result_adjacency = true
[[provider.minimax]]
model_match = "minimax-m2.5*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
reasoning_text_promotable = false
requires_tool_result_adjacency = true
[[provider.minimax]]
model_match = "minimax-m2*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
reasoning_text_promotable = false
requires_tool_result_adjacency = true
[[provider.minimax]]
model_match = "minimax-text-*"
native_tools = true
preferred_tool_format = "native"
structured_output = "delimited"
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
requires_tool_result_adjacency = true
[[provider.zai]]
model_match = "glm-5.2*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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*)."
structured_output = "native"
thinking_modes = ["enabled", "effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
reasoning_none_supported = true
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
[[provider.zai]]
model_match = "glm-5.1*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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*)."
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
prompt_caching = true
[[provider.zai]]
model_match = "glm-4*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.zai]]
model_match = "glm-5*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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*)."
structured_output = "native"
thinking_modes = ["enabled"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "minimax/minimax-m3*"
native_tools = true
preferred_tool_format = "native"
text_tool_wire_format_supported = true
structured_output = "delimited"
thinking_modes = ["adaptive"]
vision = true
vision_supported = true
video_supported = true
prompt_caching = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "minimax/minimax-m2.7*"
native_tools = true
preferred_tool_format = "native"
text_tool_wire_format_supported = true
structured_output = "delimited"
[[provider.openrouter]]
model_match = "minimax/minimax-m2*"
native_tools = true
preferred_tool_format = "native"
text_tool_wire_format_supported = true
structured_output = "delimited"
[[provider.openrouter]]
model_match = "z-ai/glm-5*"
native_tools = true
preferred_tool_format = "text"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "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."
text_tool_wire_format_supported = true
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_effort_supported = true
reasoning_effort_levels = ["high", "xhigh", "max"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
prompt_caching = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[[provider.openrouter]]
model_match = "kwaipilot/kat-coder-pro-v2"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "interchangeable"
tool_mode_parity_notes = "Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for KAT-Coder-Pro V2."
prompt_caching = true
text_tool_wire_format_supported = true
structured_output = "native"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "none"
[[provider.openrouter]]
model_match = "openai/gpt-oss-*"
native_tools = false
preferred_tool_format = "text"
structured_output = "native"
thinking_modes = ["effort"]
reasoning_effort_supported = true
reasoning_effort_levels = ["low", "medium", "high"]
reasoning_disable_supported = false
reasoning_required_for_tools = true
openrouter_provider_order = ["Cerebras", "Groq"]
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "reasoning_summary"
serving_precision = "trusted"
[[provider.openrouter]]
model_match = "stepfun/step-3.7-flash"
native_tools = true
preferred_tool_format = "native"
tool_mode_parity = "interchangeable"
tool_mode_parity_notes = "Live OpenRouter probe on 2026-06-12 returned a valid provider-native tool call for Step 3.7 Flash with reasoning enabled."
prompt_caching = true
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_disable_supported = false
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"
[provider_family]
openrouter = "openai"
together = "openai"
groq = "openai"
cerebras = "openai"
deepseek = "openai"
fireworks = "openai"
huggingface = "openai"
local = "openai"
dashscope = "openai"
llamacpp = "openai"
mlx = "openai"
minimax = "openai"
zai = "openai"
nvidia = "openai"
nebius = "openai"
flexai = "openai"
hyperbolic = "openai"
siliconflow = "openai"
parasail = "openai"
atlas = "openai"