diff --git a/providers/tokensmarket/logo.svg b/providers/tokensmarket/logo.svg new file mode 100644 index 00000000000..e5b1a653af5 --- /dev/null +++ b/providers/tokensmarket/logo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/providers/tokensmarket/models/MiniMax-M2.1.toml b/providers/tokensmarket/models/MiniMax-M2.1.toml new file mode 100644 index 00000000000..2861b5432d0 --- /dev/null +++ b/providers/tokensmarket/models/MiniMax-M2.1.toml @@ -0,0 +1,11 @@ +# Alibaba Cloud (DashScope) channel. For MiniMax models the adapter sets +# `thinking.type` to adaptive/disabled from the effort value and does not forward +# an effort ladder upstream, so the surface is a plain toggle. +base_model = "minimax/MiniMax-M2.1" +reasoning_options = [{ type = "toggle" }] + +[cost] +input = 0.248 +output = 0.992 +cache_read = 0.024 +cache_write = 0.312 diff --git a/providers/tokensmarket/models/MiniMax-M2.5.toml b/providers/tokensmarket/models/MiniMax-M2.5.toml new file mode 100644 index 00000000000..8db0bfe2647 --- /dev/null +++ b/providers/tokensmarket/models/MiniMax-M2.5.toml @@ -0,0 +1,11 @@ +# Alibaba Cloud (DashScope) channel. For MiniMax models the adapter sets +# `thinking.type` to adaptive/disabled from the effort value and does not forward +# an effort ladder upstream, so the surface is a plain toggle. +base_model = "minimax/MiniMax-M2.5" +reasoning_options = [{ type = "toggle" }] + +[cost] +input = 0.248 +output = 0.992 +cache_read = 0.024 +cache_write = 0.312 diff --git a/providers/tokensmarket/models/claude-fable-5.toml b/providers/tokensmarket/models/claude-fable-5.toml new file mode 100644 index 00000000000..70a6d55631b --- /dev/null +++ b/providers/tokensmarket/models/claude-fable-5.toml @@ -0,0 +1,19 @@ +# Claude Hub channel: raw passthrough to Anthropic /v1/messages, so the upstream +# reasoning surface survives unchanged. Modalities follow Token Market's own +# catalog, which lists text and image input only. +base_model = "anthropic/claude-fable-5" +structured_output = true + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 2.5 +output = 12.5 +cache_read = 0.25 +cache_write = 3.125 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/claude-haiku-4-5.toml b/providers/tokensmarket/models/claude-haiku-4-5.toml new file mode 100644 index 00000000000..11d0aa02cb1 --- /dev/null +++ b/providers/tokensmarket/models/claude-haiku-4-5.toml @@ -0,0 +1,19 @@ +# Claude Hub channel: raw passthrough to Anthropic /v1/messages, so the upstream +# reasoning surface survives unchanged. Modalities follow Token Market's own +# catalog, which lists text and image input only. +base_model = "anthropic/claude-haiku-4-5" +structured_output = true + +[[reasoning_options]] +type = "budget_tokens" +min = 1_024 + +[cost] +input = 0.25 +output = 1.25 +cache_read = 0.025 +cache_write = 0.3125 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/claude-opus-4-8.toml b/providers/tokensmarket/models/claude-opus-4-8.toml new file mode 100644 index 00000000000..d289f86aa33 --- /dev/null +++ b/providers/tokensmarket/models/claude-opus-4-8.toml @@ -0,0 +1,19 @@ +# Claude Hub channel: raw passthrough to Anthropic /v1/messages, so the upstream +# reasoning surface survives unchanged. Modalities follow Token Market's own +# catalog, which lists text and image input only. +base_model = "anthropic/claude-opus-4-8" +structured_output = true + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 1.25 +output = 6.25 +cache_read = 0.125 +cache_write = 1.5625 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/claude-opus-5.toml b/providers/tokensmarket/models/claude-opus-5.toml new file mode 100644 index 00000000000..304c6a69876 --- /dev/null +++ b/providers/tokensmarket/models/claude-opus-5.toml @@ -0,0 +1,21 @@ +# Served over the Claude Hub channel, which is a raw passthrough to Anthropic +# /v1/messages (the channel adapter only rewrites the URL and forwards the +# anthropic-version / anthropic-beta headers), so the upstream reasoning surface +# survives unchanged. Modalities follow Token Market's own catalog, which lists +# text and image input only. +base_model = "anthropic/claude-opus-5" +structured_output = true + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 1.25 +output = 6.25 +cache_read = 0.125 +cache_write = 1.5625 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/claude-sonnet-5.toml b/providers/tokensmarket/models/claude-sonnet-5.toml new file mode 100644 index 00000000000..f66b5a0746e --- /dev/null +++ b/providers/tokensmarket/models/claude-sonnet-5.toml @@ -0,0 +1,25 @@ +# Claude Hub channel: raw passthrough to Anthropic /v1/messages, so the upstream +# reasoning surface survives unchanged. Modalities follow Token Market's own +# catalog, which lists text and image input only. +# Toggle: `thinking.type = "adaptive"` (on, budget managed by Anthropic) | +# `thinking.type = "disabled"`. claude-sonnet-5 rejects manually-set extended +# thinking and sampling controls, so no budget_tokens option is listed. +base_model = "anthropic/claude-sonnet-5" +structured_output = true + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["low", "medium", "high", "xhigh", "max"] + +[cost] +input = 0.5 +output = 2.5 +cache_read = 0.05 +cache_write = 0.625 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/deepseek-v4-flash.toml b/providers/tokensmarket/models/deepseek-v4-flash.toml new file mode 100644 index 00000000000..e40fa6afb66 --- /dev/null +++ b/providers/tokensmarket/models/deepseek-v4-flash.toml @@ -0,0 +1,21 @@ +# Alibaba Cloud (DashScope) channel. +# Toggle: `enable_thinking = false` (effort "none") | `enable_thinking = true`. +# Effort: `reasoning_effort = high | max`; low/medium collapse to high and xhigh +# collapses to max on this channel, so only two levels are distinctly reachable. +# `thinking_budget` is projected for the Qwen family only, so no budget_tokens here. +base_model = "deepseek/deepseek-v4-flash" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "max"] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.22 +output = 0.665 +cache_read = 0.022 diff --git a/providers/tokensmarket/models/deepseek-v4-pro.toml b/providers/tokensmarket/models/deepseek-v4-pro.toml new file mode 100644 index 00000000000..2163135176d --- /dev/null +++ b/providers/tokensmarket/models/deepseek-v4-pro.toml @@ -0,0 +1,21 @@ +# Alibaba Cloud (DashScope) channel. +# Toggle: `enable_thinking = false` (effort "none") | `enable_thinking = true`. +# Effort: `reasoning_effort = high | max`; low/medium collapse to high and xhigh +# collapses to max on this channel, so only two levels are distinctly reachable. +# `thinking_budget` is projected for the Qwen family only, so no budget_tokens here. +base_model = "deepseek/deepseek-v4-pro" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "max"] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.665 +output = 1.985 +cache_read = 0.0665 diff --git a/providers/tokensmarket/models/gemini-3.5-flash.toml b/providers/tokensmarket/models/gemini-3.5-flash.toml new file mode 100644 index 00000000000..552267d9bae --- /dev/null +++ b/providers/tokensmarket/models/gemini-3.5-flash.toml @@ -0,0 +1,15 @@ +# Gemini Hub channel. The adapter does not rewrite the reasoning fields, so the +# upstream Gemini effort ladder applies. Token Market's catalog lists text, +# image, audio, and video input (no PDF), so modalities are overridden. +base_model = "google/gemini-3.5-flash" +reasoning_options = [{ type = "effort", values = ["minimal", "low", "medium", "high"] }] + +[cost] +input = 0.225 +output = 1.35 +cache_read = 0.0225 +cache_write = 0.225 + +[modalities] +input = ["text", "image", "audio", "video"] +output = ["text"] diff --git a/providers/tokensmarket/models/glm-5.1.toml b/providers/tokensmarket/models/glm-5.1.toml new file mode 100644 index 00000000000..ed5d757355e --- /dev/null +++ b/providers/tokensmarket/models/glm-5.1.toml @@ -0,0 +1,13 @@ +# Alibaba Cloud (DashScope) channel. The adapter maps effort "none" to +# `enable_thinking = false`, which is the toggle. GLM-5.1 on Model Studio +# documents no effort ladder (unlike 5.2), so only the toggle is exposed. +base_model = "zhipuai/glm-5.1" +reasoning_options = [{ type = "toggle" }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.88 +output = 3.53 +cache_read = 0.19 diff --git a/providers/tokensmarket/models/glm-5.2.toml b/providers/tokensmarket/models/glm-5.2.toml new file mode 100644 index 00000000000..b458a6ef9c9 --- /dev/null +++ b/providers/tokensmarket/models/glm-5.2.toml @@ -0,0 +1,13 @@ +# Alibaba Cloud (DashScope) channel, which accepts the full +# reasoning_effort enum for GLM-5.2 ("none" disables reasoning, so no separate +# toggle is needed). +base_model = "zhipuai/glm-5.2" +reasoning_options = [{ type = "effort", values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"] }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.944 +output = 3.296 +cache_read = 0.232 diff --git a/providers/tokensmarket/models/gpt-5.4-mini.toml b/providers/tokensmarket/models/gpt-5.4-mini.toml new file mode 100644 index 00000000000..b24cf048824 --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.4-mini.toml @@ -0,0 +1,10 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`. Upstream GPT-5.4 tops out at +# xhigh. +base_model = "openai/gpt-5.4-mini" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh"] }] + +[cost] +input = 0.1125 +output = 0.675 +cache_read = 0.01125 diff --git a/providers/tokensmarket/models/gpt-5.4-nano.toml b/providers/tokensmarket/models/gpt-5.4-nano.toml new file mode 100644 index 00000000000..586e73cfd1f --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.4-nano.toml @@ -0,0 +1,13 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`. Upstream GPT-5.4 tops out at +# xhigh. +# Cost: the catalog publishes no discounted rate for this model, so the listed +# vendor rate applies. +base_model = "openai/gpt-5.4-nano" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh"] }] + +[cost] +input = 0.2 +output = 1.25 +cache_read = 0.02 +cache_write = 0.2 diff --git a/providers/tokensmarket/models/gpt-5.5.toml b/providers/tokensmarket/models/gpt-5.5.toml new file mode 100644 index 00000000000..b88a653661b --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.5.toml @@ -0,0 +1,16 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`. Upstream GPT-5.5 tops out at +# xhigh (max arrived with 5.6). Modalities follow Token Market's own catalog, +# which lists text and image input only. +base_model = "openai/gpt-5.5" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh"] }] + +[cost] +input = 0.75 +output = 4.5 +cache_read = 0.075 +cache_write = 0.75 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/gpt-5.6-luna.toml b/providers/tokensmarket/models/gpt-5.6-luna.toml new file mode 100644 index 00000000000..b001df4ea01 --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.6-luna.toml @@ -0,0 +1,16 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`, so the full upstream effort +# ladder is available. Modalities follow Token Market's own catalog, which lists +# text and image input only. +base_model = "openai/gpt-5.6-luna" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh", "max"] }] + +[cost] +input = 0.03 +output = 0.18 +cache_read = 0.003 +cache_write = 0.0375 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/gpt-5.6-sol.toml b/providers/tokensmarket/models/gpt-5.6-sol.toml new file mode 100644 index 00000000000..94245f5cdf1 --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.6-sol.toml @@ -0,0 +1,16 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`, so the full upstream effort +# ladder is available. Modalities follow Token Market's own catalog, which lists +# text and image input only. +base_model = "openai/gpt-5.6-sol" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh", "max"] }] + +[cost] +input = 0.75 +output = 4.5 +cache_read = 0.075 +cache_write = 0.9375 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/gpt-5.6-terra.toml b/providers/tokensmarket/models/gpt-5.6-terra.toml new file mode 100644 index 00000000000..feb4e404d28 --- /dev/null +++ b/providers/tokensmarket/models/gpt-5.6-terra.toml @@ -0,0 +1,16 @@ +# GPT Hub channel: the adapter only strips the gateway-canonical `reasoning` +# object and forwards native `reasoning_effort`, so the full upstream effort +# ladder is available. Modalities follow Token Market's own catalog, which lists +# text and image input only. +base_model = "openai/gpt-5.6-terra" +reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "xhigh", "max"] }] + +[cost] +input = 0.3 +output = 1.8 +cache_read = 0.03 +cache_write = 0.46875 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/models/gpt-image-2.toml b/providers/tokensmarket/models/gpt-image-2.toml new file mode 100644 index 00000000000..8dd03dc09b0 --- /dev/null +++ b/providers/tokensmarket/models/gpt-image-2.toml @@ -0,0 +1,3 @@ +# GPT Hub channel. Billed per request ($0.01), a unit the per-token [cost] +# schema cannot express, so [cost] is omitted rather than misstated. +base_model = "openai/gpt-image-2" diff --git a/providers/tokensmarket/models/hy3.toml b/providers/tokensmarket/models/hy3.toml new file mode 100644 index 00000000000..e2dfebfc150 --- /dev/null +++ b/providers/tokensmarket/models/hy3.toml @@ -0,0 +1,12 @@ +# Tencent Cloud channel. The adapter is a plain OpenAI-compatible passthrough +# that forwards `reasoning_effort` and does not project onto Tencent's +# `thinking.type`, so only the effort ladder is reachable. Aligned to the +# none|low|high surface established relays use for Hy3. +# https://cloud.tencent.com/document/product/1823/131208 +base_model = "tencent/hy3" +reasoning_options = [{ type = "effort", values = ["none", "low", "high"] }] + +[cost] +input = 0.147 +output = 0.588 +cache_read = 0.037 diff --git a/providers/tokensmarket/models/kimi-k2.7-code.toml b/providers/tokensmarket/models/kimi-k2.7-code.toml new file mode 100644 index 00000000000..c6a5c0153e4 --- /dev/null +++ b/providers/tokensmarket/models/kimi-k2.7-code.toml @@ -0,0 +1,17 @@ +# Alibaba Cloud (DashScope) channel. The adapter maps effort "none" to +# `enable_thinking = false` and forwards `reasoning.budget_tokens` as +# `thinking_budget`; Model Studio documents no bounds for the budget on Kimi. +# Matches the declared surface of the DashScope peer providers on this same +# model ID (e.g. alibaba-token-plan/kimi-k2.7-code.toml), which cite +# https://www.alibabacloud.com/help/en/model-studio/kimi-api and +# https://www.alibabacloud.com/help/en/model-studio/deep-thinking for both fields. +base_model = "moonshotai/kimi-k2.7-code" +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens" }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.768 +output = 3.176 +cache_read = 0.152 diff --git a/providers/tokensmarket/models/kimi-k3.toml b/providers/tokensmarket/models/kimi-k3.toml new file mode 100644 index 00000000000..5c04c69b2ad --- /dev/null +++ b/providers/tokensmarket/models/kimi-k3.toml @@ -0,0 +1,20 @@ +# Alibaba Cloud (DashScope) channel. +# Toggle: `enable_thinking = false` (effort "none") | `enable_thinking = true`. +# Effort: `reasoning_effort = high | max`; low/medium collapse to high and xhigh +# collapses to max on this channel, so only two levels are distinctly reachable. +base_model = "moonshotai/kimi-k3" + +[[reasoning_options]] +type = "toggle" + +[[reasoning_options]] +type = "effort" +values = ["high", "max"] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 3.0 +output = 15.0 +cache_read = 0.3 diff --git a/providers/tokensmarket/models/longcat-2.0.toml b/providers/tokensmarket/models/longcat-2.0.toml new file mode 100644 index 00000000000..d574eb5e02e --- /dev/null +++ b/providers/tokensmarket/models/longcat-2.0.toml @@ -0,0 +1,16 @@ +# SiliconFlow.cn channel. The adapter maps effort "none" to +# `enable_thinking = false` and otherwise `enable_thinking = true`. First-party +# LongCat-2.0 documents only `{"thinking": {"type": "enabled"|"disabled"}}` — no +# reasoning budget for this model. `thinking_budget` (128-32,768) is a channel-wide +# dialect field the adapter also supports, but no LongCat-specific evidence backs +# it, so it's left out here. +base_model = "meituan/longcat-2.0" +reasoning_options = [{ type = "toggle" }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.75 +output = 2.95 +cache_read = 0.015 diff --git a/providers/tokensmarket/models/mimo-v2.5-pro.toml b/providers/tokensmarket/models/mimo-v2.5-pro.toml new file mode 100644 index 00000000000..90cb6d207a3 --- /dev/null +++ b/providers/tokensmarket/models/mimo-v2.5-pro.toml @@ -0,0 +1,11 @@ +# Servable on GET /v1/models but not yet listed in the public pricing catalog, +# so [cost] is omitted rather than guessed. +# The channel is generic OpenAI-compatible: the adapter only forwards whatever +# `reasoning_effort` the client sends and removes `reasoning`. It projects no +# dedicated toggle field, and no upstream MiMo docs are available to confirm an +# effort ladder, so no reasoning_options are declared. +base_model = "xiaomi/mimo-v2.5-pro" +reasoning_options = [] + +[interleaved] +field = "reasoning_content" diff --git a/providers/tokensmarket/models/qwen3.7-max.toml b/providers/tokensmarket/models/qwen3.7-max.toml new file mode 100644 index 00000000000..2dd590afe38 --- /dev/null +++ b/providers/tokensmarket/models/qwen3.7-max.toml @@ -0,0 +1,14 @@ +# Alibaba Cloud (DashScope) channel. Hybrid thinking: the adapter maps effort +# "none" to `enable_thinking = false` and forwards `reasoning.budget_tokens` as +# `thinking_budget` (documented maximum 262,144 for the Qwen3.7 family). +base_model = "alibaba/qwen3.7-max" +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", max = 262_144 }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 1.059 +output = 3.1764 +cache_read = 0.2118 +cache_write = 1.3236 diff --git a/providers/tokensmarket/models/qwen3.7-plus.toml b/providers/tokensmarket/models/qwen3.7-plus.toml new file mode 100644 index 00000000000..f8e02521a60 --- /dev/null +++ b/providers/tokensmarket/models/qwen3.7-plus.toml @@ -0,0 +1,16 @@ +# Alibaba Cloud (DashScope) channel. Hybrid thinking: the adapter maps effort +# "none" to `enable_thinking = false` and forwards `reasoning.budget_tokens` as +# `thinking_budget` (documented maximum 262,144 for the Qwen3.7 family). +# Cost: the catalog publishes no discounted rate for this model, so the listed +# vendor rate applies. +base_model = "alibaba/qwen3.7-plus" +reasoning_options = [{ type = "toggle" }, { type = "budget_tokens", max = 262_144 }] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 0.3 +output = 1.2 +cache_read = 0.03 +cache_write = 0.37 diff --git a/providers/tokensmarket/models/qwen3.8-max.toml b/providers/tokensmarket/models/qwen3.8-max.toml new file mode 100644 index 00000000000..2f89b4a3b1e --- /dev/null +++ b/providers/tokensmarket/models/qwen3.8-max.toml @@ -0,0 +1,23 @@ +# Alibaba Cloud (DashScope) channel. Hybrid thinking: effort "none" becomes +# `enable_thinking = false`; `reasoning_effort` accepts low|medium|xhigh (high is +# an alias for xhigh); `thinking_budget` (0..262,144) cannot be combined with +# `reasoning_effort`. Token Market's catalog lists text and image input only. +base_model = "alibaba/qwen3.8-max" +structured_output = true +reasoning_options = [ + { type = "toggle" }, + { type = "effort", values = ["low", "medium", "xhigh"] }, + { type = "budget_tokens", min = 0, max = 262_144 }, +] + +[interleaved] +field = "reasoning_content" + +[cost] +input = 1.765 +output = 5.29 +cache_read = 0.221 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/tokensmarket/provider.toml b/providers/tokensmarket/provider.toml new file mode 100644 index 00000000000..b373c9cfeb5 --- /dev/null +++ b/providers/tokensmarket/provider.toml @@ -0,0 +1,24 @@ +# Token Market is an OpenAI-compatible aggregation gateway that fronts several +# upstream vendors (Anthropic, OpenAI, Google, Alibaba/DashScope, Tencent, +# SiliconFlow, BytePlus) behind one key and one base URL. +# +# Reasoning HTTP format (verified against the gateway source 2026-08-18): +# POST /v1/chat/completions accepts the OpenAI wire field `reasoning_effort` +# with the enum none|minimal|low|medium|high|xhigh|max, plus a gateway-canonical +# `reasoning` object `{effort?, summary?, budget_tokens?}` that each channel +# adapter projects onto its upstream vendor's own field. The per-model +# `reasoning_options` below record the surface that survives that projection: +# OpenAI-channel models pass `reasoning_effort` through natively; DashScope and +# SiliconFlow channels collapse low/medium -> high and xhigh -> max and expose +# `thinking_budget`; Zhipu and DeepSeek channels toggle `thinking.type` and pass +# effort through; MiniMax channel strips effort entirely, leaving a plain toggle; +# the Anthropic channel is a raw /v1/messages passthrough. +# +# Sources: +# https://www.tokensmarket.ai/docs +# https://api.tokensmarket.ai/v1/models +name = "Token Market" +env = ["TOKENSMARKET_API_KEY"] +npm = "@ai-sdk/openai-compatible" +doc = "https://www.tokensmarket.ai/docs" +api = "https://api.tokensmarket.ai/v1"