From dcc7dca06aafeac4661a04b613f690f66aa7625d Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 09:07:59 +0700 Subject: [PATCH 01/12] feat: add Maxlayer provider Maxlayer is an OpenRouter-fronted gateway with an OpenAI-compatible endpoint at https://inference.maxlayer.cloud/v1. It relays to OpenRouter and keeps OpenRouter's `publisher/model` IDs verbatim, so a Maxlayer ID resolves onto the same canonical metadata the OpenRouter sync uses and every model file stays override-only over `base_model`. The sync module is authoritative for price and nothing else. Maxlayer's `GET /v1/models` publishes one `category` string and a `capabilities` array that is empty on every synced row -- no `supported_parameters`, no modality list, no reasoning metadata -- so a model with no canonical match is skipped and reported rather than authored from guesses. That covers 163 of the 303 rate-carded text models; the remainder need a `models//.toml` upstream first. Two things the response cannot supply are read from the sibling OpenRouter provider file for the same ID: `reasoning_options`, which is required whenever the base declares `reasoning = true`, and a `limit.output` fallback for the 60-odd rows publishing a null `max_output_tokens`. Both are sound here because Maxlayer forwards the request body to OpenRouter unchanged, so the controls a caller sends are OpenRouter's, model for model. Prices are written from `pricing.input_per_million_tokens`, which is the sell price -- upstream's rate plus the credit fee and the platform markup, derived on every read. The sibling `base_*_per_million_tokens` fields carry upstream's own rate for display only and are deliberately not read; quoting those would undercharge every model on the list. `upstream_cost` models (image, video, multimodal embeddings) are out of scope: they bill what the request actually cost and publish no rate card to express. Plain embeddings are out of scope too, as they are for the OpenRouter provider. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/index.ts | 4 + packages/core/src/sync/providers/maxlayer.ts | 222 ++++++++++++++++++ providers/maxlayer/logo.svg | 5 + .../models/anthropic/claude-fable-5.toml | 11 + .../models/anthropic/claude-haiku-4.5.toml | 15 ++ .../models/anthropic/claude-opus-4.1.toml | 15 ++ .../models/anthropic/claude-opus-4.5.toml | 19 ++ .../models/anthropic/claude-opus-4.6.toml | 17 ++ .../anthropic/claude-opus-4.7-fast.toml | 14 ++ .../models/anthropic/claude-opus-4.7.toml | 14 ++ .../anthropic/claude-opus-4.8-fast.toml | 14 ++ .../models/anthropic/claude-opus-4.8.toml | 14 ++ .../models/anthropic/claude-opus-5-fast.toml | 14 ++ .../models/anthropic/claude-opus-5.toml | 14 ++ .../models/anthropic/claude-sonnet-4.5.toml | 18 ++ .../models/anthropic/claude-sonnet-4.6.toml | 17 ++ .../models/anthropic/claude-sonnet-5.toml | 14 ++ .../models/bytedance-seed/seed-2.0-code.toml | 12 + .../models/bytedance-seed/seed-2.0-lite.toml | 16 ++ .../models/bytedance-seed/seed-2.0-mini.toml | 16 ++ .../models/cohere/command-r-08-2024.toml | 5 + .../models/cohere/command-r-plus-08-2024.toml | 5 + .../models/cohere/command-r7b-12-2024.toml | 5 + .../models/deepseek/deepseek-chat.toml | 9 + .../maxlayer/models/deepseek/deepseek-r1.toml | 10 + .../models/deepseek/deepseek-v3.2.toml | 13 + .../deepseek/deepseek-v4-flash-0731.toml | 17 ++ .../models/deepseek/deepseek-v4-flash.toml | 19 ++ .../models/deepseek/deepseek-v4-pro-0813.toml | 16 ++ .../models/deepseek/deepseek-v4-pro.toml | 20 ++ .../models/google/gemini-2.5-flash-lite.toml | 18 ++ .../models/google/gemini-2.5-flash.toml | 18 ++ .../models/google/gemini-2.5-pro.toml | 12 + .../models/google/gemini-3-flash-preview.toml | 17 ++ .../google/gemini-3.1-flash-lite-preview.toml | 14 ++ .../models/google/gemini-3.1-flash-lite.toml | 14 ++ .../gemini-3.1-pro-preview-customtools.toml | 14 ++ .../models/google/gemini-3.1-pro-preview.toml | 14 ++ .../models/google/gemini-3.5-flash-lite.toml | 11 + .../models/google/gemini-3.5-flash.toml | 11 + .../models/google/gemini-3.6-flash.toml | 11 + .../models/google/gemini-3.7-flash.toml | 11 + .../models/google/gemma-4-26b-a4b-it.toml | 11 + .../models/google/gemma-4-31b-it.toml | 12 + .../meta-llama/llama-3.1-8b-instruct.toml | 10 + .../meta-llama/llama-3.3-70b-instruct.toml | 9 + .../models/meta/muse-glimmer-30b.toml | 10 + .../maxlayer/models/meta/muse-spark-1.1.toml | 13 + .../maxlayer/models/meta/muse-spark-1.2.toml | 10 + .../models/minimax/minimax-m2-her.toml | 11 + .../maxlayer/models/minimax/minimax-m2.1.toml | 10 + .../maxlayer/models/minimax/minimax-m2.5.toml | 13 + .../maxlayer/models/minimax/minimax-m2.7.toml | 7 + .../maxlayer/models/minimax/minimax-m2.toml | 13 + .../maxlayer/models/minimax/minimax-m3.toml | 11 + .../models/mistralai/mistral-large-2512.toml | 6 + .../models/mistralai/mistral-nemo.toml | 9 + .../models/mistralai/mistral-small-2603.toml | 13 + .../models/moonshotai/kimi-k2-thinking.toml | 13 + .../maxlayer/models/moonshotai/kimi-k2.5.toml | 10 + .../maxlayer/models/moonshotai/kimi-k2.6.toml | 10 + .../models/moonshotai/kimi-k2.7-code.toml | 7 + .../maxlayer/models/moonshotai/kimi-k3.toml | 13 + .../nvidia/nemotron-3-nano-30b-a3b.toml | 7 + .../nvidia/nemotron-3-super-120b-a12b.toml | 19 ++ .../nvidia/nemotron-3-ultra-550b-a55b.toml | 19 ++ .../models/nvidia/nemotron-3.5-lightning.toml | 13 + .../maxlayer/models/openai/gpt-3.5-turbo.toml | 5 + .../maxlayer/models/openai/gpt-4-turbo.toml | 5 + .../maxlayer/models/openai/gpt-4.1-mini.toml | 6 + .../maxlayer/models/openai/gpt-4.1-nano.toml | 6 + providers/maxlayer/models/openai/gpt-4.1.toml | 6 + providers/maxlayer/models/openai/gpt-4.toml | 9 + .../models/openai/gpt-4o-2024-05-13.toml | 5 + .../models/openai/gpt-4o-2024-08-06.toml | 6 + .../models/openai/gpt-4o-2024-11-20.toml | 6 + .../maxlayer/models/openai/gpt-4o-mini.toml | 6 + providers/maxlayer/models/openai/gpt-4o.toml | 6 + .../maxlayer/models/openai/gpt-5-mini.toml | 10 + .../maxlayer/models/openai/gpt-5-nano.toml | 10 + .../maxlayer/models/openai/gpt-5-pro.toml | 12 + .../models/openai/gpt-5.1-codex-max.toml | 10 + .../models/openai/gpt-5.1-codex-mini.toml | 13 + .../maxlayer/models/openai/gpt-5.1-codex.toml | 10 + providers/maxlayer/models/openai/gpt-5.1.toml | 10 + .../maxlayer/models/openai/gpt-5.2-codex.toml | 10 + .../maxlayer/models/openai/gpt-5.2-pro.toml | 9 + providers/maxlayer/models/openai/gpt-5.2.toml | 10 + .../maxlayer/models/openai/gpt-5.3-codex.toml | 10 + .../maxlayer/models/openai/gpt-5.4-mini.toml | 10 + .../maxlayer/models/openai/gpt-5.4-nano.toml | 10 + .../maxlayer/models/openai/gpt-5.4-pro.toml | 9 + providers/maxlayer/models/openai/gpt-5.4.toml | 10 + .../maxlayer/models/openai/gpt-5.5-pro.toml | 9 + providers/maxlayer/models/openai/gpt-5.5.toml | 10 + .../models/openai/gpt-5.6-luna-pro.toml | 11 + .../maxlayer/models/openai/gpt-5.6-luna.toml | 11 + .../models/openai/gpt-5.6-sol-pro.toml | 11 + .../maxlayer/models/openai/gpt-5.6-sol.toml | 11 + .../models/openai/gpt-5.6-terra-pro.toml | 11 + .../maxlayer/models/openai/gpt-5.6-terra.toml | 11 + providers/maxlayer/models/openai/gpt-5.toml | 10 + .../maxlayer/models/openai/gpt-oss-120b.toml | 12 + .../maxlayer/models/openai/gpt-oss-20b.toml | 12 + providers/maxlayer/models/openai/o1-pro.toml | 6 + providers/maxlayer/models/openai/o1.toml | 10 + providers/maxlayer/models/openai/o3-mini.toml | 10 + providers/maxlayer/models/openai/o3-pro.toml | 9 + providers/maxlayer/models/openai/o3.toml | 10 + providers/maxlayer/models/openai/o4-mini.toml | 10 + providers/maxlayer/models/qwen/qwen-plus.toml | 8 + .../maxlayer/models/qwen/qwen3-235b-a22b.toml | 16 ++ .../maxlayer/models/qwen/qwen3-30b-a3b.toml | 11 + providers/maxlayer/models/qwen/qwen3-32b.toml | 8 + .../qwen/qwen3-coder-30b-a3b-instruct.toml | 8 + .../models/qwen/qwen3-coder-flash.toml | 7 + .../models/qwen/qwen3-coder-next.toml | 9 + .../models/qwen/qwen3-coder-plus.toml | 10 + providers/maxlayer/models/qwen/qwen3-max.toml | 7 + .../qwen/qwen3-next-80b-a3b-instruct.toml | 9 + .../qwen/qwen3-next-80b-a3b-thinking.toml | 9 + .../qwen/qwen3-vl-235b-a22b-instruct.toml | 9 + .../qwen/qwen3-vl-235b-a22b-thinking.toml | 6 + .../models/qwen/qwen3.5-122b-a10b.toml | 11 + .../maxlayer/models/qwen/qwen3.5-27b.toml | 8 + .../maxlayer/models/qwen/qwen3.5-35b-a3b.toml | 11 + .../models/qwen/qwen3.5-397b-a17b.toml | 8 + .../maxlayer/models/qwen/qwen3.5-9b.toml | 11 + .../maxlayer/models/qwen/qwen3.6-27b.toml | 12 + .../maxlayer/models/qwen/qwen3.6-35b-a3b.toml | 12 + .../maxlayer/models/qwen/qwen3.6-flash.toml | 14 ++ .../models/qwen/qwen3.6-max-preview.toml | 14 ++ .../maxlayer/models/qwen/qwen3.6-plus.toml | 14 ++ .../maxlayer/models/qwen/qwen3.7-flash.toml | 10 + .../maxlayer/models/qwen/qwen3.7-max.toml | 18 ++ .../maxlayer/models/qwen/qwen3.7-plus.toml | 18 ++ .../models/qwen/qwen3.8-2.4t-a95b.toml | 14 ++ .../maxlayer/models/qwen/qwen3.8-27b.toml | 17 ++ .../maxlayer/models/qwen/qwen3.8-max.toml | 11 + .../maxlayer/models/sakana/fugu-ultra.toml | 13 + .../maxlayer/models/sakana/sakana-namazu.toml | 10 + .../models/stepfun/step-3.5-flash.toml | 11 + .../models/stepfun/step-3.7-flash.toml | 14 ++ .../maxlayer/models/tencent/hy3-preview.toml | 13 + providers/maxlayer/models/tencent/hy3.toml | 14 ++ .../thinkingmachines/inkling-small.toml | 14 ++ .../models/thinkingmachines/inkling.toml | 13 + providers/maxlayer/models/x-ai/grok-4.3.toml | 10 + providers/maxlayer/models/x-ai/grok-4.5.toml | 10 + providers/maxlayer/models/x-ai/grok-4.6.toml | 10 + .../maxlayer/models/x-ai/grok-build-0.1.toml | 7 + .../maxlayer/models/xiaomi/mimo-v2.5-pro.toml | 15 ++ .../maxlayer/models/xiaomi/mimo-v2.5.toml | 15 ++ .../maxlayer/models/z-ai/glm-4.5-air.toml | 9 + providers/maxlayer/models/z-ai/glm-4.5.toml | 9 + providers/maxlayer/models/z-ai/glm-4.5v.toml | 12 + providers/maxlayer/models/z-ai/glm-4.6.toml | 7 + providers/maxlayer/models/z-ai/glm-4.6v.toml | 10 + .../maxlayer/models/z-ai/glm-4.7-flash.toml | 14 ++ providers/maxlayer/models/z-ai/glm-4.7.toml | 10 + .../maxlayer/models/z-ai/glm-5-turbo.toml | 13 + providers/maxlayer/models/z-ai/glm-5.1.toml | 14 ++ providers/maxlayer/models/z-ai/glm-5.2.toml | 19 ++ providers/maxlayer/models/z-ai/glm-5.3.toml | 13 + providers/maxlayer/models/z-ai/glm-5.toml | 13 + .../maxlayer/models/z-ai/glm-5v-turbo.toml | 10 + providers/maxlayer/provider.toml | 10 + sync.md | 1 + 168 files changed, 2094 insertions(+) create mode 100644 packages/core/src/sync/providers/maxlayer.ts create mode 100644 providers/maxlayer/logo.svg create mode 100644 providers/maxlayer/models/anthropic/claude-fable-5.toml create mode 100644 providers/maxlayer/models/anthropic/claude-haiku-4.5.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.1.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.5.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.6.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.7.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-4.8.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-5-fast.toml create mode 100644 providers/maxlayer/models/anthropic/claude-opus-5.toml create mode 100644 providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml create mode 100644 providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml create mode 100644 providers/maxlayer/models/anthropic/claude-sonnet-5.toml create mode 100644 providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml create mode 100644 providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml create mode 100644 providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml create mode 100644 providers/maxlayer/models/cohere/command-r-08-2024.toml create mode 100644 providers/maxlayer/models/cohere/command-r-plus-08-2024.toml create mode 100644 providers/maxlayer/models/cohere/command-r7b-12-2024.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-chat.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-r1.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-v3.2.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-v4-flash.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml create mode 100644 providers/maxlayer/models/deepseek/deepseek-v4-pro.toml create mode 100644 providers/maxlayer/models/google/gemini-2.5-flash-lite.toml create mode 100644 providers/maxlayer/models/google/gemini-2.5-flash.toml create mode 100644 providers/maxlayer/models/google/gemini-2.5-pro.toml create mode 100644 providers/maxlayer/models/google/gemini-3-flash-preview.toml create mode 100644 providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml create mode 100644 providers/maxlayer/models/google/gemini-3.1-flash-lite.toml create mode 100644 providers/maxlayer/models/google/gemini-3.1-pro-preview-customtools.toml create mode 100644 providers/maxlayer/models/google/gemini-3.1-pro-preview.toml create mode 100644 providers/maxlayer/models/google/gemini-3.5-flash-lite.toml create mode 100644 providers/maxlayer/models/google/gemini-3.5-flash.toml create mode 100644 providers/maxlayer/models/google/gemini-3.6-flash.toml create mode 100644 providers/maxlayer/models/google/gemini-3.7-flash.toml create mode 100644 providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml create mode 100644 providers/maxlayer/models/google/gemma-4-31b-it.toml create mode 100644 providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml create mode 100644 providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml create mode 100644 providers/maxlayer/models/meta/muse-glimmer-30b.toml create mode 100644 providers/maxlayer/models/meta/muse-spark-1.1.toml create mode 100644 providers/maxlayer/models/meta/muse-spark-1.2.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m2-her.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m2.1.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m2.5.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m2.7.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m2.toml create mode 100644 providers/maxlayer/models/minimax/minimax-m3.toml create mode 100644 providers/maxlayer/models/mistralai/mistral-large-2512.toml create mode 100644 providers/maxlayer/models/mistralai/mistral-nemo.toml create mode 100644 providers/maxlayer/models/mistralai/mistral-small-2603.toml create mode 100644 providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml create mode 100644 providers/maxlayer/models/moonshotai/kimi-k2.5.toml create mode 100644 providers/maxlayer/models/moonshotai/kimi-k2.6.toml create mode 100644 providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml create mode 100644 providers/maxlayer/models/moonshotai/kimi-k3.toml create mode 100644 providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml create mode 100644 providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml create mode 100644 providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml create mode 100644 providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml create mode 100644 providers/maxlayer/models/openai/gpt-3.5-turbo.toml create mode 100644 providers/maxlayer/models/openai/gpt-4-turbo.toml create mode 100644 providers/maxlayer/models/openai/gpt-4.1-mini.toml create mode 100644 providers/maxlayer/models/openai/gpt-4.1-nano.toml create mode 100644 providers/maxlayer/models/openai/gpt-4.1.toml create mode 100644 providers/maxlayer/models/openai/gpt-4.toml create mode 100644 providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml create mode 100644 providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml create mode 100644 providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml create mode 100644 providers/maxlayer/models/openai/gpt-4o-mini.toml create mode 100644 providers/maxlayer/models/openai/gpt-4o.toml create mode 100644 providers/maxlayer/models/openai/gpt-5-mini.toml create mode 100644 providers/maxlayer/models/openai/gpt-5-nano.toml create mode 100644 providers/maxlayer/models/openai/gpt-5-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.1-codex-max.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.1-codex.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.1.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.2-codex.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.2-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.2.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.3-codex.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.4-mini.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.4-nano.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.4-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.4.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.5-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.5.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-luna.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-sol.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.6-terra.toml create mode 100644 providers/maxlayer/models/openai/gpt-5.toml create mode 100644 providers/maxlayer/models/openai/gpt-oss-120b.toml create mode 100644 providers/maxlayer/models/openai/gpt-oss-20b.toml create mode 100644 providers/maxlayer/models/openai/o1-pro.toml create mode 100644 providers/maxlayer/models/openai/o1.toml create mode 100644 providers/maxlayer/models/openai/o3-mini.toml create mode 100644 providers/maxlayer/models/openai/o3-pro.toml create mode 100644 providers/maxlayer/models/openai/o3.toml create mode 100644 providers/maxlayer/models/openai/o4-mini.toml create mode 100644 providers/maxlayer/models/qwen/qwen-plus.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-235b-a22b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-30b-a3b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-32b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-coder-flash.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-coder-next.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-coder-plus.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-max.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-instruct.toml create mode 100644 providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-thinking.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.5-27b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.5-9b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.6-27b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.6-flash.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.6-max-preview.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.6-plus.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.7-flash.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.7-max.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.7-plus.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.8-2.4t-a95b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.8-27b.toml create mode 100644 providers/maxlayer/models/qwen/qwen3.8-max.toml create mode 100644 providers/maxlayer/models/sakana/fugu-ultra.toml create mode 100644 providers/maxlayer/models/sakana/sakana-namazu.toml create mode 100644 providers/maxlayer/models/stepfun/step-3.5-flash.toml create mode 100644 providers/maxlayer/models/stepfun/step-3.7-flash.toml create mode 100644 providers/maxlayer/models/tencent/hy3-preview.toml create mode 100644 providers/maxlayer/models/tencent/hy3.toml create mode 100644 providers/maxlayer/models/thinkingmachines/inkling-small.toml create mode 100644 providers/maxlayer/models/thinkingmachines/inkling.toml create mode 100644 providers/maxlayer/models/x-ai/grok-4.3.toml create mode 100644 providers/maxlayer/models/x-ai/grok-4.5.toml create mode 100644 providers/maxlayer/models/x-ai/grok-4.6.toml create mode 100644 providers/maxlayer/models/x-ai/grok-build-0.1.toml create mode 100644 providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml create mode 100644 providers/maxlayer/models/xiaomi/mimo-v2.5.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.5-air.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.5.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.5v.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.6.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.6v.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.7-flash.toml create mode 100644 providers/maxlayer/models/z-ai/glm-4.7.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5-turbo.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5.1.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5.2.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5.3.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5.toml create mode 100644 providers/maxlayer/models/z-ai/glm-5v-turbo.toml create mode 100644 providers/maxlayer/provider.toml diff --git a/packages/core/src/sync/index.ts b/packages/core/src/sync/index.ts index 6a72c914858..8702e43937d 100644 --- a/packages/core/src/sync/index.ts +++ b/packages/core/src/sync/index.ts @@ -22,6 +22,7 @@ import { huggingface } from "./providers/huggingface.js"; import { inceptron } from "./providers/inceptron.js"; import { kilo } from "./providers/kilo.js"; import { llmgateway, llmgatewayProviders } from "./providers/llmgateway.js"; +import { maxlayer } from "./providers/maxlayer.js"; import { mergeGateway } from "./providers/merge-gateway.js"; import { nanoGpt } from "./providers/nano-gpt.js"; import { openai } from "./providers/openai.js"; @@ -142,6 +143,7 @@ export const providers: { kilo: SyncProvider; llmgateway: SyncProvider; "llmgateway-providers": SyncProvider; + maxlayer: SyncProvider; "merge-gateway": SyncProvider; "nano-gpt": SyncProvider; ofox: SyncProvider; @@ -174,6 +176,7 @@ export const providers: { kilo, llmgateway, "llmgateway-providers": llmgatewayProviders, + maxlayer, "merge-gateway": mergeGateway, "nano-gpt": nanoGpt, ofox, @@ -199,6 +202,7 @@ export const groups = { "kilo", "llmgateway", "llmgateway-providers", + "maxlayer", "merge-gateway", "nano-gpt", "ofox", diff --git a/packages/core/src/sync/providers/maxlayer.ts b/packages/core/src/sync/providers/maxlayer.ts new file mode 100644 index 00000000000..befc50f364b --- /dev/null +++ b/packages/core/src/sync/providers/maxlayer.ts @@ -0,0 +1,222 @@ +import { z } from "zod"; +import { existsSync, readFileSync } from "node:fs"; +import path from "node:path"; + +import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js"; +import { factorBaseModel, resolveCanonicalBaseModel } from "./openrouter.js"; + +const API_ENDPOINT = "https://inference.maxlayer.cloud/v1/models"; +const ROOT = path.join(import.meta.dirname, "..", "..", "..", "..", ".."); +const MODELS_DIR = path.join(ROOT, "models"); +const OPENROUTER_MODELS_DIR = path.join(ROOT, "providers", "openrouter", "models"); + +const Pricing = z + .object({ + currency: z.string(), + input_per_million_tokens: z.string().nullable().optional(), + output_per_million_tokens: z.string().nullable().optional(), + cached_input_per_million_tokens: z.string().nullable().optional(), + cache_write_per_million_tokens: z.string().nullable().optional(), + }) + .passthrough(); + +export const MaxlayerModel = z + .object({ + id: z.string().min(1), + name: z.string().optional(), + category: z.string(), + billing_mode: z.string(), + context_window: z.number().nullable().optional(), + max_output_tokens: z.number().nullable().optional(), + pricing: Pricing.optional(), + }) + .passthrough(); + +export const MaxlayerResponse = z + .object({ + data: z.array(MaxlayerModel), + }) + .passthrough(); + +export type MaxlayerModel = z.infer; + +/** + * Maxlayer is an OpenRouter-fronted gateway. It routes every request to + * OpenRouter and keeps OpenRouter's `publisher/model` IDs verbatim, so + * `resolveCanonicalBaseModel` maps a Maxlayer ID onto the same canonical + * metadata file the OpenRouter sync uses, and the sibling OpenRouter provider + * TOML describes the same wire surface a Maxlayer request reaches. + * + * That inheritance is doing real work, because `GET /v1/models` here publishes + * almost nothing about what a model *is*: one `category` string, and a + * `capabilities` array that is empty on every synced row. There is no + * `supported_parameters`, no modality list, no reasoning metadata. A model with + * no canonical match is therefore skipped rather than authored from guesses. + * + * What this sync is authoritative for is price. Maxlayer's published rate is + * the sell price — upstream's rate plus the credit fee and the platform markup, + * derived on every read — so `pricing.input_per_million_tokens` is what a + * customer is billed and is written to `[cost]` verbatim. The sibling + * `base_*_per_million_tokens` fields carry upstream's own rate for display + * only, and are deliberately not read here: quoting those would undercharge + * every model on the list. + */ +export const maxlayer = { + id: "maxlayer", + name: "Maxlayer", + modelsDir: "providers/maxlayer/models", + trackMissingModels: true, + deleteMissing: false, + sourceID(model) { + // Only rate-carded text models are catalog targets, so only those are worth + // reporting when they are skipped. `upstream_cost` models (image, video, + // multimodal embeddings) bill what the request actually cost and publish no + // rate card at all, and plain embedding models are not in scope for this + // provider yet — neither is a gap anyone should open an issue about. + return isCatalogTarget(model) ? model.id : undefined; + }, + skippedNotice(ids) { + return ids.map( + (id) => + `Maxlayer lists ${id} but no canonical model metadata matches it; ` + + `add models//.toml before it can be synced.`, + ); + }, + missingNotice(paths) { + return paths.map( + (file) => `Maxlayer no longer lists ${file}; review for manual deprecation or removal.`, + ); + }, + async fetchModels() { + const response = await fetch(API_ENDPOINT); + if (!response.ok) { + throw new Error(`Maxlayer request failed: ${response.status} ${response.statusText}`); + } + return response.json(); + }, + parseModels(raw) { + return MaxlayerResponse.parse(raw).data; + }, + translateModel(model, context) { + if (!isCatalogTarget(model)) return undefined; + + const existing = context.existing(model.id); + const canonical = existing?.base_model ?? resolveCanonicalBaseModel(model.id); + if (canonical === undefined) return undefined; + + return { + id: model.id, + model: buildMaxlayerModel(model, canonical, existing), + }; + }, +} satisfies SyncProvider; + +function isCatalogTarget(model: MaxlayerModel) { + return model.billing_mode === "token" && model.category === "text"; +} + +/** + * Rates arrive as decimal strings already denominated per million tokens, which + * is the unit `[cost]` wants — unlike the per-token strings most gateway APIs + * return. Null is meaningful and distinct from zero: it means the model + * publishes no rate on that axis, so the field is left off rather than written + * as free. + */ +function price(value: string | null | undefined) { + if (value === null || value === undefined) return undefined; + const number = Number(value); + if (!Number.isFinite(number) || number < 0) return undefined; + return Math.round(number * 1_000_000) / 1_000_000; +} + +interface SiblingCuration { + reasoning_options?: SyncedFullModel["reasoning_options"]; + interleaved?: SyncedFullModel["interleaved"]; + output?: number; +} + +const siblingCurationByID = new Map(); +const canonicalOutputLimitByID = new Map(); + +/** + * Reasoning controls and the reasoning side-channel come from the OpenRouter + * provider file for the same ID. Maxlayer forwards the request body to + * OpenRouter unchanged, so the controls a caller sends are OpenRouter's, + * model-for-model — and `reasoning_options` is required on any resolved + * provider model whose base declares `reasoning = true`, which nothing in + * Maxlayer's own response could supply. + */ +function siblingCuration(modelID: string): SiblingCuration { + let curation = siblingCurationByID.get(modelID); + if (curation === undefined) { + const filePath = path.join(OPENROUTER_MODELS_DIR, `${modelID}.toml`); + const authored = existsSync(filePath) + ? (Bun.TOML.parse(readFileSync(filePath, "utf8")) as SiblingCuration & { + limit?: { output?: number }; + }) + : undefined; + curation = { + reasoning_options: authored?.reasoning_options?.length + ? authored.reasoning_options + : undefined, + interleaved: authored?.interleaved, + output: authored?.limit?.output, + }; + siblingCurationByID.set(modelID, curation); + } + return curation; +} + +/** + * Whether the canonical metadata declares `limit.output`. Providers must + * resolve both `limit.context` and `limit.output`, and 60-odd Maxlayer rows + * publish a null `max_output_tokens`, so those need an inherited value to + * exist before the file can validate. + */ +function canonicalOutputLimit(modelID: string) { + if (!canonicalOutputLimitByID.has(modelID)) { + const filePath = path.join(MODELS_DIR, `${modelID}.toml`); + const metadata = existsSync(filePath) + ? (Bun.TOML.parse(readFileSync(filePath, "utf8")) as { limit?: { output?: number } }) + : undefined; + canonicalOutputLimitByID.set(modelID, metadata?.limit?.output); + } + return canonicalOutputLimitByID.get(modelID); +} + +export function buildMaxlayerModel( + model: MaxlayerModel, + canonical: string, + existing: ExistingModel | undefined, +): SyncedModel { + const sibling = siblingCuration(model.id); + const input = price(model.pricing?.input_per_million_tokens); + const output = price(model.pricing?.output_per_million_tokens); + + const limit = { + context: model.context_window ?? undefined, + // Fall back to the sibling OpenRouter file only when the canonical metadata + // has no output limit to inherit; when it does, `factorBaseModel` drops a + // restated value and the file stays override-only. + output: + model.max_output_tokens ?? + (canonicalOutputLimit(canonical) === undefined ? sibling.output : undefined), + }; + + return factorBaseModel( + canonical, + { + cost: { + input: input ?? 0, + output: output ?? 0, + cache_read: price(model.pricing?.cached_input_per_million_tokens), + cache_write: price(model.pricing?.cache_write_per_million_tokens), + }, + limit, + reasoning_options: existing?.reasoning_options ?? sibling.reasoning_options, + interleaved: existing?.interleaved ?? sibling.interleaved, + }, + limit, + existing?.base_model === canonical ? existing.base_model_omit : undefined, + ); +} diff --git a/providers/maxlayer/logo.svg b/providers/maxlayer/logo.svg new file mode 100644 index 00000000000..409d3c9f08c --- /dev/null +++ b/providers/maxlayer/logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/providers/maxlayer/models/anthropic/claude-fable-5.toml b/providers/maxlayer/models/anthropic/claude-fable-5.toml new file mode 100644 index 00000000000..f1be9027a75 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-fable-5.toml @@ -0,0 +1,11 @@ +base_model = "anthropic/claude-fable-5" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 11.394 +output = 56.97 +cache_read = 1.1394 +cache_write = 14.2425 diff --git a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml new file mode 100644 index 00000000000..abe32d44500 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml @@ -0,0 +1,15 @@ +base_model = "anthropic/claude-haiku-4-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + +[cost] +input = 1.1394 +output = 5.697 +cache_read = 0.11394 +cache_write = 1.42425 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml new file mode 100644 index 00000000000..cdf9ed4f0e9 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml @@ -0,0 +1,15 @@ +base_model = "anthropic/claude-opus-4-1" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 31_999 + +[cost] +input = 17.091 +output = 85.455 +cache_read = 1.7091 +cache_write = 21.36375 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml new file mode 100644 index 00000000000..2339ef3ed29 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml @@ -0,0 +1,19 @@ +base_model = "anthropic/claude-opus-4-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + +[cost] +input = 5.697 +output = 28.485 +cache_read = 0.5697 +cache_write = 7.12125 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml new file mode 100644 index 00000000000..87037665443 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml @@ -0,0 +1,17 @@ +base_model = "anthropic/claude-opus-4-6" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "max"] + +[[reasoning_options]] +type = "budget_tokens" + +[cost] +input = 5.697 +output = 28.485 +cache_read = 0.5697 +cache_write = 7.12125 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml new file mode 100644 index 00000000000..1e1758a7f6e --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-4-7" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 34.182 +output = 170.91 +cache_read = 3.4182 +cache_write = 42.7275 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml new file mode 100644 index 00000000000..ea8f82acb1d --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-4-7" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 5.697 +output = 28.485 +cache_read = 0.5697 +cache_write = 7.12125 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml new file mode 100644 index 00000000000..22408f0b16c --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-4-8" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 11.394 +output = 56.97 +cache_read = 1.1394 +cache_write = 14.2425 diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml new file mode 100644 index 00000000000..46f698cd7a0 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-4-8" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 5.697 +output = 28.485 +cache_read = 0.5697 +cache_write = 7.12125 diff --git a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml new file mode 100644 index 00000000000..73e0ca31b1d --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 11.394 +output = 56.97 +cache_read = 1.1394 +cache_write = 14.2425 diff --git a/providers/maxlayer/models/anthropic/claude-opus-5.toml b/providers/maxlayer/models/anthropic/claude-opus-5.toml new file mode 100644 index 00000000000..80376d4697f --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-opus-5.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-opus-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 5.697 +output = 28.485 +cache_read = 0.5697 +cache_write = 7.12125 diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml new file mode 100644 index 00000000000..c211853ce31 --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml @@ -0,0 +1,18 @@ +base_model = "anthropic/claude-sonnet-4-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + +[cost] +input = 3.4182 +output = 17.091 +cache_read = 0.34182 +cache_write = 4.27275 + +[limit] +context = 1_000_000 diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml new file mode 100644 index 00000000000..48a6e59698f --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml @@ -0,0 +1,17 @@ +base_model = "anthropic/claude-sonnet-4-6" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "max"] + +[cost] +input = 3.4182 +output = 17.091 +cache_read = 0.34182 +cache_write = 4.27275 + +[limit] +output = 128_000 diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml new file mode 100644 index 00000000000..03875f8eb9a --- /dev/null +++ b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml @@ -0,0 +1,14 @@ +base_model = "anthropic/claude-sonnet-5" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.2788 +output = 11.394 +cache_read = 0.22788 +cache_write = 2.8485 diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml new file mode 100644 index 00000000000..abeed477c6d --- /dev/null +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml @@ -0,0 +1,12 @@ +base_model = "bytedance-seed/seed-2.0-code" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.5697 +output = 3.4182 diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml new file mode 100644 index 00000000000..d6b01ba8c1f --- /dev/null +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml @@ -0,0 +1,16 @@ +base_model = "bytedance-seed/seed-2.0-lite" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.28485 +output = 2.2788 + +[limit] +context = 262_144 +output = 131_072 diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml new file mode 100644 index 00000000000..630edc5f6c1 --- /dev/null +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml @@ -0,0 +1,16 @@ +base_model = "bytedance-seed/seed-2.0-mini" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.11394 +output = 0.45576 + +[limit] +context = 262_144 +output = 131_072 diff --git a/providers/maxlayer/models/cohere/command-r-08-2024.toml b/providers/maxlayer/models/cohere/command-r-08-2024.toml new file mode 100644 index 00000000000..0ccdf97e0f5 --- /dev/null +++ b/providers/maxlayer/models/cohere/command-r-08-2024.toml @@ -0,0 +1,5 @@ +base_model = "cohere/command-r-08-2024" + +[cost] +input = 0.17091 +output = 0.68364 diff --git a/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml b/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml new file mode 100644 index 00000000000..9bc2222e24e --- /dev/null +++ b/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml @@ -0,0 +1,5 @@ +base_model = "cohere/command-r-plus-08-2024" + +[cost] +input = 2.8485 +output = 11.394 diff --git a/providers/maxlayer/models/cohere/command-r7b-12-2024.toml b/providers/maxlayer/models/cohere/command-r7b-12-2024.toml new file mode 100644 index 00000000000..9dfc6b6dc11 --- /dev/null +++ b/providers/maxlayer/models/cohere/command-r7b-12-2024.toml @@ -0,0 +1,5 @@ +base_model = "cohere/command-r7b-12-2024" + +[cost] +input = 0.042729 +output = 0.17091 diff --git a/providers/maxlayer/models/deepseek/deepseek-chat.toml b/providers/maxlayer/models/deepseek/deepseek-chat.toml new file mode 100644 index 00000000000..d13c487c21d --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-chat.toml @@ -0,0 +1,9 @@ +base_model = "deepseek/deepseek-chat" + +[cost] +input = 0.293282 +output = 1.172102 + +[limit] +context = 163_840 +output = 16_000 diff --git a/providers/maxlayer/models/deepseek/deepseek-r1.toml b/providers/maxlayer/models/deepseek/deepseek-r1.toml new file mode 100644 index 00000000000..81998105afb --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-r1.toml @@ -0,0 +1,10 @@ +base_model = "deepseek/deepseek-r1" +reasoning_options = [] + +[cost] +input = 0.79758 +output = 2.8485 + +[limit] +context = 64_000 +output = 16_000 diff --git a/providers/maxlayer/models/deepseek/deepseek-v3.2.toml b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml new file mode 100644 index 00000000000..21d3888ae29 --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml @@ -0,0 +1,13 @@ +base_model = "deepseek/deepseek-v3.2" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.306499 +output = 0.45576 +cache_read = 0.15325 + +[limit] +context = 163_840 +output = 65_536 diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml new file mode 100644 index 00000000000..38fae33e448 --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml @@ -0,0 +1,17 @@ +base_model = "deepseek/deepseek-v4-flash-0731" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 0.159516 +output = 0.319032 +cache_read = 0.031904 + +[limit] +context = 1_310_720 +output = 393_216 diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml new file mode 100644 index 00000000000..aee3e3c4979 --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml @@ -0,0 +1,19 @@ +base_model = "deepseek/deepseek-v4-flash" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh"] + +[cost] +input = 0.100959 +output = 0.201916 +cache_read = 0.020192 + +[limit] +context = 1_048_576 diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml new file mode 100644 index 00000000000..666554c86dd --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml @@ -0,0 +1,16 @@ +base_model = "deepseek/deepseek-v4-pro-0813" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 1.353608 +output = 4.060822 +cache_read = 0.045121 + +[limit] +context = 1_048_576 diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml new file mode 100644 index 00000000000..a63bc737ba7 --- /dev/null +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml @@ -0,0 +1,20 @@ +base_model = "deepseek/deepseek-v4-pro" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh"] + +[cost] +input = 1.640736 +output = 3.281472 +cache_read = 0.138438 + +[limit] +context = 1_048_576 +output = 393_216 diff --git a/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml new file mode 100644 index 00000000000..fc6737cbcce --- /dev/null +++ b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml @@ -0,0 +1,18 @@ +base_model = "google/gemini-2.5-flash-lite" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 512 +max = 24_576 + +[cost] +input = 0.11394 +output = 0.45576 +cache_read = 0.011394 +cache_write = 0.094951 + +[limit] +output = 65_535 diff --git a/providers/maxlayer/models/google/gemini-2.5-flash.toml b/providers/maxlayer/models/google/gemini-2.5-flash.toml new file mode 100644 index 00000000000..febc426bdfe --- /dev/null +++ b/providers/maxlayer/models/google/gemini-2.5-flash.toml @@ -0,0 +1,18 @@ +base_model = "google/gemini-2.5-flash" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 0 +max = 24_576 + +[cost] +input = 0.34182 +output = 2.8485 +cache_read = 0.034182 +cache_write = 0.094951 + +[limit] +output = 65_535 diff --git a/providers/maxlayer/models/google/gemini-2.5-pro.toml b/providers/maxlayer/models/google/gemini-2.5-pro.toml new file mode 100644 index 00000000000..457d87ffaaa --- /dev/null +++ b/providers/maxlayer/models/google/gemini-2.5-pro.toml @@ -0,0 +1,12 @@ +base_model = "google/gemini-2.5-pro" + +[[reasoning_options]] +type = "budget_tokens" +min = 128 +max = 32_768 + +[cost] +input = 1.42425 +output = 11.394 +cache_read = 0.142425 +cache_write = 0.427275 diff --git a/providers/maxlayer/models/google/gemini-3-flash-preview.toml b/providers/maxlayer/models/google/gemini-3-flash-preview.toml new file mode 100644 index 00000000000..e3e1f1bb186 --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3-flash-preview.toml @@ -0,0 +1,17 @@ +base_model = "google/gemini-3-flash-preview" + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.5697 +output = 3.4182 +cache_read = 0.05697 +cache_write = 0.094951 diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml new file mode 100644 index 00000000000..3b8f3ad0a2e --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml @@ -0,0 +1,14 @@ +base_model = "google/gemini-3.1-flash-lite-preview" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.28485 +output = 1.7091 +cache_read = 0.028485 +cache_write = 0.094951 diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml new file mode 100644 index 00000000000..510a55acc03 --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml @@ -0,0 +1,14 @@ +base_model = "google/gemini-3.1-flash-lite" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.28485 +output = 1.7091 +cache_read = 0.028485 +cache_write = 0.094951 diff --git a/providers/maxlayer/models/google/gemini-3.1-pro-preview-customtools.toml b/providers/maxlayer/models/google/gemini-3.1-pro-preview-customtools.toml new file mode 100644 index 00000000000..a0f8d248498 --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.1-pro-preview-customtools.toml @@ -0,0 +1,14 @@ +base_model = "google/gemini-3.1-pro-preview-customtools" + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 2.2788 +output = 13.6728 +cache_read = 0.22788 +cache_write = 0.427275 diff --git a/providers/maxlayer/models/google/gemini-3.1-pro-preview.toml b/providers/maxlayer/models/google/gemini-3.1-pro-preview.toml new file mode 100644 index 00000000000..7fc760c873c --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.1-pro-preview.toml @@ -0,0 +1,14 @@ +base_model = "google/gemini-3.1-pro-preview" + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 2.2788 +output = 13.6728 +cache_read = 0.22788 +cache_write = 0.427275 diff --git a/providers/maxlayer/models/google/gemini-3.5-flash-lite.toml b/providers/maxlayer/models/google/gemini-3.5-flash-lite.toml new file mode 100644 index 00000000000..1de9180cc2b --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.5-flash-lite.toml @@ -0,0 +1,11 @@ +base_model = "google/gemini-3.5-flash-lite" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.34182 +output = 2.8485 +cache_read = 0.034182 +cache_write = 0.094951 diff --git a/providers/maxlayer/models/google/gemini-3.5-flash.toml b/providers/maxlayer/models/google/gemini-3.5-flash.toml new file mode 100644 index 00000000000..0c2bef245ae --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.5-flash.toml @@ -0,0 +1,11 @@ +base_model = "google/gemini-3.5-flash" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 1.7091 +output = 10.2546 +cache_read = 0.17091 +cache_write = 0.094951 diff --git a/providers/maxlayer/models/google/gemini-3.6-flash.toml b/providers/maxlayer/models/google/gemini-3.6-flash.toml new file mode 100644 index 00000000000..5f910f4c833 --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.6-flash.toml @@ -0,0 +1,11 @@ +base_model = "google/gemini-3.6-flash" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.85455 +output = 4.27275 +cache_read = 0.085455 +cache_write = 0.047475 diff --git a/providers/maxlayer/models/google/gemini-3.7-flash.toml b/providers/maxlayer/models/google/gemini-3.7-flash.toml new file mode 100644 index 00000000000..bc01c3defac --- /dev/null +++ b/providers/maxlayer/models/google/gemini-3.7-flash.toml @@ -0,0 +1,11 @@ +base_model = "google/gemini-3.7-flash" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.427275 +output = 2.136375 +cache_read = 0.042729 +cache_write = 0.023738 diff --git a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml new file mode 100644 index 00000000000..35f3a0e5f1c --- /dev/null +++ b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml @@ -0,0 +1,11 @@ +base_model = "google/gemma-4-26b-a4b-it" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.079758 +output = 0.387396 + +[limit] +output = 16_384 diff --git a/providers/maxlayer/models/google/gemma-4-31b-it.toml b/providers/maxlayer/models/google/gemma-4-31b-it.toml new file mode 100644 index 00000000000..e4e9f3af184 --- /dev/null +++ b/providers/maxlayer/models/google/gemma-4-31b-it.toml @@ -0,0 +1,12 @@ +base_model = "google/gemma-4-31b-it" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.102546 +output = 0.387396 +cache_read = 0.05697 + +[limit] +output = 16_384 diff --git a/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml b/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml new file mode 100644 index 00000000000..270989ee8ed --- /dev/null +++ b/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml @@ -0,0 +1,10 @@ +base_model = "meta/llama-3.1-8b-instruct" + +[cost] +input = 0.05697 +output = 0.091152 +cache_read = 0.028485 + +[limit] +context = 131_072 +output = 131_072 diff --git a/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml b/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml new file mode 100644 index 00000000000..4e48b5c9fcd --- /dev/null +++ b/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml @@ -0,0 +1,9 @@ +base_model = "meta/llama-3.3-70b-instruct" + +[cost] +input = 0.11394 +output = 0.364608 + +[limit] +context = 131_072 +output = 16_384 diff --git a/providers/maxlayer/models/meta/muse-glimmer-30b.toml b/providers/maxlayer/models/meta/muse-glimmer-30b.toml new file mode 100644 index 00000000000..867e5c82586 --- /dev/null +++ b/providers/maxlayer/models/meta/muse-glimmer-30b.toml @@ -0,0 +1,10 @@ +base_model = "meta/muse-glimmer-30b" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +[cost] +input = 0.39879 +output = 1.7091 +cache_read = 0.045576 diff --git a/providers/maxlayer/models/meta/muse-spark-1.1.toml b/providers/maxlayer/models/meta/muse-spark-1.1.toml new file mode 100644 index 00000000000..99d72975664 --- /dev/null +++ b/providers/maxlayer/models/meta/muse-spark-1.1.toml @@ -0,0 +1,13 @@ +base_model = "meta/muse-spark-1.1" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high", "xhigh"] + +[cost] +input = 1.42425 +output = 4.84245 +cache_read = 0.17091 + +[limit] +context = 1_048_576 diff --git a/providers/maxlayer/models/meta/muse-spark-1.2.toml b/providers/maxlayer/models/meta/muse-spark-1.2.toml new file mode 100644 index 00000000000..b5c5cd8cf67 --- /dev/null +++ b/providers/maxlayer/models/meta/muse-spark-1.2.toml @@ -0,0 +1,10 @@ +base_model = "meta/muse-spark-1.2" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high", "xhigh"] + +[cost] +input = 1.42425 +output = 4.84245 +cache_read = 0.17091 diff --git a/providers/maxlayer/models/minimax/minimax-m2-her.toml b/providers/maxlayer/models/minimax/minimax-m2-her.toml new file mode 100644 index 00000000000..8dd96516e46 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m2-her.toml @@ -0,0 +1,11 @@ +base_model = "minimax/MiniMax-M2-Her" +reasoning_options = [] + +[cost] +input = 0.34182 +output = 1.36728 +cache_read = 0.034182 + +[limit] +context = 65_536 +output = 2_048 diff --git a/providers/maxlayer/models/minimax/minimax-m2.1.toml b/providers/maxlayer/models/minimax/minimax-m2.1.toml new file mode 100644 index 00000000000..8fc18a88780 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m2.1.toml @@ -0,0 +1,10 @@ +base_model = "minimax/MiniMax-M2.1" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.34182 +output = 1.36728 +cache_read = 0.034182 diff --git a/providers/maxlayer/models/minimax/minimax-m2.5.toml b/providers/maxlayer/models/minimax/minimax-m2.5.toml new file mode 100644 index 00000000000..754b224b261 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m2.5.toml @@ -0,0 +1,13 @@ +base_model = "minimax/MiniMax-M2.5" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.256365 +output = 1.02546 +cache_read = 0.068364 + +[limit] +output = 196_608 diff --git a/providers/maxlayer/models/minimax/minimax-m2.7.toml b/providers/maxlayer/models/minimax/minimax-m2.7.toml new file mode 100644 index 00000000000..86da72b6161 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m2.7.toml @@ -0,0 +1,7 @@ +base_model = "minimax/MiniMax-M2.7" +reasoning_options = [] + +[cost] +input = 0.34182 +output = 1.36728 +cache_read = 0.068364 diff --git a/providers/maxlayer/models/minimax/minimax-m2.toml b/providers/maxlayer/models/minimax/minimax-m2.toml new file mode 100644 index 00000000000..ed9988d5435 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m2.toml @@ -0,0 +1,13 @@ +base_model = "minimax/MiniMax-M2" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.290547 +output = 1.162188 + +[limit] +context = 204_800 +output = 131_072 diff --git a/providers/maxlayer/models/minimax/minimax-m3.toml b/providers/maxlayer/models/minimax/minimax-m3.toml new file mode 100644 index 00000000000..2c868c8c8b6 --- /dev/null +++ b/providers/maxlayer/models/minimax/minimax-m3.toml @@ -0,0 +1,11 @@ +base_model = "minimax/MiniMax-M3" +reasoning_options = [] + +[cost] +input = 0.34182 +output = 1.36728 +cache_read = 0.068364 + +[limit] +context = 1_048_576 +output = 512_000 diff --git a/providers/maxlayer/models/mistralai/mistral-large-2512.toml b/providers/maxlayer/models/mistralai/mistral-large-2512.toml new file mode 100644 index 00000000000..d0aaadaa7a8 --- /dev/null +++ b/providers/maxlayer/models/mistralai/mistral-large-2512.toml @@ -0,0 +1,6 @@ +base_model = "mistral/mistral-large-2512" + +[cost] +input = 0.5697 +output = 1.7091 +cache_read = 0.05697 diff --git a/providers/maxlayer/models/mistralai/mistral-nemo.toml b/providers/maxlayer/models/mistralai/mistral-nemo.toml new file mode 100644 index 00000000000..deecaa1426f --- /dev/null +++ b/providers/maxlayer/models/mistralai/mistral-nemo.toml @@ -0,0 +1,9 @@ +base_model = "mistral/mistral-nemo" + +[cost] +input = 0.021649 +output = 0.034182 + +[limit] +context = 131_072 +output = 16_384 diff --git a/providers/maxlayer/models/mistralai/mistral-small-2603.toml b/providers/maxlayer/models/mistralai/mistral-small-2603.toml new file mode 100644 index 00000000000..fe837521e1b --- /dev/null +++ b/providers/maxlayer/models/mistralai/mistral-small-2603.toml @@ -0,0 +1,13 @@ +base_model = "mistral/mistral-small-2603" + +[[reasoning_options]] +type = "effort" +values = ["none", "high"] + +[cost] +input = 0.17091 +output = 0.68364 +cache_read = 0.017091 + +[limit] +context = 262_144 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml b/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml new file mode 100644 index 00000000000..904fb3993e3 --- /dev/null +++ b/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml @@ -0,0 +1,13 @@ +base_model = "moonshotai/kimi-k2-thinking" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.68364 +output = 2.8485 +cache_read = 0.17091 + +[limit] +output = 100_352 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml new file mode 100644 index 00000000000..abbe6b7b7df --- /dev/null +++ b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml @@ -0,0 +1,10 @@ +base_model = "moonshotai/kimi-k2.5" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.51273 +output = 2.56365 +cache_read = 0.079758 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml new file mode 100644 index 00000000000..b3c85673c56 --- /dev/null +++ b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml @@ -0,0 +1,10 @@ +base_model = "moonshotai/kimi-k2.6" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 1.08243 +output = 4.5576 +cache_read = 0.182304 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml new file mode 100644 index 00000000000..6556f0706cb --- /dev/null +++ b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml @@ -0,0 +1,7 @@ +base_model = "moonshotai/kimi-k2.7-code" +reasoning_options = [] + +[cost] +input = 0.808974 +output = 3.9879 +cache_read = 0.17091 diff --git a/providers/maxlayer/models/moonshotai/kimi-k3.toml b/providers/maxlayer/models/moonshotai/kimi-k3.toml new file mode 100644 index 00000000000..075b212219e --- /dev/null +++ b/providers/maxlayer/models/moonshotai/kimi-k3.toml @@ -0,0 +1,13 @@ +base_model = "moonshotai/kimi-k3" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 3.4182 +output = 17.091 +cache_read = 0.34182 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml new file mode 100644 index 00000000000..26240d6f661 --- /dev/null +++ b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -0,0 +1,7 @@ +base_model = "nvidia/nemotron-3-nano-30b-a3b" +reasoning_options = [] + +[cost] +input = 0.05697 +output = 0.22788 +cache_read = 0.034182 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml new file mode 100644 index 00000000000..2b451f4dea1 --- /dev/null +++ b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml @@ -0,0 +1,19 @@ +base_model = "nvidia/nemotron-3-super-120b-a12b" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium"] + +[[reasoning_options]] +type = "budget_tokens" + +[cost] +input = 0.096849 +output = 0.45576 + +[limit] +context = 1_000_000 +output = 16_384 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml new file mode 100644 index 00000000000..4f54c8ce8b1 --- /dev/null +++ b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml @@ -0,0 +1,19 @@ +base_model = "nvidia/nemotron-3-ultra-550b-a55b" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["medium", "high"] + +[[reasoning_options]] +type = "budget_tokens" + +[cost] +input = 0.68364 +output = 4.10184 +cache_read = 0.22788 + +[limit] +context = 512_288 diff --git a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml new file mode 100644 index 00000000000..102ecc13bfb --- /dev/null +++ b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml @@ -0,0 +1,13 @@ +base_model = "nvidia/nemotron-3.5-lightning" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.091152 +output = 0.22788 +cache_read = 0.045576 + +[limit] +context = 1_000_000 +output = 131_072 diff --git a/providers/maxlayer/models/openai/gpt-3.5-turbo.toml b/providers/maxlayer/models/openai/gpt-3.5-turbo.toml new file mode 100644 index 00000000000..6d6438758ec --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-3.5-turbo.toml @@ -0,0 +1,5 @@ +base_model = "openai/gpt-3.5-turbo" + +[cost] +input = 0.5697 +output = 1.7091 diff --git a/providers/maxlayer/models/openai/gpt-4-turbo.toml b/providers/maxlayer/models/openai/gpt-4-turbo.toml new file mode 100644 index 00000000000..80de3236c0e --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4-turbo.toml @@ -0,0 +1,5 @@ +base_model = "openai/gpt-4-turbo" + +[cost] +input = 11.394 +output = 34.182 diff --git a/providers/maxlayer/models/openai/gpt-4.1-mini.toml b/providers/maxlayer/models/openai/gpt-4.1-mini.toml new file mode 100644 index 00000000000..7f2c03771ed --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4.1-mini.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4.1-mini" + +[cost] +input = 0.45576 +output = 1.82304 +cache_read = 0.11394 diff --git a/providers/maxlayer/models/openai/gpt-4.1-nano.toml b/providers/maxlayer/models/openai/gpt-4.1-nano.toml new file mode 100644 index 00000000000..2277f6b28a1 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4.1-nano.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4.1-nano" + +[cost] +input = 0.11394 +output = 0.45576 +cache_read = 0.028485 diff --git a/providers/maxlayer/models/openai/gpt-4.1.toml b/providers/maxlayer/models/openai/gpt-4.1.toml new file mode 100644 index 00000000000..ed3fb4ae318 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4.1.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4.1" + +[cost] +input = 2.2788 +output = 9.1152 +cache_read = 0.5697 diff --git a/providers/maxlayer/models/openai/gpt-4.toml b/providers/maxlayer/models/openai/gpt-4.toml new file mode 100644 index 00000000000..07557e8c3a3 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4.toml @@ -0,0 +1,9 @@ +base_model = "openai/gpt-4" + +[cost] +input = 34.182 +output = 68.364 + +[limit] +context = 8_191 +output = 4_096 diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml b/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml new file mode 100644 index 00000000000..206d586fcf8 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml @@ -0,0 +1,5 @@ +base_model = "openai/gpt-4o-2024-05-13" + +[cost] +input = 5.697 +output = 17.091 diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml b/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml new file mode 100644 index 00000000000..eb2bc7a040f --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4o-2024-08-06" + +[cost] +input = 2.8485 +output = 11.394 +cache_read = 1.42425 diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml b/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml new file mode 100644 index 00000000000..be42ad8aff1 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4o-2024-11-20" + +[cost] +input = 2.8485 +output = 11.394 +cache_read = 1.42425 diff --git a/providers/maxlayer/models/openai/gpt-4o-mini.toml b/providers/maxlayer/models/openai/gpt-4o-mini.toml new file mode 100644 index 00000000000..48251db28a3 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4o-mini.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4o-mini" + +[cost] +input = 0.17091 +output = 0.68364 +cache_read = 0.085455 diff --git a/providers/maxlayer/models/openai/gpt-4o.toml b/providers/maxlayer/models/openai/gpt-4o.toml new file mode 100644 index 00000000000..74f5c7d301a --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-4o.toml @@ -0,0 +1,6 @@ +base_model = "openai/gpt-4o" + +[cost] +input = 2.8485 +output = 11.394 +cache_read = 1.42425 diff --git a/providers/maxlayer/models/openai/gpt-5-mini.toml b/providers/maxlayer/models/openai/gpt-5-mini.toml new file mode 100644 index 00000000000..02ec1302119 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5-mini.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5-mini" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.28485 +output = 2.2788 +cache_read = 0.028485 diff --git a/providers/maxlayer/models/openai/gpt-5-nano.toml b/providers/maxlayer/models/openai/gpt-5-nano.toml new file mode 100644 index 00000000000..727257b72eb --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5-nano.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5-nano" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 0.05697 +output = 0.45576 +cache_read = 0.005697 diff --git a/providers/maxlayer/models/openai/gpt-5-pro.toml b/providers/maxlayer/models/openai/gpt-5-pro.toml new file mode 100644 index 00000000000..5ed25e48b44 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5-pro.toml @@ -0,0 +1,12 @@ +base_model = "openai/gpt-5-pro" + +[[reasoning_options]] +type = "effort" +values = ["high"] + +[cost] +input = 17.091 +output = 136.728 + +[limit] +output = 128_000 diff --git a/providers/maxlayer/models/openai/gpt-5.1-codex-max.toml b/providers/maxlayer/models/openai/gpt-5.1-codex-max.toml new file mode 100644 index 00000000000..ba54dbe9c61 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.1-codex-max.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.1-codex-max" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +[cost] +input = 1.42425 +output = 11.394 +cache_read = 0.142425 diff --git a/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml new file mode 100644 index 00000000000..a1e1ab5d2d3 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml @@ -0,0 +1,13 @@ +base_model = "openai/gpt-5.1-codex-mini" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.28485 +output = 2.2788 +cache_read = 0.034182 diff --git a/providers/maxlayer/models/openai/gpt-5.1-codex.toml b/providers/maxlayer/models/openai/gpt-5.1-codex.toml new file mode 100644 index 00000000000..0be994cb7ec --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.1-codex.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.1-codex" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 1.42425 +output = 11.394 +cache_read = 0.148122 diff --git a/providers/maxlayer/models/openai/gpt-5.1.toml b/providers/maxlayer/models/openai/gpt-5.1.toml new file mode 100644 index 00000000000..44951e75e64 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.1.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.1" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high"] + +[cost] +input = 1.42425 +output = 11.394 +cache_read = 0.142425 diff --git a/providers/maxlayer/models/openai/gpt-5.2-codex.toml b/providers/maxlayer/models/openai/gpt-5.2-codex.toml new file mode 100644 index 00000000000..40c79345766 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.2-codex.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.2-codex" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +[cost] +input = 1.99395 +output = 15.9516 +cache_read = 0.199395 diff --git a/providers/maxlayer/models/openai/gpt-5.2-pro.toml b/providers/maxlayer/models/openai/gpt-5.2-pro.toml new file mode 100644 index 00000000000..dfce24028e8 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.2-pro.toml @@ -0,0 +1,9 @@ +base_model = "openai/gpt-5.2-pro" + +[[reasoning_options]] +type = "effort" +values = ["medium", "high", "xhigh"] + +[cost] +input = 23.9274 +output = 191.4192 diff --git a/providers/maxlayer/models/openai/gpt-5.2.toml b/providers/maxlayer/models/openai/gpt-5.2.toml new file mode 100644 index 00000000000..983413cffa7 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.2.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.2" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 1.99395 +output = 15.9516 +cache_read = 0.199395 diff --git a/providers/maxlayer/models/openai/gpt-5.3-codex.toml b/providers/maxlayer/models/openai/gpt-5.3-codex.toml new file mode 100644 index 00000000000..d2a5d8f3842 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.3-codex.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.3-codex" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 1.99395 +output = 15.9516 +cache_read = 0.199395 diff --git a/providers/maxlayer/models/openai/gpt-5.4-mini.toml b/providers/maxlayer/models/openai/gpt-5.4-mini.toml new file mode 100644 index 00000000000..9287a6f97e4 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.4-mini.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.4-mini" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 0.85455 +output = 5.1273 +cache_read = 0.085455 diff --git a/providers/maxlayer/models/openai/gpt-5.4-nano.toml b/providers/maxlayer/models/openai/gpt-5.4-nano.toml new file mode 100644 index 00000000000..7e05af3e172 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.4-nano.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.4-nano" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 0.22788 +output = 1.42425 +cache_read = 0.022788 diff --git a/providers/maxlayer/models/openai/gpt-5.4-pro.toml b/providers/maxlayer/models/openai/gpt-5.4-pro.toml new file mode 100644 index 00000000000..bb26a663d2e --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.4-pro.toml @@ -0,0 +1,9 @@ +base_model = "openai/gpt-5.4-pro" + +[[reasoning_options]] +type = "effort" +values = ["medium", "high", "xhigh"] + +[cost] +input = 34.182 +output = 205.092 diff --git a/providers/maxlayer/models/openai/gpt-5.4.toml b/providers/maxlayer/models/openai/gpt-5.4.toml new file mode 100644 index 00000000000..98040b08164 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.4.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.4" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 2.8485 +output = 17.091 +cache_read = 0.28485 diff --git a/providers/maxlayer/models/openai/gpt-5.5-pro.toml b/providers/maxlayer/models/openai/gpt-5.5-pro.toml new file mode 100644 index 00000000000..13047ac295c --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.5-pro.toml @@ -0,0 +1,9 @@ +base_model = "openai/gpt-5.5-pro" + +[[reasoning_options]] +type = "effort" +values = ["medium", "high", "xhigh"] + +[cost] +input = 34.182 +output = 205.092 diff --git a/providers/maxlayer/models/openai/gpt-5.5.toml b/providers/maxlayer/models/openai/gpt-5.5.toml new file mode 100644 index 00000000000..4f1ab64a264 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.5.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5.5" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh"] + +[cost] +input = 5.697 +output = 34.182 +cache_read = 0.5697 diff --git a/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml new file mode 100644 index 00000000000..72724392551 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-luna" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 0.22788 +output = 1.36728 +cache_read = 0.022788 +cache_write = 0.28485 diff --git a/providers/maxlayer/models/openai/gpt-5.6-luna.toml b/providers/maxlayer/models/openai/gpt-5.6-luna.toml new file mode 100644 index 00000000000..72724392551 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-luna.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-luna" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 0.22788 +output = 1.36728 +cache_read = 0.022788 +cache_write = 0.28485 diff --git a/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml new file mode 100644 index 00000000000..a2e4b448d62 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-sol" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.8485 +output = 17.091 +cache_read = 0.28485 +cache_write = 3.560625 diff --git a/providers/maxlayer/models/openai/gpt-5.6-sol.toml b/providers/maxlayer/models/openai/gpt-5.6-sol.toml new file mode 100644 index 00000000000..a2e4b448d62 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-sol.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-sol" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.8485 +output = 17.091 +cache_read = 0.28485 +cache_write = 3.560625 diff --git a/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml new file mode 100644 index 00000000000..d5d31289e7e --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-terra" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.2788 +output = 13.6728 +cache_read = 0.22788 +cache_write = 2.8485 diff --git a/providers/maxlayer/models/openai/gpt-5.6-terra.toml b/providers/maxlayer/models/openai/gpt-5.6-terra.toml new file mode 100644 index 00000000000..d5d31289e7e --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.6-terra.toml @@ -0,0 +1,11 @@ +base_model = "openai/gpt-5.6-terra" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.2788 +output = 13.6728 +cache_read = 0.22788 +cache_write = 2.8485 diff --git a/providers/maxlayer/models/openai/gpt-5.toml b/providers/maxlayer/models/openai/gpt-5.toml new file mode 100644 index 00000000000..d4584e91ae5 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-5.toml @@ -0,0 +1,10 @@ +base_model = "openai/gpt-5" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high"] + +[cost] +input = 1.42425 +output = 11.394 +cache_read = 0.142425 diff --git a/providers/maxlayer/models/openai/gpt-oss-120b.toml b/providers/maxlayer/models/openai/gpt-oss-120b.toml new file mode 100644 index 00000000000..b40fbc8b6ac --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-oss-120b.toml @@ -0,0 +1,12 @@ +base_model = "openai/gpt-oss-120b" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.034182 +output = 0.193698 + +[limit] +output = 131_072 diff --git a/providers/maxlayer/models/openai/gpt-oss-20b.toml b/providers/maxlayer/models/openai/gpt-oss-20b.toml new file mode 100644 index 00000000000..f36eb1a6478 --- /dev/null +++ b/providers/maxlayer/models/openai/gpt-oss-20b.toml @@ -0,0 +1,12 @@ +base_model = "openai/gpt-oss-20b" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.034182 +output = 0.148122 + +[limit] +output = 131_072 diff --git a/providers/maxlayer/models/openai/o1-pro.toml b/providers/maxlayer/models/openai/o1-pro.toml new file mode 100644 index 00000000000..380637565e3 --- /dev/null +++ b/providers/maxlayer/models/openai/o1-pro.toml @@ -0,0 +1,6 @@ +base_model = "openai/o1-pro" +reasoning_options = [] + +[cost] +input = 170.91 +output = 683.64 diff --git a/providers/maxlayer/models/openai/o1.toml b/providers/maxlayer/models/openai/o1.toml new file mode 100644 index 00000000000..5740d2742e2 --- /dev/null +++ b/providers/maxlayer/models/openai/o1.toml @@ -0,0 +1,10 @@ +base_model = "openai/o1" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 17.091 +output = 68.364 +cache_read = 8.5455 diff --git a/providers/maxlayer/models/openai/o3-mini.toml b/providers/maxlayer/models/openai/o3-mini.toml new file mode 100644 index 00000000000..3a42c9d18a1 --- /dev/null +++ b/providers/maxlayer/models/openai/o3-mini.toml @@ -0,0 +1,10 @@ +base_model = "openai/o3-mini" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 1.25334 +output = 5.01336 +cache_read = 0.62667 diff --git a/providers/maxlayer/models/openai/o3-pro.toml b/providers/maxlayer/models/openai/o3-pro.toml new file mode 100644 index 00000000000..5970be939a4 --- /dev/null +++ b/providers/maxlayer/models/openai/o3-pro.toml @@ -0,0 +1,9 @@ +base_model = "openai/o3-pro" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 22.788 +output = 91.152 diff --git a/providers/maxlayer/models/openai/o3.toml b/providers/maxlayer/models/openai/o3.toml new file mode 100644 index 00000000000..df4188ba153 --- /dev/null +++ b/providers/maxlayer/models/openai/o3.toml @@ -0,0 +1,10 @@ +base_model = "openai/o3" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 2.2788 +output = 9.1152 +cache_read = 0.5697 diff --git a/providers/maxlayer/models/openai/o4-mini.toml b/providers/maxlayer/models/openai/o4-mini.toml new file mode 100644 index 00000000000..ea45557a5be --- /dev/null +++ b/providers/maxlayer/models/openai/o4-mini.toml @@ -0,0 +1,10 @@ +base_model = "openai/o4-mini" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 1.25334 +output = 5.01336 +cache_read = 0.313335 diff --git a/providers/maxlayer/models/qwen/qwen-plus.toml b/providers/maxlayer/models/qwen/qwen-plus.toml new file mode 100644 index 00000000000..6d0bdac4765 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen-plus.toml @@ -0,0 +1,8 @@ +base_model = "alibaba/qwen-plus" +reasoning_options = [] + +[cost] +input = 0.296244 +output = 0.888732 +cache_read = 0.059249 +cache_write = 0.370305 diff --git a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml new file mode 100644 index 00000000000..04e1ef55d44 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml @@ -0,0 +1,16 @@ +base_model = "alibaba/qwen3-235b-a22b" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 38_912 + +[cost] +input = 0.518427 +output = 2.073708 + +[limit] +output = 8_192 diff --git a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml new file mode 100644 index 00000000000..e3f71d54879 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml @@ -0,0 +1,11 @@ +base_model = "alibaba/qwen3-30b-a3b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.148122 +output = 0.592488 + +[limit] +output = 8_192 diff --git a/providers/maxlayer/models/qwen/qwen3-32b.toml b/providers/maxlayer/models/qwen/qwen3-32b.toml new file mode 100644 index 00000000000..a3ac5aece17 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-32b.toml @@ -0,0 +1,8 @@ +base_model = "alibaba/qwen3-32b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.091152 +output = 0.319032 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml b/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml new file mode 100644 index 00000000000..e3865d7c6b2 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml @@ -0,0 +1,8 @@ +base_model = "alibaba/qwen3-coder-30b-a3b-instruct" + +[cost] +input = 0.079758 +output = 0.319032 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-flash.toml b/providers/maxlayer/models/qwen/qwen3-coder-flash.toml new file mode 100644 index 00000000000..2b8761d5387 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-coder-flash.toml @@ -0,0 +1,7 @@ +base_model = "alibaba/qwen3-coder-flash" + +[cost] +input = 0.222183 +output = 1.110915 +cache_read = 0.044437 +cache_write = 0.27773 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-next.toml b/providers/maxlayer/models/qwen/qwen3-coder-next.toml new file mode 100644 index 00000000000..477b449b2c3 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-coder-next.toml @@ -0,0 +1,9 @@ +base_model = "alibaba/qwen3-coder-next" + +[cost] +input = 0.136728 +output = 0.91152 +cache_read = 0.079758 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-plus.toml b/providers/maxlayer/models/qwen/qwen3-coder-plus.toml new file mode 100644 index 00000000000..8e22cda255c --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-coder-plus.toml @@ -0,0 +1,10 @@ +base_model = "alibaba/qwen3-coder-plus" + +[cost] +input = 0.74061 +output = 3.70305 +cache_read = 0.148122 +cache_write = 0.925764 + +[limit] +context = 1_000_000 diff --git a/providers/maxlayer/models/qwen/qwen3-max.toml b/providers/maxlayer/models/qwen/qwen3-max.toml new file mode 100644 index 00000000000..86517b3ec3c --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-max.toml @@ -0,0 +1,7 @@ +base_model = "alibaba/qwen3-max" + +[cost] +input = 0.888732 +output = 4.44366 +cache_read = 0.177747 +cache_write = 1.110915 diff --git a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml new file mode 100644 index 00000000000..18704c0a0a2 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml @@ -0,0 +1,9 @@ +base_model = "alibaba/qwen3-next-80b-a3b-instruct" + +[cost] +input = 0.102546 +output = 1.25334 + +[limit] +context = 262_144 +output = 16_384 diff --git a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml new file mode 100644 index 00000000000..4a428f997f6 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml @@ -0,0 +1,9 @@ +base_model = "alibaba/qwen3-next-80b-a3b-thinking" +reasoning_options = [] + +[cost] +input = 0.17091 +output = 1.36728 + +[limit] +context = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-instruct.toml b/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-instruct.toml new file mode 100644 index 00000000000..d1cdce17616 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-instruct.toml @@ -0,0 +1,9 @@ +base_model = "alibaba/qwen3-vl-235b-a22b-instruct" + +[cost] +input = 0.239274 +output = 2.16486 +cache_read = 0.11394 + +[limit] +context = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-thinking.toml b/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-thinking.toml new file mode 100644 index 00000000000..394951ec38f --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3-vl-235b-a22b-thinking.toml @@ -0,0 +1,6 @@ +base_model = "alibaba/qwen3-vl-235b-a22b-thinking" +reasoning_options = [] + +[cost] +input = 0.45576 +output = 4.5576 diff --git a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml new file mode 100644 index 00000000000..f6e712dc89b --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml @@ -0,0 +1,11 @@ +base_model = "alibaba/qwen3.5-122b-a10b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.296244 +output = 2.369952 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.5-27b.toml b/providers/maxlayer/models/qwen/qwen3.5-27b.toml new file mode 100644 index 00000000000..477f78f1f7f --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.5-27b.toml @@ -0,0 +1,8 @@ +base_model = "alibaba/qwen3.5-27b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.222183 +output = 1.777464 diff --git a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml new file mode 100644 index 00000000000..a5230405c2c --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml @@ -0,0 +1,11 @@ +base_model = "alibaba/qwen3.5-35b-a3b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.28485 +output = 1.42425 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml new file mode 100644 index 00000000000..0f702053a2e --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml @@ -0,0 +1,8 @@ +base_model = "alibaba/qwen3.5-397b-a17b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.444366 +output = 2.666196 diff --git a/providers/maxlayer/models/qwen/qwen3.5-9b.toml b/providers/maxlayer/models/qwen/qwen3.5-9b.toml new file mode 100644 index 00000000000..16c8aa19417 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.5-9b.toml @@ -0,0 +1,11 @@ +base_model = "alibaba/qwen3.5-9b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.11394 +output = 0.17091 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.6-27b.toml b/providers/maxlayer/models/qwen/qwen3.6-27b.toml new file mode 100644 index 00000000000..b4fd3e17095 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.6-27b.toml @@ -0,0 +1,12 @@ +base_model = "alibaba/qwen3.6-27b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.68364 +output = 4.10184 +cache_read = 0.136728 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml new file mode 100644 index 00000000000..113efcb1c82 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml @@ -0,0 +1,12 @@ +base_model = "alibaba/qwen3.6-35b-a3b" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.159516 +output = 1.1394 +cache_read = 0.05697 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.6-flash.toml b/providers/maxlayer/models/qwen/qwen3.6-flash.toml new file mode 100644 index 00000000000..3ee5965d498 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.6-flash.toml @@ -0,0 +1,14 @@ +base_model = "alibaba/qwen3.6-flash" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + +[cost] +input = 0.213639 +output = 1.281825 +cache_write = 0.267048 diff --git a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml new file mode 100644 index 00000000000..9274b18339f --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml @@ -0,0 +1,14 @@ +base_model = "alibaba/qwen3.6-max-preview" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 131_072 + +[cost] +input = 1.170164 +output = 7.020983 +cache_write = 1.462706 diff --git a/providers/maxlayer/models/qwen/qwen3.6-plus.toml b/providers/maxlayer/models/qwen/qwen3.6-plus.toml new file mode 100644 index 00000000000..e5079aac435 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.6-plus.toml @@ -0,0 +1,14 @@ +base_model = "alibaba/qwen3.6-plus" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + +[cost] +input = 0.370305 +output = 2.22183 +cache_write = 0.462882 diff --git a/providers/maxlayer/models/qwen/qwen3.7-flash.toml b/providers/maxlayer/models/qwen/qwen3.7-flash.toml new file mode 100644 index 00000000000..de0eddce611 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.7-flash.toml @@ -0,0 +1,10 @@ +base_model = "alibaba/qwen3.7-flash" + +[[reasoning_options]] +type = "budget_tokens" + +[cost] +input = 0.034182 +output = 0.148122 +cache_read = 0.006837 +cache_write = 0.043298 diff --git a/providers/maxlayer/models/qwen/qwen3.7-max.toml b/providers/maxlayer/models/qwen/qwen3.7-max.toml new file mode 100644 index 00000000000..b225f522e76 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.7-max.toml @@ -0,0 +1,18 @@ +base_model = "alibaba/qwen3.7-max" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 262_144 + +[cost] +input = 1.680615 +output = 5.041845 +cache_read = 0.336123 +cache_write = 2.10077 + +[limit] +output = 131_072 diff --git a/providers/maxlayer/models/qwen/qwen3.7-plus.toml b/providers/maxlayer/models/qwen/qwen3.7-plus.toml new file mode 100644 index 00000000000..dccc787f234 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.7-plus.toml @@ -0,0 +1,18 @@ +base_model = "alibaba/qwen3.7-plus" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 262_144 + +[cost] +input = 0.364608 +output = 1.458432 +cache_read = 0.072922 +cache_write = 0.45576 + +[limit] +output = 131_072 diff --git a/providers/maxlayer/models/qwen/qwen3.8-2.4t-a95b.toml b/providers/maxlayer/models/qwen/qwen3.8-2.4t-a95b.toml new file mode 100644 index 00000000000..969134f2324 --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.8-2.4t-a95b.toml @@ -0,0 +1,14 @@ +base_model = "alibaba/qwen3.8-2.4t-a95b" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "xhigh"] + +[cost] +input = 2.2788 +output = 6.8364 +cache_read = 0.28485 + +[limit] +context = 1_048_576 +output = 262_144 diff --git a/providers/maxlayer/models/qwen/qwen3.8-27b.toml b/providers/maxlayer/models/qwen/qwen3.8-27b.toml new file mode 100644 index 00000000000..b5c21fc450a --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.8-27b.toml @@ -0,0 +1,17 @@ +base_model = "alibaba/qwen3.8-27b" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "xhigh"] + +[cost] +input = 0.51273 +output = 3.64608 +cache_read = 0.05697 + +[limit] +context = 1_000_000 +output = 131_072 diff --git a/providers/maxlayer/models/qwen/qwen3.8-max.toml b/providers/maxlayer/models/qwen/qwen3.8-max.toml new file mode 100644 index 00000000000..e32aceb0e0a --- /dev/null +++ b/providers/maxlayer/models/qwen/qwen3.8-max.toml @@ -0,0 +1,11 @@ +base_model = "alibaba/qwen3.8-max" + +[[reasoning_options]] +type = "effort" +values = ["minimal", "low", "medium", "high", "xhigh"] + +[cost] +input = 2.2788 +output = 6.8364 +cache_read = 0.28485 +cache_write = 2.8485 diff --git a/providers/maxlayer/models/sakana/fugu-ultra.toml b/providers/maxlayer/models/sakana/fugu-ultra.toml new file mode 100644 index 00000000000..0479f7e3443 --- /dev/null +++ b/providers/maxlayer/models/sakana/fugu-ultra.toml @@ -0,0 +1,13 @@ +base_model = "sakana/fugu-ultra" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh", "max"] + +[cost] +input = 5.697 +output = 34.182 +cache_read = 0.5697 + +[limit] +output = 128_000 diff --git a/providers/maxlayer/models/sakana/sakana-namazu.toml b/providers/maxlayer/models/sakana/sakana-namazu.toml new file mode 100644 index 00000000000..b3b0043cb66 --- /dev/null +++ b/providers/maxlayer/models/sakana/sakana-namazu.toml @@ -0,0 +1,10 @@ +base_model = "sakana/sakana-namazu" + +[[reasoning_options]] +type = "effort" +values = ["none", "high"] + +[cost] +input = 1.08243 +output = 4.5576 +cache_read = 0.17091 diff --git a/providers/maxlayer/models/stepfun/step-3.5-flash.toml b/providers/maxlayer/models/stepfun/step-3.5-flash.toml new file mode 100644 index 00000000000..b100dc353a0 --- /dev/null +++ b/providers/maxlayer/models/stepfun/step-3.5-flash.toml @@ -0,0 +1,11 @@ +base_model = "stepfun/step-3.5-flash" +base_model_omit = ["limit.input"] +reasoning_options = [] + +[cost] +input = 0.11394 +output = 0.34182 + +[limit] +context = 262_144 +output = 65_536 diff --git a/providers/maxlayer/models/stepfun/step-3.7-flash.toml b/providers/maxlayer/models/stepfun/step-3.7-flash.toml new file mode 100644 index 00000000000..db579ecaa25 --- /dev/null +++ b/providers/maxlayer/models/stepfun/step-3.7-flash.toml @@ -0,0 +1,14 @@ +base_model = "stepfun/step-3.7-flash" +base_model_omit = ["limit.input"] + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 0.22788 +output = 1.31031 +cache_read = 0.045576 + +[limit] +context = 262_144 diff --git a/providers/maxlayer/models/tencent/hy3-preview.toml b/providers/maxlayer/models/tencent/hy3-preview.toml new file mode 100644 index 00000000000..cd130aa3dc1 --- /dev/null +++ b/providers/maxlayer/models/tencent/hy3-preview.toml @@ -0,0 +1,13 @@ +base_model = "tencent/hy3-preview" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "high"] + +[cost] +input = 0.205092 +output = 0.68364 +cache_read = 0.068364 + +[limit] +context = 262_144 diff --git a/providers/maxlayer/models/tencent/hy3.toml b/providers/maxlayer/models/tencent/hy3.toml new file mode 100644 index 00000000000..e68e7ee2ddd --- /dev/null +++ b/providers/maxlayer/models/tencent/hy3.toml @@ -0,0 +1,14 @@ +base_model = "tencent/hy3" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "high"] + +[cost] +input = 0.150401 +output = 0.601604 +cache_read = 0.037601 + +[limit] +context = 262_144 +output = 128_000 diff --git a/providers/maxlayer/models/thinkingmachines/inkling-small.toml b/providers/maxlayer/models/thinkingmachines/inkling-small.toml new file mode 100644 index 00000000000..fac42529684 --- /dev/null +++ b/providers/maxlayer/models/thinkingmachines/inkling-small.toml @@ -0,0 +1,14 @@ +base_model = "thinkingmachines/inkling-small" + +[[reasoning_options]] +type = "effort" +values = ["none", "minimal", "low", "medium", "high", "max"] + +[cost] +input = 0.51273 +output = 1.36728 +cache_read = 0.11394 + +[limit] +context = 524_288 +output = 262_144 diff --git a/providers/maxlayer/models/thinkingmachines/inkling.toml b/providers/maxlayer/models/thinkingmachines/inkling.toml new file mode 100644 index 00000000000..39c03ad1a9e --- /dev/null +++ b/providers/maxlayer/models/thinkingmachines/inkling.toml @@ -0,0 +1,13 @@ +base_model = "thinkingmachines/inkling" + +[[reasoning_options]] +type = "effort" +values = ["none", "minimal", "low", "medium", "high", "max"] + +[cost] +input = 1.08243 +output = 4.61457 +cache_read = 0.182304 + +[limit] +output = 262_144 diff --git a/providers/maxlayer/models/x-ai/grok-4.3.toml b/providers/maxlayer/models/x-ai/grok-4.3.toml new file mode 100644 index 00000000000..ef9e909977b --- /dev/null +++ b/providers/maxlayer/models/x-ai/grok-4.3.toml @@ -0,0 +1,10 @@ +base_model = "xai/grok-4.3" + +[[reasoning_options]] +type = "effort" +values = ["none", "low", "medium", "high"] + +[cost] +input = 1.42425 +output = 2.8485 +cache_read = 0.22788 diff --git a/providers/maxlayer/models/x-ai/grok-4.5.toml b/providers/maxlayer/models/x-ai/grok-4.5.toml new file mode 100644 index 00000000000..a8f0f7183af --- /dev/null +++ b/providers/maxlayer/models/x-ai/grok-4.5.toml @@ -0,0 +1,10 @@ +base_model = "xai/grok-4.5" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[cost] +input = 2.2788 +output = 6.8364 +cache_read = 0.34182 diff --git a/providers/maxlayer/models/x-ai/grok-4.6.toml b/providers/maxlayer/models/x-ai/grok-4.6.toml new file mode 100644 index 00000000000..45f6e085050 --- /dev/null +++ b/providers/maxlayer/models/x-ai/grok-4.6.toml @@ -0,0 +1,10 @@ +base_model = "xai/grok-4.6" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh"] + +[cost] +input = 2.2788 +output = 6.8364 +cache_read = 0.5697 diff --git a/providers/maxlayer/models/x-ai/grok-build-0.1.toml b/providers/maxlayer/models/x-ai/grok-build-0.1.toml new file mode 100644 index 00000000000..96f05c1706a --- /dev/null +++ b/providers/maxlayer/models/x-ai/grok-build-0.1.toml @@ -0,0 +1,7 @@ +base_model = "xai/grok-build-0.1" +reasoning_options = [] + +[cost] +input = 1.1394 +output = 2.2788 +cache_read = 0.22788 diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml new file mode 100644 index 00000000000..e3ae2a9fa50 --- /dev/null +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml @@ -0,0 +1,15 @@ +base_model = "xiaomi/mimo-v2.5-pro" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.495639 +output = 0.991278 +cache_read = 0.004102 + +[limit] +context = 1_050_000 diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml new file mode 100644 index 00000000000..57aefef2026 --- /dev/null +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml @@ -0,0 +1,15 @@ +base_model = "xiaomi/mimo-v2.5" + +[interleaved] +field = "reasoning_details" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.159516 +output = 0.319032 +cache_read = 0.003191 + +[limit] +context = 1_050_000 diff --git a/providers/maxlayer/models/z-ai/glm-4.5-air.toml b/providers/maxlayer/models/z-ai/glm-4.5-air.toml new file mode 100644 index 00000000000..d6dee5cd502 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.5-air.toml @@ -0,0 +1,9 @@ +base_model = "zhipuai/glm-4.5-air" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.148122 +output = 0.96849 +cache_read = 0.028485 diff --git a/providers/maxlayer/models/z-ai/glm-4.5.toml b/providers/maxlayer/models/z-ai/glm-4.5.toml new file mode 100644 index 00000000000..35277ddbe8e --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.5.toml @@ -0,0 +1,9 @@ +base_model = "zhipuai/glm-4.5" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.68364 +output = 2.50668 +cache_read = 0.125334 diff --git a/providers/maxlayer/models/z-ai/glm-4.5v.toml b/providers/maxlayer/models/z-ai/glm-4.5v.toml new file mode 100644 index 00000000000..e818a51b7d7 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.5v.toml @@ -0,0 +1,12 @@ +base_model = "zhipuai/glm-4.5v" + +[[reasoning_options]] +type = "toggle" + +[cost] +input = 0.68364 +output = 2.05092 +cache_read = 0.125334 + +[limit] +context = 65_536 diff --git a/providers/maxlayer/models/z-ai/glm-4.6.toml b/providers/maxlayer/models/z-ai/glm-4.6.toml new file mode 100644 index 00000000000..31a47b26fb8 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.6.toml @@ -0,0 +1,7 @@ +base_model = "zhipuai/glm-4.6" +reasoning_options = [] + +[cost] +input = 0.5697 +output = 2.2788 +cache_read = 0.11394 diff --git a/providers/maxlayer/models/z-ai/glm-4.6v.toml b/providers/maxlayer/models/z-ai/glm-4.6v.toml new file mode 100644 index 00000000000..70273bcd7aa --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.6v.toml @@ -0,0 +1,10 @@ +base_model = "zhipuai/glm-4.6v" +reasoning_options = [] + +[cost] +input = 0.34182 +output = 1.02546 +cache_read = 0.062667 + +[limit] +context = 131_072 diff --git a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml new file mode 100644 index 00000000000..b4d14fc13e6 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml @@ -0,0 +1,14 @@ +base_model = "zhipuai/glm-4.7-flash" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.068364 +output = 0.45576 +cache_read = 0.011394 + +[limit] +context = 202_752 +output = 16_384 diff --git a/providers/maxlayer/models/z-ai/glm-4.7.toml b/providers/maxlayer/models/z-ai/glm-4.7.toml new file mode 100644 index 00000000000..e5369a938a0 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-4.7.toml @@ -0,0 +1,10 @@ +base_model = "zhipuai/glm-4.7" +reasoning_options = [] + +[interleaved] +field = "reasoning_details" + +[cost] +input = 0.45576 +output = 1.99395 +cache_read = 0.091152 diff --git a/providers/maxlayer/models/z-ai/glm-5-turbo.toml b/providers/maxlayer/models/z-ai/glm-5-turbo.toml new file mode 100644 index 00000000000..de13f22d837 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5-turbo.toml @@ -0,0 +1,13 @@ +base_model = "zhipuai/glm-5-turbo" +reasoning_options = [] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 1.36728 +output = 4.5576 +cache_read = 0.273456 + +[limit] +context = 202_752 diff --git a/providers/maxlayer/models/z-ai/glm-5.1.toml b/providers/maxlayer/models/z-ai/glm-5.1.toml new file mode 100644 index 00000000000..385145a2386 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5.1.toml @@ -0,0 +1,14 @@ +base_model = "zhipuai/glm-5.1" +reasoning_options = [] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 1.100661 +output = 3.459219 +cache_read = 0.204409 + +[limit] +context = 204_800 +output = 128_000 diff --git a/providers/maxlayer/models/z-ai/glm-5.2.toml b/providers/maxlayer/models/z-ai/glm-5.2.toml new file mode 100644 index 00000000000..b45742e9090 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5.2.toml @@ -0,0 +1,19 @@ +base_model = "zhipuai/glm-5.2" + +[interleaved] +field = "reasoning_content" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "xhigh"] + +[cost] +input = 1.100661 +output = 3.459219 +cache_read = 0.220133 + +[limit] +context = 1_048_576 diff --git a/providers/maxlayer/models/z-ai/glm-5.3.toml b/providers/maxlayer/models/z-ai/glm-5.3.toml new file mode 100644 index 00000000000..4a0cc65dbdf --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5.3.toml @@ -0,0 +1,13 @@ +base_model = "zhipuai/glm-5.3" + +[[reasoning_options]] +type = "effort" +values = ["low", "high", "max"] + +[cost] +input = 1.59516 +output = 5.01336 +cache_read = 0.296244 + +[limit] +context = 1_048_576 diff --git a/providers/maxlayer/models/z-ai/glm-5.toml b/providers/maxlayer/models/z-ai/glm-5.toml new file mode 100644 index 00000000000..e27b6b45a60 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5.toml @@ -0,0 +1,13 @@ +base_model = "zhipuai/glm-5" +reasoning_options = [] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.68364 +output = 2.187648 +cache_read = 0.136728 + +[limit] +output = 128_000 diff --git a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml new file mode 100644 index 00000000000..5cfd22c9655 --- /dev/null +++ b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml @@ -0,0 +1,10 @@ +base_model = "zhipuai/glm-5v-turbo" +reasoning_options = [] + +[cost] +input = 1.36728 +output = 4.5576 +cache_read = 0.273456 + +[limit] +context = 202_752 diff --git a/providers/maxlayer/provider.toml b/providers/maxlayer/provider.toml new file mode 100644 index 00000000000..96324013975 --- /dev/null +++ b/providers/maxlayer/provider.toml @@ -0,0 +1,10 @@ +name = "Maxlayer" +env = ["MAXLAYER_API_KEY"] +npm = "@ai-sdk/openai-compatible" +# Maxlayer publishes no SDK of its own; the endpoint is OpenAI-compatible and +# documented against the `openai` client with `base_url` pointed here. +# Routes: POST /v1/chat/completions, /v1/embeddings, /v1/images, /v1/videos, +# and GET /v1/models (unauthenticated). No /v1/responses or /messages. +# Keys are organization keys prefixed `mxl_`, sent as `Authorization: Bearer`. +api = "https://inference.maxlayer.cloud/v1" +doc = "https://maxlayer.cloud/docs/inference" diff --git a/sync.md b/sync.md index 8e11926ea23..6f9acd6ded2 100644 --- a/sync.md +++ b/sync.md @@ -17,6 +17,7 @@ The grouped sync targets are available for local convenience, but CI syncs each - `bun models:sync digitalocean` syncs only DigitalOcean. - `bun models:sync xai` syncs only xAI. - `bun models:sync kilo` syncs only Kilo. +- `bun models:sync maxlayer` syncs only Maxlayer. - `bun models:sync merge-gateway` syncs only Merge Gateway. - `bun models:sync openai` syncs only OpenAI catalog availability. - `bun models:sync tinfoil` syncs only Tinfoil. From 916b9c1edb4bb8bd233022aeae95844158aca835 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 09:18:17 +0700 Subject: [PATCH 02/12] feat(maxlayer): author the toggle wire path on reasoning files A `toggle` reasoning option needs a leading comment naming the exact request field, since sync re-serializes these files and keeps only a leading block. 55 of the 163 files carry a toggle and none carried the header. The fields are OpenRouter's because that is the API a Maxlayer request reaches -- the body is forwarded unchanged, so `reasoning.enabled`, `reasoning.effort`, and `reasoning.max_tokens` are what a caller sends here too. The header says so rather than leaving a reader to wonder why a Maxlayer file cites OpenRouter's docs. Emitted from `translateModel` via the runner's `header` hook, so it applies only to files that actually have a toggle and a hand-written header on an existing file still wins. Change detection compares parsed model data and ignores comments, so the files were regenerated rather than updated in place; the diff is 330 added comment lines across 55 files and nothing else. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/providers/maxlayer.ts | 23 ++++++++++++++++++- .../models/anthropic/claude-haiku-4.5.toml | 6 +++++ .../models/anthropic/claude-opus-4.1.toml | 6 +++++ .../models/anthropic/claude-opus-4.5.toml | 6 +++++ .../models/anthropic/claude-opus-4.6.toml | 6 +++++ .../anthropic/claude-opus-4.7-fast.toml | 6 +++++ .../models/anthropic/claude-opus-4.7.toml | 6 +++++ .../anthropic/claude-opus-4.8-fast.toml | 6 +++++ .../models/anthropic/claude-opus-4.8.toml | 6 +++++ .../models/anthropic/claude-opus-5-fast.toml | 6 +++++ .../models/anthropic/claude-opus-5.toml | 6 +++++ .../models/anthropic/claude-sonnet-4.5.toml | 6 +++++ .../models/anthropic/claude-sonnet-4.6.toml | 6 +++++ .../models/anthropic/claude-sonnet-5.toml | 6 +++++ .../models/bytedance-seed/seed-2.0-code.toml | 6 +++++ .../models/bytedance-seed/seed-2.0-lite.toml | 6 +++++ .../models/bytedance-seed/seed-2.0-mini.toml | 6 +++++ .../models/deepseek/deepseek-v3.2.toml | 6 +++++ .../deepseek/deepseek-v4-flash-0731.toml | 6 +++++ .../models/deepseek/deepseek-v4-flash.toml | 6 +++++ .../models/deepseek/deepseek-v4-pro-0813.toml | 6 +++++ .../models/deepseek/deepseek-v4-pro.toml | 6 +++++ .../models/google/gemini-2.5-flash-lite.toml | 6 +++++ .../models/google/gemini-2.5-flash.toml | 6 +++++ .../models/google/gemini-3-flash-preview.toml | 6 +++++ .../google/gemini-3.1-flash-lite-preview.toml | 6 +++++ .../models/google/gemini-3.1-flash-lite.toml | 6 +++++ .../models/google/gemma-4-26b-a4b-it.toml | 6 +++++ .../models/google/gemma-4-31b-it.toml | 6 +++++ .../maxlayer/models/moonshotai/kimi-k3.toml | 6 +++++ .../nvidia/nemotron-3-super-120b-a12b.toml | 6 +++++ .../nvidia/nemotron-3-ultra-550b-a55b.toml | 6 +++++ .../models/nvidia/nemotron-3.5-lightning.toml | 6 +++++ .../models/openai/gpt-5.1-codex-mini.toml | 6 +++++ .../maxlayer/models/qwen/qwen3-235b-a22b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3-30b-a3b.toml | 6 +++++ providers/maxlayer/models/qwen/qwen3-32b.toml | 6 +++++ .../models/qwen/qwen3.5-122b-a10b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.5-27b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.5-35b-a3b.toml | 6 +++++ .../models/qwen/qwen3.5-397b-a17b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.5-9b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.6-27b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.6-35b-a3b.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.6-flash.toml | 6 +++++ .../models/qwen/qwen3.6-max-preview.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.6-plus.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.7-max.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.7-plus.toml | 6 +++++ .../maxlayer/models/qwen/qwen3.8-27b.toml | 6 +++++ .../maxlayer/models/xiaomi/mimo-v2.5-pro.toml | 6 +++++ .../maxlayer/models/xiaomi/mimo-v2.5.toml | 6 +++++ .../maxlayer/models/z-ai/glm-4.5-air.toml | 6 +++++ providers/maxlayer/models/z-ai/glm-4.5.toml | 6 +++++ providers/maxlayer/models/z-ai/glm-4.5v.toml | 6 +++++ providers/maxlayer/models/z-ai/glm-5.2.toml | 6 +++++ 56 files changed, 352 insertions(+), 1 deletion(-) diff --git a/packages/core/src/sync/providers/maxlayer.ts b/packages/core/src/sync/providers/maxlayer.ts index befc50f364b..d56a98a529d 100644 --- a/packages/core/src/sync/providers/maxlayer.ts +++ b/packages/core/src/sync/providers/maxlayer.ts @@ -104,9 +104,11 @@ export const maxlayer = { const canonical = existing?.base_model ?? resolveCanonicalBaseModel(model.id); if (canonical === undefined) return undefined; + const translated = buildMaxlayerModel(model, canonical, existing); return { id: model.id, - model: buildMaxlayerModel(model, canonical, existing), + model: translated, + header: toggleHeader(translated), }; }, } satisfies SyncProvider; @@ -115,6 +117,25 @@ function isCatalogTarget(model: MaxlayerModel) { return model.billing_mode === "token" && model.category === "text"; } +// Every toggle needs the wire path on the file, and sync keeps only a leading +// block. The controls are OpenRouter's because that is the API a Maxlayer +// request reaches: the body is forwarded unchanged, so the field names a caller +// sends here are the ones OpenRouter documents. A hand-written header on an +// existing file always wins over this. +const TOGGLE_HEADER = `# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens +`; + +function toggleHeader(model: SyncedModel) { + return model.reasoning_options?.some((option) => option.type === "toggle") + ? TOGGLE_HEADER + : undefined; +} + /** * Rates arrive as decimal strings already denominated per million tokens, which * is the unit `[cost]` wants — unlike the per-token strings most gateway APIs diff --git a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml index abe32d44500..58b222256f3 100644 --- a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-haiku-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml index cdf9ed4f0e9..082491d4e20 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-1" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml index 2339ef3ed29..9fb17a63fc7 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml index 87037665443..6db19cb08d3 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-6" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml index 1e1758a7f6e..c4acfbfd237 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-7" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml index ea8f82acb1d..dc220e4a0db 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-7" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml index 22408f0b16c..478bdf51c08 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-8" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml index 46f698cd7a0..bd5d1a1d8de 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-8" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml index 73e0ca31b1d..f086c86d8db 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-5.toml b/providers/maxlayer/models/anthropic/claude-opus-5.toml index 80376d4697f..df42f9e9915 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml index c211853ce31..578c9985dbd 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml index 48a6e59698f..9578fe03bbb 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-4-6" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml index 03875f8eb9a..f72581aceb7 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml index abeed477c6d..f8f808cd18e 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-code" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml index d6b01ba8c1f..ff4b4720de5 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml index 630edc5f6c1..7f72f1f434c 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-mini" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v3.2.toml b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml index 21d3888ae29..1b16f02f3f5 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v3.2.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v3.2" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml index 38fae33e448..5536b504281 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-flash-0731" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml index aee3e3c4979..b066aaeed0d 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-flash" [interleaved] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml index 666554c86dd..f69f384297d 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-pro-0813" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml index a63bc737ba7..275efac2718 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-pro" [interleaved] diff --git a/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml index fc6737cbcce..32715ec7e4e 100644 --- a/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml +++ b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-2.5-flash-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-2.5-flash.toml b/providers/maxlayer/models/google/gemini-2.5-flash.toml index febc426bdfe..63a14a9b873 100644 --- a/providers/maxlayer/models/google/gemini-2.5-flash.toml +++ b/providers/maxlayer/models/google/gemini-2.5-flash.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-2.5-flash" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-3-flash-preview.toml b/providers/maxlayer/models/google/gemini-3-flash-preview.toml index e3e1f1bb186..68780d42f99 100644 --- a/providers/maxlayer/models/google/gemini-3-flash-preview.toml +++ b/providers/maxlayer/models/google/gemini-3-flash-preview.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3-flash-preview" [interleaved] diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml index 3b8f3ad0a2e..9a210986a81 100644 --- a/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3.1-flash-lite-preview" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml index 510a55acc03..e7a83d2867e 100644 --- a/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3.1-flash-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml index 35f3a0e5f1c..de51d917c58 100644 --- a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemma-4-26b-a4b-it" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemma-4-31b-it.toml b/providers/maxlayer/models/google/gemma-4-31b-it.toml index e4e9f3af184..a861006613c 100644 --- a/providers/maxlayer/models/google/gemma-4-31b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-31b-it.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemma-4-31b-it" [[reasoning_options]] diff --git a/providers/maxlayer/models/moonshotai/kimi-k3.toml b/providers/maxlayer/models/moonshotai/kimi-k3.toml index 075b212219e..fe1a520cacf 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k3.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k3.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "moonshotai/kimi-k3" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml index 2b451f4dea1..c6f648cd8de 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3-super-120b-a12b" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml index 4f54c8ce8b1..6ed5ce65e7f 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3-ultra-550b-a55b" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml index 102ecc13bfb..49c28810d31 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3.5-lightning" [[reasoning_options]] diff --git a/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml index a1e1ab5d2d3..f57d6acc295 100644 --- a/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml +++ b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "openai/gpt-5.1-codex-mini" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml index 04e1ef55d44..3c85ded672b 100644 --- a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml +++ b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-235b-a22b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml index e3f71d54879..0d3885915f8 100644 --- a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-30b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-32b.toml b/providers/maxlayer/models/qwen/qwen3-32b.toml index a3ac5aece17..50b4348f5b2 100644 --- a/providers/maxlayer/models/qwen/qwen3-32b.toml +++ b/providers/maxlayer/models/qwen/qwen3-32b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-32b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml index f6e712dc89b..3c353d14620 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-122b-a10b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-27b.toml b/providers/maxlayer/models/qwen/qwen3.5-27b.toml index 477f78f1f7f..9b78d3f5c5f 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-27b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml index a5230405c2c..152ecdd739d 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-35b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml index 0f702053a2e..e7018b163c2 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-397b-a17b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-9b.toml b/providers/maxlayer/models/qwen/qwen3.5-9b.toml index 16c8aa19417..955e759a21b 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-9b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-9b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-9b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-27b.toml b/providers/maxlayer/models/qwen/qwen3.6-27b.toml index b4fd3e17095..9e206aac905 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-27b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml index 113efcb1c82..7edf56e6f4a 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-35b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-flash.toml b/providers/maxlayer/models/qwen/qwen3.6-flash.toml index 3ee5965d498..5e784a9acc8 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-flash.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-flash.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-flash" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml index 9274b18339f..c53f37f4d14 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-max-preview" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-plus.toml b/providers/maxlayer/models/qwen/qwen3.6-plus.toml index e5079aac435..a8f80a24057 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-plus.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-plus" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.7-max.toml b/providers/maxlayer/models/qwen/qwen3.7-max.toml index b225f522e76..bbddd4b1cd6 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-max.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-max.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.7-max" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.7-plus.toml b/providers/maxlayer/models/qwen/qwen3.7-plus.toml index dccc787f234..f7860c6ade7 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-plus.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.7-plus" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.8-27b.toml b/providers/maxlayer/models/qwen/qwen3.8-27b.toml index b5c21fc450a..84b7976e0ae 100644 --- a/providers/maxlayer/models/qwen/qwen3.8-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.8-27b.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.8-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml index e3ae2a9fa50..bba30d38a40 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "xiaomi/mimo-v2.5-pro" [interleaved] diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml index 57aefef2026..9ff645a647b 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "xiaomi/mimo-v2.5" [interleaved] diff --git a/providers/maxlayer/models/z-ai/glm-4.5-air.toml b/providers/maxlayer/models/z-ai/glm-4.5-air.toml index d6dee5cd502..cc09cbc3b03 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5-air.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5-air.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5-air" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-4.5.toml b/providers/maxlayer/models/z-ai/glm-4.5.toml index 35277ddbe8e..edf3f48a848 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-4.5v.toml b/providers/maxlayer/models/z-ai/glm-4.5v.toml index e818a51b7d7..8a63746b541 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5v.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5v" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-5.2.toml b/providers/maxlayer/models/z-ai/glm-5.2.toml index b45742e9090..ddf7e70289b 100644 --- a/providers/maxlayer/models/z-ai/glm-5.2.toml +++ b/providers/maxlayer/models/z-ai/glm-5.2.toml @@ -1,3 +1,9 @@ +# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the +# request body unchanged. +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) +# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-5.2" [interleaved] From 56a68edec0f7f31694458401336baddd3d4d13f3 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 09:19:06 +0700 Subject: [PATCH 03/12] chore(maxlayer): drop the prose from provider.toml The five keys say it; the routes, the key prefix, and the missing SDK were notes for review rather than facts a catalog consumer reads. Co-Authored-By: Claude Opus 5 (1M context) --- providers/maxlayer/provider.toml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/providers/maxlayer/provider.toml b/providers/maxlayer/provider.toml index 96324013975..b95b0765fbb 100644 --- a/providers/maxlayer/provider.toml +++ b/providers/maxlayer/provider.toml @@ -1,10 +1,5 @@ name = "Maxlayer" env = ["MAXLAYER_API_KEY"] npm = "@ai-sdk/openai-compatible" -# Maxlayer publishes no SDK of its own; the endpoint is OpenAI-compatible and -# documented against the `openai` client with `base_url` pointed here. -# Routes: POST /v1/chat/completions, /v1/embeddings, /v1/images, /v1/videos, -# and GET /v1/models (unauthenticated). No /v1/responses or /messages. -# Keys are organization keys prefixed `mxl_`, sent as `Authorization: Bearer`. api = "https://inference.maxlayer.cloud/v1" doc = "https://maxlayer.cloud/docs/inference" From 2f795948dc761f26207b89c24dc5234608dd8848 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 09:23:26 +0700 Subject: [PATCH 04/12] chore(maxlayer): keep the upstream out of the catalog files The toggle header carried two lines of prose about where a Maxlayer request goes after it leaves, and a link to the upstream's docs. Neither is something a catalog consumer needs: what a caller sends is the wire path, and that is all the header has to name. Leaves the three field lines the toggle policy asks for, on the same 55 files. No model data changes. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/providers/maxlayer.ts | 12 ++++-------- .../maxlayer/models/anthropic/claude-haiku-4.5.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-4.1.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-4.5.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-4.6.toml | 3 --- .../models/anthropic/claude-opus-4.7-fast.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-4.7.toml | 3 --- .../models/anthropic/claude-opus-4.8-fast.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-4.8.toml | 3 --- .../models/anthropic/claude-opus-5-fast.toml | 3 --- .../maxlayer/models/anthropic/claude-opus-5.toml | 3 --- .../maxlayer/models/anthropic/claude-sonnet-4.5.toml | 3 --- .../maxlayer/models/anthropic/claude-sonnet-4.6.toml | 3 --- .../maxlayer/models/anthropic/claude-sonnet-5.toml | 3 --- .../models/bytedance-seed/seed-2.0-code.toml | 3 --- .../models/bytedance-seed/seed-2.0-lite.toml | 3 --- .../models/bytedance-seed/seed-2.0-mini.toml | 3 --- .../maxlayer/models/deepseek/deepseek-v3.2.toml | 3 --- .../models/deepseek/deepseek-v4-flash-0731.toml | 3 --- .../maxlayer/models/deepseek/deepseek-v4-flash.toml | 3 --- .../models/deepseek/deepseek-v4-pro-0813.toml | 3 --- .../maxlayer/models/deepseek/deepseek-v4-pro.toml | 3 --- .../models/google/gemini-2.5-flash-lite.toml | 3 --- .../maxlayer/models/google/gemini-2.5-flash.toml | 3 --- .../models/google/gemini-3-flash-preview.toml | 3 --- .../models/google/gemini-3.1-flash-lite-preview.toml | 3 --- .../models/google/gemini-3.1-flash-lite.toml | 3 --- .../maxlayer/models/google/gemma-4-26b-a4b-it.toml | 3 --- providers/maxlayer/models/google/gemma-4-31b-it.toml | 3 --- providers/maxlayer/models/moonshotai/kimi-k3.toml | 3 --- .../models/nvidia/nemotron-3-super-120b-a12b.toml | 3 --- .../models/nvidia/nemotron-3-ultra-550b-a55b.toml | 3 --- .../models/nvidia/nemotron-3.5-lightning.toml | 3 --- .../maxlayer/models/openai/gpt-5.1-codex-mini.toml | 3 --- providers/maxlayer/models/qwen/qwen3-235b-a22b.toml | 3 --- providers/maxlayer/models/qwen/qwen3-30b-a3b.toml | 3 --- providers/maxlayer/models/qwen/qwen3-32b.toml | 3 --- .../maxlayer/models/qwen/qwen3.5-122b-a10b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.5-27b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml | 3 --- .../maxlayer/models/qwen/qwen3.5-397b-a17b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.5-9b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.6-27b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml | 3 --- providers/maxlayer/models/qwen/qwen3.6-flash.toml | 3 --- .../maxlayer/models/qwen/qwen3.6-max-preview.toml | 3 --- providers/maxlayer/models/qwen/qwen3.6-plus.toml | 3 --- providers/maxlayer/models/qwen/qwen3.7-max.toml | 3 --- providers/maxlayer/models/qwen/qwen3.7-plus.toml | 3 --- providers/maxlayer/models/qwen/qwen3.8-27b.toml | 3 --- providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml | 3 --- providers/maxlayer/models/xiaomi/mimo-v2.5.toml | 3 --- providers/maxlayer/models/z-ai/glm-4.5-air.toml | 3 --- providers/maxlayer/models/z-ai/glm-4.5.toml | 3 --- providers/maxlayer/models/z-ai/glm-4.5v.toml | 3 --- providers/maxlayer/models/z-ai/glm-5.2.toml | 3 --- 56 files changed, 4 insertions(+), 173 deletions(-) diff --git a/packages/core/src/sync/providers/maxlayer.ts b/packages/core/src/sync/providers/maxlayer.ts index d56a98a529d..7a541b7f324 100644 --- a/packages/core/src/sync/providers/maxlayer.ts +++ b/packages/core/src/sync/providers/maxlayer.ts @@ -118,16 +118,12 @@ function isCatalogTarget(model: MaxlayerModel) { } // Every toggle needs the wire path on the file, and sync keeps only a leading -// block. The controls are OpenRouter's because that is the API a Maxlayer -// request reaches: the body is forwarded unchanged, so the field names a caller -// sends here are the ones OpenRouter documents. A hand-written header on an -// existing file always wins over this. -const TOGGLE_HEADER = `# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. -# Toggle: reasoning.enabled = true|false +// block. Just the fields: what a caller sends is the catalog's business, where +// the request goes after that is not. A hand-written header on an existing file +// always wins over this. +const TOGGLE_HEADER = `# Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens `; function toggleHeader(model: SyncedModel) { diff --git a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml index 58b222256f3..ca84a5426c9 100644 --- a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-haiku-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml index 082491d4e20..cabe1483641 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-1" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml index 9fb17a63fc7..6d12e93f56a 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml index 6db19cb08d3..d2fc870f1d6 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-6" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml index c4acfbfd237..2a84553b2ac 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-7" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml index dc220e4a0db..7fec9d401c2 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-7" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml index 478bdf51c08..24258177cdd 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-8" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml index bd5d1a1d8de..1a264d5ba77 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-4-8" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml index f086c86d8db..4531991bb50 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-opus-5.toml b/providers/maxlayer/models/anthropic/claude-opus-5.toml index df42f9e9915..0a78e3de4ba 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-opus-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml index 578c9985dbd..ee0e5e464a0 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-4-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml index 9578fe03bbb..1db637cb31e 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-4-6" [[reasoning_options]] diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml index f72581aceb7..f4b213ae9bd 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "anthropic/claude-sonnet-5" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml index f8f808cd18e..d611e50cfa9 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-code.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-code" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml index ff4b4720de5..08232296a16 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml index 7f72f1f434c..38f25bba372 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "bytedance-seed/seed-2.0-mini" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v3.2.toml b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml index 1b16f02f3f5..e7cd526bbf5 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v3.2.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v3.2.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v3.2" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml index 5536b504281..e7d96c398fe 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash-0731.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-flash-0731" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml index b066aaeed0d..65188118168 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-flash" [interleaved] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml index f69f384297d..16c618d0684 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro-0813.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-pro-0813" [[reasoning_options]] diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml index 275efac2718..55e6bc55fc0 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "deepseek/deepseek-v4-pro" [interleaved] diff --git a/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml index 32715ec7e4e..72f8de33c4a 100644 --- a/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml +++ b/providers/maxlayer/models/google/gemini-2.5-flash-lite.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-2.5-flash-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-2.5-flash.toml b/providers/maxlayer/models/google/gemini-2.5-flash.toml index 63a14a9b873..d385ceeb5c3 100644 --- a/providers/maxlayer/models/google/gemini-2.5-flash.toml +++ b/providers/maxlayer/models/google/gemini-2.5-flash.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-2.5-flash" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-3-flash-preview.toml b/providers/maxlayer/models/google/gemini-3-flash-preview.toml index 68780d42f99..dd9e12996ea 100644 --- a/providers/maxlayer/models/google/gemini-3-flash-preview.toml +++ b/providers/maxlayer/models/google/gemini-3-flash-preview.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3-flash-preview" [interleaved] diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml index 9a210986a81..a7a5805d5f8 100644 --- a/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite-preview.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3.1-flash-lite-preview" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml index e7a83d2867e..5eb588cca2e 100644 --- a/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml +++ b/providers/maxlayer/models/google/gemini-3.1-flash-lite.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemini-3.1-flash-lite" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml index de51d917c58..fcbfb776278 100644 --- a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemma-4-26b-a4b-it" [[reasoning_options]] diff --git a/providers/maxlayer/models/google/gemma-4-31b-it.toml b/providers/maxlayer/models/google/gemma-4-31b-it.toml index a861006613c..97b700d9991 100644 --- a/providers/maxlayer/models/google/gemma-4-31b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-31b-it.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "google/gemma-4-31b-it" [[reasoning_options]] diff --git a/providers/maxlayer/models/moonshotai/kimi-k3.toml b/providers/maxlayer/models/moonshotai/kimi-k3.toml index fe1a520cacf..fadca0e1a03 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k3.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k3.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "moonshotai/kimi-k3" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml index c6f648cd8de..19b1e26bb46 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3-super-120b-a12b" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml index 6ed5ce65e7f..06f7f85f042 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3-ultra-550b-a55b" [[reasoning_options]] diff --git a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml index 49c28810d31..3cf188c7818 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "nvidia/nemotron-3.5-lightning" [[reasoning_options]] diff --git a/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml index f57d6acc295..f516e6d9495 100644 --- a/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml +++ b/providers/maxlayer/models/openai/gpt-5.1-codex-mini.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "openai/gpt-5.1-codex-mini" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml index 3c85ded672b..ddf7f9f238b 100644 --- a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml +++ b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-235b-a22b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml index 0d3885915f8..c24e604ef7b 100644 --- a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-30b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3-32b.toml b/providers/maxlayer/models/qwen/qwen3-32b.toml index 50b4348f5b2..30d861066e4 100644 --- a/providers/maxlayer/models/qwen/qwen3-32b.toml +++ b/providers/maxlayer/models/qwen/qwen3-32b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3-32b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml index 3c353d14620..6ea6d945956 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-122b-a10b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-27b.toml b/providers/maxlayer/models/qwen/qwen3.5-27b.toml index 9b78d3f5c5f..51624c03210 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-27b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml index 152ecdd739d..f4c0021dbac 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-35b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml index e7018b163c2..111aa40cf61 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-397b-a17b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.5-9b.toml b/providers/maxlayer/models/qwen/qwen3.5-9b.toml index 955e759a21b..1ed2260d0b1 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-9b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-9b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.5-9b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-27b.toml b/providers/maxlayer/models/qwen/qwen3.6-27b.toml index 9e206aac905..ad588588734 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-27b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml index 7edf56e6f4a..c693194a727 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-35b-a3b" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-flash.toml b/providers/maxlayer/models/qwen/qwen3.6-flash.toml index 5e784a9acc8..e902f0e336e 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-flash.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-flash.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-flash" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml index c53f37f4d14..2bd5b4da9ff 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-max-preview" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.6-plus.toml b/providers/maxlayer/models/qwen/qwen3.6-plus.toml index a8f80a24057..a479d429b53 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-plus.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.6-plus" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.7-max.toml b/providers/maxlayer/models/qwen/qwen3.7-max.toml index bbddd4b1cd6..8ef48924220 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-max.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-max.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.7-max" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.7-plus.toml b/providers/maxlayer/models/qwen/qwen3.7-plus.toml index f7860c6ade7..732869a283a 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-plus.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.7-plus" [[reasoning_options]] diff --git a/providers/maxlayer/models/qwen/qwen3.8-27b.toml b/providers/maxlayer/models/qwen/qwen3.8-27b.toml index 84b7976e0ae..ac32ca6974e 100644 --- a/providers/maxlayer/models/qwen/qwen3.8-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.8-27b.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "alibaba/qwen3.8-27b" [[reasoning_options]] diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml index bba30d38a40..3f8ae0de795 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "xiaomi/mimo-v2.5-pro" [interleaved] diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml index 9ff645a647b..c5c62f8bbb5 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "xiaomi/mimo-v2.5" [interleaved] diff --git a/providers/maxlayer/models/z-ai/glm-4.5-air.toml b/providers/maxlayer/models/z-ai/glm-4.5-air.toml index cc09cbc3b03..1987da93c62 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5-air.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5-air.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5-air" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-4.5.toml b/providers/maxlayer/models/z-ai/glm-4.5.toml index edf3f48a848..7feb6fee580 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-4.5v.toml b/providers/maxlayer/models/z-ai/glm-4.5v.toml index 8a63746b541..b2b6ae12809 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5v.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-4.5v" [[reasoning_options]] diff --git a/providers/maxlayer/models/z-ai/glm-5.2.toml b/providers/maxlayer/models/z-ai/glm-5.2.toml index ddf7e70289b..d6ba7e9255d 100644 --- a/providers/maxlayer/models/z-ai/glm-5.2.toml +++ b/providers/maxlayer/models/z-ai/glm-5.2.toml @@ -1,9 +1,6 @@ -# Reasoning is controlled with OpenRouter's fields — Maxlayer forwards the -# request body unchanged. # Toggle: reasoning.enabled = true|false # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) -# https://openrouter.ai/docs/guides/best-practices/reasoning-tokens base_model = "zhipuai/glm-5.2" [interleaved] From 0c009b7f4b806ac9793eb252ba4c419b4013599a Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 11:15:45 +0700 Subject: [PATCH 05/12] fix(openrouter): a non-mandatory reasoner has a toggle `openRouterReasoningOptions` pushed the toggle from inside the branch that handles graded effort, so a model publishing `reasoning.mandatory = false` with no `supported_efforts` and no `supports_max_tokens` produced no options at all. The runner then backfilled `reasoning_options = []`, which does not mean "unknown" -- it asserts the caller has no control. These models do have one: reasoning is on by default and `reasoning.enabled` turns it off. Fixes 69 files. Each one is a model the upstream catalog reports as non-mandatory, and peers serving the same base model already publish a toggle -- `moonshotai/kimi-k2.6` had 41 of them. Confined to reasoning options on purpose. minimax-m2.5 also had upstream price drift; that is left for the daily sync rather than folded in here. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/providers/openrouter.ts | 7 +++++++ providers/openrouter/models/amazon/nova-2-lite-v1.toml | 4 +++- .../openrouter/models/anthropic/claude-haiku-4.5.toml | 5 ----- .../openrouter/models/anthropic/claude-opus-4.1.toml | 5 ----- .../openrouter/models/anthropic/claude-opus-4.5.toml | 9 --------- providers/openrouter/models/anthropic/claude-opus-4.toml | 4 +++- .../openrouter/models/anthropic/claude-sonnet-4.5.toml | 5 ----- .../openrouter/models/anthropic/claude-sonnet-4.toml | 4 +++- .../openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml | 4 +++- .../openrouter/models/bytedance-seed/seed-1.6-flash.toml | 4 +++- providers/openrouter/models/bytedance-seed/seed-1.6.toml | 4 +++- .../openrouter/models/bytedance-seed/seed-2-1-turbo.toml | 4 +++- .../openrouter/models/cohere/north-mini-code:free.toml | 4 +++- .../openrouter/models/deepcogito/cogito-v2.1-671b.toml | 4 +++- .../models/deepseek/deepseek-r1-distill-llama-70b.toml | 4 +++- .../models/dots-studio/dots-3-note-preview:free.toml | 4 +++- .../openrouter/models/google/gemini-2.5-flash-lite.toml | 5 ----- providers/openrouter/models/google/gemini-2.5-flash.toml | 5 ----- .../openrouter/models/inclusionai/ling-3.0-flash.toml | 4 +++- providers/openrouter/models/meituan/longcat-2.0.toml | 3 +++ providers/openrouter/models/minimax/minimax-m1.toml | 4 +++- providers/openrouter/models/minimax/minimax-m3.toml | 4 +++- providers/openrouter/models/moonshotai/kimi-k2.5.toml | 4 +++- providers/openrouter/models/moonshotai/kimi-k2.6.toml | 4 +++- providers/openrouter/models/nex-agi/nex-n2-mini.toml | 4 +++- providers/openrouter/models/nex-agi/nex-n2-pro.toml | 4 +++- .../models/nvidia/nemotron-3-nano-30b-a3b.toml | 4 +++- .../models/nvidia/nemotron-3-nano-30b-a3b:free.toml | 4 +++- .../nemotron-3-nano-omni-30b-a3b-reasoning:free.toml | 3 +++ .../models/nvidia/nemotron-3.5-content-safety:free.toml | 4 +++- .../models/nvidia/nemotron-nano-12b-v2-vl:free.toml | 4 +++- .../models/nvidia/nemotron-nano-9b-v2:free.toml | 4 +++- providers/openrouter/models/openai/o1-pro.toml | 4 +++- providers/openrouter/models/openai/o1.toml | 3 +-- providers/openrouter/models/openai/o3-mini.toml | 3 +-- providers/openrouter/models/openai/o3-pro.toml | 3 +-- providers/openrouter/models/openai/o3.toml | 3 +-- providers/openrouter/models/openai/o4-mini.toml | 3 +-- .../openrouter/models/perceptron/perceptron-mk1.toml | 4 +++- .../models/perplexity/sonar-deep-research.toml | 4 +++- .../models/perplexity/sonar-reasoning-pro.toml | 4 +++- providers/openrouter/models/poolside/laguna-s-2.1.toml | 4 +++- .../openrouter/models/poolside/laguna-s-2.1:free.toml | 4 +++- providers/openrouter/models/poolside/laguna-xs-2.1.toml | 4 +++- .../openrouter/models/poolside/laguna-xs-2.1:free.toml | 4 +++- .../models/qwen/qwen-plus-2025-07-28:thinking.toml | 4 +--- providers/openrouter/models/qwen/qwen3-235b-a22b.toml | 5 ----- providers/openrouter/models/qwen/qwen3-max-thinking.toml | 4 +--- .../openrouter/models/qwen/qwen3.5-flash-02-23.toml | 4 +++- providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml | 5 ----- .../openrouter/models/qwen/qwen3.5-plus-20260420.toml | 5 ----- providers/openrouter/models/qwen/qwen3.6-flash.toml | 5 ----- .../openrouter/models/qwen/qwen3.6-max-preview.toml | 5 ----- providers/openrouter/models/qwen/qwen3.6-plus.toml | 5 ----- providers/openrouter/models/qwen/qwen3.7-flash.toml | 3 +++ providers/openrouter/models/qwen/qwen3.7-max.toml | 5 ----- providers/openrouter/models/qwen/qwen3.7-plus.toml | 5 ----- .../openrouter/models/tencent/hunyuan-a13b-instruct.toml | 4 +++- providers/openrouter/models/upstage/solar-pro-3.toml | 4 +++- providers/openrouter/models/upstage/solar-pro4.toml | 4 +++- providers/openrouter/models/x-ai/grok-4.20.toml | 4 +++- providers/openrouter/models/z-ai/glm-4.6.toml | 4 +++- providers/openrouter/models/z-ai/glm-4.6v.toml | 4 +++- providers/openrouter/models/z-ai/glm-4.7-flash.toml | 4 +++- providers/openrouter/models/z-ai/glm-4.7.toml | 4 +++- providers/openrouter/models/z-ai/glm-5-turbo.toml | 4 +++- providers/openrouter/models/z-ai/glm-5.1.toml | 4 +++- providers/openrouter/models/z-ai/glm-5.toml | 4 +++- providers/openrouter/models/z-ai/glm-5v-turbo.toml | 4 +++- .../models/~anthropic/claude-haiku-latest.toml | 4 +++- 70 files changed, 158 insertions(+), 135 deletions(-) diff --git a/packages/core/src/sync/providers/openrouter.ts b/packages/core/src/sync/providers/openrouter.ts index c9ea734d4d1..777a399de1d 100644 --- a/packages/core/src/sync/providers/openrouter.ts +++ b/packages/core/src/sync/providers/openrouter.ts @@ -328,6 +328,13 @@ function openRouterReasoningOptions(reasoning: OpenRouterModel["reasoning"]): Sy type: "effort", values: reasoning.mandatory ? efforts.filter((value) => value !== "none") : [...efforts], }); + } else if (!reasoning.mandatory) { + // Graded effort is not the only control. A model that publishes no efforts + // and no budget still answers to `reasoning.enabled` whenever reasoning is + // not mandatory, so it has an on/off switch and the file should say so. + // Reading only the effort branch left these as `reasoning_options = []`, + // which asserts the opposite: that a caller has no control at all. + options.push({ type: "toggle" }); } if (reasoning.supports_max_tokens === true) { diff --git a/providers/openrouter/models/amazon/nova-2-lite-v1.toml b/providers/openrouter/models/amazon/nova-2-lite-v1.toml index 1b51e0c4f1a..ca3fec3ec90 100644 --- a/providers/openrouter/models/amazon/nova-2-lite-v1.toml +++ b/providers/openrouter/models/amazon/nova-2-lite-v1.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Nova 2 Lite" description = "Multimodal reasoning model for visual analysis, planning, and tool use" family = "nova" @@ -11,6 +10,9 @@ tool_call = true structured_output = false open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 0.3 output = 2.5 diff --git a/providers/openrouter/models/anthropic/claude-haiku-4.5.toml b/providers/openrouter/models/anthropic/claude-haiku-4.5.toml index af225d0ca15..bcd75fb8711 100644 --- a/providers/openrouter/models/anthropic/claude-haiku-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-haiku-4.5.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1_024 -max = 63_999 - [cost] input = 1 output = 5 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.1.toml b/providers/openrouter/models/anthropic/claude-opus-4.1.toml index e8fcf991080..b1f71951ea9 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.1.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.1.toml @@ -4,11 +4,6 @@ structured_output = false [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1_024 -max = 31_999 - [cost] input = 15 output = 75 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.5.toml b/providers/openrouter/models/anthropic/claude-opus-4.5.toml index 5199bb685e2..6fb818caa91 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.5.toml @@ -4,15 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] - -[[reasoning_options]] -type = "budget_tokens" -min = 1_024 -max = 63_999 - [cost] input = 5 output = 25 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.toml b/providers/openrouter/models/anthropic/claude-opus-4.toml index 53e62ce8f24..d9c5ad990b3 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.toml @@ -1,4 +1,3 @@ -reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 31999 }] name = "Claude Opus 4" description = "Flagship Claude model for deep reasoning, coding, and long-horizon agents" family = "claude-opus" @@ -12,6 +11,9 @@ structured_output = false knowledge = "2025-01-31" open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 15 output = 75 diff --git a/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml index b8f2ac6f412..dca8bd1f7db 100644 --- a/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1_024 -max = 63_999 - [cost] input = 3 output = 15 diff --git a/providers/openrouter/models/anthropic/claude-sonnet-4.toml b/providers/openrouter/models/anthropic/claude-sonnet-4.toml index 7dcce2aabf0..451457f0595 100644 --- a/providers/openrouter/models/anthropic/claude-sonnet-4.toml +++ b/providers/openrouter/models/anthropic/claude-sonnet-4.toml @@ -1,4 +1,3 @@ -reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 63999 }] name = "Claude Sonnet 4" description = "Balanced Claude model for coding, analysis, agent workflows, and cost control" family = "claude-sonnet" @@ -12,6 +11,9 @@ structured_output = false knowledge = "2025-01-31" open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 3 output = 15 diff --git a/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml b/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml index 9613f948a58..49bf3c478c8 100644 --- a/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml +++ b/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml @@ -10,7 +10,9 @@ tool_call = false structured_output = false knowledge = "2025-03-31" open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.42 diff --git a/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml b/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml index 8b41db7edd3..b20139958a9 100644 --- a/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml +++ b/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.075 diff --git a/providers/openrouter/models/bytedance-seed/seed-1.6.toml b/providers/openrouter/models/bytedance-seed/seed-1.6.toml index a1f8f345f22..28225c61629 100644 --- a/providers/openrouter/models/bytedance-seed/seed-1.6.toml +++ b/providers/openrouter/models/bytedance-seed/seed-1.6.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.25 diff --git a/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml b/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml index 041e0f4e296..2e07cf7c9bb 100644 --- a/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml +++ b/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.5 diff --git a/providers/openrouter/models/cohere/north-mini-code:free.toml b/providers/openrouter/models/cohere/north-mini-code:free.toml index 8616b407eae..a4a42f5b7ea 100644 --- a/providers/openrouter/models/cohere/north-mini-code:free.toml +++ b/providers/openrouter/models/cohere/north-mini-code:free.toml @@ -1,6 +1,5 @@ name = "North Mini Code (free)" description = "Cohere coding model for practical software engineering and agentic edits" -reasoning_options = [] family = "north" release_date = "2026-06-17" last_updated = "2026-06-17" @@ -11,6 +10,9 @@ tool_call = true structured_output = false open_weights = true +[[reasoning_options]] +type = "toggle" + [cost] input = 0 output = 0 diff --git a/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml b/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml index 9775aced303..c8eefcc77a3 100644 --- a/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml +++ b/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Cogito v2.1 671B" description = "Reasoning model for deliberate analysis, multi-step problem solving, and tool use" family = "cogito" @@ -11,6 +10,9 @@ tool_call = false structured_output = true open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 1.25 output = 1.25 diff --git a/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml b/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml index 7bbc05ccfc0..0cb66937e03 100644 --- a/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml +++ b/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml @@ -10,7 +10,9 @@ tool_call = false structured_output = false knowledge = "2024-07-31" open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.8 diff --git a/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml b/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml index 07d73c08309..c634239fc17 100644 --- a/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml +++ b/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml @@ -8,7 +8,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/google/gemini-2.5-flash-lite.toml b/providers/openrouter/models/google/gemini-2.5-flash-lite.toml index dfb707f9360..48857a31ac2 100644 --- a/providers/openrouter/models/google/gemini-2.5-flash-lite.toml +++ b/providers/openrouter/models/google/gemini-2.5-flash-lite.toml @@ -3,11 +3,6 @@ base_model = "google/gemini-2.5-flash-lite" [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 512 -max = 24_576 - [cost] input = 0.1 output = 0.4 diff --git a/providers/openrouter/models/google/gemini-2.5-flash.toml b/providers/openrouter/models/google/gemini-2.5-flash.toml index b465dc01456..5f5b2dbeb68 100644 --- a/providers/openrouter/models/google/gemini-2.5-flash.toml +++ b/providers/openrouter/models/google/gemini-2.5-flash.toml @@ -3,11 +3,6 @@ base_model = "google/gemini-2.5-flash" [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 0 -max = 24_576 - [cost] input = 0.3 output = 2.5 diff --git a/providers/openrouter/models/inclusionai/ling-3.0-flash.toml b/providers/openrouter/models/inclusionai/ling-3.0-flash.toml index b9a9c35a085..0fc962ff56b 100644 --- a/providers/openrouter/models/inclusionai/ling-3.0-flash.toml +++ b/providers/openrouter/models/inclusionai/ling-3.0-flash.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = false open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.021 diff --git a/providers/openrouter/models/meituan/longcat-2.0.toml b/providers/openrouter/models/meituan/longcat-2.0.toml index 29e85d5574e..a8f3cb2e50d 100644 --- a/providers/openrouter/models/meituan/longcat-2.0.toml +++ b/providers/openrouter/models/meituan/longcat-2.0.toml @@ -10,6 +10,9 @@ tool_call = true structured_output = false open_weights = true +[[reasoning_options]] +type = "toggle" + [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/minimax/minimax-m1.toml b/providers/openrouter/models/minimax/minimax-m1.toml index 5663a97b096..9f011804cce 100644 --- a/providers/openrouter/models/minimax/minimax-m1.toml +++ b/providers/openrouter/models/minimax/minimax-m1.toml @@ -10,7 +10,9 @@ tool_call = true structured_output = false knowledge = "2024-06-30" open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.55 diff --git a/providers/openrouter/models/minimax/minimax-m3.toml b/providers/openrouter/models/minimax/minimax-m3.toml index 1c7647829da..c6bfce209ca 100644 --- a/providers/openrouter/models/minimax/minimax-m3.toml +++ b/providers/openrouter/models/minimax/minimax-m3.toml @@ -1,6 +1,8 @@ base_model = "minimax/MiniMax-M3" structured_output = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.3 diff --git a/providers/openrouter/models/moonshotai/kimi-k2.5.toml b/providers/openrouter/models/moonshotai/kimi-k2.5.toml index ea103ea9ded..ea059aced73 100644 --- a/providers/openrouter/models/moonshotai/kimi-k2.5.toml +++ b/providers/openrouter/models/moonshotai/kimi-k2.5.toml @@ -1,10 +1,12 @@ base_model = "moonshotai/kimi-k2.5" temperature = true -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.45 output = 2.25 diff --git a/providers/openrouter/models/moonshotai/kimi-k2.6.toml b/providers/openrouter/models/moonshotai/kimi-k2.6.toml index c6f4c190143..13586862ac6 100644 --- a/providers/openrouter/models/moonshotai/kimi-k2.6.toml +++ b/providers/openrouter/models/moonshotai/kimi-k2.6.toml @@ -1,9 +1,11 @@ base_model = "moonshotai/kimi-k2.6" -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.95 output = 4 diff --git a/providers/openrouter/models/nex-agi/nex-n2-mini.toml b/providers/openrouter/models/nex-agi/nex-n2-mini.toml index 4ca8d59cab5..6c846d90b53 100644 --- a/providers/openrouter/models/nex-agi/nex-n2-mini.toml +++ b/providers/openrouter/models/nex-agi/nex-n2-mini.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.025 diff --git a/providers/openrouter/models/nex-agi/nex-n2-pro.toml b/providers/openrouter/models/nex-agi/nex-n2-pro.toml index 4086912e84a..45c01cb0b1f 100644 --- a/providers/openrouter/models/nex-agi/nex-n2-pro.toml +++ b/providers/openrouter/models/nex-agi/nex-n2-pro.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = false open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.25 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml index 877bba0489d..8cfe1645199 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -1,6 +1,8 @@ base_model = "nvidia/nemotron-3-nano-30b-a3b" structured_output = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.05 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml index 9a0409b1c89..fce2ec80861 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml @@ -1,7 +1,9 @@ base_model = "nvidia/nemotron-3-nano-30b-a3b" name = "Nemotron 3 Nano 30B A3B (free)" structured_output = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml index f80a020a6f1..29bfc542fa6 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml @@ -2,6 +2,9 @@ base_model = "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" name = "Nemotron 3 Nano Omni (free)" structured_output = false +[[reasoning_options]] +type = "toggle" + [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml b/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml index 3c9543b28cb..6b9001b6d49 100644 --- a/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml @@ -1,7 +1,9 @@ base_model = "nvidia/nemotron-3.5-content-safety" name = "Nemotron 3.5 Content Safety (free)" structured_output = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml b/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml index e20345facb3..9123c408a56 100644 --- a/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml @@ -1,7 +1,9 @@ base_model = "nvidia/nemotron-nano-12b-v2-vl" name = "Nemotron Nano 12B 2 VL (free)" structured_output = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml b/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml index 257dee3e964..c615e7bf797 100644 --- a/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml @@ -1,7 +1,9 @@ base_model = "nvidia/nemotron-nano-9b-v2" name = "Nemotron Nano 9B V2 (free)" structured_output = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/openai/o1-pro.toml b/providers/openrouter/models/openai/o1-pro.toml index d9ca9966515..c9412e47627 100644 --- a/providers/openrouter/models/openai/o1-pro.toml +++ b/providers/openrouter/models/openai/o1-pro.toml @@ -1,6 +1,8 @@ base_model = "openai/o1-pro" tool_call = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 150 diff --git a/providers/openrouter/models/openai/o1.toml b/providers/openrouter/models/openai/o1.toml index 40b6a2a4af8..13a15585f43 100644 --- a/providers/openrouter/models/openai/o1.toml +++ b/providers/openrouter/models/openai/o1.toml @@ -1,8 +1,7 @@ base_model = "openai/o1" [[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +type = "toggle" [cost] input = 15 diff --git a/providers/openrouter/models/openai/o3-mini.toml b/providers/openrouter/models/openai/o3-mini.toml index 59c55ee37a4..ae729970e17 100644 --- a/providers/openrouter/models/openai/o3-mini.toml +++ b/providers/openrouter/models/openai/o3-mini.toml @@ -2,8 +2,7 @@ base_model = "openai/o3-mini" attachment = true [[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +type = "toggle" [cost] input = 1.1 diff --git a/providers/openrouter/models/openai/o3-pro.toml b/providers/openrouter/models/openai/o3-pro.toml index b2ece450837..a4529a2310d 100644 --- a/providers/openrouter/models/openai/o3-pro.toml +++ b/providers/openrouter/models/openai/o3-pro.toml @@ -1,8 +1,7 @@ base_model = "openai/o3-pro" [[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +type = "toggle" [cost] input = 20 diff --git a/providers/openrouter/models/openai/o3.toml b/providers/openrouter/models/openai/o3.toml index 977bf918256..c81ba67f32f 100644 --- a/providers/openrouter/models/openai/o3.toml +++ b/providers/openrouter/models/openai/o3.toml @@ -1,8 +1,7 @@ base_model = "openai/o3" [[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +type = "toggle" [cost] input = 2 diff --git a/providers/openrouter/models/openai/o4-mini.toml b/providers/openrouter/models/openai/o4-mini.toml index f97e6e892b8..f7acf83ff2c 100644 --- a/providers/openrouter/models/openai/o4-mini.toml +++ b/providers/openrouter/models/openai/o4-mini.toml @@ -1,8 +1,7 @@ base_model = "openai/o4-mini" [[reasoning_options]] -type = "effort" -values = ["low", "medium", "high"] +type = "toggle" [cost] input = 1.1 diff --git a/providers/openrouter/models/perceptron/perceptron-mk1.toml b/providers/openrouter/models/perceptron/perceptron-mk1.toml index 97f315f941a..f2a02370fdd 100644 --- a/providers/openrouter/models/perceptron/perceptron-mk1.toml +++ b/providers/openrouter/models/perceptron/perceptron-mk1.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Perceptron Mk1" description = "Multimodal reasoning model for visual analysis, planning, and tool use" release_date = "2026-05-12" @@ -10,6 +9,9 @@ tool_call = false structured_output = true open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 0.15 output = 1.5 diff --git a/providers/openrouter/models/perplexity/sonar-deep-research.toml b/providers/openrouter/models/perplexity/sonar-deep-research.toml index e078ad508fa..7be4c463253 100644 --- a/providers/openrouter/models/perplexity/sonar-deep-research.toml +++ b/providers/openrouter/models/perplexity/sonar-deep-research.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Sonar Deep Research" description = "Sonar search model for current answers, retrieval, and citation-backed chat" family = "sonar-deep-research" @@ -11,6 +10,9 @@ tool_call = false structured_output = false open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 2 output = 8 diff --git a/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml b/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml index 098c9ee5d08..f2a9e367b50 100644 --- a/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml +++ b/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Sonar Reasoning Pro" description = "Web-grounded reasoning model for multi-step research and cited answers" family = "sonar-reasoning" @@ -11,6 +10,9 @@ tool_call = false structured_output = false open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 2 output = 8 diff --git a/providers/openrouter/models/poolside/laguna-s-2.1.toml b/providers/openrouter/models/poolside/laguna-s-2.1.toml index 0357d84da69..75396da1734 100644 --- a/providers/openrouter/models/poolside/laguna-s-2.1.toml +++ b/providers/openrouter/models/poolside/laguna-s-2.1.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = false open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.09 diff --git a/providers/openrouter/models/poolside/laguna-s-2.1:free.toml b/providers/openrouter/models/poolside/laguna-s-2.1:free.toml index 85050a7ee50..3dc89f5888b 100644 --- a/providers/openrouter/models/poolside/laguna-s-2.1:free.toml +++ b/providers/openrouter/models/poolside/laguna-s-2.1:free.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = false open_weights = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/poolside/laguna-xs-2.1.toml b/providers/openrouter/models/poolside/laguna-xs-2.1.toml index f3a506b8121..28ad7e09587 100644 --- a/providers/openrouter/models/poolside/laguna-xs-2.1.toml +++ b/providers/openrouter/models/poolside/laguna-xs-2.1.toml @@ -1,5 +1,7 @@ base_model = "poolside/laguna-xs-2.1" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.06 diff --git a/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml b/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml index 9e6fbbab9d3..8eafd0cecf6 100644 --- a/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml +++ b/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml @@ -1,7 +1,9 @@ base_model = "poolside/laguna-xs-2.1" name = "Laguna XS 2.1 (free)" description = "Free provider route for experiments, demos, and cost-sensitive chat workloads" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0 diff --git a/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml b/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml index 326a16c8183..e0cd4701478 100644 --- a/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml +++ b/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml @@ -12,9 +12,7 @@ knowledge = "2025-03-31" open_weights = false [[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 +type = "toggle" [cost] input = 0.26 diff --git a/providers/openrouter/models/qwen/qwen3-235b-a22b.toml b/providers/openrouter/models/qwen/qwen3-235b-a22b.toml index c607f7353cc..0a2954dbfbc 100644 --- a/providers/openrouter/models/qwen/qwen3-235b-a22b.toml +++ b/providers/openrouter/models/qwen/qwen3-235b-a22b.toml @@ -4,11 +4,6 @@ structured_output = false [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 38_912 - [cost] input = 0.455 output = 1.82 diff --git a/providers/openrouter/models/qwen/qwen3-max-thinking.toml b/providers/openrouter/models/qwen/qwen3-max-thinking.toml index 199f89f89ba..2cfb7482aaa 100644 --- a/providers/openrouter/models/qwen/qwen3-max-thinking.toml +++ b/providers/openrouter/models/qwen/qwen3-max-thinking.toml @@ -11,9 +11,7 @@ structured_output = true open_weights = false [[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 +type = "toggle" [cost] input = 0.78 diff --git a/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml b/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml index d2d16963acc..9ce126b80f0 100644 --- a/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml +++ b/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml @@ -1,4 +1,3 @@ -reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1, max = 81920 }] name = "Qwen3.5-Flash" description = "Qwen vision-language model for visual reasoning, documents, and agent tasks" family = "qwen" @@ -11,6 +10,9 @@ tool_call = true structured_output = true open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 0.065 output = 0.26 diff --git a/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml b/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml index 42ace991588..f39fd70c670 100644 --- a/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml +++ b/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml @@ -14,11 +14,6 @@ open_weights = false [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 - [cost] input = 0.26 output = 1.56 diff --git a/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml b/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml index 88f4ec4b376..e87bb76ef8d 100644 --- a/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml +++ b/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml @@ -13,11 +13,6 @@ open_weights = false [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 - [cost] input = 0.3 output = 1.8 diff --git a/providers/openrouter/models/qwen/qwen3.6-flash.toml b/providers/openrouter/models/qwen/qwen3.6-flash.toml index 5f723cbff26..45b8533b469 100644 --- a/providers/openrouter/models/qwen/qwen3.6-flash.toml +++ b/providers/openrouter/models/qwen/qwen3.6-flash.toml @@ -3,11 +3,6 @@ base_model = "alibaba/qwen3.6-flash" [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 - [cost] input = 0.1875 output = 1.125 diff --git a/providers/openrouter/models/qwen/qwen3.6-max-preview.toml b/providers/openrouter/models/qwen/qwen3.6-max-preview.toml index f6abb54fe40..7401613ab86 100644 --- a/providers/openrouter/models/qwen/qwen3.6-max-preview.toml +++ b/providers/openrouter/models/qwen/qwen3.6-max-preview.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 131_072 - [cost] input = 1.027 output = 6.162 diff --git a/providers/openrouter/models/qwen/qwen3.6-plus.toml b/providers/openrouter/models/qwen/qwen3.6-plus.toml index 601d87077b1..60f45aa5f53 100644 --- a/providers/openrouter/models/qwen/qwen3.6-plus.toml +++ b/providers/openrouter/models/qwen/qwen3.6-plus.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 81_920 - [cost] input = 0.325 output = 1.95 diff --git a/providers/openrouter/models/qwen/qwen3.7-flash.toml b/providers/openrouter/models/qwen/qwen3.7-flash.toml index 69e72585c8c..a5176263ff8 100644 --- a/providers/openrouter/models/qwen/qwen3.7-flash.toml +++ b/providers/openrouter/models/qwen/qwen3.7-flash.toml @@ -2,6 +2,9 @@ base_model = "alibaba/qwen3.7-flash" description = "Qwen vision-language model for visual reasoning, documents, and agent tasks" structured_output = false +[[reasoning_options]] +type = "toggle" + [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/qwen/qwen3.7-max.toml b/providers/openrouter/models/qwen/qwen3.7-max.toml index 772a73bde77..f607ef0352c 100644 --- a/providers/openrouter/models/qwen/qwen3.7-max.toml +++ b/providers/openrouter/models/qwen/qwen3.7-max.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 262_144 - [cost] input = 1.475 output = 4.425 diff --git a/providers/openrouter/models/qwen/qwen3.7-plus.toml b/providers/openrouter/models/qwen/qwen3.7-plus.toml index 50868c3df1f..21e84693ae8 100644 --- a/providers/openrouter/models/qwen/qwen3.7-plus.toml +++ b/providers/openrouter/models/qwen/qwen3.7-plus.toml @@ -4,11 +4,6 @@ structured_output = true [[reasoning_options]] type = "toggle" -[[reasoning_options]] -type = "budget_tokens" -min = 1 -max = 262_144 - [cost] input = 0.32 output = 1.28 diff --git a/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml b/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml index 1df51cca979..9739fdae333 100644 --- a/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml +++ b/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml @@ -1,4 +1,3 @@ -reasoning_options = [] name = "Hunyuan A13B Instruct" description = "Tencent Hy reasoning model for coding, instruction following, and agent tasks" family = "hunyuan" @@ -12,6 +11,9 @@ structured_output = true knowledge = "2025-03-31" open_weights = true +[[reasoning_options]] +type = "toggle" + [cost] input = 0.14 output = 0.57 diff --git a/providers/openrouter/models/upstage/solar-pro-3.toml b/providers/openrouter/models/upstage/solar-pro-3.toml index 491e3b650bb..32b63db3fee 100644 --- a/providers/openrouter/models/upstage/solar-pro-3.toml +++ b/providers/openrouter/models/upstage/solar-pro-3.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.15 diff --git a/providers/openrouter/models/upstage/solar-pro4.toml b/providers/openrouter/models/upstage/solar-pro4.toml index 668c1cd157e..1b23f4dbe89 100644 --- a/providers/openrouter/models/upstage/solar-pro4.toml +++ b/providers/openrouter/models/upstage/solar-pro4.toml @@ -9,7 +9,9 @@ temperature = true tool_call = true structured_output = true open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.03 diff --git a/providers/openrouter/models/x-ai/grok-4.20.toml b/providers/openrouter/models/x-ai/grok-4.20.toml index 17547cea08f..e9c4b20a290 100644 --- a/providers/openrouter/models/x-ai/grok-4.20.toml +++ b/providers/openrouter/models/x-ai/grok-4.20.toml @@ -10,7 +10,9 @@ tool_call = true structured_output = true knowledge = "2025-09-01" open_weights = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 1.25 diff --git a/providers/openrouter/models/z-ai/glm-4.6.toml b/providers/openrouter/models/z-ai/glm-4.6.toml index cae4e80102b..94cade86b76 100644 --- a/providers/openrouter/models/z-ai/glm-4.6.toml +++ b/providers/openrouter/models/z-ai/glm-4.6.toml @@ -1,6 +1,8 @@ base_model = "zhipuai/glm-4.6" structured_output = true -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.5 diff --git a/providers/openrouter/models/z-ai/glm-4.6v.toml b/providers/openrouter/models/z-ai/glm-4.6v.toml index f52538d7580..e806c687ad6 100644 --- a/providers/openrouter/models/z-ai/glm-4.6v.toml +++ b/providers/openrouter/models/z-ai/glm-4.6v.toml @@ -1,6 +1,8 @@ base_model = "zhipuai/glm-4.6v" structured_output = false -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.3 diff --git a/providers/openrouter/models/z-ai/glm-4.7-flash.toml b/providers/openrouter/models/z-ai/glm-4.7-flash.toml index 378e86c424d..108406ccb75 100644 --- a/providers/openrouter/models/z-ai/glm-4.7-flash.toml +++ b/providers/openrouter/models/z-ai/glm-4.7-flash.toml @@ -1,10 +1,12 @@ base_model = "zhipuai/glm-4.7-flash" structured_output = true -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.06 output = 0.4 diff --git a/providers/openrouter/models/z-ai/glm-4.7.toml b/providers/openrouter/models/z-ai/glm-4.7.toml index 5055d1b819a..315bba9534e 100644 --- a/providers/openrouter/models/z-ai/glm-4.7.toml +++ b/providers/openrouter/models/z-ai/glm-4.7.toml @@ -1,10 +1,12 @@ base_model = "zhipuai/glm-4.7" structured_output = true -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.4 output = 1.75 diff --git a/providers/openrouter/models/z-ai/glm-5-turbo.toml b/providers/openrouter/models/z-ai/glm-5-turbo.toml index beeb3705236..4dea992cd77 100644 --- a/providers/openrouter/models/z-ai/glm-5-turbo.toml +++ b/providers/openrouter/models/z-ai/glm-5-turbo.toml @@ -1,10 +1,12 @@ base_model = "zhipuai/glm-5-turbo" structured_output = false -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 1.2 output = 4 diff --git a/providers/openrouter/models/z-ai/glm-5.1.toml b/providers/openrouter/models/z-ai/glm-5.1.toml index fd71dbe4a82..6619e0a3298 100644 --- a/providers/openrouter/models/z-ai/glm-5.1.toml +++ b/providers/openrouter/models/z-ai/glm-5.1.toml @@ -1,9 +1,11 @@ base_model = "zhipuai/glm-5.1" -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.966 output = 3.036 diff --git a/providers/openrouter/models/z-ai/glm-5.toml b/providers/openrouter/models/z-ai/glm-5.toml index c7ad523fd4a..ac9c62e8c1a 100644 --- a/providers/openrouter/models/z-ai/glm-5.toml +++ b/providers/openrouter/models/z-ai/glm-5.toml @@ -1,10 +1,12 @@ base_model = "zhipuai/glm-5" structured_output = true -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.6 output = 1.92 diff --git a/providers/openrouter/models/z-ai/glm-5v-turbo.toml b/providers/openrouter/models/z-ai/glm-5v-turbo.toml index 94f84f0e662..c61f2c03fcd 100644 --- a/providers/openrouter/models/z-ai/glm-5v-turbo.toml +++ b/providers/openrouter/models/z-ai/glm-5v-turbo.toml @@ -1,7 +1,9 @@ base_model = "zhipuai/glm-5v-turbo" -reasoning_options = [] structured_output = false +[[reasoning_options]] +type = "toggle" + [cost] input = 1.2 output = 4 diff --git a/providers/openrouter/models/~anthropic/claude-haiku-latest.toml b/providers/openrouter/models/~anthropic/claude-haiku-latest.toml index 85dc865f562..f5914aa549d 100644 --- a/providers/openrouter/models/~anthropic/claude-haiku-latest.toml +++ b/providers/openrouter/models/~anthropic/claude-haiku-latest.toml @@ -1,4 +1,3 @@ -reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 63999 }] name = "Anthropic Claude Haiku Latest" description = "Fast Claude model for responsive assistance, classification, and lightweight agents" family = "claude-haiku" @@ -11,6 +10,9 @@ tool_call = true structured_output = true open_weights = false +[[reasoning_options]] +type = "toggle" + [cost] input = 1 output = 5 From 335ce010218618b51581a689bdf8ede56ce1e987 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 11:15:45 +0700 Subject: [PATCH 06/12] fix(maxlayer): let a corrected sibling outrank a backfilled empty Reasoning options were read as `existing?.reasoning_options ?? sibling`, and `[]` is not nullish, so once the runner had backfilled an empty array the file could never learn anything better. The sibling files gained real toggles in the previous commit and all 13 affected models stayed empty until this changed. An empty array is the runner's placeholder for "no one supplied controls", never something an author chose, so it now loses to a sibling that has them. Every remaining empty is now provably right: 11 models the upstream catalog marks mandatory, where reasoning is always on and there is nothing to switch, and 2 that report no reasoning at all. Prices in the same 21 files moved because the live catalogue refreshed between syncs. All 163 match the published sell price exactly and the realised markup is uniform. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/providers/maxlayer.ts | 7 ++++++- providers/maxlayer/models/deepseek/deepseek-v4-flash.toml | 6 +++--- providers/maxlayer/models/deepseek/deepseek-v4-pro.toml | 6 +++--- providers/maxlayer/models/google/gemma-4-31b-it.toml | 5 ++--- providers/maxlayer/models/meta/muse-glimmer-30b.toml | 4 ++-- providers/maxlayer/models/minimax/minimax-m3.toml | 7 ++++++- providers/maxlayer/models/moonshotai/kimi-k2.5.toml | 7 ++++++- providers/maxlayer/models/moonshotai/kimi-k2.6.toml | 7 ++++++- providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml | 6 +++--- .../maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml | 7 ++++++- .../maxlayer/models/nvidia/nemotron-3.5-lightning.toml | 1 - providers/maxlayer/models/openai/o1-pro.toml | 7 ++++++- providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml | 3 --- .../maxlayer/models/thinkingmachines/inkling-small.toml | 1 - providers/maxlayer/models/z-ai/glm-4.6.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-4.6v.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-4.7-flash.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-4.7.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-5-turbo.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-5.1.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-5.toml | 7 ++++++- providers/maxlayer/models/z-ai/glm-5v-turbo.toml | 7 ++++++- 22 files changed, 97 insertions(+), 33 deletions(-) diff --git a/packages/core/src/sync/providers/maxlayer.ts b/packages/core/src/sync/providers/maxlayer.ts index 7a541b7f324..e2f1207e5e7 100644 --- a/packages/core/src/sync/providers/maxlayer.ts +++ b/packages/core/src/sync/providers/maxlayer.ts @@ -230,7 +230,12 @@ export function buildMaxlayerModel( cache_write: price(model.pricing?.cache_write_per_million_tokens), }, limit, - reasoning_options: existing?.reasoning_options ?? sibling.reasoning_options, + // An empty array is what the runner backfills when nothing supplied + // controls, not something anyone authored, so it must not outrank a + // sibling that has since learned the real ones. + reasoning_options: existing?.reasoning_options?.length + ? existing.reasoning_options + : sibling.reasoning_options, interleaved: existing?.interleaved ?? sibling.interleaved, }, limit, diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml index 65188118168..882331e365a 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-flash.toml @@ -14,9 +14,9 @@ type = "effort" values = ["high", "xhigh"] [cost] -input = 0.100959 -output = 0.201916 -cache_read = 0.020192 +input = 0.094115 +output = 0.188229 +cache_read = 0.018824 [limit] context = 1_048_576 diff --git a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml index 55e6bc55fc0..fc3869825de 100644 --- a/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml +++ b/providers/maxlayer/models/deepseek/deepseek-v4-pro.toml @@ -14,9 +14,9 @@ type = "effort" values = ["high", "xhigh"] [cost] -input = 1.640736 -output = 3.281472 -cache_read = 0.138438 +input = 1.82304 +output = 3.64608 +cache_read = 0.153819 [limit] context = 1_048_576 diff --git a/providers/maxlayer/models/google/gemma-4-31b-it.toml b/providers/maxlayer/models/google/gemma-4-31b-it.toml index 97b700d9991..4e77ce476d3 100644 --- a/providers/maxlayer/models/google/gemma-4-31b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-31b-it.toml @@ -7,9 +7,8 @@ base_model = "google/gemma-4-31b-it" type = "toggle" [cost] -input = 0.102546 +input = 0.11394 output = 0.387396 -cache_read = 0.05697 [limit] -output = 16_384 +output = 262_144 diff --git a/providers/maxlayer/models/meta/muse-glimmer-30b.toml b/providers/maxlayer/models/meta/muse-glimmer-30b.toml index 867e5c82586..c8b99b7f62d 100644 --- a/providers/maxlayer/models/meta/muse-glimmer-30b.toml +++ b/providers/maxlayer/models/meta/muse-glimmer-30b.toml @@ -5,6 +5,6 @@ type = "effort" values = ["low", "medium", "high", "xhigh"] [cost] -input = 0.39879 -output = 1.7091 +input = 0.34182 +output = 1.25334 cache_read = 0.045576 diff --git a/providers/maxlayer/models/minimax/minimax-m3.toml b/providers/maxlayer/models/minimax/minimax-m3.toml index 2c868c8c8b6..a429a91b361 100644 --- a/providers/maxlayer/models/minimax/minimax-m3.toml +++ b/providers/maxlayer/models/minimax/minimax-m3.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "minimax/MiniMax-M3" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.34182 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml index abbe6b7b7df..8d3ed4407a5 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k2.5" -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.51273 output = 2.56365 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml index b3c85673c56..f1c6fb634c5 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k2.6" -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 1.08243 output = 4.5576 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml index 6556f0706cb..a0b748cadf0 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml @@ -2,6 +2,6 @@ base_model = "moonshotai/kimi-k2.7-code" reasoning_options = [] [cost] -input = 0.808974 -output = 3.9879 -cache_read = 0.17091 +input = 0.763398 +output = 3.87396 +cache_read = 0.193698 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml index 26240d6f661..50e4be38486 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "nvidia/nemotron-3-nano-30b-a3b" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.05697 diff --git a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml index 3cf188c7818..ca36fd12635 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3.5-lightning.toml @@ -12,5 +12,4 @@ output = 0.22788 cache_read = 0.045576 [limit] -context = 1_000_000 output = 131_072 diff --git a/providers/maxlayer/models/openai/o1-pro.toml b/providers/maxlayer/models/openai/o1-pro.toml index 380637565e3..76f7c01b4d0 100644 --- a/providers/maxlayer/models/openai/o1-pro.toml +++ b/providers/maxlayer/models/openai/o1-pro.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "openai/o1-pro" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 170.91 diff --git a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml index 6ea6d945956..95a15954617 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml @@ -9,6 +9,3 @@ type = "toggle" [cost] input = 0.296244 output = 2.369952 - -[limit] -output = 262_144 diff --git a/providers/maxlayer/models/thinkingmachines/inkling-small.toml b/providers/maxlayer/models/thinkingmachines/inkling-small.toml index fac42529684..aff1c71fce3 100644 --- a/providers/maxlayer/models/thinkingmachines/inkling-small.toml +++ b/providers/maxlayer/models/thinkingmachines/inkling-small.toml @@ -10,5 +10,4 @@ output = 1.36728 cache_read = 0.11394 [limit] -context = 524_288 output = 262_144 diff --git a/providers/maxlayer/models/z-ai/glm-4.6.toml b/providers/maxlayer/models/z-ai/glm-4.6.toml index 31a47b26fb8..e11cf61e63a 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.5697 diff --git a/providers/maxlayer/models/z-ai/glm-4.6v.toml b/providers/maxlayer/models/z-ai/glm-4.6v.toml index 70273bcd7aa..7748109d38c 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6v.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6v" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 0.34182 diff --git a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml index b4d14fc13e6..fa6420263e8 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7-flash" -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.068364 output = 0.45576 diff --git a/providers/maxlayer/models/z-ai/glm-4.7.toml b/providers/maxlayer/models/z-ai/glm-4.7.toml index e5369a938a0..95d0fd5610d 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7" -reasoning_options = [] [interleaved] field = "reasoning_details" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.45576 output = 1.99395 diff --git a/providers/maxlayer/models/z-ai/glm-5-turbo.toml b/providers/maxlayer/models/z-ai/glm-5-turbo.toml index de13f22d837..760bad0a7f6 100644 --- a/providers/maxlayer/models/z-ai/glm-5-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5-turbo.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5-turbo" -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 1.36728 output = 4.5576 diff --git a/providers/maxlayer/models/z-ai/glm-5.1.toml b/providers/maxlayer/models/z-ai/glm-5.1.toml index 385145a2386..a2d5f0368e4 100644 --- a/providers/maxlayer/models/z-ai/glm-5.1.toml +++ b/providers/maxlayer/models/z-ai/glm-5.1.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5.1" -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 1.100661 output = 3.459219 diff --git a/providers/maxlayer/models/z-ai/glm-5.toml b/providers/maxlayer/models/z-ai/glm-5.toml index e27b6b45a60..0ee43ecdf3f 100644 --- a/providers/maxlayer/models/z-ai/glm-5.toml +++ b/providers/maxlayer/models/z-ai/glm-5.toml @@ -1,9 +1,14 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5" -reasoning_options = [] [interleaved] field = "reasoning_content" +[[reasoning_options]] +type = "toggle" + [cost] input = 0.68364 output = 2.187648 diff --git a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml index 5cfd22c9655..1c0ed9f5bbc 100644 --- a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml @@ -1,5 +1,10 @@ +# Toggle: reasoning.enabled = true|false +# Effort: reasoning.effort (top-level reasoning_effort is an alias) +# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5v-turbo" -reasoning_options = [] + +[[reasoning_options]] +type = "toggle" [cost] input = 1.36728 From 96eed3c1f6173e63caad86c8de9196b31aaf1987 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 11:26:52 +0700 Subject: [PATCH 07/12] Revert "fix(openrouter): a non-mandatory reasoner has a toggle" This reverts commit 0c009b7f4. The bug is real, but it belongs in its own pull request rather than inside one that adds a provider. Rewriting 69 files in a provider this PR does not own buries the thing under review. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/providers/openrouter.ts | 7 ------- providers/openrouter/models/amazon/nova-2-lite-v1.toml | 4 +--- .../openrouter/models/anthropic/claude-haiku-4.5.toml | 5 +++++ .../openrouter/models/anthropic/claude-opus-4.1.toml | 5 +++++ .../openrouter/models/anthropic/claude-opus-4.5.toml | 9 +++++++++ providers/openrouter/models/anthropic/claude-opus-4.toml | 4 +--- .../openrouter/models/anthropic/claude-sonnet-4.5.toml | 5 +++++ .../openrouter/models/anthropic/claude-sonnet-4.toml | 4 +--- .../openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml | 4 +--- .../openrouter/models/bytedance-seed/seed-1.6-flash.toml | 4 +--- providers/openrouter/models/bytedance-seed/seed-1.6.toml | 4 +--- .../openrouter/models/bytedance-seed/seed-2-1-turbo.toml | 4 +--- .../openrouter/models/cohere/north-mini-code:free.toml | 4 +--- .../openrouter/models/deepcogito/cogito-v2.1-671b.toml | 4 +--- .../models/deepseek/deepseek-r1-distill-llama-70b.toml | 4 +--- .../models/dots-studio/dots-3-note-preview:free.toml | 4 +--- .../openrouter/models/google/gemini-2.5-flash-lite.toml | 5 +++++ providers/openrouter/models/google/gemini-2.5-flash.toml | 5 +++++ .../openrouter/models/inclusionai/ling-3.0-flash.toml | 4 +--- providers/openrouter/models/meituan/longcat-2.0.toml | 3 --- providers/openrouter/models/minimax/minimax-m1.toml | 4 +--- providers/openrouter/models/minimax/minimax-m3.toml | 4 +--- providers/openrouter/models/moonshotai/kimi-k2.5.toml | 4 +--- providers/openrouter/models/moonshotai/kimi-k2.6.toml | 4 +--- providers/openrouter/models/nex-agi/nex-n2-mini.toml | 4 +--- providers/openrouter/models/nex-agi/nex-n2-pro.toml | 4 +--- .../models/nvidia/nemotron-3-nano-30b-a3b.toml | 4 +--- .../models/nvidia/nemotron-3-nano-30b-a3b:free.toml | 4 +--- .../nemotron-3-nano-omni-30b-a3b-reasoning:free.toml | 3 --- .../models/nvidia/nemotron-3.5-content-safety:free.toml | 4 +--- .../models/nvidia/nemotron-nano-12b-v2-vl:free.toml | 4 +--- .../models/nvidia/nemotron-nano-9b-v2:free.toml | 4 +--- providers/openrouter/models/openai/o1-pro.toml | 4 +--- providers/openrouter/models/openai/o1.toml | 3 ++- providers/openrouter/models/openai/o3-mini.toml | 3 ++- providers/openrouter/models/openai/o3-pro.toml | 3 ++- providers/openrouter/models/openai/o3.toml | 3 ++- providers/openrouter/models/openai/o4-mini.toml | 3 ++- .../openrouter/models/perceptron/perceptron-mk1.toml | 4 +--- .../models/perplexity/sonar-deep-research.toml | 4 +--- .../models/perplexity/sonar-reasoning-pro.toml | 4 +--- providers/openrouter/models/poolside/laguna-s-2.1.toml | 4 +--- .../openrouter/models/poolside/laguna-s-2.1:free.toml | 4 +--- providers/openrouter/models/poolside/laguna-xs-2.1.toml | 4 +--- .../openrouter/models/poolside/laguna-xs-2.1:free.toml | 4 +--- .../models/qwen/qwen-plus-2025-07-28:thinking.toml | 4 +++- providers/openrouter/models/qwen/qwen3-235b-a22b.toml | 5 +++++ providers/openrouter/models/qwen/qwen3-max-thinking.toml | 4 +++- .../openrouter/models/qwen/qwen3.5-flash-02-23.toml | 4 +--- providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml | 5 +++++ .../openrouter/models/qwen/qwen3.5-plus-20260420.toml | 5 +++++ providers/openrouter/models/qwen/qwen3.6-flash.toml | 5 +++++ .../openrouter/models/qwen/qwen3.6-max-preview.toml | 5 +++++ providers/openrouter/models/qwen/qwen3.6-plus.toml | 5 +++++ providers/openrouter/models/qwen/qwen3.7-flash.toml | 3 --- providers/openrouter/models/qwen/qwen3.7-max.toml | 5 +++++ providers/openrouter/models/qwen/qwen3.7-plus.toml | 5 +++++ .../openrouter/models/tencent/hunyuan-a13b-instruct.toml | 4 +--- providers/openrouter/models/upstage/solar-pro-3.toml | 4 +--- providers/openrouter/models/upstage/solar-pro4.toml | 4 +--- providers/openrouter/models/x-ai/grok-4.20.toml | 4 +--- providers/openrouter/models/z-ai/glm-4.6.toml | 4 +--- providers/openrouter/models/z-ai/glm-4.6v.toml | 4 +--- providers/openrouter/models/z-ai/glm-4.7-flash.toml | 4 +--- providers/openrouter/models/z-ai/glm-4.7.toml | 4 +--- providers/openrouter/models/z-ai/glm-5-turbo.toml | 4 +--- providers/openrouter/models/z-ai/glm-5.1.toml | 4 +--- providers/openrouter/models/z-ai/glm-5.toml | 4 +--- providers/openrouter/models/z-ai/glm-5v-turbo.toml | 4 +--- .../models/~anthropic/claude-haiku-latest.toml | 4 +--- 70 files changed, 135 insertions(+), 158 deletions(-) diff --git a/packages/core/src/sync/providers/openrouter.ts b/packages/core/src/sync/providers/openrouter.ts index 777a399de1d..c9ea734d4d1 100644 --- a/packages/core/src/sync/providers/openrouter.ts +++ b/packages/core/src/sync/providers/openrouter.ts @@ -328,13 +328,6 @@ function openRouterReasoningOptions(reasoning: OpenRouterModel["reasoning"]): Sy type: "effort", values: reasoning.mandatory ? efforts.filter((value) => value !== "none") : [...efforts], }); - } else if (!reasoning.mandatory) { - // Graded effort is not the only control. A model that publishes no efforts - // and no budget still answers to `reasoning.enabled` whenever reasoning is - // not mandatory, so it has an on/off switch and the file should say so. - // Reading only the effort branch left these as `reasoning_options = []`, - // which asserts the opposite: that a caller has no control at all. - options.push({ type: "toggle" }); } if (reasoning.supports_max_tokens === true) { diff --git a/providers/openrouter/models/amazon/nova-2-lite-v1.toml b/providers/openrouter/models/amazon/nova-2-lite-v1.toml index ca3fec3ec90..1b51e0c4f1a 100644 --- a/providers/openrouter/models/amazon/nova-2-lite-v1.toml +++ b/providers/openrouter/models/amazon/nova-2-lite-v1.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Nova 2 Lite" description = "Multimodal reasoning model for visual analysis, planning, and tool use" family = "nova" @@ -10,9 +11,6 @@ tool_call = true structured_output = false open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 0.3 output = 2.5 diff --git a/providers/openrouter/models/anthropic/claude-haiku-4.5.toml b/providers/openrouter/models/anthropic/claude-haiku-4.5.toml index bcd75fb8711..af225d0ca15 100644 --- a/providers/openrouter/models/anthropic/claude-haiku-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-haiku-4.5.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + [cost] input = 1 output = 5 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.1.toml b/providers/openrouter/models/anthropic/claude-opus-4.1.toml index b1f71951ea9..e8fcf991080 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.1.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.1.toml @@ -4,6 +4,11 @@ structured_output = false [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 31_999 + [cost] input = 15 output = 75 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.5.toml b/providers/openrouter/models/anthropic/claude-opus-4.5.toml index 6fb818caa91..5199bb685e2 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.5.toml @@ -4,6 +4,15 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high"] + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + [cost] input = 5 output = 25 diff --git a/providers/openrouter/models/anthropic/claude-opus-4.toml b/providers/openrouter/models/anthropic/claude-opus-4.toml index d9c5ad990b3..53e62ce8f24 100644 --- a/providers/openrouter/models/anthropic/claude-opus-4.toml +++ b/providers/openrouter/models/anthropic/claude-opus-4.toml @@ -1,3 +1,4 @@ +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 31999 }] name = "Claude Opus 4" description = "Flagship Claude model for deep reasoning, coding, and long-horizon agents" family = "claude-opus" @@ -11,9 +12,6 @@ structured_output = false knowledge = "2025-01-31" open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 15 output = 75 diff --git a/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml index dca8bd1f7db..b8f2ac6f412 100644 --- a/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml +++ b/providers/openrouter/models/anthropic/claude-sonnet-4.5.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 +max = 63_999 + [cost] input = 3 output = 15 diff --git a/providers/openrouter/models/anthropic/claude-sonnet-4.toml b/providers/openrouter/models/anthropic/claude-sonnet-4.toml index 451457f0595..7dcce2aabf0 100644 --- a/providers/openrouter/models/anthropic/claude-sonnet-4.toml +++ b/providers/openrouter/models/anthropic/claude-sonnet-4.toml @@ -1,3 +1,4 @@ +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 63999 }] name = "Claude Sonnet 4" description = "Balanced Claude model for coding, analysis, agent workflows, and cost control" family = "claude-sonnet" @@ -11,9 +12,6 @@ structured_output = false knowledge = "2025-01-31" open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 3 output = 15 diff --git a/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml b/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml index 49bf3c478c8..9613f948a58 100644 --- a/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml +++ b/providers/openrouter/models/baidu/ernie-4.5-vl-424b-a47b.toml @@ -10,9 +10,7 @@ tool_call = false structured_output = false knowledge = "2025-03-31" open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.42 diff --git a/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml b/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml index b20139958a9..8b41db7edd3 100644 --- a/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml +++ b/providers/openrouter/models/bytedance-seed/seed-1.6-flash.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.075 diff --git a/providers/openrouter/models/bytedance-seed/seed-1.6.toml b/providers/openrouter/models/bytedance-seed/seed-1.6.toml index 28225c61629..a1f8f345f22 100644 --- a/providers/openrouter/models/bytedance-seed/seed-1.6.toml +++ b/providers/openrouter/models/bytedance-seed/seed-1.6.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.25 diff --git a/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml b/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml index 2e07cf7c9bb..041e0f4e296 100644 --- a/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml +++ b/providers/openrouter/models/bytedance-seed/seed-2-1-turbo.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.5 diff --git a/providers/openrouter/models/cohere/north-mini-code:free.toml b/providers/openrouter/models/cohere/north-mini-code:free.toml index a4a42f5b7ea..8616b407eae 100644 --- a/providers/openrouter/models/cohere/north-mini-code:free.toml +++ b/providers/openrouter/models/cohere/north-mini-code:free.toml @@ -1,5 +1,6 @@ name = "North Mini Code (free)" description = "Cohere coding model for practical software engineering and agentic edits" +reasoning_options = [] family = "north" release_date = "2026-06-17" last_updated = "2026-06-17" @@ -10,9 +11,6 @@ tool_call = true structured_output = false open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] input = 0 output = 0 diff --git a/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml b/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml index c8eefcc77a3..9775aced303 100644 --- a/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml +++ b/providers/openrouter/models/deepcogito/cogito-v2.1-671b.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Cogito v2.1 671B" description = "Reasoning model for deliberate analysis, multi-step problem solving, and tool use" family = "cogito" @@ -10,9 +11,6 @@ tool_call = false structured_output = true open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 1.25 output = 1.25 diff --git a/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml b/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml index 0cb66937e03..7bbc05ccfc0 100644 --- a/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml +++ b/providers/openrouter/models/deepseek/deepseek-r1-distill-llama-70b.toml @@ -10,9 +10,7 @@ tool_call = false structured_output = false knowledge = "2024-07-31" open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.8 diff --git a/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml b/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml index c634239fc17..07d73c08309 100644 --- a/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml +++ b/providers/openrouter/models/dots-studio/dots-3-note-preview:free.toml @@ -8,9 +8,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/google/gemini-2.5-flash-lite.toml b/providers/openrouter/models/google/gemini-2.5-flash-lite.toml index 48857a31ac2..dfb707f9360 100644 --- a/providers/openrouter/models/google/gemini-2.5-flash-lite.toml +++ b/providers/openrouter/models/google/gemini-2.5-flash-lite.toml @@ -3,6 +3,11 @@ base_model = "google/gemini-2.5-flash-lite" [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 512 +max = 24_576 + [cost] input = 0.1 output = 0.4 diff --git a/providers/openrouter/models/google/gemini-2.5-flash.toml b/providers/openrouter/models/google/gemini-2.5-flash.toml index 5f5b2dbeb68..b465dc01456 100644 --- a/providers/openrouter/models/google/gemini-2.5-flash.toml +++ b/providers/openrouter/models/google/gemini-2.5-flash.toml @@ -3,6 +3,11 @@ base_model = "google/gemini-2.5-flash" [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 0 +max = 24_576 + [cost] input = 0.3 output = 2.5 diff --git a/providers/openrouter/models/inclusionai/ling-3.0-flash.toml b/providers/openrouter/models/inclusionai/ling-3.0-flash.toml index 0fc962ff56b..b9a9c35a085 100644 --- a/providers/openrouter/models/inclusionai/ling-3.0-flash.toml +++ b/providers/openrouter/models/inclusionai/ling-3.0-flash.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = false open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.021 diff --git a/providers/openrouter/models/meituan/longcat-2.0.toml b/providers/openrouter/models/meituan/longcat-2.0.toml index a8f3cb2e50d..29e85d5574e 100644 --- a/providers/openrouter/models/meituan/longcat-2.0.toml +++ b/providers/openrouter/models/meituan/longcat-2.0.toml @@ -10,9 +10,6 @@ tool_call = true structured_output = false open_weights = true -[[reasoning_options]] -type = "toggle" - [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/minimax/minimax-m1.toml b/providers/openrouter/models/minimax/minimax-m1.toml index 9f011804cce..5663a97b096 100644 --- a/providers/openrouter/models/minimax/minimax-m1.toml +++ b/providers/openrouter/models/minimax/minimax-m1.toml @@ -10,9 +10,7 @@ tool_call = true structured_output = false knowledge = "2024-06-30" open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.55 diff --git a/providers/openrouter/models/minimax/minimax-m3.toml b/providers/openrouter/models/minimax/minimax-m3.toml index c6bfce209ca..1c7647829da 100644 --- a/providers/openrouter/models/minimax/minimax-m3.toml +++ b/providers/openrouter/models/minimax/minimax-m3.toml @@ -1,8 +1,6 @@ base_model = "minimax/MiniMax-M3" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.3 diff --git a/providers/openrouter/models/moonshotai/kimi-k2.5.toml b/providers/openrouter/models/moonshotai/kimi-k2.5.toml index ea059aced73..ea103ea9ded 100644 --- a/providers/openrouter/models/moonshotai/kimi-k2.5.toml +++ b/providers/openrouter/models/moonshotai/kimi-k2.5.toml @@ -1,12 +1,10 @@ base_model = "moonshotai/kimi-k2.5" temperature = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.45 output = 2.25 diff --git a/providers/openrouter/models/moonshotai/kimi-k2.6.toml b/providers/openrouter/models/moonshotai/kimi-k2.6.toml index 13586862ac6..c6f4c190143 100644 --- a/providers/openrouter/models/moonshotai/kimi-k2.6.toml +++ b/providers/openrouter/models/moonshotai/kimi-k2.6.toml @@ -1,11 +1,9 @@ base_model = "moonshotai/kimi-k2.6" +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.95 output = 4 diff --git a/providers/openrouter/models/nex-agi/nex-n2-mini.toml b/providers/openrouter/models/nex-agi/nex-n2-mini.toml index 6c846d90b53..4ca8d59cab5 100644 --- a/providers/openrouter/models/nex-agi/nex-n2-mini.toml +++ b/providers/openrouter/models/nex-agi/nex-n2-mini.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.025 diff --git a/providers/openrouter/models/nex-agi/nex-n2-pro.toml b/providers/openrouter/models/nex-agi/nex-n2-pro.toml index 45c01cb0b1f..4086912e84a 100644 --- a/providers/openrouter/models/nex-agi/nex-n2-pro.toml +++ b/providers/openrouter/models/nex-agi/nex-n2-pro.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = false open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.25 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml index 8cfe1645199..877bba0489d 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -1,8 +1,6 @@ base_model = "nvidia/nemotron-3-nano-30b-a3b" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.05 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml index fce2ec80861..9a0409b1c89 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-30b-a3b:free.toml @@ -1,9 +1,7 @@ base_model = "nvidia/nemotron-3-nano-30b-a3b" name = "Nemotron 3 Nano 30B A3B (free)" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml b/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml index 29bfc542fa6..f80a020a6f1 100644 --- a/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free.toml @@ -2,9 +2,6 @@ base_model = "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" name = "Nemotron 3 Nano Omni (free)" structured_output = false -[[reasoning_options]] -type = "toggle" - [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml b/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml index 6b9001b6d49..3c9543b28cb 100644 --- a/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-3.5-content-safety:free.toml @@ -1,9 +1,7 @@ base_model = "nvidia/nemotron-3.5-content-safety" name = "Nemotron 3.5 Content Safety (free)" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml b/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml index 9123c408a56..e20345facb3 100644 --- a/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-nano-12b-v2-vl:free.toml @@ -1,9 +1,7 @@ base_model = "nvidia/nemotron-nano-12b-v2-vl" name = "Nemotron Nano 12B 2 VL (free)" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml b/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml index c615e7bf797..257dee3e964 100644 --- a/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml +++ b/providers/openrouter/models/nvidia/nemotron-nano-9b-v2:free.toml @@ -1,9 +1,7 @@ base_model = "nvidia/nemotron-nano-9b-v2" name = "Nemotron Nano 9B V2 (free)" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/openai/o1-pro.toml b/providers/openrouter/models/openai/o1-pro.toml index c9412e47627..d9ca9966515 100644 --- a/providers/openrouter/models/openai/o1-pro.toml +++ b/providers/openrouter/models/openai/o1-pro.toml @@ -1,8 +1,6 @@ base_model = "openai/o1-pro" tool_call = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 150 diff --git a/providers/openrouter/models/openai/o1.toml b/providers/openrouter/models/openai/o1.toml index 13a15585f43..40b6a2a4af8 100644 --- a/providers/openrouter/models/openai/o1.toml +++ b/providers/openrouter/models/openai/o1.toml @@ -1,7 +1,8 @@ base_model = "openai/o1" [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 15 diff --git a/providers/openrouter/models/openai/o3-mini.toml b/providers/openrouter/models/openai/o3-mini.toml index ae729970e17..59c55ee37a4 100644 --- a/providers/openrouter/models/openai/o3-mini.toml +++ b/providers/openrouter/models/openai/o3-mini.toml @@ -2,7 +2,8 @@ base_model = "openai/o3-mini" attachment = true [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 1.1 diff --git a/providers/openrouter/models/openai/o3-pro.toml b/providers/openrouter/models/openai/o3-pro.toml index a4529a2310d..b2ece450837 100644 --- a/providers/openrouter/models/openai/o3-pro.toml +++ b/providers/openrouter/models/openai/o3-pro.toml @@ -1,7 +1,8 @@ base_model = "openai/o3-pro" [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 20 diff --git a/providers/openrouter/models/openai/o3.toml b/providers/openrouter/models/openai/o3.toml index c81ba67f32f..977bf918256 100644 --- a/providers/openrouter/models/openai/o3.toml +++ b/providers/openrouter/models/openai/o3.toml @@ -1,7 +1,8 @@ base_model = "openai/o3" [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 2 diff --git a/providers/openrouter/models/openai/o4-mini.toml b/providers/openrouter/models/openai/o4-mini.toml index f7acf83ff2c..f97e6e892b8 100644 --- a/providers/openrouter/models/openai/o4-mini.toml +++ b/providers/openrouter/models/openai/o4-mini.toml @@ -1,7 +1,8 @@ base_model = "openai/o4-mini" [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 1.1 diff --git a/providers/openrouter/models/perceptron/perceptron-mk1.toml b/providers/openrouter/models/perceptron/perceptron-mk1.toml index f2a02370fdd..97f315f941a 100644 --- a/providers/openrouter/models/perceptron/perceptron-mk1.toml +++ b/providers/openrouter/models/perceptron/perceptron-mk1.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Perceptron Mk1" description = "Multimodal reasoning model for visual analysis, planning, and tool use" release_date = "2026-05-12" @@ -9,9 +10,6 @@ tool_call = false structured_output = true open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 0.15 output = 1.5 diff --git a/providers/openrouter/models/perplexity/sonar-deep-research.toml b/providers/openrouter/models/perplexity/sonar-deep-research.toml index 7be4c463253..e078ad508fa 100644 --- a/providers/openrouter/models/perplexity/sonar-deep-research.toml +++ b/providers/openrouter/models/perplexity/sonar-deep-research.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Sonar Deep Research" description = "Sonar search model for current answers, retrieval, and citation-backed chat" family = "sonar-deep-research" @@ -10,9 +11,6 @@ tool_call = false structured_output = false open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 2 output = 8 diff --git a/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml b/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml index f2a9e367b50..098c9ee5d08 100644 --- a/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml +++ b/providers/openrouter/models/perplexity/sonar-reasoning-pro.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Sonar Reasoning Pro" description = "Web-grounded reasoning model for multi-step research and cited answers" family = "sonar-reasoning" @@ -10,9 +11,6 @@ tool_call = false structured_output = false open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 2 output = 8 diff --git a/providers/openrouter/models/poolside/laguna-s-2.1.toml b/providers/openrouter/models/poolside/laguna-s-2.1.toml index 75396da1734..0357d84da69 100644 --- a/providers/openrouter/models/poolside/laguna-s-2.1.toml +++ b/providers/openrouter/models/poolside/laguna-s-2.1.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = false open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.09 diff --git a/providers/openrouter/models/poolside/laguna-s-2.1:free.toml b/providers/openrouter/models/poolside/laguna-s-2.1:free.toml index 3dc89f5888b..85050a7ee50 100644 --- a/providers/openrouter/models/poolside/laguna-s-2.1:free.toml +++ b/providers/openrouter/models/poolside/laguna-s-2.1:free.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = false open_weights = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/poolside/laguna-xs-2.1.toml b/providers/openrouter/models/poolside/laguna-xs-2.1.toml index 28ad7e09587..f3a506b8121 100644 --- a/providers/openrouter/models/poolside/laguna-xs-2.1.toml +++ b/providers/openrouter/models/poolside/laguna-xs-2.1.toml @@ -1,7 +1,5 @@ base_model = "poolside/laguna-xs-2.1" - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.06 diff --git a/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml b/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml index 8eafd0cecf6..9e6fbbab9d3 100644 --- a/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml +++ b/providers/openrouter/models/poolside/laguna-xs-2.1:free.toml @@ -1,9 +1,7 @@ base_model = "poolside/laguna-xs-2.1" name = "Laguna XS 2.1 (free)" description = "Free provider route for experiments, demos, and cost-sensitive chat workloads" - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0 diff --git a/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml b/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml index e0cd4701478..326a16c8183 100644 --- a/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml +++ b/providers/openrouter/models/qwen/qwen-plus-2025-07-28:thinking.toml @@ -12,7 +12,9 @@ knowledge = "2025-03-31" open_weights = false [[reasoning_options]] -type = "toggle" +type = "budget_tokens" +min = 1 +max = 81_920 [cost] input = 0.26 diff --git a/providers/openrouter/models/qwen/qwen3-235b-a22b.toml b/providers/openrouter/models/qwen/qwen3-235b-a22b.toml index 0a2954dbfbc..c607f7353cc 100644 --- a/providers/openrouter/models/qwen/qwen3-235b-a22b.toml +++ b/providers/openrouter/models/qwen/qwen3-235b-a22b.toml @@ -4,6 +4,11 @@ structured_output = false [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 38_912 + [cost] input = 0.455 output = 1.82 diff --git a/providers/openrouter/models/qwen/qwen3-max-thinking.toml b/providers/openrouter/models/qwen/qwen3-max-thinking.toml index 2cfb7482aaa..199f89f89ba 100644 --- a/providers/openrouter/models/qwen/qwen3-max-thinking.toml +++ b/providers/openrouter/models/qwen/qwen3-max-thinking.toml @@ -11,7 +11,9 @@ structured_output = true open_weights = false [[reasoning_options]] -type = "toggle" +type = "budget_tokens" +min = 1 +max = 81_920 [cost] input = 0.78 diff --git a/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml b/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml index 9ce126b80f0..d2d16963acc 100644 --- a/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml +++ b/providers/openrouter/models/qwen/qwen3.5-flash-02-23.toml @@ -1,3 +1,4 @@ +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1, max = 81920 }] name = "Qwen3.5-Flash" description = "Qwen vision-language model for visual reasoning, documents, and agent tasks" family = "qwen" @@ -10,9 +11,6 @@ tool_call = true structured_output = true open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 0.065 output = 0.26 diff --git a/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml b/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml index f39fd70c670..42ace991588 100644 --- a/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml +++ b/providers/openrouter/models/qwen/qwen3.5-plus-02-15.toml @@ -14,6 +14,11 @@ open_weights = false [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + [cost] input = 0.26 output = 1.56 diff --git a/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml b/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml index e87bb76ef8d..88f4ec4b376 100644 --- a/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml +++ b/providers/openrouter/models/qwen/qwen3.5-plus-20260420.toml @@ -13,6 +13,11 @@ open_weights = false [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + [cost] input = 0.3 output = 1.8 diff --git a/providers/openrouter/models/qwen/qwen3.6-flash.toml b/providers/openrouter/models/qwen/qwen3.6-flash.toml index 45b8533b469..5f723cbff26 100644 --- a/providers/openrouter/models/qwen/qwen3.6-flash.toml +++ b/providers/openrouter/models/qwen/qwen3.6-flash.toml @@ -3,6 +3,11 @@ base_model = "alibaba/qwen3.6-flash" [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + [cost] input = 0.1875 output = 1.125 diff --git a/providers/openrouter/models/qwen/qwen3.6-max-preview.toml b/providers/openrouter/models/qwen/qwen3.6-max-preview.toml index 7401613ab86..f6abb54fe40 100644 --- a/providers/openrouter/models/qwen/qwen3.6-max-preview.toml +++ b/providers/openrouter/models/qwen/qwen3.6-max-preview.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 131_072 + [cost] input = 1.027 output = 6.162 diff --git a/providers/openrouter/models/qwen/qwen3.6-plus.toml b/providers/openrouter/models/qwen/qwen3.6-plus.toml index 60f45aa5f53..601d87077b1 100644 --- a/providers/openrouter/models/qwen/qwen3.6-plus.toml +++ b/providers/openrouter/models/qwen/qwen3.6-plus.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 81_920 + [cost] input = 0.325 output = 1.95 diff --git a/providers/openrouter/models/qwen/qwen3.7-flash.toml b/providers/openrouter/models/qwen/qwen3.7-flash.toml index a5176263ff8..69e72585c8c 100644 --- a/providers/openrouter/models/qwen/qwen3.7-flash.toml +++ b/providers/openrouter/models/qwen/qwen3.7-flash.toml @@ -2,9 +2,6 @@ base_model = "alibaba/qwen3.7-flash" description = "Qwen vision-language model for visual reasoning, documents, and agent tasks" structured_output = false -[[reasoning_options]] -type = "toggle" - [[reasoning_options]] type = "budget_tokens" diff --git a/providers/openrouter/models/qwen/qwen3.7-max.toml b/providers/openrouter/models/qwen/qwen3.7-max.toml index f607ef0352c..772a73bde77 100644 --- a/providers/openrouter/models/qwen/qwen3.7-max.toml +++ b/providers/openrouter/models/qwen/qwen3.7-max.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 262_144 + [cost] input = 1.475 output = 4.425 diff --git a/providers/openrouter/models/qwen/qwen3.7-plus.toml b/providers/openrouter/models/qwen/qwen3.7-plus.toml index 21e84693ae8..50868c3df1f 100644 --- a/providers/openrouter/models/qwen/qwen3.7-plus.toml +++ b/providers/openrouter/models/qwen/qwen3.7-plus.toml @@ -4,6 +4,11 @@ structured_output = true [[reasoning_options]] type = "toggle" +[[reasoning_options]] +type = "budget_tokens" +min = 1 +max = 262_144 + [cost] input = 0.32 output = 1.28 diff --git a/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml b/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml index 9739fdae333..1df51cca979 100644 --- a/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml +++ b/providers/openrouter/models/tencent/hunyuan-a13b-instruct.toml @@ -1,3 +1,4 @@ +reasoning_options = [] name = "Hunyuan A13B Instruct" description = "Tencent Hy reasoning model for coding, instruction following, and agent tasks" family = "hunyuan" @@ -11,9 +12,6 @@ structured_output = true knowledge = "2025-03-31" open_weights = true -[[reasoning_options]] -type = "toggle" - [cost] input = 0.14 output = 0.57 diff --git a/providers/openrouter/models/upstage/solar-pro-3.toml b/providers/openrouter/models/upstage/solar-pro-3.toml index 32b63db3fee..491e3b650bb 100644 --- a/providers/openrouter/models/upstage/solar-pro-3.toml +++ b/providers/openrouter/models/upstage/solar-pro-3.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.15 diff --git a/providers/openrouter/models/upstage/solar-pro4.toml b/providers/openrouter/models/upstage/solar-pro4.toml index 1b23f4dbe89..668c1cd157e 100644 --- a/providers/openrouter/models/upstage/solar-pro4.toml +++ b/providers/openrouter/models/upstage/solar-pro4.toml @@ -9,9 +9,7 @@ temperature = true tool_call = true structured_output = true open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.03 diff --git a/providers/openrouter/models/x-ai/grok-4.20.toml b/providers/openrouter/models/x-ai/grok-4.20.toml index e9c4b20a290..17547cea08f 100644 --- a/providers/openrouter/models/x-ai/grok-4.20.toml +++ b/providers/openrouter/models/x-ai/grok-4.20.toml @@ -10,9 +10,7 @@ tool_call = true structured_output = true knowledge = "2025-09-01" open_weights = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 1.25 diff --git a/providers/openrouter/models/z-ai/glm-4.6.toml b/providers/openrouter/models/z-ai/glm-4.6.toml index 94cade86b76..cae4e80102b 100644 --- a/providers/openrouter/models/z-ai/glm-4.6.toml +++ b/providers/openrouter/models/z-ai/glm-4.6.toml @@ -1,8 +1,6 @@ base_model = "zhipuai/glm-4.6" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.5 diff --git a/providers/openrouter/models/z-ai/glm-4.6v.toml b/providers/openrouter/models/z-ai/glm-4.6v.toml index e806c687ad6..f52538d7580 100644 --- a/providers/openrouter/models/z-ai/glm-4.6v.toml +++ b/providers/openrouter/models/z-ai/glm-4.6v.toml @@ -1,8 +1,6 @@ base_model = "zhipuai/glm-4.6v" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.3 diff --git a/providers/openrouter/models/z-ai/glm-4.7-flash.toml b/providers/openrouter/models/z-ai/glm-4.7-flash.toml index 108406ccb75..378e86c424d 100644 --- a/providers/openrouter/models/z-ai/glm-4.7-flash.toml +++ b/providers/openrouter/models/z-ai/glm-4.7-flash.toml @@ -1,12 +1,10 @@ base_model = "zhipuai/glm-4.7-flash" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.06 output = 0.4 diff --git a/providers/openrouter/models/z-ai/glm-4.7.toml b/providers/openrouter/models/z-ai/glm-4.7.toml index 315bba9534e..5055d1b819a 100644 --- a/providers/openrouter/models/z-ai/glm-4.7.toml +++ b/providers/openrouter/models/z-ai/glm-4.7.toml @@ -1,12 +1,10 @@ base_model = "zhipuai/glm-4.7" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.4 output = 1.75 diff --git a/providers/openrouter/models/z-ai/glm-5-turbo.toml b/providers/openrouter/models/z-ai/glm-5-turbo.toml index 4dea992cd77..beeb3705236 100644 --- a/providers/openrouter/models/z-ai/glm-5-turbo.toml +++ b/providers/openrouter/models/z-ai/glm-5-turbo.toml @@ -1,12 +1,10 @@ base_model = "zhipuai/glm-5-turbo" structured_output = false +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 1.2 output = 4 diff --git a/providers/openrouter/models/z-ai/glm-5.1.toml b/providers/openrouter/models/z-ai/glm-5.1.toml index 6619e0a3298..fd71dbe4a82 100644 --- a/providers/openrouter/models/z-ai/glm-5.1.toml +++ b/providers/openrouter/models/z-ai/glm-5.1.toml @@ -1,11 +1,9 @@ base_model = "zhipuai/glm-5.1" +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.966 output = 3.036 diff --git a/providers/openrouter/models/z-ai/glm-5.toml b/providers/openrouter/models/z-ai/glm-5.toml index ac9c62e8c1a..c7ad523fd4a 100644 --- a/providers/openrouter/models/z-ai/glm-5.toml +++ b/providers/openrouter/models/z-ai/glm-5.toml @@ -1,12 +1,10 @@ base_model = "zhipuai/glm-5" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.6 output = 1.92 diff --git a/providers/openrouter/models/z-ai/glm-5v-turbo.toml b/providers/openrouter/models/z-ai/glm-5v-turbo.toml index c61f2c03fcd..94f84f0e662 100644 --- a/providers/openrouter/models/z-ai/glm-5v-turbo.toml +++ b/providers/openrouter/models/z-ai/glm-5v-turbo.toml @@ -1,9 +1,7 @@ base_model = "zhipuai/glm-5v-turbo" +reasoning_options = [] structured_output = false -[[reasoning_options]] -type = "toggle" - [cost] input = 1.2 output = 4 diff --git a/providers/openrouter/models/~anthropic/claude-haiku-latest.toml b/providers/openrouter/models/~anthropic/claude-haiku-latest.toml index f5914aa549d..85dc865f562 100644 --- a/providers/openrouter/models/~anthropic/claude-haiku-latest.toml +++ b/providers/openrouter/models/~anthropic/claude-haiku-latest.toml @@ -1,3 +1,4 @@ +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", min = 1024, max = 63999 }] name = "Anthropic Claude Haiku Latest" description = "Fast Claude model for responsive assistance, classification, and lightweight agents" family = "claude-haiku" @@ -10,9 +11,6 @@ tool_call = true structured_output = true open_weights = false -[[reasoning_options]] -type = "toggle" - [cost] input = 1 output = 5 From d41c486fc3357bb6670557988ccc9b2ac3f9065e Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 11:27:29 +0700 Subject: [PATCH 08/12] Drop the Maxlayer sync module from this pull request Leaves the model files as authored TOMLs, which is the shape a provider addition takes here, and confines the change to `providers/maxlayer/`. The module and its registration are worth having and are kept in this branch's history at 335ce010 if we want them in a follow-up. They are removed here because a sync module carries a reproducibility contract -- running it must reproduce the committed files -- and honouring that for 13 reasoning models needs a fix in a provider this PR should not touch. Authored files make the same 13 an ordinary claim about the host's API, reviewable on its own terms. Co-Authored-By: Claude Opus 5 (1M context) --- packages/core/src/sync/index.ts | 4 - packages/core/src/sync/providers/maxlayer.ts | 244 ------------------- sync.md | 1 - 3 files changed, 249 deletions(-) delete mode 100644 packages/core/src/sync/providers/maxlayer.ts diff --git a/packages/core/src/sync/index.ts b/packages/core/src/sync/index.ts index 8702e43937d..6a72c914858 100644 --- a/packages/core/src/sync/index.ts +++ b/packages/core/src/sync/index.ts @@ -22,7 +22,6 @@ import { huggingface } from "./providers/huggingface.js"; import { inceptron } from "./providers/inceptron.js"; import { kilo } from "./providers/kilo.js"; import { llmgateway, llmgatewayProviders } from "./providers/llmgateway.js"; -import { maxlayer } from "./providers/maxlayer.js"; import { mergeGateway } from "./providers/merge-gateway.js"; import { nanoGpt } from "./providers/nano-gpt.js"; import { openai } from "./providers/openai.js"; @@ -143,7 +142,6 @@ export const providers: { kilo: SyncProvider; llmgateway: SyncProvider; "llmgateway-providers": SyncProvider; - maxlayer: SyncProvider; "merge-gateway": SyncProvider; "nano-gpt": SyncProvider; ofox: SyncProvider; @@ -176,7 +174,6 @@ export const providers: { kilo, llmgateway, "llmgateway-providers": llmgatewayProviders, - maxlayer, "merge-gateway": mergeGateway, "nano-gpt": nanoGpt, ofox, @@ -202,7 +199,6 @@ export const groups = { "kilo", "llmgateway", "llmgateway-providers", - "maxlayer", "merge-gateway", "nano-gpt", "ofox", diff --git a/packages/core/src/sync/providers/maxlayer.ts b/packages/core/src/sync/providers/maxlayer.ts deleted file mode 100644 index e2f1207e5e7..00000000000 --- a/packages/core/src/sync/providers/maxlayer.ts +++ /dev/null @@ -1,244 +0,0 @@ -import { z } from "zod"; -import { existsSync, readFileSync } from "node:fs"; -import path from "node:path"; - -import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js"; -import { factorBaseModel, resolveCanonicalBaseModel } from "./openrouter.js"; - -const API_ENDPOINT = "https://inference.maxlayer.cloud/v1/models"; -const ROOT = path.join(import.meta.dirname, "..", "..", "..", "..", ".."); -const MODELS_DIR = path.join(ROOT, "models"); -const OPENROUTER_MODELS_DIR = path.join(ROOT, "providers", "openrouter", "models"); - -const Pricing = z - .object({ - currency: z.string(), - input_per_million_tokens: z.string().nullable().optional(), - output_per_million_tokens: z.string().nullable().optional(), - cached_input_per_million_tokens: z.string().nullable().optional(), - cache_write_per_million_tokens: z.string().nullable().optional(), - }) - .passthrough(); - -export const MaxlayerModel = z - .object({ - id: z.string().min(1), - name: z.string().optional(), - category: z.string(), - billing_mode: z.string(), - context_window: z.number().nullable().optional(), - max_output_tokens: z.number().nullable().optional(), - pricing: Pricing.optional(), - }) - .passthrough(); - -export const MaxlayerResponse = z - .object({ - data: z.array(MaxlayerModel), - }) - .passthrough(); - -export type MaxlayerModel = z.infer; - -/** - * Maxlayer is an OpenRouter-fronted gateway. It routes every request to - * OpenRouter and keeps OpenRouter's `publisher/model` IDs verbatim, so - * `resolveCanonicalBaseModel` maps a Maxlayer ID onto the same canonical - * metadata file the OpenRouter sync uses, and the sibling OpenRouter provider - * TOML describes the same wire surface a Maxlayer request reaches. - * - * That inheritance is doing real work, because `GET /v1/models` here publishes - * almost nothing about what a model *is*: one `category` string, and a - * `capabilities` array that is empty on every synced row. There is no - * `supported_parameters`, no modality list, no reasoning metadata. A model with - * no canonical match is therefore skipped rather than authored from guesses. - * - * What this sync is authoritative for is price. Maxlayer's published rate is - * the sell price — upstream's rate plus the credit fee and the platform markup, - * derived on every read — so `pricing.input_per_million_tokens` is what a - * customer is billed and is written to `[cost]` verbatim. The sibling - * `base_*_per_million_tokens` fields carry upstream's own rate for display - * only, and are deliberately not read here: quoting those would undercharge - * every model on the list. - */ -export const maxlayer = { - id: "maxlayer", - name: "Maxlayer", - modelsDir: "providers/maxlayer/models", - trackMissingModels: true, - deleteMissing: false, - sourceID(model) { - // Only rate-carded text models are catalog targets, so only those are worth - // reporting when they are skipped. `upstream_cost` models (image, video, - // multimodal embeddings) bill what the request actually cost and publish no - // rate card at all, and plain embedding models are not in scope for this - // provider yet — neither is a gap anyone should open an issue about. - return isCatalogTarget(model) ? model.id : undefined; - }, - skippedNotice(ids) { - return ids.map( - (id) => - `Maxlayer lists ${id} but no canonical model metadata matches it; ` + - `add models//.toml before it can be synced.`, - ); - }, - missingNotice(paths) { - return paths.map( - (file) => `Maxlayer no longer lists ${file}; review for manual deprecation or removal.`, - ); - }, - async fetchModels() { - const response = await fetch(API_ENDPOINT); - if (!response.ok) { - throw new Error(`Maxlayer request failed: ${response.status} ${response.statusText}`); - } - return response.json(); - }, - parseModels(raw) { - return MaxlayerResponse.parse(raw).data; - }, - translateModel(model, context) { - if (!isCatalogTarget(model)) return undefined; - - const existing = context.existing(model.id); - const canonical = existing?.base_model ?? resolveCanonicalBaseModel(model.id); - if (canonical === undefined) return undefined; - - const translated = buildMaxlayerModel(model, canonical, existing); - return { - id: model.id, - model: translated, - header: toggleHeader(translated), - }; - }, -} satisfies SyncProvider; - -function isCatalogTarget(model: MaxlayerModel) { - return model.billing_mode === "token" && model.category === "text"; -} - -// Every toggle needs the wire path on the file, and sync keeps only a leading -// block. Just the fields: what a caller sends is the catalog's business, where -// the request goes after that is not. A hand-written header on an existing file -// always wins over this. -const TOGGLE_HEADER = `# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) -`; - -function toggleHeader(model: SyncedModel) { - return model.reasoning_options?.some((option) => option.type === "toggle") - ? TOGGLE_HEADER - : undefined; -} - -/** - * Rates arrive as decimal strings already denominated per million tokens, which - * is the unit `[cost]` wants — unlike the per-token strings most gateway APIs - * return. Null is meaningful and distinct from zero: it means the model - * publishes no rate on that axis, so the field is left off rather than written - * as free. - */ -function price(value: string | null | undefined) { - if (value === null || value === undefined) return undefined; - const number = Number(value); - if (!Number.isFinite(number) || number < 0) return undefined; - return Math.round(number * 1_000_000) / 1_000_000; -} - -interface SiblingCuration { - reasoning_options?: SyncedFullModel["reasoning_options"]; - interleaved?: SyncedFullModel["interleaved"]; - output?: number; -} - -const siblingCurationByID = new Map(); -const canonicalOutputLimitByID = new Map(); - -/** - * Reasoning controls and the reasoning side-channel come from the OpenRouter - * provider file for the same ID. Maxlayer forwards the request body to - * OpenRouter unchanged, so the controls a caller sends are OpenRouter's, - * model-for-model — and `reasoning_options` is required on any resolved - * provider model whose base declares `reasoning = true`, which nothing in - * Maxlayer's own response could supply. - */ -function siblingCuration(modelID: string): SiblingCuration { - let curation = siblingCurationByID.get(modelID); - if (curation === undefined) { - const filePath = path.join(OPENROUTER_MODELS_DIR, `${modelID}.toml`); - const authored = existsSync(filePath) - ? (Bun.TOML.parse(readFileSync(filePath, "utf8")) as SiblingCuration & { - limit?: { output?: number }; - }) - : undefined; - curation = { - reasoning_options: authored?.reasoning_options?.length - ? authored.reasoning_options - : undefined, - interleaved: authored?.interleaved, - output: authored?.limit?.output, - }; - siblingCurationByID.set(modelID, curation); - } - return curation; -} - -/** - * Whether the canonical metadata declares `limit.output`. Providers must - * resolve both `limit.context` and `limit.output`, and 60-odd Maxlayer rows - * publish a null `max_output_tokens`, so those need an inherited value to - * exist before the file can validate. - */ -function canonicalOutputLimit(modelID: string) { - if (!canonicalOutputLimitByID.has(modelID)) { - const filePath = path.join(MODELS_DIR, `${modelID}.toml`); - const metadata = existsSync(filePath) - ? (Bun.TOML.parse(readFileSync(filePath, "utf8")) as { limit?: { output?: number } }) - : undefined; - canonicalOutputLimitByID.set(modelID, metadata?.limit?.output); - } - return canonicalOutputLimitByID.get(modelID); -} - -export function buildMaxlayerModel( - model: MaxlayerModel, - canonical: string, - existing: ExistingModel | undefined, -): SyncedModel { - const sibling = siblingCuration(model.id); - const input = price(model.pricing?.input_per_million_tokens); - const output = price(model.pricing?.output_per_million_tokens); - - const limit = { - context: model.context_window ?? undefined, - // Fall back to the sibling OpenRouter file only when the canonical metadata - // has no output limit to inherit; when it does, `factorBaseModel` drops a - // restated value and the file stays override-only. - output: - model.max_output_tokens ?? - (canonicalOutputLimit(canonical) === undefined ? sibling.output : undefined), - }; - - return factorBaseModel( - canonical, - { - cost: { - input: input ?? 0, - output: output ?? 0, - cache_read: price(model.pricing?.cached_input_per_million_tokens), - cache_write: price(model.pricing?.cache_write_per_million_tokens), - }, - limit, - // An empty array is what the runner backfills when nothing supplied - // controls, not something anyone authored, so it must not outrank a - // sibling that has since learned the real ones. - reasoning_options: existing?.reasoning_options?.length - ? existing.reasoning_options - : sibling.reasoning_options, - interleaved: existing?.interleaved ?? sibling.interleaved, - }, - limit, - existing?.base_model === canonical ? existing.base_model_omit : undefined, - ); -} diff --git a/sync.md b/sync.md index 6f9acd6ded2..8e11926ea23 100644 --- a/sync.md +++ b/sync.md @@ -17,7 +17,6 @@ The grouped sync targets are available for local convenience, but CI syncs each - `bun models:sync digitalocean` syncs only DigitalOcean. - `bun models:sync xai` syncs only xAI. - `bun models:sync kilo` syncs only Kilo. -- `bun models:sync maxlayer` syncs only Maxlayer. - `bun models:sync merge-gateway` syncs only Merge Gateway. - `bun models:sync openai` syncs only OpenAI catalog availability. - `bun models:sync tinfoil` syncs only Tinfoil. From 046e0b0381e4665baba39eac82668db0a31eae11 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 11:38:30 +0700 Subject: [PATCH 09/12] fix(maxlayer): correct three reasoning surfaces `qwen/qwen-plus` and `minimax/minimax-m2-her` inherited `reasoning = true` from their lab entries and carried `reasoning_options = []`, so each resolved to a reasoner with no controls. Neither route reasons: the host catalogue publishes no reasoning parameters for them, and the OpenRouter, Kilo and nano-gpt entries for the same IDs all set `reasoning = false`. Now they do too, with no options. `openai/o1-pro` had a toggle. Its control is graded effort -- OpenAI first-party, poe, cloudflare-ai-gateway and edenai all author `["low", "medium", "high"]`, and no entry anywhere uses a toggle for it. Replaced, and the wire header went with it since there is no longer a toggle to document. Checked the rest of the class rather than only these: of 31 toggle-only files, 30 have `toggle` as a leading shape among peers serving the same base model, and o1-pro was the only outlier. Of the 13 files with empty options, 11 have `[]` as the dominant peer shape and are models the host catalogue marks reasoning-mandatory, where there is genuinely nothing to switch. Co-Authored-By: Claude Opus 5 (1M context) --- providers/maxlayer/models/minimax/minimax-m2-her.toml | 2 +- providers/maxlayer/models/openai/o1-pro.toml | 6 ++---- providers/maxlayer/models/qwen/qwen-plus.toml | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/providers/maxlayer/models/minimax/minimax-m2-her.toml b/providers/maxlayer/models/minimax/minimax-m2-her.toml index 8dd96516e46..7fb0fd072fa 100644 --- a/providers/maxlayer/models/minimax/minimax-m2-her.toml +++ b/providers/maxlayer/models/minimax/minimax-m2-her.toml @@ -1,5 +1,5 @@ base_model = "minimax/MiniMax-M2-Her" -reasoning_options = [] +reasoning = false [cost] input = 0.34182 diff --git a/providers/maxlayer/models/openai/o1-pro.toml b/providers/maxlayer/models/openai/o1-pro.toml index 76f7c01b4d0..41ec7f6d72e 100644 --- a/providers/maxlayer/models/openai/o1-pro.toml +++ b/providers/maxlayer/models/openai/o1-pro.toml @@ -1,10 +1,8 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "openai/o1-pro" [[reasoning_options]] -type = "toggle" +type = "effort" +values = ["low", "medium", "high"] [cost] input = 170.91 diff --git a/providers/maxlayer/models/qwen/qwen-plus.toml b/providers/maxlayer/models/qwen/qwen-plus.toml index 6d0bdac4765..cb48804f292 100644 --- a/providers/maxlayer/models/qwen/qwen-plus.toml +++ b/providers/maxlayer/models/qwen/qwen-plus.toml @@ -1,5 +1,5 @@ base_model = "alibaba/qwen-plus" -reasoning_options = [] +reasoning = false [cost] input = 0.296244 From 2a1db3f69ec3e17705034dea6458a2a3432c931e Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 13:05:09 +0700 Subject: [PATCH 10/12] fix(maxlayer): author the capability deltas this host actually serves The model files overrode cost, limits and reasoning and nothing else, so every capability the host narrows was silently inherited from the lab entry. A consumer reading the catalog would have been told o1-pro takes tools, gpt-4 takes attachments, and MiniMax-M2-Her does structured output -- none of which is true on this host. Copies the real deltas for 112 files: structured_output on 76, modalities on 38, and name, temperature, tool_call and attachment on a handful each. Each value was taken only where it genuinely differs from the lab entry, so the files stay override-only; nothing restates a value the base already carries. `name` is in that set because six IDs are variant routes -- the `-fast` and `-pro` lanes -- whose lab entry is the unsuffixed model. Descriptions were left alone: they are editorial rather than a statement about what this host can do. Co-Authored-By: Claude Opus 5 (1M context) --- providers/maxlayer/models/anthropic/claude-fable-5.toml | 1 + providers/maxlayer/models/anthropic/claude-haiku-4.5.toml | 1 + providers/maxlayer/models/anthropic/claude-opus-4.1.toml | 1 + providers/maxlayer/models/anthropic/claude-opus-4.5.toml | 1 + providers/maxlayer/models/anthropic/claude-opus-4.6.toml | 1 + providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml | 2 ++ providers/maxlayer/models/anthropic/claude-opus-4.7.toml | 1 + providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml | 2 ++ providers/maxlayer/models/anthropic/claude-opus-4.8.toml | 2 ++ providers/maxlayer/models/anthropic/claude-opus-5-fast.toml | 2 ++ providers/maxlayer/models/anthropic/claude-opus-5.toml | 2 ++ providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml | 1 + providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml | 1 + providers/maxlayer/models/anthropic/claude-sonnet-5.toml | 1 + providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml | 1 + providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml | 1 + providers/maxlayer/models/cohere/command-r-08-2024.toml | 1 + providers/maxlayer/models/cohere/command-r-plus-08-2024.toml | 1 + providers/maxlayer/models/cohere/command-r7b-12-2024.toml | 2 ++ providers/maxlayer/models/deepseek/deepseek-chat.toml | 2 ++ providers/maxlayer/models/deepseek/deepseek-r1.toml | 1 + providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml | 3 +++ providers/maxlayer/models/google/gemma-4-31b-it.toml | 3 +++ .../maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml | 1 + .../maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml | 2 ++ providers/maxlayer/models/meta/muse-spark-1.1.toml | 3 +++ providers/maxlayer/models/minimax/minimax-m2-her.toml | 2 ++ providers/maxlayer/models/minimax/minimax-m2.1.toml | 1 + providers/maxlayer/models/minimax/minimax-m2.5.toml | 1 + providers/maxlayer/models/minimax/minimax-m2.7.toml | 1 + providers/maxlayer/models/minimax/minimax-m2.toml | 1 + providers/maxlayer/models/minimax/minimax-m3.toml | 1 + providers/maxlayer/models/mistralai/mistral-large-2512.toml | 4 ++++ providers/maxlayer/models/mistralai/mistral-nemo.toml | 1 + providers/maxlayer/models/mistralai/mistral-small-2603.toml | 1 + providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml | 1 + providers/maxlayer/models/moonshotai/kimi-k2.5.toml | 4 ++++ providers/maxlayer/models/moonshotai/kimi-k2.6.toml | 3 +++ providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml | 4 ++++ providers/maxlayer/models/moonshotai/kimi-k3.toml | 1 + providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml | 1 + .../maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml | 1 + .../maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml | 1 + providers/maxlayer/models/openai/gpt-3.5-turbo.toml | 2 ++ providers/maxlayer/models/openai/gpt-4-turbo.toml | 1 + providers/maxlayer/models/openai/gpt-4.1-nano.toml | 3 +++ providers/maxlayer/models/openai/gpt-4.toml | 2 ++ providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml | 3 +++ providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml | 3 +++ providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml | 3 +++ providers/maxlayer/models/openai/gpt-5-mini.toml | 3 +++ providers/maxlayer/models/openai/gpt-5-nano.toml | 3 +++ providers/maxlayer/models/openai/gpt-5-pro.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.1.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.2-codex.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.2-pro.toml | 4 ++++ providers/maxlayer/models/openai/gpt-5.2.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.4-mini.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.4-nano.toml | 3 +++ providers/maxlayer/models/openai/gpt-5.4-pro.toml | 4 ++++ providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml | 1 + providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml | 1 + providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml | 1 + providers/maxlayer/models/openai/gpt-5.toml | 3 +++ providers/maxlayer/models/openai/o1-pro.toml | 4 ++++ providers/maxlayer/models/openai/o3-mini.toml | 4 ++++ providers/maxlayer/models/openai/o3-pro.toml | 3 +++ providers/maxlayer/models/openai/o4-mini.toml | 3 +++ providers/maxlayer/models/qwen/qwen-plus.toml | 1 + providers/maxlayer/models/qwen/qwen3-235b-a22b.toml | 1 + providers/maxlayer/models/qwen/qwen3-30b-a3b.toml | 1 + providers/maxlayer/models/qwen/qwen3-32b.toml | 1 + .../maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml | 1 + providers/maxlayer/models/qwen/qwen3-coder-flash.toml | 1 + providers/maxlayer/models/qwen/qwen3-coder-plus.toml | 1 + providers/maxlayer/models/qwen/qwen3-max.toml | 1 + .../maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml | 1 + .../maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml | 1 + providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.5-27b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.6-27b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml | 3 +++ providers/maxlayer/models/qwen/qwen3.6-max-preview.toml | 1 + providers/maxlayer/models/qwen/qwen3.6-plus.toml | 1 + providers/maxlayer/models/qwen/qwen3.7-flash.toml | 1 + providers/maxlayer/models/qwen/qwen3.7-max.toml | 1 + providers/maxlayer/models/qwen/qwen3.7-plus.toml | 4 ++++ providers/maxlayer/models/qwen/qwen3.8-max.toml | 4 ++++ providers/maxlayer/models/sakana/sakana-namazu.toml | 1 + providers/maxlayer/models/stepfun/step-3.5-flash.toml | 1 + providers/maxlayer/models/stepfun/step-3.7-flash.toml | 1 + providers/maxlayer/models/tencent/hy3-preview.toml | 1 + providers/maxlayer/models/tencent/hy3.toml | 1 + providers/maxlayer/models/thinkingmachines/inkling-small.toml | 1 + providers/maxlayer/models/thinkingmachines/inkling.toml | 1 + providers/maxlayer/models/x-ai/grok-4.5.toml | 3 +++ providers/maxlayer/models/x-ai/grok-4.6.toml | 3 +++ providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml | 1 + providers/maxlayer/models/xiaomi/mimo-v2.5.toml | 1 + providers/maxlayer/models/z-ai/glm-4.5-air.toml | 1 + providers/maxlayer/models/z-ai/glm-4.5.toml | 1 + providers/maxlayer/models/z-ai/glm-4.5v.toml | 4 ++++ providers/maxlayer/models/z-ai/glm-4.6.toml | 1 + providers/maxlayer/models/z-ai/glm-4.6v.toml | 1 + providers/maxlayer/models/z-ai/glm-4.7-flash.toml | 1 + providers/maxlayer/models/z-ai/glm-4.7.toml | 1 + providers/maxlayer/models/z-ai/glm-5-turbo.toml | 1 + providers/maxlayer/models/z-ai/glm-5.3.toml | 1 + providers/maxlayer/models/z-ai/glm-5.toml | 1 + providers/maxlayer/models/z-ai/glm-5v-turbo.toml | 4 ++++ 112 files changed, 210 insertions(+) diff --git a/providers/maxlayer/models/anthropic/claude-fable-5.toml b/providers/maxlayer/models/anthropic/claude-fable-5.toml index f1be9027a75..cca06f6fc35 100644 --- a/providers/maxlayer/models/anthropic/claude-fable-5.toml +++ b/providers/maxlayer/models/anthropic/claude-fable-5.toml @@ -1,4 +1,5 @@ base_model = "anthropic/claude-fable-5" +structured_output = true [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml index ca84a5426c9..1e21c695073 100644 --- a/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-haiku-4.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-haiku-4-5" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml index cabe1483641..2d2155c8545 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.1.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.1.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-1" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml index 6d12e93f56a..a08fd9c08b0 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-5" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml index d2fc870f1d6..cc09548d690 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.6.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-6" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml index 2a84553b2ac..e92afa2b4a5 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7-fast.toml @@ -2,6 +2,8 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-7" +name = "Claude Opus 4.7 (Fast)" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml index 7fec9d401c2..3bca5eede3c 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.7.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.7.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-7" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml index 24258177cdd..4da3b33b5a6 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8-fast.toml @@ -2,6 +2,8 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-8" +name = "Claude Opus 4.8 (Fast)" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml index 1a264d5ba77..fa63917a08e 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-4.8.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-4.8.toml @@ -2,6 +2,8 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-4-8" +temperature = true +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml index 4531991bb50..85672524540 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5-fast.toml @@ -2,6 +2,8 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-5" +name = "Claude Opus 5 (Fast)" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-opus-5.toml b/providers/maxlayer/models/anthropic/claude-opus-5.toml index 0a78e3de4ba..27a148b8464 100644 --- a/providers/maxlayer/models/anthropic/claude-opus-5.toml +++ b/providers/maxlayer/models/anthropic/claude-opus-5.toml @@ -2,6 +2,8 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-opus-5" +temperature = true +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml index ee0e5e464a0..d95b5fdb622 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-sonnet-4-5" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml index 1db637cb31e..4e3c6e50311 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-4.6.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-sonnet-4-6" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml index f4b213ae9bd..bb4143425fc 100644 --- a/providers/maxlayer/models/anthropic/claude-sonnet-5.toml +++ b/providers/maxlayer/models/anthropic/claude-sonnet-5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "anthropic/claude-sonnet-5" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml index 08232296a16..9da9ccd698d 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-lite.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "bytedance-seed/seed-2.0-lite" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml index 38f25bba372..c2728c614ec 100644 --- a/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml +++ b/providers/maxlayer/models/bytedance-seed/seed-2.0-mini.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "bytedance-seed/seed-2.0-mini" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/cohere/command-r-08-2024.toml b/providers/maxlayer/models/cohere/command-r-08-2024.toml index 0ccdf97e0f5..0d7491377d2 100644 --- a/providers/maxlayer/models/cohere/command-r-08-2024.toml +++ b/providers/maxlayer/models/cohere/command-r-08-2024.toml @@ -1,4 +1,5 @@ base_model = "cohere/command-r-08-2024" +structured_output = true [cost] input = 0.17091 diff --git a/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml b/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml index 9bc2222e24e..b57cc0e737a 100644 --- a/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml +++ b/providers/maxlayer/models/cohere/command-r-plus-08-2024.toml @@ -1,4 +1,5 @@ base_model = "cohere/command-r-plus-08-2024" +structured_output = true [cost] input = 2.8485 diff --git a/providers/maxlayer/models/cohere/command-r7b-12-2024.toml b/providers/maxlayer/models/cohere/command-r7b-12-2024.toml index 9dfc6b6dc11..9fcaa865746 100644 --- a/providers/maxlayer/models/cohere/command-r7b-12-2024.toml +++ b/providers/maxlayer/models/cohere/command-r7b-12-2024.toml @@ -1,4 +1,6 @@ base_model = "cohere/command-r7b-12-2024" +tool_call = false +structured_output = true [cost] input = 0.042729 diff --git a/providers/maxlayer/models/deepseek/deepseek-chat.toml b/providers/maxlayer/models/deepseek/deepseek-chat.toml index d13c487c21d..007d73e117e 100644 --- a/providers/maxlayer/models/deepseek/deepseek-chat.toml +++ b/providers/maxlayer/models/deepseek/deepseek-chat.toml @@ -1,4 +1,6 @@ base_model = "deepseek/deepseek-chat" +attachment = false +structured_output = true [cost] input = 0.293282 diff --git a/providers/maxlayer/models/deepseek/deepseek-r1.toml b/providers/maxlayer/models/deepseek/deepseek-r1.toml index 81998105afb..60e623c7a9f 100644 --- a/providers/maxlayer/models/deepseek/deepseek-r1.toml +++ b/providers/maxlayer/models/deepseek/deepseek-r1.toml @@ -1,4 +1,5 @@ base_model = "deepseek/deepseek-r1" +structured_output = true reasoning_options = [] [cost] diff --git a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml index fcbfb776278..0f780bc43df 100644 --- a/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-26b-a4b-it.toml @@ -12,3 +12,6 @@ output = 0.387396 [limit] output = 16_384 + +[modalities] +input = ["image", "text", "video"] diff --git a/providers/maxlayer/models/google/gemma-4-31b-it.toml b/providers/maxlayer/models/google/gemma-4-31b-it.toml index 4e77ce476d3..ed4325ea36c 100644 --- a/providers/maxlayer/models/google/gemma-4-31b-it.toml +++ b/providers/maxlayer/models/google/gemma-4-31b-it.toml @@ -12,3 +12,6 @@ output = 0.387396 [limit] output = 262_144 + +[modalities] +input = ["image", "text", "video"] diff --git a/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml b/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml index 270989ee8ed..1f9f42a8804 100644 --- a/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml +++ b/providers/maxlayer/models/meta-llama/llama-3.1-8b-instruct.toml @@ -1,4 +1,5 @@ base_model = "meta/llama-3.1-8b-instruct" +structured_output = true [cost] input = 0.05697 diff --git a/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml b/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml index 4e48b5c9fcd..fc969b8ec16 100644 --- a/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml +++ b/providers/maxlayer/models/meta-llama/llama-3.3-70b-instruct.toml @@ -1,4 +1,6 @@ base_model = "meta/llama-3.3-70b-instruct" +attachment = false +structured_output = true [cost] input = 0.11394 diff --git a/providers/maxlayer/models/meta/muse-spark-1.1.toml b/providers/maxlayer/models/meta/muse-spark-1.1.toml index 99d72975664..cf2290959f6 100644 --- a/providers/maxlayer/models/meta/muse-spark-1.1.toml +++ b/providers/maxlayer/models/meta/muse-spark-1.1.toml @@ -11,3 +11,6 @@ cache_read = 0.17091 [limit] context = 1_048_576 + +[modalities] +input = ["text", "image", "video", "pdf", "audio"] diff --git a/providers/maxlayer/models/minimax/minimax-m2-her.toml b/providers/maxlayer/models/minimax/minimax-m2-her.toml index 7fb0fd072fa..82fd119d20e 100644 --- a/providers/maxlayer/models/minimax/minimax-m2-her.toml +++ b/providers/maxlayer/models/minimax/minimax-m2-her.toml @@ -1,5 +1,7 @@ base_model = "minimax/MiniMax-M2-Her" reasoning = false +tool_call = false +structured_output = false [cost] input = 0.34182 diff --git a/providers/maxlayer/models/minimax/minimax-m2.1.toml b/providers/maxlayer/models/minimax/minimax-m2.1.toml index 8fc18a88780..a6e7c5bbcad 100644 --- a/providers/maxlayer/models/minimax/minimax-m2.1.toml +++ b/providers/maxlayer/models/minimax/minimax-m2.1.toml @@ -1,4 +1,5 @@ base_model = "minimax/MiniMax-M2.1" +structured_output = false reasoning_options = [] [interleaved] diff --git a/providers/maxlayer/models/minimax/minimax-m2.5.toml b/providers/maxlayer/models/minimax/minimax-m2.5.toml index 754b224b261..2692b375e70 100644 --- a/providers/maxlayer/models/minimax/minimax-m2.5.toml +++ b/providers/maxlayer/models/minimax/minimax-m2.5.toml @@ -1,4 +1,5 @@ base_model = "minimax/MiniMax-M2.5" +structured_output = true reasoning_options = [] [interleaved] diff --git a/providers/maxlayer/models/minimax/minimax-m2.7.toml b/providers/maxlayer/models/minimax/minimax-m2.7.toml index 86da72b6161..aa2baad8517 100644 --- a/providers/maxlayer/models/minimax/minimax-m2.7.toml +++ b/providers/maxlayer/models/minimax/minimax-m2.7.toml @@ -1,4 +1,5 @@ base_model = "minimax/MiniMax-M2.7" +structured_output = true reasoning_options = [] [cost] diff --git a/providers/maxlayer/models/minimax/minimax-m2.toml b/providers/maxlayer/models/minimax/minimax-m2.toml index ed9988d5435..612e18b13d1 100644 --- a/providers/maxlayer/models/minimax/minimax-m2.toml +++ b/providers/maxlayer/models/minimax/minimax-m2.toml @@ -1,4 +1,5 @@ base_model = "minimax/MiniMax-M2" +structured_output = true reasoning_options = [] [interleaved] diff --git a/providers/maxlayer/models/minimax/minimax-m3.toml b/providers/maxlayer/models/minimax/minimax-m3.toml index a429a91b361..97b0f3d180f 100644 --- a/providers/maxlayer/models/minimax/minimax-m3.toml +++ b/providers/maxlayer/models/minimax/minimax-m3.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "minimax/MiniMax-M3" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/mistralai/mistral-large-2512.toml b/providers/maxlayer/models/mistralai/mistral-large-2512.toml index d0aaadaa7a8..206a0180189 100644 --- a/providers/maxlayer/models/mistralai/mistral-large-2512.toml +++ b/providers/maxlayer/models/mistralai/mistral-large-2512.toml @@ -1,6 +1,10 @@ base_model = "mistral/mistral-large-2512" +structured_output = true [cost] input = 0.5697 output = 1.7091 cache_read = 0.05697 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/mistralai/mistral-nemo.toml b/providers/maxlayer/models/mistralai/mistral-nemo.toml index deecaa1426f..bd7b643fc5f 100644 --- a/providers/maxlayer/models/mistralai/mistral-nemo.toml +++ b/providers/maxlayer/models/mistralai/mistral-nemo.toml @@ -1,4 +1,5 @@ base_model = "mistral/mistral-nemo" +structured_output = true [cost] input = 0.021649 diff --git a/providers/maxlayer/models/mistralai/mistral-small-2603.toml b/providers/maxlayer/models/mistralai/mistral-small-2603.toml index fe837521e1b..fdffecc57ac 100644 --- a/providers/maxlayer/models/mistralai/mistral-small-2603.toml +++ b/providers/maxlayer/models/mistralai/mistral-small-2603.toml @@ -1,4 +1,5 @@ base_model = "mistral/mistral-small-2603" +structured_output = true [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml b/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml index 904fb3993e3..bcf9a07e85d 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2-thinking.toml @@ -1,4 +1,5 @@ base_model = "moonshotai/kimi-k2-thinking" +structured_output = true reasoning_options = [] [interleaved] diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml index 8d3ed4407a5..6ff429951d0 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k2.5" +temperature = true [interleaved] field = "reasoning_details" @@ -13,3 +14,6 @@ type = "toggle" input = 0.51273 output = 2.56365 cache_read = 0.079758 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml index f1c6fb634c5..c9ffb731392 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml @@ -13,3 +13,6 @@ type = "toggle" input = 1.08243 output = 4.5576 cache_read = 0.182304 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml index a0b748cadf0..0dbecb7f548 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.7-code.toml @@ -1,7 +1,11 @@ base_model = "moonshotai/kimi-k2.7-code" +temperature = true reasoning_options = [] [cost] input = 0.763398 output = 3.87396 cache_read = 0.193698 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/moonshotai/kimi-k3.toml b/providers/maxlayer/models/moonshotai/kimi-k3.toml index fadca0e1a03..a5dd827e86b 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k3.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k3.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k3" +temperature = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml index 50e4be38486..da7d9a6b885 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "nvidia/nemotron-3-nano-30b-a3b" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml index 19b1e26bb46..4eac3b9a2e9 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-super-120b-a12b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "nvidia/nemotron-3-super-120b-a12b" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml index 06f7f85f042..10fe96b5dce 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "nvidia/nemotron-3-ultra-550b-a55b" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/openai/gpt-3.5-turbo.toml b/providers/maxlayer/models/openai/gpt-3.5-turbo.toml index 6d6438758ec..d1bfe66eb12 100644 --- a/providers/maxlayer/models/openai/gpt-3.5-turbo.toml +++ b/providers/maxlayer/models/openai/gpt-3.5-turbo.toml @@ -1,4 +1,6 @@ base_model = "openai/gpt-3.5-turbo" +tool_call = true +structured_output = true [cost] input = 0.5697 diff --git a/providers/maxlayer/models/openai/gpt-4-turbo.toml b/providers/maxlayer/models/openai/gpt-4-turbo.toml index 80de3236c0e..c2307bdc743 100644 --- a/providers/maxlayer/models/openai/gpt-4-turbo.toml +++ b/providers/maxlayer/models/openai/gpt-4-turbo.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-4-turbo" +structured_output = true [cost] input = 11.394 diff --git a/providers/maxlayer/models/openai/gpt-4.1-nano.toml b/providers/maxlayer/models/openai/gpt-4.1-nano.toml index 2277f6b28a1..c702fe4b6ed 100644 --- a/providers/maxlayer/models/openai/gpt-4.1-nano.toml +++ b/providers/maxlayer/models/openai/gpt-4.1-nano.toml @@ -4,3 +4,6 @@ base_model = "openai/gpt-4.1-nano" input = 0.11394 output = 0.45576 cache_read = 0.028485 + +[modalities] +input = ["image", "text", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-4.toml b/providers/maxlayer/models/openai/gpt-4.toml index 07557e8c3a3..9526da8b21c 100644 --- a/providers/maxlayer/models/openai/gpt-4.toml +++ b/providers/maxlayer/models/openai/gpt-4.toml @@ -1,4 +1,6 @@ base_model = "openai/gpt-4" +attachment = false +structured_output = true [cost] input = 34.182 diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml b/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml index 206d586fcf8..5be38122608 100644 --- a/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml +++ b/providers/maxlayer/models/openai/gpt-4o-2024-05-13.toml @@ -3,3 +3,6 @@ base_model = "openai/gpt-4o-2024-05-13" [cost] input = 5.697 output = 17.091 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml b/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml index eb2bc7a040f..387b4df5296 100644 --- a/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml +++ b/providers/maxlayer/models/openai/gpt-4o-2024-08-06.toml @@ -4,3 +4,6 @@ base_model = "openai/gpt-4o-2024-08-06" input = 2.8485 output = 11.394 cache_read = 1.42425 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml b/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml index be42ad8aff1..f38235558a6 100644 --- a/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml +++ b/providers/maxlayer/models/openai/gpt-4o-2024-11-20.toml @@ -4,3 +4,6 @@ base_model = "openai/gpt-4o-2024-11-20" input = 2.8485 output = 11.394 cache_read = 1.42425 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5-mini.toml b/providers/maxlayer/models/openai/gpt-5-mini.toml index 02ec1302119..b11b3ff627c 100644 --- a/providers/maxlayer/models/openai/gpt-5-mini.toml +++ b/providers/maxlayer/models/openai/gpt-5-mini.toml @@ -8,3 +8,6 @@ values = ["minimal", "low", "medium", "high"] input = 0.28485 output = 2.2788 cache_read = 0.028485 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5-nano.toml b/providers/maxlayer/models/openai/gpt-5-nano.toml index 727257b72eb..7ae06057bb8 100644 --- a/providers/maxlayer/models/openai/gpt-5-nano.toml +++ b/providers/maxlayer/models/openai/gpt-5-nano.toml @@ -8,3 +8,6 @@ values = ["minimal", "low", "medium", "high"] input = 0.05697 output = 0.45576 cache_read = 0.005697 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5-pro.toml b/providers/maxlayer/models/openai/gpt-5-pro.toml index 5ed25e48b44..cf9979854e1 100644 --- a/providers/maxlayer/models/openai/gpt-5-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5-pro.toml @@ -10,3 +10,6 @@ output = 136.728 [limit] output = 128_000 + +[modalities] +input = ["image", "text", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5.1.toml b/providers/maxlayer/models/openai/gpt-5.1.toml index 44951e75e64..81864feafdd 100644 --- a/providers/maxlayer/models/openai/gpt-5.1.toml +++ b/providers/maxlayer/models/openai/gpt-5.1.toml @@ -8,3 +8,6 @@ values = ["none", "low", "medium", "high"] input = 1.42425 output = 11.394 cache_read = 0.142425 + +[modalities] +input = ["image", "text", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5.2-codex.toml b/providers/maxlayer/models/openai/gpt-5.2-codex.toml index 40c79345766..e5621c60e12 100644 --- a/providers/maxlayer/models/openai/gpt-5.2-codex.toml +++ b/providers/maxlayer/models/openai/gpt-5.2-codex.toml @@ -8,3 +8,6 @@ values = ["low", "medium", "high", "xhigh"] input = 1.99395 output = 15.9516 cache_read = 0.199395 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/openai/gpt-5.2-pro.toml b/providers/maxlayer/models/openai/gpt-5.2-pro.toml index dfce24028e8..eb10ebeb052 100644 --- a/providers/maxlayer/models/openai/gpt-5.2-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5.2-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-5.2-pro" +structured_output = true [[reasoning_options]] type = "effort" @@ -7,3 +8,6 @@ values = ["medium", "high", "xhigh"] [cost] input = 23.9274 output = 191.4192 + +[modalities] +input = ["image", "text", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5.2.toml b/providers/maxlayer/models/openai/gpt-5.2.toml index 983413cffa7..689dfaedbcd 100644 --- a/providers/maxlayer/models/openai/gpt-5.2.toml +++ b/providers/maxlayer/models/openai/gpt-5.2.toml @@ -8,3 +8,6 @@ values = ["none", "low", "medium", "high", "xhigh"] input = 1.99395 output = 15.9516 cache_read = 0.199395 + +[modalities] +input = ["pdf", "image", "text"] diff --git a/providers/maxlayer/models/openai/gpt-5.4-mini.toml b/providers/maxlayer/models/openai/gpt-5.4-mini.toml index 9287a6f97e4..02dc10b860b 100644 --- a/providers/maxlayer/models/openai/gpt-5.4-mini.toml +++ b/providers/maxlayer/models/openai/gpt-5.4-mini.toml @@ -8,3 +8,6 @@ values = ["none", "low", "medium", "high", "xhigh"] input = 0.85455 output = 5.1273 cache_read = 0.085455 + +[modalities] +input = ["pdf", "image", "text"] diff --git a/providers/maxlayer/models/openai/gpt-5.4-nano.toml b/providers/maxlayer/models/openai/gpt-5.4-nano.toml index 7e05af3e172..ef6e56e8afd 100644 --- a/providers/maxlayer/models/openai/gpt-5.4-nano.toml +++ b/providers/maxlayer/models/openai/gpt-5.4-nano.toml @@ -8,3 +8,6 @@ values = ["none", "low", "medium", "high", "xhigh"] input = 0.22788 output = 1.42425 cache_read = 0.022788 + +[modalities] +input = ["pdf", "image", "text"] diff --git a/providers/maxlayer/models/openai/gpt-5.4-pro.toml b/providers/maxlayer/models/openai/gpt-5.4-pro.toml index bb26a663d2e..295687af04d 100644 --- a/providers/maxlayer/models/openai/gpt-5.4-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5.4-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-5.4-pro" +structured_output = true [[reasoning_options]] type = "effort" @@ -7,3 +8,6 @@ values = ["medium", "high", "xhigh"] [cost] input = 34.182 output = 205.092 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml index 72724392551..33f89407d99 100644 --- a/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5.6-luna-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-5.6-luna" +name = "GPT-5.6 Luna Pro" [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml index a2e4b448d62..7099a9c09fd 100644 --- a/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5.6-sol-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-5.6-sol" +name = "GPT-5.6 Sol Pro" [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml b/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml index d5d31289e7e..2cb4c3926ad 100644 --- a/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml +++ b/providers/maxlayer/models/openai/gpt-5.6-terra-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/gpt-5.6-terra" +name = "GPT-5.6 Terra Pro" [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/openai/gpt-5.toml b/providers/maxlayer/models/openai/gpt-5.toml index d4584e91ae5..1b03e11c1e1 100644 --- a/providers/maxlayer/models/openai/gpt-5.toml +++ b/providers/maxlayer/models/openai/gpt-5.toml @@ -8,3 +8,6 @@ values = ["minimal", "low", "medium", "high"] input = 1.42425 output = 11.394 cache_read = 0.142425 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/o1-pro.toml b/providers/maxlayer/models/openai/o1-pro.toml index 41ec7f6d72e..6d14a8c097b 100644 --- a/providers/maxlayer/models/openai/o1-pro.toml +++ b/providers/maxlayer/models/openai/o1-pro.toml @@ -1,4 +1,5 @@ base_model = "openai/o1-pro" +tool_call = false [[reasoning_options]] type = "effort" @@ -7,3 +8,6 @@ values = ["low", "medium", "high"] [cost] input = 170.91 output = 683.64 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/openai/o3-mini.toml b/providers/maxlayer/models/openai/o3-mini.toml index 3a42c9d18a1..f17f8bbcacd 100644 --- a/providers/maxlayer/models/openai/o3-mini.toml +++ b/providers/maxlayer/models/openai/o3-mini.toml @@ -1,4 +1,5 @@ base_model = "openai/o3-mini" +attachment = true [[reasoning_options]] type = "effort" @@ -8,3 +9,6 @@ values = ["low", "medium", "high"] input = 1.25334 output = 5.01336 cache_read = 0.62667 + +[modalities] +input = ["text", "pdf"] diff --git a/providers/maxlayer/models/openai/o3-pro.toml b/providers/maxlayer/models/openai/o3-pro.toml index 5970be939a4..b2752785ec8 100644 --- a/providers/maxlayer/models/openai/o3-pro.toml +++ b/providers/maxlayer/models/openai/o3-pro.toml @@ -7,3 +7,6 @@ values = ["low", "medium", "high"] [cost] input = 22.788 output = 91.152 + +[modalities] +input = ["text", "pdf", "image"] diff --git a/providers/maxlayer/models/openai/o4-mini.toml b/providers/maxlayer/models/openai/o4-mini.toml index ea45557a5be..c5264c71c88 100644 --- a/providers/maxlayer/models/openai/o4-mini.toml +++ b/providers/maxlayer/models/openai/o4-mini.toml @@ -8,3 +8,6 @@ values = ["low", "medium", "high"] input = 1.25334 output = 5.01336 cache_read = 0.313335 + +[modalities] +input = ["image", "text", "pdf"] diff --git a/providers/maxlayer/models/qwen/qwen-plus.toml b/providers/maxlayer/models/qwen/qwen-plus.toml index cb48804f292..09e438dcdbb 100644 --- a/providers/maxlayer/models/qwen/qwen-plus.toml +++ b/providers/maxlayer/models/qwen/qwen-plus.toml @@ -1,5 +1,6 @@ base_model = "alibaba/qwen-plus" reasoning = false +structured_output = true [cost] input = 0.296244 diff --git a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml index ddf7f9f238b..7ce74beb4c2 100644 --- a/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml +++ b/providers/maxlayer/models/qwen/qwen3-235b-a22b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3-235b-a22b" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml index c24e604ef7b..e1921aa5d78 100644 --- a/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3-30b-a3b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3-30b-a3b" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3-32b.toml b/providers/maxlayer/models/qwen/qwen3-32b.toml index 30d861066e4..7073995eaf6 100644 --- a/providers/maxlayer/models/qwen/qwen3-32b.toml +++ b/providers/maxlayer/models/qwen/qwen3-32b.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3-32b" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml b/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml index e3865d7c6b2..4a4e2504e1f 100644 --- a/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml +++ b/providers/maxlayer/models/qwen/qwen3-coder-30b-a3b-instruct.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-coder-30b-a3b-instruct" +structured_output = true [cost] input = 0.079758 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-flash.toml b/providers/maxlayer/models/qwen/qwen3-coder-flash.toml index 2b8761d5387..a04be0c4d53 100644 --- a/providers/maxlayer/models/qwen/qwen3-coder-flash.toml +++ b/providers/maxlayer/models/qwen/qwen3-coder-flash.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-coder-flash" +structured_output = false [cost] input = 0.222183 diff --git a/providers/maxlayer/models/qwen/qwen3-coder-plus.toml b/providers/maxlayer/models/qwen/qwen3-coder-plus.toml index 8e22cda255c..6bf91745af2 100644 --- a/providers/maxlayer/models/qwen/qwen3-coder-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3-coder-plus.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-coder-plus" +structured_output = true [cost] input = 0.74061 diff --git a/providers/maxlayer/models/qwen/qwen3-max.toml b/providers/maxlayer/models/qwen/qwen3-max.toml index 86517b3ec3c..879b5b7fac5 100644 --- a/providers/maxlayer/models/qwen/qwen3-max.toml +++ b/providers/maxlayer/models/qwen/qwen3-max.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-max" +structured_output = true [cost] input = 0.888732 diff --git a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml index 18704c0a0a2..f2b54dce696 100644 --- a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml +++ b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-instruct.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-next-80b-a3b-instruct" +structured_output = true [cost] input = 0.102546 diff --git a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml index 4a428f997f6..f7ba2e692e6 100644 --- a/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml +++ b/providers/maxlayer/models/qwen/qwen3-next-80b-a3b-thinking.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3-next-80b-a3b-thinking" +structured_output = true reasoning_options = [] [cost] diff --git a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml index 95a15954617..73f139f0aa7 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-122b-a10b.toml @@ -9,3 +9,6 @@ type = "toggle" [cost] input = 0.296244 output = 2.369952 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.5-27b.toml b/providers/maxlayer/models/qwen/qwen3.5-27b.toml index 51624c03210..d670016f730 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-27b.toml @@ -9,3 +9,6 @@ type = "toggle" [cost] input = 0.222183 output = 1.777464 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml index f4c0021dbac..c80ee624657 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-35b-a3b.toml @@ -12,3 +12,6 @@ output = 1.42425 [limit] output = 262_144 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml index 111aa40cf61..931e50124c0 100644 --- a/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml +++ b/providers/maxlayer/models/qwen/qwen3.5-397b-a17b.toml @@ -9,3 +9,6 @@ type = "toggle" [cost] input = 0.444366 output = 2.666196 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.6-27b.toml b/providers/maxlayer/models/qwen/qwen3.6-27b.toml index ad588588734..50918347446 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-27b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-27b.toml @@ -13,3 +13,6 @@ cache_read = 0.136728 [limit] output = 262_144 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml index c693194a727..b9ee5aaf140 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-35b-a3b.toml @@ -13,3 +13,6 @@ cache_read = 0.05697 [limit] output = 262_144 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml index 2bd5b4da9ff..82bccfa4c8a 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-max-preview.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3.6-max-preview" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3.6-plus.toml b/providers/maxlayer/models/qwen/qwen3.6-plus.toml index a479d429b53..c30b478c887 100644 --- a/providers/maxlayer/models/qwen/qwen3.6-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.6-plus.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3.6-plus" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3.7-flash.toml b/providers/maxlayer/models/qwen/qwen3.7-flash.toml index de0eddce611..2501104b842 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-flash.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-flash.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3.7-flash" +structured_output = false [[reasoning_options]] type = "budget_tokens" diff --git a/providers/maxlayer/models/qwen/qwen3.7-max.toml b/providers/maxlayer/models/qwen/qwen3.7-max.toml index 8ef48924220..0f9c6c10b68 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-max.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-max.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3.7-max" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/qwen/qwen3.7-plus.toml b/providers/maxlayer/models/qwen/qwen3.7-plus.toml index 732869a283a..aacc74f140d 100644 --- a/providers/maxlayer/models/qwen/qwen3.7-plus.toml +++ b/providers/maxlayer/models/qwen/qwen3.7-plus.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "alibaba/qwen3.7-plus" +structured_output = true [[reasoning_options]] type = "toggle" @@ -19,3 +20,6 @@ cache_write = 0.45576 [limit] output = 131_072 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/qwen/qwen3.8-max.toml b/providers/maxlayer/models/qwen/qwen3.8-max.toml index e32aceb0e0a..1b78bb65edd 100644 --- a/providers/maxlayer/models/qwen/qwen3.8-max.toml +++ b/providers/maxlayer/models/qwen/qwen3.8-max.toml @@ -1,4 +1,5 @@ base_model = "alibaba/qwen3.8-max" +structured_output = true [[reasoning_options]] type = "effort" @@ -9,3 +10,6 @@ input = 2.2788 output = 6.8364 cache_read = 0.28485 cache_write = 2.8485 + +[modalities] +input = ["text", "image", "video"] diff --git a/providers/maxlayer/models/sakana/sakana-namazu.toml b/providers/maxlayer/models/sakana/sakana-namazu.toml index b3b0043cb66..42867a7cb81 100644 --- a/providers/maxlayer/models/sakana/sakana-namazu.toml +++ b/providers/maxlayer/models/sakana/sakana-namazu.toml @@ -1,4 +1,5 @@ base_model = "sakana/sakana-namazu" +temperature = false [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/stepfun/step-3.5-flash.toml b/providers/maxlayer/models/stepfun/step-3.5-flash.toml index b100dc353a0..86934b4b72d 100644 --- a/providers/maxlayer/models/stepfun/step-3.5-flash.toml +++ b/providers/maxlayer/models/stepfun/step-3.5-flash.toml @@ -1,5 +1,6 @@ base_model = "stepfun/step-3.5-flash" base_model_omit = ["limit.input"] +structured_output = false reasoning_options = [] [cost] diff --git a/providers/maxlayer/models/stepfun/step-3.7-flash.toml b/providers/maxlayer/models/stepfun/step-3.7-flash.toml index db579ecaa25..fea56a9fb9f 100644 --- a/providers/maxlayer/models/stepfun/step-3.7-flash.toml +++ b/providers/maxlayer/models/stepfun/step-3.7-flash.toml @@ -1,5 +1,6 @@ base_model = "stepfun/step-3.7-flash" base_model_omit = ["limit.input"] +structured_output = true [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/tencent/hy3-preview.toml b/providers/maxlayer/models/tencent/hy3-preview.toml index cd130aa3dc1..335b2c182ff 100644 --- a/providers/maxlayer/models/tencent/hy3-preview.toml +++ b/providers/maxlayer/models/tencent/hy3-preview.toml @@ -1,4 +1,5 @@ base_model = "tencent/hy3-preview" +structured_output = false [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/tencent/hy3.toml b/providers/maxlayer/models/tencent/hy3.toml index e68e7ee2ddd..72888ccb6de 100644 --- a/providers/maxlayer/models/tencent/hy3.toml +++ b/providers/maxlayer/models/tencent/hy3.toml @@ -1,4 +1,5 @@ base_model = "tencent/hy3" +structured_output = true [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/thinkingmachines/inkling-small.toml b/providers/maxlayer/models/thinkingmachines/inkling-small.toml index aff1c71fce3..781da77b0a9 100644 --- a/providers/maxlayer/models/thinkingmachines/inkling-small.toml +++ b/providers/maxlayer/models/thinkingmachines/inkling-small.toml @@ -1,4 +1,5 @@ base_model = "thinkingmachines/inkling-small" +structured_output = true [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/thinkingmachines/inkling.toml b/providers/maxlayer/models/thinkingmachines/inkling.toml index 39c03ad1a9e..2756f6d9045 100644 --- a/providers/maxlayer/models/thinkingmachines/inkling.toml +++ b/providers/maxlayer/models/thinkingmachines/inkling.toml @@ -1,4 +1,5 @@ base_model = "thinkingmachines/inkling" +structured_output = false [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/x-ai/grok-4.5.toml b/providers/maxlayer/models/x-ai/grok-4.5.toml index a8f0f7183af..f4a3f91ae02 100644 --- a/providers/maxlayer/models/x-ai/grok-4.5.toml +++ b/providers/maxlayer/models/x-ai/grok-4.5.toml @@ -8,3 +8,6 @@ values = ["low", "medium", "high"] input = 2.2788 output = 6.8364 cache_read = 0.34182 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/x-ai/grok-4.6.toml b/providers/maxlayer/models/x-ai/grok-4.6.toml index 45f6e085050..613768c59a6 100644 --- a/providers/maxlayer/models/x-ai/grok-4.6.toml +++ b/providers/maxlayer/models/x-ai/grok-4.6.toml @@ -8,3 +8,6 @@ values = ["low", "medium", "high", "xhigh"] input = 2.2788 output = 6.8364 cache_read = 0.5697 + +[modalities] +input = ["text", "image", "pdf"] diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml index 3f8ae0de795..776c75a45ce 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5-pro.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "xiaomi/mimo-v2.5-pro" +structured_output = true [interleaved] field = "reasoning_content" diff --git a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml index c5c62f8bbb5..561b1593ebc 100644 --- a/providers/maxlayer/models/xiaomi/mimo-v2.5.toml +++ b/providers/maxlayer/models/xiaomi/mimo-v2.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "xiaomi/mimo-v2.5" +structured_output = true [interleaved] field = "reasoning_details" diff --git a/providers/maxlayer/models/z-ai/glm-4.5-air.toml b/providers/maxlayer/models/z-ai/glm-4.5-air.toml index 1987da93c62..4d84f3a050c 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5-air.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5-air.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.5-air" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/z-ai/glm-4.5.toml b/providers/maxlayer/models/z-ai/glm-4.5.toml index 7feb6fee580..8de1b16680e 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.5" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/z-ai/glm-4.5v.toml b/providers/maxlayer/models/z-ai/glm-4.5v.toml index b2b6ae12809..adcebc9c691 100644 --- a/providers/maxlayer/models/z-ai/glm-4.5v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.5v.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.5v" +structured_output = false [[reasoning_options]] type = "toggle" @@ -13,3 +14,6 @@ cache_read = 0.125334 [limit] context = 65_536 + +[modalities] +input = ["text", "image"] diff --git a/providers/maxlayer/models/z-ai/glm-4.6.toml b/providers/maxlayer/models/z-ai/glm-4.6.toml index e11cf61e63a..dda2ebbfeae 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6" +structured_output = true [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/z-ai/glm-4.6v.toml b/providers/maxlayer/models/z-ai/glm-4.6v.toml index 7748109d38c..3b486937018 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6v.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6v" +structured_output = false [[reasoning_options]] type = "toggle" diff --git a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml index fa6420263e8..da6ee946fbb 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7-flash" +structured_output = true [interleaved] field = "reasoning_details" diff --git a/providers/maxlayer/models/z-ai/glm-4.7.toml b/providers/maxlayer/models/z-ai/glm-4.7.toml index 95d0fd5610d..90e9ac16c66 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7" +structured_output = true [interleaved] field = "reasoning_details" diff --git a/providers/maxlayer/models/z-ai/glm-5-turbo.toml b/providers/maxlayer/models/z-ai/glm-5-turbo.toml index 760bad0a7f6..a3ff5bce3fb 100644 --- a/providers/maxlayer/models/z-ai/glm-5-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5-turbo.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5-turbo" +structured_output = false [interleaved] field = "reasoning_content" diff --git a/providers/maxlayer/models/z-ai/glm-5.3.toml b/providers/maxlayer/models/z-ai/glm-5.3.toml index 4a0cc65dbdf..d046c5c3d0b 100644 --- a/providers/maxlayer/models/z-ai/glm-5.3.toml +++ b/providers/maxlayer/models/z-ai/glm-5.3.toml @@ -1,4 +1,5 @@ base_model = "zhipuai/glm-5.3" +structured_output = false [[reasoning_options]] type = "effort" diff --git a/providers/maxlayer/models/z-ai/glm-5.toml b/providers/maxlayer/models/z-ai/glm-5.toml index 0ee43ecdf3f..8f74d022b94 100644 --- a/providers/maxlayer/models/z-ai/glm-5.toml +++ b/providers/maxlayer/models/z-ai/glm-5.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5" +structured_output = true [interleaved] field = "reasoning_content" diff --git a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml index 1c0ed9f5bbc..fc499fc54b5 100644 --- a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml @@ -2,6 +2,7 @@ # Effort: reasoning.effort (top-level reasoning_effort is an alias) # Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5v-turbo" +structured_output = false [[reasoning_options]] type = "toggle" @@ -13,3 +14,6 @@ cache_read = 0.273456 [limit] context = 202_752 + +[modalities] +input = ["image", "text", "video"] From 6169e6979bc99488af331e79da98c0a671f377b2 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 13:19:11 +0700 Subject: [PATCH 11/12] fix(maxlayer): drop the twelve toggles this surface does not catalog These twelve authored `reasoning_options = [{ type = "toggle" }]` while the established entries for the same twelve IDs carry `[]`. The toggles came from a sibling change that was later reverted out of this branch, so they were left claiming a `reasoning.enabled` control that nothing in the catalog documents. They now carry `[]`, matching the same-surface peer, and the wire headers went with them since there is no longer a toggle to name. The upstream catalogue does report these as non-mandatory, which is what prompted the toggles in the first place. That is a real finding but it is a finding about the peer entry, not this one: the peer says `[]` for all twelve, and a relay should not be the only place in the catalog claiming a control. Correcting it belongs in the change that fixes the peer, where both providers move together. Reasoning options are now identical to the peer for 162 of 163 files. The exception is `openai/o1-pro`, which review asked to carry graded effort to match the lab entry and every other relay. Co-Authored-By: Claude Opus 5 (1M context) --- providers/maxlayer/models/minimax/minimax-m3.toml | 7 +------ providers/maxlayer/models/moonshotai/kimi-k2.5.toml | 7 +------ providers/maxlayer/models/moonshotai/kimi-k2.6.toml | 7 +------ .../maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml | 7 +------ providers/maxlayer/models/z-ai/glm-4.6.toml | 7 +------ providers/maxlayer/models/z-ai/glm-4.6v.toml | 7 +------ providers/maxlayer/models/z-ai/glm-4.7-flash.toml | 7 +------ providers/maxlayer/models/z-ai/glm-4.7.toml | 7 +------ providers/maxlayer/models/z-ai/glm-5-turbo.toml | 7 +------ providers/maxlayer/models/z-ai/glm-5.1.toml | 7 +------ providers/maxlayer/models/z-ai/glm-5.toml | 7 +------ providers/maxlayer/models/z-ai/glm-5v-turbo.toml | 7 +------ 12 files changed, 12 insertions(+), 72 deletions(-) diff --git a/providers/maxlayer/models/minimax/minimax-m3.toml b/providers/maxlayer/models/minimax/minimax-m3.toml index 97b0f3d180f..3d9c17e2b68 100644 --- a/providers/maxlayer/models/minimax/minimax-m3.toml +++ b/providers/maxlayer/models/minimax/minimax-m3.toml @@ -1,11 +1,6 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "minimax/MiniMax-M3" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.34182 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml index 6ff429951d0..9e44980ba45 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.5.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.5.toml @@ -1,15 +1,10 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k2.5" temperature = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.51273 output = 2.56365 diff --git a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml index c9ffb731392..4b0c9fbad0d 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k2.6.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k2.6.toml @@ -1,14 +1,9 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "moonshotai/kimi-k2.6" +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 1.08243 output = 4.5576 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml index da7d9a6b885..8546a5804be 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-nano-30b-a3b.toml @@ -1,11 +1,6 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "nvidia/nemotron-3-nano-30b-a3b" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.05697 diff --git a/providers/maxlayer/models/z-ai/glm-4.6.toml b/providers/maxlayer/models/z-ai/glm-4.6.toml index dda2ebbfeae..5a014f5eb7f 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6.toml @@ -1,11 +1,6 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6" structured_output = true - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.5697 diff --git a/providers/maxlayer/models/z-ai/glm-4.6v.toml b/providers/maxlayer/models/z-ai/glm-4.6v.toml index 3b486937018..dbc433c679b 100644 --- a/providers/maxlayer/models/z-ai/glm-4.6v.toml +++ b/providers/maxlayer/models/z-ai/glm-4.6v.toml @@ -1,11 +1,6 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.6v" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 0.34182 diff --git a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml index da6ee946fbb..b863d2a11c3 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7-flash.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7-flash.toml @@ -1,15 +1,10 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7-flash" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.068364 output = 0.45576 diff --git a/providers/maxlayer/models/z-ai/glm-4.7.toml b/providers/maxlayer/models/z-ai/glm-4.7.toml index 90e9ac16c66..d83e8e1e14b 100644 --- a/providers/maxlayer/models/z-ai/glm-4.7.toml +++ b/providers/maxlayer/models/z-ai/glm-4.7.toml @@ -1,15 +1,10 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-4.7" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_details" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.45576 output = 1.99395 diff --git a/providers/maxlayer/models/z-ai/glm-5-turbo.toml b/providers/maxlayer/models/z-ai/glm-5-turbo.toml index a3ff5bce3fb..46cc2b24db8 100644 --- a/providers/maxlayer/models/z-ai/glm-5-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5-turbo.toml @@ -1,15 +1,10 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5-turbo" structured_output = false +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 1.36728 output = 4.5576 diff --git a/providers/maxlayer/models/z-ai/glm-5.1.toml b/providers/maxlayer/models/z-ai/glm-5.1.toml index a2d5f0368e4..385145a2386 100644 --- a/providers/maxlayer/models/z-ai/glm-5.1.toml +++ b/providers/maxlayer/models/z-ai/glm-5.1.toml @@ -1,14 +1,9 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5.1" +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 1.100661 output = 3.459219 diff --git a/providers/maxlayer/models/z-ai/glm-5.toml b/providers/maxlayer/models/z-ai/glm-5.toml index 8f74d022b94..dadd9d7a0f8 100644 --- a/providers/maxlayer/models/z-ai/glm-5.toml +++ b/providers/maxlayer/models/z-ai/glm-5.toml @@ -1,15 +1,10 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5" structured_output = true +reasoning_options = [] [interleaved] field = "reasoning_content" -[[reasoning_options]] -type = "toggle" - [cost] input = 0.68364 output = 2.187648 diff --git a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml index fc499fc54b5..1cb7af4743e 100644 --- a/providers/maxlayer/models/z-ai/glm-5v-turbo.toml +++ b/providers/maxlayer/models/z-ai/glm-5v-turbo.toml @@ -1,11 +1,6 @@ -# Toggle: reasoning.enabled = true|false -# Effort: reasoning.effort (top-level reasoning_effort is an alias) -# Budget: reasoning.max_tokens (integer reasoning tokens) base_model = "zhipuai/glm-5v-turbo" structured_output = false - -[[reasoning_options]] -type = "toggle" +reasoning_options = [] [cost] input = 1.36728 From a88729baa66c9fc120dbf87c02f7cd9dbc9e2015 Mon Sep 17 00:00:00 2001 From: faturewing Date: Fri, 21 Aug 2026 13:36:38 +0700 Subject: [PATCH 12/12] fix(maxlayer): output limits for the eleven routes the host leaves blank `limit.output` came from the host's `max_output_tokens` wherever it was published, and fell back to the lab entry where it was null. For eleven routes the host publishes nothing, and the lab default was well short of what the route actually serves: muse-spark-1.1 was capped at 32_000 against a 1_048_576 context, grok-4.3 at 30_000 against 1_000_000. Those eleven now take the same-surface peer's value, which is the best evidence available when the host is silent. Seven changed. One moved down rather than up -- nemotron-3-ultra-550b-a55b serves 16_384, not the lab's 128_000 -- which is the same rule applied honestly rather than a search for larger numbers. Not guesswork for the rest: `limit.context` matches the host's published `context_window` on all 163 files, and `limit.output` matches the host's own `max_output_tokens` on the 152 where it publishes one. No file restates a limit the lab entry already carries, and none claims an output larger than its context. Co-Authored-By: Claude Opus 5 (1M context) --- providers/maxlayer/models/meta/muse-spark-1.1.toml | 1 + providers/maxlayer/models/meta/muse-spark-1.2.toml | 3 +++ providers/maxlayer/models/mistralai/mistral-small-2603.toml | 1 + providers/maxlayer/models/moonshotai/kimi-k3.toml | 3 +++ .../maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml | 1 + providers/maxlayer/models/tencent/hy3-preview.toml | 1 + providers/maxlayer/models/x-ai/grok-4.3.toml | 3 +++ 7 files changed, 13 insertions(+) diff --git a/providers/maxlayer/models/meta/muse-spark-1.1.toml b/providers/maxlayer/models/meta/muse-spark-1.1.toml index cf2290959f6..b6b4cfb5934 100644 --- a/providers/maxlayer/models/meta/muse-spark-1.1.toml +++ b/providers/maxlayer/models/meta/muse-spark-1.1.toml @@ -11,6 +11,7 @@ cache_read = 0.17091 [limit] context = 1_048_576 +output = 1_048_576 [modalities] input = ["text", "image", "video", "pdf", "audio"] diff --git a/providers/maxlayer/models/meta/muse-spark-1.2.toml b/providers/maxlayer/models/meta/muse-spark-1.2.toml index b5c5cd8cf67..10887a5220b 100644 --- a/providers/maxlayer/models/meta/muse-spark-1.2.toml +++ b/providers/maxlayer/models/meta/muse-spark-1.2.toml @@ -8,3 +8,6 @@ values = ["minimal", "low", "medium", "high", "xhigh"] input = 1.42425 output = 4.84245 cache_read = 0.17091 + +[limit] +output = 1_048_576 diff --git a/providers/maxlayer/models/mistralai/mistral-small-2603.toml b/providers/maxlayer/models/mistralai/mistral-small-2603.toml index fdffecc57ac..8a601822836 100644 --- a/providers/maxlayer/models/mistralai/mistral-small-2603.toml +++ b/providers/maxlayer/models/mistralai/mistral-small-2603.toml @@ -12,3 +12,4 @@ cache_read = 0.017091 [limit] context = 262_144 +output = 262_144 diff --git a/providers/maxlayer/models/moonshotai/kimi-k3.toml b/providers/maxlayer/models/moonshotai/kimi-k3.toml index a5dd827e86b..3e455d5dde5 100644 --- a/providers/maxlayer/models/moonshotai/kimi-k3.toml +++ b/providers/maxlayer/models/moonshotai/kimi-k3.toml @@ -15,3 +15,6 @@ values = ["low", "high", "max"] input = 3.4182 output = 17.091 cache_read = 0.34182 + +[limit] +output = 1_048_576 diff --git a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml index 10fe96b5dce..6c6649f74b3 100644 --- a/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml +++ b/providers/maxlayer/models/nvidia/nemotron-3-ultra-550b-a55b.toml @@ -21,3 +21,4 @@ cache_read = 0.22788 [limit] context = 512_288 +output = 16_384 diff --git a/providers/maxlayer/models/tencent/hy3-preview.toml b/providers/maxlayer/models/tencent/hy3-preview.toml index 335b2c182ff..ec6edf401d7 100644 --- a/providers/maxlayer/models/tencent/hy3-preview.toml +++ b/providers/maxlayer/models/tencent/hy3-preview.toml @@ -12,3 +12,4 @@ cache_read = 0.068364 [limit] context = 262_144 +output = 262_144 diff --git a/providers/maxlayer/models/x-ai/grok-4.3.toml b/providers/maxlayer/models/x-ai/grok-4.3.toml index ef9e909977b..6c8a30b4df2 100644 --- a/providers/maxlayer/models/x-ai/grok-4.3.toml +++ b/providers/maxlayer/models/x-ai/grok-4.3.toml @@ -8,3 +8,6 @@ values = ["none", "low", "medium", "high"] input = 1.42425 output = 2.8485 cache_read = 0.22788 + +[limit] +output = 1_000_000