diff --git a/providers/README.md b/providers/README.md index f7828bd..648e496 100644 --- a/providers/README.md +++ b/providers/README.md @@ -83,6 +83,9 @@ billing: per million tokens. Change `pricingRef` whenever rates or effective dates change. Declare `longContext` when a model changes rates above an input-token threshold; omit `pricing` when a model cannot be priced safely. +- `models.entries[].supportedReasoningEfforts` advertises the model's exact + provider-native OpenAI-compatible wire efforts. Values are unique and limited + to `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. ## Edge Support Rules diff --git a/providers/_schema/service-provider.schema.json b/providers/_schema/service-provider.schema.json index 4c4f2dc..9b14c66 100644 --- a/providers/_schema/service-provider.schema.json +++ b/providers/_schema/service-provider.schema.json @@ -396,6 +396,13 @@ "id": { "type": "string" }, "upstream": { "type": "string" }, "capabilities": { "type": "array", "items": { "type": "string" } }, + "supportedReasoningEfforts": { + "type": "array", + "items": { "enum": ["none", "minimal", "low", "medium", "high", "xhigh", "max"] }, + "minItems": 1, + "maxItems": 7, + "uniqueItems": true + }, "pricingRef": { "type": "string" }, "pricing": { "$ref": "#/$defs/modelPricing" } } diff --git a/providers/openai.provider.yaml b/providers/openai.provider.yaml index f92e135..64bcc87 100644 --- a/providers/openai.provider.yaml +++ b/providers/openai.provider.yaml @@ -149,6 +149,7 @@ models: - id: openai/gpt-5.6 upstream: gpt-5.6 capabilities: [llm.responses, llm.chat] + supportedReasoningEfforts: [none, low, medium, high, xhigh, max] pricingRef: openai-gpt-5.6-standard-2026-07-09 pricing: effectiveAt: "2026-07-09" diff --git a/scripts/compile-providers.mjs b/scripts/compile-providers.mjs index c6fd62f..51104ae 100644 --- a/scripts/compile-providers.mjs +++ b/scripts/compile-providers.mjs @@ -37,6 +37,7 @@ export function compileProviderSnapshot(manifests) { provider: provider.id, upstream: model.upstream, capabilities: model.capabilities, + ...(model.supportedReasoningEfforts ? { supportedReasoningEfforts: model.supportedReasoningEfforts } : {}), pricing_ref: model.pricing_ref, pricing: model.pricing, }; @@ -106,6 +107,7 @@ function compileProvider(manifest, ids) { id: model.id, upstream: model.upstream, capabilities: model.capabilities ?? [], + ...(model.supportedReasoningEfforts ? { supportedReasoningEfforts: model.supportedReasoningEfforts } : {}), pricing_ref: model.pricingRef ?? null, pricing: model.pricing ? normalizePricing(model.pricing) : null, })); @@ -212,6 +214,14 @@ function validateManifest(manifest) { for (const capability of manifest.capabilities) { if (!manifest.endpoints[capability.endpoint]) throw new Error(`provider ${manifest.id} capability ${capability.id} references missing endpoint ${capability.endpoint}`); } + const reasoningEfforts = new Set(["none", "minimal", "low", "medium", "high", "xhigh", "max"]); + for (const model of manifest.models?.entries ?? []) { + const efforts = model.supportedReasoningEfforts; + if (efforts === undefined) continue; + if (!Array.isArray(efforts) || efforts.length === 0 || efforts.length > reasoningEfforts.size) throw new Error(`provider ${manifest.id} model ${model.id} supportedReasoningEfforts must contain 1-${reasoningEfforts.size} entries`); + if (efforts.some((effort) => !reasoningEfforts.has(effort))) throw new Error(`provider ${manifest.id} model ${model.id} supportedReasoningEfforts contains an unsupported effort`); + if (new Set(efforts).size !== efforts.length) throw new Error(`provider ${manifest.id} model ${model.id} supportedReasoningEfforts must contain unique entries`); + } for (const [id, endpoint] of Object.entries(manifest.endpoints)) { if (!endpoint.path?.startsWith("/")) throw new Error(`provider ${manifest.id} endpoint ${id} path must start with /`); for (const placeholder of endpoint.path.matchAll(/\$\{([^}]+)\}/g)) { diff --git a/worker/discovery.ts b/worker/discovery.ts index 6366842..6c47355 100644 --- a/worker/discovery.ts +++ b/worker/discovery.ts @@ -203,7 +203,7 @@ export function catalogModels(provider: CompiledProvider, endpoints: string[], p // Budgeted proxy keys fail closed at discovery instead of per-request pricing_required. if (requiresPricing && model.pricing == null) return []; const capabilities = executableCapabilities(provider, model.capabilities, endpoints); - return capabilities.length ? [{ id: model.id, upstream: model.upstream, capabilities, pricing_ref: model.pricing_ref, pricing: model.pricing }] : []; + return capabilities.length ? [{ id: model.id, upstream: model.upstream, capabilities, ...(model.supportedReasoningEfforts ? { supportedReasoningEfforts: model.supportedReasoningEfforts } : {}), pricing_ref: model.pricing_ref, pricing: model.pricing }] : []; }); } diff --git a/worker/generated/provider-snapshot.json b/worker/generated/provider-snapshot.json index 8c8cfe1..01a0c28 100644 --- a/worker/generated/provider-snapshot.json +++ b/worker/generated/provider-snapshot.json @@ -1 +1 @@ -{"version":"clawrouter.provider-snapshot.v1","providers":[{"id":"anthropic","display_name":"Anthropic","status":"stable","class":"anthropic_compatible","service_platform":"anthropic","service_kind":"model_provider","config_keys":["ANTHROPIC_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"api_key","header":"x-api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"https://api.anthropic.com"},"routing":{"nativePrefixes":["clawrouter-anthropic","anthropic"],"modelPrefixes":["anthropic/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-anthropic","anthropic"],"adapter":{"request":"anthropic","response":"anthropic","stream":"anthropic_sse","error":"anthropic_error","passthroughHeaders":["anthropic-beta","anthropic-version"],"injectHeaders":{"anthropic-version":"2023-06-01"},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.messages","endpoint":"messages","methods":["POST"]},{"id":"llm.count_tokens","endpoint":"count_tokens","methods":["POST"]}],"endpoints":[{"id":"count_tokens","method":"POST","methods":["POST"],"path":"/v1/messages/count_tokens","native_proxy":true,"auth":null,"headers":{},"request_headers":["anthropic-beta","anthropic-version"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"anthropic.messages","response_format":"anthropic.count_tokens","streaming":null,"timeout_ms":120000},{"id":"messages","method":"POST","methods":["POST"],"path":"/v1/messages","native_proxy":true,"auth":null,"headers":{},"request_headers":["anthropic-beta","anthropic-version"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"anthropic.messages","response_format":"anthropic.messages","streaming":"sse","timeout_ms":600000}],"models":[{"id":"anthropic/claude-opus-4-8","upstream":"claude-opus-4-8","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-opus-4-8-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":25000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":6250000,"cacheWrite1hInputMicrosPerMillion":10000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":null}},{"id":"anthropic/claude-sonnet-4-6","upstream":"claude-sonnet-4-6","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-sonnet-4-6-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":300000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":3750000,"cacheWrite1hInputMicrosPerMillion":6000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},{"id":"anthropic/claude-haiku-4-5","upstream":"claude-haiku-4-5","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-haiku-4-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":1000000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":1250000,"cacheWrite1hInputMicrosPerMillion":2000000,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.input_tokens","unit":"token"},{"name":"output_tokens","source":"usage.output_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"rpm","kind":"requests","unit":"request","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-requests-limit"],"remainingHeaders":["anthropic-ratelimit-requests-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-requests-reset"]},{"id":"tpm","kind":"tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-tokens-reset"]},{"id":"itpm","kind":"input_tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-input-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-input-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-input-tokens-reset"]},{"id":"otpm","kind":"output_tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-output-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-output-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-output-tokens-reset"]}],"probes":[]}},{"id":"aws-bedrock","display_name":"AWS Bedrock","status":"experimental","class":"custom_adapter","service_platform":"aws","service_kind":"model_provider","config_keys":["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","AWS_REGION"],"optional_config_keys":["AWS_SESSION_TOKEN"],"auth":{"schemes":[{"type":"sig_v4","service":"bedrock","regionParam":"region"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["sigv4:bedrock"],"base_urls":{"default":"https://bedrock-runtime.${region}.amazonaws.com"},"routing":{"nativePrefixes":["clawrouter-aws-bedrock","bedrock"],"modelPrefixes":["bedrock/","aws-bedrock/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-aws-bedrock","bedrock"],"adapter":{"request":"aws_bedrock","response":"aws_bedrock","stream":"aws_eventstream","error":"aws_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.invoke","endpoint":"invoke_model","methods":["POST"]},{"id":"llm.stream","endpoint":"invoke_model_stream","methods":["POST"]}],"endpoints":[{"id":"invoke_model","method":"POST","methods":["POST"],"path":"/model/${model}/invoke","native_proxy":true,"auth":null,"headers":{"content-type":"application/json"},"request_headers":["accept","x-amzn-bedrock-guardrailidentifier","x-amzn-bedrock-guardrailtrace","x-amzn-bedrock-guardrailversion","x-amzn-bedrock-performanceconfig-latency","x-amzn-bedrock-request-metadata","x-amzn-bedrock-service-tier","x-amzn-bedrock-trace"],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{"model":"opaque_segment"},"request_format":"aws_bedrock.invoke","response_format":"aws_bedrock.invoke","streaming":null,"timeout_ms":600000},{"id":"invoke_model_stream","method":"POST","methods":["POST"],"path":"/model/${model}/invoke-with-response-stream","native_proxy":true,"auth":null,"headers":{"content-type":"application/json"},"request_headers":["accept","x-amzn-bedrock-accept","x-amzn-bedrock-guardrailidentifier","x-amzn-bedrock-guardrailtrace","x-amzn-bedrock-guardrailversion","x-amzn-bedrock-performanceconfig-latency","x-amzn-bedrock-request-metadata","x-amzn-bedrock-service-tier","x-amzn-bedrock-trace"],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{"model":"opaque_segment"},"request_format":"aws_bedrock.invoke","response_format":"aws_bedrock.eventstream","streaming":"aws_eventstream","timeout_ms":600000}],"models":[{"id":"bedrock/amazon.nova-lite-v1:0","upstream":"amazon.nova-lite-v1:0","capabilities":["llm.invoke","llm.stream"],"pricing_ref":"aws-bedrock-model","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject","region"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"azure-openai","display_name":"Azure OpenAI","status":"stable","class":"openai_compatible","service_platform":"azure","service_kind":"model_provider","config_keys":["AZURE_OPENAI_API_KEY","AZURE_OPENAI_ENDPOINT","AZURE_OPENAI_API_VERSION","AZURE_OPENAI_COMPLETION_TOKEN_DEPLOYMENTS","AZURE_OPENAI_DEPLOYMENT"],"optional_config_keys":["AZURE_OPENAI_COMPLETION_TOKEN_DEPLOYMENTS"],"auth":{"schemes":[{"type":"api_key","header":"api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"${endpoint}"},"routing":{"nativePrefixes":["clawrouter-azure-openai","azure-openai"],"modelPrefixes":["azure-openai/"],"baseUrlParam":"endpoint","serviceParam":null},"native_prefixes":["clawrouter-azure-openai","azure-openai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{"api-version":"${api_version}"},"requestTransforms":{"renameFields":[{"from":"max_tokens","to":"max_completion_tokens","paths":["/v1/chat/completions"],"upstreams":[],"upstreamConfig":"completion_token_deployments"}]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/openai/deployments/${deployment}/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["deployment"],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/openai/deployments/${deployment}/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["deployment"],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000}],"models":[{"id":"azure-openai/deployment","upstream":"${deployment}","capabilities":["llm.chat","llm.embeddings"],"pricing_ref":"azure-openai-deployment","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","deployment","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"cloudflare-ai-gateway","display_name":"Cloudflare AI Gateway","status":"experimental","class":"cloudflare_ai_gateway","service_platform":"cloudflare-ai-gateway","service_kind":"gateway_platform","config_keys":["CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_AI_GATEWAY_ID","CLOUDFLARE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"cf-aig-authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://gateway.ai.cloudflare.com/v1/${account_id}/${gateway_id}"},"routing":{"nativePrefixes":["clawrouter-cloudflare","cloudflare-ai-gateway"],"modelPrefixes":["cloudflare-ai-gateway/"],"baseUrlParam":"base_url","serviceParam":null},"native_prefixes":["clawrouter-cloudflare","cloudflare-ai-gateway"],"adapter":{"request":"cloudflare_ai_gateway","response":"provider_native","stream":"provider_sse","error":"cloudflare_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"universal","methods":["POST"]},{"id":"llm.responses","endpoint":"universal","methods":["POST"]}],"endpoints":[{"id":"universal","method":"POST","methods":["POST"],"path":"/","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cloudflare_ai_gateway.universal","response_format":"provider.native","streaming":"sse","timeout_ms":600000}],"models":[{"id":"cloudflare-ai-gateway/auto","upstream":"auto","capabilities":["llm.chat","llm.responses"],"pricing_ref":"cloudflare-ai-gateway-auto","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"cohere","display_name":"Cohere","status":"stable","class":"rest_json","service_platform":"cohere","service_kind":"model_provider","config_keys":["COHERE_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.cohere.com"},"routing":{"nativePrefixes":["clawrouter-cohere","cohere"],"modelPrefixes":["cohere/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-cohere","cohere"],"adapter":{"request":"cohere","response":"cohere","stream":"cohere_sse","error":"cohere_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embed","methods":["POST"]}],"endpoints":[{"id":"chat","method":"POST","methods":["POST"],"path":"/v2/chat","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cohere.chat","response_format":"cohere.chat","streaming":"sse","timeout_ms":600000},{"id":"embed","method":"POST","methods":["POST"],"path":"/v2/embed","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cohere.embed","response_format":"cohere.embed","streaming":null,"timeout_ms":120000}],"models":[{"id":"cohere/command-a-plus-05-2026","upstream":"command-a-plus-05-2026","capabilities":["llm.chat"],"pricing_ref":"cohere-command-a-plus-05-2026","pricing":null},{"id":"cohere/embed-v4.0","upstream":"embed-v4.0","capabilities":["llm.embeddings"],"pricing_ref":"cohere-embed-v4-0","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"deepseek","display_name":"DeepSeek","status":"stable","class":"openai_compatible","service_platform":"deepseek","service_kind":"model_provider","config_keys":["DEEPSEEK_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.deepseek.com"},"routing":{"nativePrefixes":["clawrouter-deepseek","deepseek"],"modelPrefixes":["deepseek/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-deepseek","deepseek"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"deepseek/deepseek-v4-pro","upstream":"deepseek-v4-pro","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":435000,"outputMicrosPerMillion":870000,"cachedInputMicrosPerMillion":3625,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},{"id":"deepseek/deepseek-v4-flash","upstream":"deepseek-v4-flash","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":140000,"outputMicrosPerMillion":280000,"cachedInputMicrosPerMillion":2800,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"firecrawl","display_name":"Firecrawl","status":"stable","class":"rest_json","service_platform":"firecrawl","service_kind":"tool_provider","config_keys":["FIRECRAWL_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":false}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key:optional"],"base_urls":{"default":"https://api.firecrawl.dev"},"routing":{"nativePrefixes":["clawrouter-firecrawl","firecrawl"],"modelPrefixes":[],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-firecrawl","firecrawl"],"adapter":{"request":"rest_json","response":"rest_json","stream":null,"error":"firecrawl_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"web.scrape","endpoint":"scrape","methods":["POST"]}],"endpoints":[{"id":"scrape","method":"POST","methods":["POST"],"path":"/v2/scrape","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"firecrawl.scrape","response_format":"firecrawl.scrape","streaming":null,"timeout_ms":120000}],"models":[],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"fireworks","display_name":"Fireworks AI","status":"stable","class":"openai_compatible","service_platform":"fireworks","service_kind":"model_provider","config_keys":["FIREWORKS_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.fireworks.ai/inference"},"routing":{"nativePrefixes":["clawrouter-fireworks","fireworks"],"modelPrefixes":["fireworks/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-fireworks","fireworks"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"fireworks/glm-5.2","upstream":"accounts/fireworks/models/glm-5p2","capabilities":["llm.chat"],"pricing_ref":"fireworks-glm-5p2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://fireworks.ai/blog/glm-5p2","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},{"id":"fireworks/gpt-oss-120b","upstream":"accounts/fireworks/models/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"fireworks-gpt-oss-120b","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"google-gemini","display_name":"Google Gemini","status":"stable","class":"rest_json","service_platform":"google","service_kind":"model_provider","config_keys":["GOOGLE_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"api_key","header":"x-goog-api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"https://generativelanguage.googleapis.com"},"routing":{"nativePrefixes":["clawrouter-google","google","gemini"],"modelPrefixes":["google/","gemini/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-google","google","gemini"],"adapter":{"request":"google_gemini","response":"google_gemini","stream":"google_sse","error":"google_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.generate","endpoint":"generate_content","methods":["POST"]},{"id":"llm.stream","endpoint":"stream_generate_content","methods":["POST"]}],"endpoints":[{"id":"generate_content","method":"POST","methods":["POST"],"path":"/v1beta/models/${model}:generateContent","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{},"request_format":"google.generate_content","response_format":"google.generate_content","streaming":null,"timeout_ms":600000},{"id":"stream_generate_content","method":"POST","methods":["POST"],"path":"/v1beta/models/${model}:streamGenerateContent","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{},"request_format":"google.generate_content","response_format":"google.stream_generate_content","streaming":"sse","timeout_ms":600000}],"models":[{"id":"google/gemini-3.5-flash","upstream":"gemini-3.5-flash","capabilities":["llm.generate","llm.stream"],"pricing_ref":"google-gemini-3-5-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://ai.google.dev/gemini-api/docs/pricing#gemini-3.5-flash","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":9000000,"cachedInputMicrosPerMillion":150000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"groq","display_name":"Groq","status":"stable","class":"openai_compatible","service_platform":"groq","service_kind":"model_provider","config_keys":["GROQ_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.groq.com/openai"},"routing":{"nativePrefixes":["clawrouter-groq","groq"],"modelPrefixes":["groq/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-groq","groq"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"groq/gpt-oss-120b","upstream":"openai/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"groq-gpt-oss-120b-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://console.groq.com/docs/model/openai/gpt-oss-120b","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":75000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"huggingface","display_name":"Hugging Face","status":"stable","class":"openai_compatible","service_platform":"huggingface","service_kind":"model_provider","config_keys":["HUGGINGFACE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://router.huggingface.co"},"routing":{"nativePrefixes":["clawrouter-huggingface","huggingface"],"modelPrefixes":["huggingface/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-huggingface","huggingface"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"huggingface/gpt-oss-120b-fastest","upstream":"openai/gpt-oss-120b:fastest","capabilities":["llm.chat"],"pricing_ref":"huggingface-router-dynamic","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"local-openai","display_name":"Local OpenAI-compatible","status":"experimental","class":"openai_compatible","service_platform":"local-openai","service_kind":"model_provider","config_keys":["LOCAL_OPENAI_BASE_URL","LOCAL_OPENAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":false}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key:optional"],"base_urls":{"default":"${local_openai_base_url}"},"routing":{"nativePrefixes":["clawrouter-local","local-openai","local"],"modelPrefixes":["local/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-local","local-openai","local"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"local/default","upstream":"default","capabilities":["llm.chat"],"pricing_ref":"local-compute-zero-api-charge-v1","pricing":{"effectiveAt":"2026-07-02","source":"https://docs.ollama.com/api/openai-compatibility","inputMicrosPerMillion":0,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":4096,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"minimax","display_name":"MiniMax","status":"stable","class":"openai_compatible","service_platform":"minimax","service_kind":"model_provider","config_keys":["MINIMAX_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.minimax.io"},"routing":{"nativePrefixes":["clawrouter-minimax","minimax"],"modelPrefixes":["minimax/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-minimax","minimax"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"minimax/MiniMax-M2.7","upstream":"MiniMax-M2.7","capabilities":["llm.chat"],"pricing_ref":"minimax-m2-7-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.minimax.io/docs/guides/pricing-paygo","inputMicrosPerMillion":300000,"outputMicrosPerMillion":1200000,"cachedInputMicrosPerMillion":60000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":204800,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"mistral","display_name":"Mistral AI","status":"stable","class":"openai_compatible","service_platform":"mistral","service_kind":"model_provider","config_keys":["MISTRAL_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.mistral.ai"},"routing":{"nativePrefixes":["clawrouter-mistral","mistral"],"modelPrefixes":["mistral/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-mistral","mistral"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/v1/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000}],"models":[{"id":"mistral/mistral-medium-3-5","upstream":"mistral-medium-3-5","capabilities":["llm.chat"],"pricing_ref":"mistral-medium-3-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":7500000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},{"id":"mistral/mistral-small-2603","upstream":"mistral-small-2603","capabilities":["llm.chat"],"pricing_ref":"mistral-small-4-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/getting-started/models/","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},{"id":"mistral/mistral-embed","upstream":"mistral-embed","capabilities":["llm.embeddings"],"pricing_ref":"mistral-embed-23-12-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://docs.mistral.ai/models/mistral-embed-23-12","inputMicrosPerMillion":100000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":null,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"openai","display_name":"OpenAI","status":"stable","class":"openai_compatible","service_platform":"openai","service_kind":"model_provider","config_keys":["OPENAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":{"authorizeUrl":"https://auth.openai.com/oauth/authorize","tokenUrl":"https://auth.openai.com/oauth/token","clientId":"app_EMoamEEZ73f0CkXaXp7hrann","scopes":["openid","profile","email","offline_access"],"grantKind":"subscription","extraAuthorizeParams":{"id_token_add_organizations":"true","codex_cli_simplified_flow":"true","originator":"clawrouter"},"accountIdJsonPointer":"/https:~1~1api.openai.com~1auth/chatgpt_account_id","subscriptionPlanJsonPointer":"/https:~1~1api.openai.com~1auth/chatgpt_plan_type","clientIdConfig":null,"clientSecretConfig":null,"extraTokenParams":{}},"refresh":{"tokenUrl":"https://auth.openai.com/oauth/token","clientId":"app_EMoamEEZ73f0CkXaXp7hrann","clientIdConfig":null,"clientSecretConfig":null,"extraParams":{}},"grantTransports":{"subscription":{"baseUrl":"https://chatgpt.com/backend-api/codex","endpointPaths":{"responses":"/responses"},"headers":{"ChatGPT-Account-ID":"${grant.accountId}","OpenAI-Beta":"responses=experimental","originator":"clawrouter"}}}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.openai.com"},"routing":{"nativePrefixes":["clawrouter-openai","openai"],"modelPrefixes":["openai/"],"baseUrlParam":"base_url","serviceParam":null},"native_prefixes":["clawrouter-openai","openai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":["OpenAI-Organization","OpenAI-Project"],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[{"from":"max_tokens","to":"max_completion_tokens","paths":["/v1/chat/completions"],"upstreams":["gpt-5.6","gpt-5.5","gpt-5.4"],"upstreamConfig":null}]}},"capabilities":[{"id":"llm.responses","endpoint":"responses","methods":["POST"]},{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/v1/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000},{"id":"responses","method":"POST","methods":["POST"],"path":"/v1/responses","native_proxy":true,"auth":null,"headers":{},"request_headers":["session-id","thread-id","session_id","x-client-request-id"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.responses","response_format":"openai.responses","streaming":"sse","timeout_ms":600000}],"models":[{"id":"openai/gpt-5.6","upstream":"gpt-5.6","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.6-standard-2026-07-09","pricing":{"effectiveAt":"2026-07-09","source":"https://developers.openai.com/api/docs/models/gpt-5.6-sol","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":6250000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":12500000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/gpt-5.5","upstream":"gpt-5.5","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://developers.openai.com/api/docs/models/gpt-5.5/","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/gpt-4.1-mini","upstream":"gpt-4.1-mini","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-4.1-mini-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/models/gpt-4.1-mini","inputMicrosPerMillion":400000,"outputMicrosPerMillion":1600000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1047576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":32768,"inputTokenOverhead":1024,"longContext":null}},{"id":"openai/gpt-5.4","upstream":"gpt-5.4","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.4-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://developers.openai.com/api/docs/models/gpt-5.4/","inputMicrosPerMillion":2500000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":250000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":5000000,"outputMicrosPerMillion":22500000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/text-embedding-3-large","upstream":"text-embedding-3-large","capabilities":["llm.embeddings"],"pricing_ref":"openai-text-embedding-3-large-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/pricing","inputMicrosPerMillion":130000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":300000,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.input_tokens","unit":"token"},{"name":"output_tokens","source":"usage.output_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"rpm","kind":"requests","unit":"request","window":"minute","fixedLimit":null,"limitHeaders":["x-ratelimit-limit-requests"],"remainingHeaders":["x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["x-ratelimit-reset-requests"]},{"id":"tpm","kind":"tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["x-ratelimit-limit-tokens"],"remainingHeaders":["x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["x-ratelimit-reset-tokens"]},{"id":"subscription-primary","kind":"subscription","unit":"percent","window":"primary","fixedLimit":100,"limitHeaders":[],"remainingHeaders":[],"usedHeaders":["x-codex-primary-used-percent"],"resetHeaders":["x-codex-primary-reset-at"]},{"id":"subscription-secondary","kind":"subscription","unit":"percent","window":"secondary","fixedLimit":100,"limitHeaders":[],"remainingHeaders":[],"usedHeaders":["x-codex-secondary-used-percent"],"resetHeaders":["x-codex-secondary-reset-at"]},{"id":"credits","kind":"credits","unit":"credit","window":null,"fixedLimit":null,"limitHeaders":[],"remainingHeaders":["x-codex-credits-balance"],"usedHeaders":[],"resetHeaders":[]}],"probes":[{"grantKinds":["subscription"],"url":"https://chatgpt.com/backend-api/wham/usage","method":"GET","headers":{"ChatGPT-Account-ID":"${grant.accountId}","User-Agent":"codex-cli"},"windows":[{"id":"subscription-primary","kind":"subscription","unit":"percent","window":"primary","fixedLimit":100,"limitPointer":null,"remainingPointer":null,"usedPointer":"/rate_limit/primary_window/used_percent","resetPointer":"/rate_limit/primary_window/reset_at"},{"id":"subscription-secondary","kind":"subscription","unit":"percent","window":"secondary","fixedLimit":100,"limitPointer":null,"remainingPointer":null,"usedPointer":"/rate_limit/secondary_window/used_percent","resetPointer":"/rate_limit/secondary_window/reset_at"},{"id":"credits","kind":"credits","unit":"credit","window":null,"fixedLimit":null,"limitPointer":null,"remainingPointer":"/credits/balance","usedPointer":null,"resetPointer":null}]}]}},{"id":"openrouter","display_name":"OpenRouter","status":"stable","class":"openai_compatible","service_platform":"openrouter","service_kind":"gateway_platform","config_keys":["OPENROUTER_API_KEY","OPENROUTER_SITE_URL"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://openrouter.ai/api"},"routing":{"nativePrefixes":["clawrouter-openrouter","openrouter"],"modelPrefixes":["openrouter/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-openrouter","openrouter"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{"HTTP-Referer":"${site_url}","X-Title":"ClawRouter"},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"openrouter/auto","upstream":"openrouter/auto","capabilities":["llm.chat"],"pricing_ref":"openrouter-auto","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"perplexity","display_name":"Perplexity","status":"stable","class":"openai_compatible","service_platform":"perplexity","service_kind":"model_provider","config_keys":["PERPLEXITY_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.perplexity.ai"},"routing":{"nativePrefixes":["clawrouter-perplexity","perplexity"],"modelPrefixes":["perplexity/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-perplexity","perplexity"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"perplexity/sonar-pro","upstream":"sonar-pro","capabilities":["llm.chat"],"pricing_ref":"perplexity-sonar-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.perplexity.ai/docs/sonar/models/sonar-pro","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":8192,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"replicate","display_name":"Replicate","status":"stable","class":"rest_json","service_platform":"replicate","service_kind":"tool_provider","config_keys":["REPLICATE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://api.replicate.com"},"routing":{"nativePrefixes":["clawrouter-replicate","replicate"],"modelPrefixes":["replicate/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-replicate","replicate"],"adapter":{"request":"replicate","response":"replicate","stream":null,"error":"replicate_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"media.predict","endpoint":"predictions","methods":["POST"]},{"id":"media.prediction.read","endpoint":"prediction","methods":["GET"]}],"endpoints":[{"id":"prediction","method":"GET","methods":["GET"],"path":"/v1/predictions/${prediction_id}","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["prediction_id"],"path_param_styles":{},"request_format":"replicate.prediction_get","response_format":"replicate.prediction","streaming":null,"timeout_ms":120000},{"id":"predictions","method":"POST","methods":["POST"],"path":"/v1/predictions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"replicate.prediction_create","response_format":"replicate.prediction","streaming":null,"timeout_ms":120000}],"models":[{"id":"replicate/predictions","upstream":"predictions","capabilities":["media.predict","media.prediction.read"],"pricing_ref":"replicate-predictions","pricing":null}],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"tavily","display_name":"Tavily","status":"stable","class":"rest_json","service_platform":"tavily","service_kind":"tool_provider","config_keys":["TAVILY_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.tavily.com"},"routing":{"nativePrefixes":["clawrouter-tavily","tavily"],"modelPrefixes":["tavily/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-tavily","tavily"],"adapter":{"request":"rest_json","response":"rest_json","stream":null,"error":"tavily_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"web.search","endpoint":"search","methods":["POST"]},{"id":"web.extract","endpoint":"extract","methods":["POST"]},{"id":"web.crawl","endpoint":"crawl","methods":["POST"]}],"endpoints":[{"id":"crawl","method":"POST","methods":["POST"],"path":"/crawl","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.crawl","response_format":"tavily.crawl","streaming":null,"timeout_ms":300000},{"id":"extract","method":"POST","methods":["POST"],"path":"/extract","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.extract","response_format":"tavily.extract","streaming":null,"timeout_ms":120000},{"id":"search","method":"POST","methods":["POST"],"path":"/search","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.search","response_format":"tavily.search","streaming":null,"timeout_ms":120000}],"models":[{"id":"tavily/search","upstream":"search","capabilities":["web.search"],"pricing_ref":"tavily-search","pricing":null},{"id":"tavily/extract","upstream":"extract","capabilities":["web.extract"],"pricing_ref":"tavily-extract","pricing":null}],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"together","display_name":"Together AI","status":"stable","class":"openai_compatible","service_platform":"together","service_kind":"model_provider","config_keys":["TOGETHER_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.together.xyz"},"routing":{"nativePrefixes":["clawrouter-together","together"],"modelPrefixes":["together/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-together","together"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"together/glm-5.2","upstream":"zai-org/GLM-5.2","capabilities":["llm.chat"],"pricing_ref":"together-glm-5-2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.together.ai/docs/serverless/models","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"xai","display_name":"xAI","status":"stable","class":"openai_compatible","service_platform":"xai","service_kind":"model_provider","config_keys":["XAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.x.ai"},"routing":{"nativePrefixes":["clawrouter-xai","xai"],"modelPrefixes":["xai/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-xai","xai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"xai/grok-4.3","upstream":"grok-4.3","capabilities":["llm.chat"],"pricing_ref":"xai-grok-4-3-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://api.x.ai/v1/models/grok-4.3","inputMicrosPerMillion":1250000,"outputMicrosPerMillion":2500000,"cachedInputMicrosPerMillion":200000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":200000,"inputMicrosPerMillion":2500000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":400000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}}],"capability_index":{"llm.messages":[{"provider":"anthropic","endpoint":"messages","methods":["POST"]}],"llm.count_tokens":[{"provider":"anthropic","endpoint":"count_tokens","methods":["POST"]}],"llm.invoke":[{"provider":"aws-bedrock","endpoint":"invoke_model","methods":["POST"]}],"llm.stream":[{"provider":"aws-bedrock","endpoint":"invoke_model_stream","methods":["POST"]},{"provider":"google-gemini","endpoint":"stream_generate_content","methods":["POST"]}],"llm.chat":[{"provider":"azure-openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"cloudflare-ai-gateway","endpoint":"universal","methods":["POST"]},{"provider":"cohere","endpoint":"chat","methods":["POST"]},{"provider":"deepseek","endpoint":"chat_completions","methods":["POST"]},{"provider":"fireworks","endpoint":"chat_completions","methods":["POST"]},{"provider":"groq","endpoint":"chat_completions","methods":["POST"]},{"provider":"huggingface","endpoint":"chat_completions","methods":["POST"]},{"provider":"local-openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"minimax","endpoint":"chat_completions","methods":["POST"]},{"provider":"mistral","endpoint":"chat_completions","methods":["POST"]},{"provider":"openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"openrouter","endpoint":"chat_completions","methods":["POST"]},{"provider":"perplexity","endpoint":"chat_completions","methods":["POST"]},{"provider":"together","endpoint":"chat_completions","methods":["POST"]},{"provider":"xai","endpoint":"chat_completions","methods":["POST"]}],"llm.embeddings":[{"provider":"azure-openai","endpoint":"embeddings","methods":["POST"]},{"provider":"cohere","endpoint":"embed","methods":["POST"]},{"provider":"mistral","endpoint":"embeddings","methods":["POST"]},{"provider":"openai","endpoint":"embeddings","methods":["POST"]}],"llm.responses":[{"provider":"cloudflare-ai-gateway","endpoint":"universal","methods":["POST"]},{"provider":"openai","endpoint":"responses","methods":["POST"]}],"web.scrape":[{"provider":"firecrawl","endpoint":"scrape","methods":["POST"]}],"llm.generate":[{"provider":"google-gemini","endpoint":"generate_content","methods":["POST"]}],"media.predict":[{"provider":"replicate","endpoint":"predictions","methods":["POST"]}],"media.prediction.read":[{"provider":"replicate","endpoint":"prediction","methods":["GET"]}],"web.search":[{"provider":"tavily","endpoint":"search","methods":["POST"]}],"web.extract":[{"provider":"tavily","endpoint":"extract","methods":["POST"]}],"web.crawl":[{"provider":"tavily","endpoint":"crawl","methods":["POST"]}]},"model_index":{"anthropic/claude-opus-4-8":{"provider":"anthropic","upstream":"claude-opus-4-8","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-opus-4-8-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":25000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":6250000,"cacheWrite1hInputMicrosPerMillion":10000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":null}},"anthropic/claude-sonnet-4-6":{"provider":"anthropic","upstream":"claude-sonnet-4-6","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-sonnet-4-6-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":300000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":3750000,"cacheWrite1hInputMicrosPerMillion":6000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},"anthropic/claude-haiku-4-5":{"provider":"anthropic","upstream":"claude-haiku-4-5","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-haiku-4-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":1000000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":1250000,"cacheWrite1hInputMicrosPerMillion":2000000,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},"bedrock/amazon.nova-lite-v1:0":{"provider":"aws-bedrock","upstream":"amazon.nova-lite-v1:0","capabilities":["llm.invoke","llm.stream"],"pricing_ref":"aws-bedrock-model","pricing":null},"azure-openai/deployment":{"provider":"azure-openai","upstream":"${deployment}","capabilities":["llm.chat","llm.embeddings"],"pricing_ref":"azure-openai-deployment","pricing":null},"cloudflare-ai-gateway/auto":{"provider":"cloudflare-ai-gateway","upstream":"auto","capabilities":["llm.chat","llm.responses"],"pricing_ref":"cloudflare-ai-gateway-auto","pricing":null},"cohere/command-a-plus-05-2026":{"provider":"cohere","upstream":"command-a-plus-05-2026","capabilities":["llm.chat"],"pricing_ref":"cohere-command-a-plus-05-2026","pricing":null},"cohere/embed-v4.0":{"provider":"cohere","upstream":"embed-v4.0","capabilities":["llm.embeddings"],"pricing_ref":"cohere-embed-v4-0","pricing":null},"deepseek/deepseek-v4-pro":{"provider":"deepseek","upstream":"deepseek-v4-pro","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":435000,"outputMicrosPerMillion":870000,"cachedInputMicrosPerMillion":3625,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},"deepseek/deepseek-v4-flash":{"provider":"deepseek","upstream":"deepseek-v4-flash","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":140000,"outputMicrosPerMillion":280000,"cachedInputMicrosPerMillion":2800,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},"fireworks/glm-5.2":{"provider":"fireworks","upstream":"accounts/fireworks/models/glm-5p2","capabilities":["llm.chat"],"pricing_ref":"fireworks-glm-5p2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://fireworks.ai/blog/glm-5p2","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"fireworks/gpt-oss-120b":{"provider":"fireworks","upstream":"accounts/fireworks/models/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"fireworks-gpt-oss-120b","pricing":null},"google/gemini-3.5-flash":{"provider":"google-gemini","upstream":"gemini-3.5-flash","capabilities":["llm.generate","llm.stream"],"pricing_ref":"google-gemini-3-5-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://ai.google.dev/gemini-api/docs/pricing#gemini-3.5-flash","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":9000000,"cachedInputMicrosPerMillion":150000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"groq/gpt-oss-120b":{"provider":"groq","upstream":"openai/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"groq-gpt-oss-120b-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://console.groq.com/docs/model/openai/gpt-oss-120b","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":75000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"huggingface/gpt-oss-120b-fastest":{"provider":"huggingface","upstream":"openai/gpt-oss-120b:fastest","capabilities":["llm.chat"],"pricing_ref":"huggingface-router-dynamic","pricing":null},"local/default":{"provider":"local-openai","upstream":"default","capabilities":["llm.chat"],"pricing_ref":"local-compute-zero-api-charge-v1","pricing":{"effectiveAt":"2026-07-02","source":"https://docs.ollama.com/api/openai-compatibility","inputMicrosPerMillion":0,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":4096,"inputTokenOverhead":1024,"longContext":null}},"minimax/MiniMax-M2.7":{"provider":"minimax","upstream":"MiniMax-M2.7","capabilities":["llm.chat"],"pricing_ref":"minimax-m2-7-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.minimax.io/docs/guides/pricing-paygo","inputMicrosPerMillion":300000,"outputMicrosPerMillion":1200000,"cachedInputMicrosPerMillion":60000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":204800,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-medium-3-5":{"provider":"mistral","upstream":"mistral-medium-3-5","capabilities":["llm.chat"],"pricing_ref":"mistral-medium-3-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":7500000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-small-2603":{"provider":"mistral","upstream":"mistral-small-2603","capabilities":["llm.chat"],"pricing_ref":"mistral-small-4-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/getting-started/models/","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-embed":{"provider":"mistral","upstream":"mistral-embed","capabilities":["llm.embeddings"],"pricing_ref":"mistral-embed-23-12-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://docs.mistral.ai/models/mistral-embed-23-12","inputMicrosPerMillion":100000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":null,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}},"openai/gpt-5.6":{"provider":"openai","upstream":"gpt-5.6","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.6-standard-2026-07-09","pricing":{"effectiveAt":"2026-07-09","source":"https://developers.openai.com/api/docs/models/gpt-5.6-sol","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":6250000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":12500000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/gpt-5.5":{"provider":"openai","upstream":"gpt-5.5","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://developers.openai.com/api/docs/models/gpt-5.5/","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/gpt-4.1-mini":{"provider":"openai","upstream":"gpt-4.1-mini","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-4.1-mini-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/models/gpt-4.1-mini","inputMicrosPerMillion":400000,"outputMicrosPerMillion":1600000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1047576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":32768,"inputTokenOverhead":1024,"longContext":null}},"openai/gpt-5.4":{"provider":"openai","upstream":"gpt-5.4","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.4-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://developers.openai.com/api/docs/models/gpt-5.4/","inputMicrosPerMillion":2500000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":250000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":5000000,"outputMicrosPerMillion":22500000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/text-embedding-3-large":{"provider":"openai","upstream":"text-embedding-3-large","capabilities":["llm.embeddings"],"pricing_ref":"openai-text-embedding-3-large-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/pricing","inputMicrosPerMillion":130000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":300000,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}},"openrouter/auto":{"provider":"openrouter","upstream":"openrouter/auto","capabilities":["llm.chat"],"pricing_ref":"openrouter-auto","pricing":null},"perplexity/sonar-pro":{"provider":"perplexity","upstream":"sonar-pro","capabilities":["llm.chat"],"pricing_ref":"perplexity-sonar-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.perplexity.ai/docs/sonar/models/sonar-pro","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":8192,"inputTokenOverhead":1024,"longContext":null}},"replicate/predictions":{"provider":"replicate","upstream":"predictions","capabilities":["media.predict","media.prediction.read"],"pricing_ref":"replicate-predictions","pricing":null},"tavily/search":{"provider":"tavily","upstream":"search","capabilities":["web.search"],"pricing_ref":"tavily-search","pricing":null},"tavily/extract":{"provider":"tavily","upstream":"extract","capabilities":["web.extract"],"pricing_ref":"tavily-extract","pricing":null},"together/glm-5.2":{"provider":"together","upstream":"zai-org/GLM-5.2","capabilities":["llm.chat"],"pricing_ref":"together-glm-5-2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.together.ai/docs/serverless/models","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"xai/grok-4.3":{"provider":"xai","upstream":"grok-4.3","capabilities":["llm.chat"],"pricing_ref":"xai-grok-4-3-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://api.x.ai/v1/models/grok-4.3","inputMicrosPerMillion":1250000,"outputMicrosPerMillion":2500000,"cachedInputMicrosPerMillion":200000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":200000,"inputMicrosPerMillion":2500000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":400000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}}}} +{"version":"clawrouter.provider-snapshot.v1","providers":[{"id":"anthropic","display_name":"Anthropic","status":"stable","class":"anthropic_compatible","service_platform":"anthropic","service_kind":"model_provider","config_keys":["ANTHROPIC_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"api_key","header":"x-api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"https://api.anthropic.com"},"routing":{"nativePrefixes":["clawrouter-anthropic","anthropic"],"modelPrefixes":["anthropic/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-anthropic","anthropic"],"adapter":{"request":"anthropic","response":"anthropic","stream":"anthropic_sse","error":"anthropic_error","passthroughHeaders":["anthropic-beta","anthropic-version"],"injectHeaders":{"anthropic-version":"2023-06-01"},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.messages","endpoint":"messages","methods":["POST"]},{"id":"llm.count_tokens","endpoint":"count_tokens","methods":["POST"]}],"endpoints":[{"id":"count_tokens","method":"POST","methods":["POST"],"path":"/v1/messages/count_tokens","native_proxy":true,"auth":null,"headers":{},"request_headers":["anthropic-beta","anthropic-version"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"anthropic.messages","response_format":"anthropic.count_tokens","streaming":null,"timeout_ms":120000},{"id":"messages","method":"POST","methods":["POST"],"path":"/v1/messages","native_proxy":true,"auth":null,"headers":{},"request_headers":["anthropic-beta","anthropic-version"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"anthropic.messages","response_format":"anthropic.messages","streaming":"sse","timeout_ms":600000}],"models":[{"id":"anthropic/claude-opus-4-8","upstream":"claude-opus-4-8","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-opus-4-8-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":25000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":6250000,"cacheWrite1hInputMicrosPerMillion":10000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":null}},{"id":"anthropic/claude-sonnet-4-6","upstream":"claude-sonnet-4-6","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-sonnet-4-6-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":300000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":3750000,"cacheWrite1hInputMicrosPerMillion":6000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},{"id":"anthropic/claude-haiku-4-5","upstream":"claude-haiku-4-5","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-haiku-4-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":1000000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":1250000,"cacheWrite1hInputMicrosPerMillion":2000000,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.input_tokens","unit":"token"},{"name":"output_tokens","source":"usage.output_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"rpm","kind":"requests","unit":"request","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-requests-limit"],"remainingHeaders":["anthropic-ratelimit-requests-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-requests-reset"]},{"id":"tpm","kind":"tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-tokens-reset"]},{"id":"itpm","kind":"input_tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-input-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-input-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-input-tokens-reset"]},{"id":"otpm","kind":"output_tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["anthropic-ratelimit-output-tokens-limit"],"remainingHeaders":["anthropic-ratelimit-output-tokens-remaining"],"usedHeaders":[],"resetHeaders":["anthropic-ratelimit-output-tokens-reset"]}],"probes":[]}},{"id":"aws-bedrock","display_name":"AWS Bedrock","status":"experimental","class":"custom_adapter","service_platform":"aws","service_kind":"model_provider","config_keys":["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","AWS_REGION"],"optional_config_keys":["AWS_SESSION_TOKEN"],"auth":{"schemes":[{"type":"sig_v4","service":"bedrock","regionParam":"region"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["sigv4:bedrock"],"base_urls":{"default":"https://bedrock-runtime.${region}.amazonaws.com"},"routing":{"nativePrefixes":["clawrouter-aws-bedrock","bedrock"],"modelPrefixes":["bedrock/","aws-bedrock/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-aws-bedrock","bedrock"],"adapter":{"request":"aws_bedrock","response":"aws_bedrock","stream":"aws_eventstream","error":"aws_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.invoke","endpoint":"invoke_model","methods":["POST"]},{"id":"llm.stream","endpoint":"invoke_model_stream","methods":["POST"]}],"endpoints":[{"id":"invoke_model","method":"POST","methods":["POST"],"path":"/model/${model}/invoke","native_proxy":true,"auth":null,"headers":{"content-type":"application/json"},"request_headers":["accept","x-amzn-bedrock-guardrailidentifier","x-amzn-bedrock-guardrailtrace","x-amzn-bedrock-guardrailversion","x-amzn-bedrock-performanceconfig-latency","x-amzn-bedrock-request-metadata","x-amzn-bedrock-service-tier","x-amzn-bedrock-trace"],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{"model":"opaque_segment"},"request_format":"aws_bedrock.invoke","response_format":"aws_bedrock.invoke","streaming":null,"timeout_ms":600000},{"id":"invoke_model_stream","method":"POST","methods":["POST"],"path":"/model/${model}/invoke-with-response-stream","native_proxy":true,"auth":null,"headers":{"content-type":"application/json"},"request_headers":["accept","x-amzn-bedrock-accept","x-amzn-bedrock-guardrailidentifier","x-amzn-bedrock-guardrailtrace","x-amzn-bedrock-guardrailversion","x-amzn-bedrock-performanceconfig-latency","x-amzn-bedrock-request-metadata","x-amzn-bedrock-service-tier","x-amzn-bedrock-trace"],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{"model":"opaque_segment"},"request_format":"aws_bedrock.invoke","response_format":"aws_bedrock.eventstream","streaming":"aws_eventstream","timeout_ms":600000}],"models":[{"id":"bedrock/amazon.nova-lite-v1:0","upstream":"amazon.nova-lite-v1:0","capabilities":["llm.invoke","llm.stream"],"pricing_ref":"aws-bedrock-model","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject","region"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"azure-openai","display_name":"Azure OpenAI","status":"stable","class":"openai_compatible","service_platform":"azure","service_kind":"model_provider","config_keys":["AZURE_OPENAI_API_KEY","AZURE_OPENAI_ENDPOINT","AZURE_OPENAI_API_VERSION","AZURE_OPENAI_COMPLETION_TOKEN_DEPLOYMENTS","AZURE_OPENAI_DEPLOYMENT"],"optional_config_keys":["AZURE_OPENAI_COMPLETION_TOKEN_DEPLOYMENTS"],"auth":{"schemes":[{"type":"api_key","header":"api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"${endpoint}"},"routing":{"nativePrefixes":["clawrouter-azure-openai","azure-openai"],"modelPrefixes":["azure-openai/"],"baseUrlParam":"endpoint","serviceParam":null},"native_prefixes":["clawrouter-azure-openai","azure-openai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{"api-version":"${api_version}"},"requestTransforms":{"renameFields":[{"from":"max_tokens","to":"max_completion_tokens","paths":["/v1/chat/completions"],"upstreams":[],"upstreamConfig":"completion_token_deployments"}]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/openai/deployments/${deployment}/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["deployment"],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/openai/deployments/${deployment}/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["deployment"],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000}],"models":[{"id":"azure-openai/deployment","upstream":"${deployment}","capabilities":["llm.chat","llm.embeddings"],"pricing_ref":"azure-openai-deployment","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","deployment","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"cloudflare-ai-gateway","display_name":"Cloudflare AI Gateway","status":"experimental","class":"cloudflare_ai_gateway","service_platform":"cloudflare-ai-gateway","service_kind":"gateway_platform","config_keys":["CLOUDFLARE_ACCOUNT_ID","CLOUDFLARE_AI_GATEWAY_ID","CLOUDFLARE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"cf-aig-authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://gateway.ai.cloudflare.com/v1/${account_id}/${gateway_id}"},"routing":{"nativePrefixes":["clawrouter-cloudflare","cloudflare-ai-gateway"],"modelPrefixes":["cloudflare-ai-gateway/"],"baseUrlParam":"base_url","serviceParam":null},"native_prefixes":["clawrouter-cloudflare","cloudflare-ai-gateway"],"adapter":{"request":"cloudflare_ai_gateway","response":"provider_native","stream":"provider_sse","error":"cloudflare_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"universal","methods":["POST"]},{"id":"llm.responses","endpoint":"universal","methods":["POST"]}],"endpoints":[{"id":"universal","method":"POST","methods":["POST"],"path":"/","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cloudflare_ai_gateway.universal","response_format":"provider.native","streaming":"sse","timeout_ms":600000}],"models":[{"id":"cloudflare-ai-gateway/auto","upstream":"auto","capabilities":["llm.chat","llm.responses"],"pricing_ref":"cloudflare-ai-gateway-auto","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"cohere","display_name":"Cohere","status":"stable","class":"rest_json","service_platform":"cohere","service_kind":"model_provider","config_keys":["COHERE_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.cohere.com"},"routing":{"nativePrefixes":["clawrouter-cohere","cohere"],"modelPrefixes":["cohere/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-cohere","cohere"],"adapter":{"request":"cohere","response":"cohere","stream":"cohere_sse","error":"cohere_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embed","methods":["POST"]}],"endpoints":[{"id":"chat","method":"POST","methods":["POST"],"path":"/v2/chat","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cohere.chat","response_format":"cohere.chat","streaming":"sse","timeout_ms":600000},{"id":"embed","method":"POST","methods":["POST"],"path":"/v2/embed","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"cohere.embed","response_format":"cohere.embed","streaming":null,"timeout_ms":120000}],"models":[{"id":"cohere/command-a-plus-05-2026","upstream":"command-a-plus-05-2026","capabilities":["llm.chat"],"pricing_ref":"cohere-command-a-plus-05-2026","pricing":null},{"id":"cohere/embed-v4.0","upstream":"embed-v4.0","capabilities":["llm.embeddings"],"pricing_ref":"cohere-embed-v4-0","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"deepseek","display_name":"DeepSeek","status":"stable","class":"openai_compatible","service_platform":"deepseek","service_kind":"model_provider","config_keys":["DEEPSEEK_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.deepseek.com"},"routing":{"nativePrefixes":["clawrouter-deepseek","deepseek"],"modelPrefixes":["deepseek/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-deepseek","deepseek"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"deepseek/deepseek-v4-pro","upstream":"deepseek-v4-pro","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":435000,"outputMicrosPerMillion":870000,"cachedInputMicrosPerMillion":3625,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},{"id":"deepseek/deepseek-v4-flash","upstream":"deepseek-v4-flash","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":140000,"outputMicrosPerMillion":280000,"cachedInputMicrosPerMillion":2800,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"firecrawl","display_name":"Firecrawl","status":"stable","class":"rest_json","service_platform":"firecrawl","service_kind":"tool_provider","config_keys":["FIRECRAWL_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":false}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key:optional"],"base_urls":{"default":"https://api.firecrawl.dev"},"routing":{"nativePrefixes":["clawrouter-firecrawl","firecrawl"],"modelPrefixes":[],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-firecrawl","firecrawl"],"adapter":{"request":"rest_json","response":"rest_json","stream":null,"error":"firecrawl_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"web.scrape","endpoint":"scrape","methods":["POST"]}],"endpoints":[{"id":"scrape","method":"POST","methods":["POST"],"path":"/v2/scrape","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"firecrawl.scrape","response_format":"firecrawl.scrape","streaming":null,"timeout_ms":120000}],"models":[],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"fireworks","display_name":"Fireworks AI","status":"stable","class":"openai_compatible","service_platform":"fireworks","service_kind":"model_provider","config_keys":["FIREWORKS_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.fireworks.ai/inference"},"routing":{"nativePrefixes":["clawrouter-fireworks","fireworks"],"modelPrefixes":["fireworks/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-fireworks","fireworks"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"fireworks/glm-5.2","upstream":"accounts/fireworks/models/glm-5p2","capabilities":["llm.chat"],"pricing_ref":"fireworks-glm-5p2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://fireworks.ai/blog/glm-5p2","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},{"id":"fireworks/gpt-oss-120b","upstream":"accounts/fireworks/models/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"fireworks-gpt-oss-120b","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"google-gemini","display_name":"Google Gemini","status":"stable","class":"rest_json","service_platform":"google","service_kind":"model_provider","config_keys":["GOOGLE_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"api_key","header":"x-goog-api-key","secretKind":"api_key"}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["api_key:api_key"],"base_urls":{"default":"https://generativelanguage.googleapis.com"},"routing":{"nativePrefixes":["clawrouter-google","google","gemini"],"modelPrefixes":["google/","gemini/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-google","google","gemini"],"adapter":{"request":"google_gemini","response":"google_gemini","stream":"google_sse","error":"google_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.generate","endpoint":"generate_content","methods":["POST"]},{"id":"llm.stream","endpoint":"stream_generate_content","methods":["POST"]}],"endpoints":[{"id":"generate_content","method":"POST","methods":["POST"],"path":"/v1beta/models/${model}:generateContent","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{},"request_format":"google.generate_content","response_format":"google.generate_content","streaming":null,"timeout_ms":600000},{"id":"stream_generate_content","method":"POST","methods":["POST"],"path":"/v1beta/models/${model}:streamGenerateContent","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["model"],"path_param_styles":{},"request_format":"google.generate_content","response_format":"google.stream_generate_content","streaming":"sse","timeout_ms":600000}],"models":[{"id":"google/gemini-3.5-flash","upstream":"gemini-3.5-flash","capabilities":["llm.generate","llm.stream"],"pricing_ref":"google-gemini-3-5-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://ai.google.dev/gemini-api/docs/pricing#gemini-3.5-flash","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":9000000,"cachedInputMicrosPerMillion":150000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"groq","display_name":"Groq","status":"stable","class":"openai_compatible","service_platform":"groq","service_kind":"model_provider","config_keys":["GROQ_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.groq.com/openai"},"routing":{"nativePrefixes":["clawrouter-groq","groq"],"modelPrefixes":["groq/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-groq","groq"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"groq/gpt-oss-120b","upstream":"openai/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"groq-gpt-oss-120b-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://console.groq.com/docs/model/openai/gpt-oss-120b","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":75000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"huggingface","display_name":"Hugging Face","status":"stable","class":"openai_compatible","service_platform":"huggingface","service_kind":"model_provider","config_keys":["HUGGINGFACE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://router.huggingface.co"},"routing":{"nativePrefixes":["clawrouter-huggingface","huggingface"],"modelPrefixes":["huggingface/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-huggingface","huggingface"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"huggingface/gpt-oss-120b-fastest","upstream":"openai/gpt-oss-120b:fastest","capabilities":["llm.chat"],"pricing_ref":"huggingface-router-dynamic","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"local-openai","display_name":"Local OpenAI-compatible","status":"experimental","class":"openai_compatible","service_platform":"local-openai","service_kind":"model_provider","config_keys":["LOCAL_OPENAI_BASE_URL","LOCAL_OPENAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":false}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key:optional"],"base_urls":{"default":"${local_openai_base_url}"},"routing":{"nativePrefixes":["clawrouter-local","local-openai","local"],"modelPrefixes":["local/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-local","local-openai","local"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"local/default","upstream":"default","capabilities":["llm.chat"],"pricing_ref":"local-compute-zero-api-charge-v1","pricing":{"effectiveAt":"2026-07-02","source":"https://docs.ollama.com/api/openai-compatibility","inputMicrosPerMillion":0,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":4096,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"minimax","display_name":"MiniMax","status":"stable","class":"openai_compatible","service_platform":"minimax","service_kind":"model_provider","config_keys":["MINIMAX_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.minimax.io"},"routing":{"nativePrefixes":["clawrouter-minimax","minimax"],"modelPrefixes":["minimax/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-minimax","minimax"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"minimax/MiniMax-M2.7","upstream":"MiniMax-M2.7","capabilities":["llm.chat"],"pricing_ref":"minimax-m2-7-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.minimax.io/docs/guides/pricing-paygo","inputMicrosPerMillion":300000,"outputMicrosPerMillion":1200000,"cachedInputMicrosPerMillion":60000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":204800,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"mistral","display_name":"Mistral AI","status":"stable","class":"openai_compatible","service_platform":"mistral","service_kind":"model_provider","config_keys":["MISTRAL_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.mistral.ai"},"routing":{"nativePrefixes":["clawrouter-mistral","mistral"],"modelPrefixes":["mistral/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-mistral","mistral"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/v1/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000}],"models":[{"id":"mistral/mistral-medium-3-5","upstream":"mistral-medium-3-5","capabilities":["llm.chat"],"pricing_ref":"mistral-medium-3-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":7500000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},{"id":"mistral/mistral-small-2603","upstream":"mistral-small-2603","capabilities":["llm.chat"],"pricing_ref":"mistral-small-4-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/getting-started/models/","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},{"id":"mistral/mistral-embed","upstream":"mistral-embed","capabilities":["llm.embeddings"],"pricing_ref":"mistral-embed-23-12-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://docs.mistral.ai/models/mistral-embed-23-12","inputMicrosPerMillion":100000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":null,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"openai","display_name":"OpenAI","status":"stable","class":"openai_compatible","service_platform":"openai","service_kind":"model_provider","config_keys":["OPENAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":{"authorizeUrl":"https://auth.openai.com/oauth/authorize","tokenUrl":"https://auth.openai.com/oauth/token","clientId":"app_EMoamEEZ73f0CkXaXp7hrann","scopes":["openid","profile","email","offline_access"],"grantKind":"subscription","extraAuthorizeParams":{"id_token_add_organizations":"true","codex_cli_simplified_flow":"true","originator":"clawrouter"},"accountIdJsonPointer":"/https:~1~1api.openai.com~1auth/chatgpt_account_id","subscriptionPlanJsonPointer":"/https:~1~1api.openai.com~1auth/chatgpt_plan_type","clientIdConfig":null,"clientSecretConfig":null,"extraTokenParams":{}},"refresh":{"tokenUrl":"https://auth.openai.com/oauth/token","clientId":"app_EMoamEEZ73f0CkXaXp7hrann","clientIdConfig":null,"clientSecretConfig":null,"extraParams":{}},"grantTransports":{"subscription":{"baseUrl":"https://chatgpt.com/backend-api/codex","endpointPaths":{"responses":"/responses"},"headers":{"ChatGPT-Account-ID":"${grant.accountId}","OpenAI-Beta":"responses=experimental","originator":"clawrouter"}}}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.openai.com"},"routing":{"nativePrefixes":["clawrouter-openai","openai"],"modelPrefixes":["openai/"],"baseUrlParam":"base_url","serviceParam":null},"native_prefixes":["clawrouter-openai","openai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":["OpenAI-Organization","OpenAI-Project"],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[{"from":"max_tokens","to":"max_completion_tokens","paths":["/v1/chat/completions"],"upstreams":["gpt-5.6","gpt-5.5","gpt-5.4"],"upstreamConfig":null}]}},"capabilities":[{"id":"llm.responses","endpoint":"responses","methods":["POST"]},{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]},{"id":"llm.embeddings","endpoint":"embeddings","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000},{"id":"embeddings","method":"POST","methods":["POST"],"path":"/v1/embeddings","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.embeddings","response_format":"openai.embeddings","streaming":null,"timeout_ms":120000},{"id":"responses","method":"POST","methods":["POST"],"path":"/v1/responses","native_proxy":true,"auth":null,"headers":{},"request_headers":["session-id","thread-id","session_id","x-client-request-id"],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.responses","response_format":"openai.responses","streaming":"sse","timeout_ms":600000}],"models":[{"id":"openai/gpt-5.6","upstream":"gpt-5.6","capabilities":["llm.responses","llm.chat"],"supportedReasoningEfforts":["none","low","medium","high","xhigh","max"],"pricing_ref":"openai-gpt-5.6-standard-2026-07-09","pricing":{"effectiveAt":"2026-07-09","source":"https://developers.openai.com/api/docs/models/gpt-5.6-sol","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":6250000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":12500000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/gpt-5.5","upstream":"gpt-5.5","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://developers.openai.com/api/docs/models/gpt-5.5/","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/gpt-4.1-mini","upstream":"gpt-4.1-mini","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-4.1-mini-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/models/gpt-4.1-mini","inputMicrosPerMillion":400000,"outputMicrosPerMillion":1600000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1047576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":32768,"inputTokenOverhead":1024,"longContext":null}},{"id":"openai/gpt-5.4","upstream":"gpt-5.4","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.4-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://developers.openai.com/api/docs/models/gpt-5.4/","inputMicrosPerMillion":2500000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":250000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":5000000,"outputMicrosPerMillion":22500000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},{"id":"openai/text-embedding-3-large","upstream":"text-embedding-3-large","capabilities":["llm.embeddings"],"pricing_ref":"openai-text-embedding-3-large-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/pricing","inputMicrosPerMillion":130000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":300000,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.input_tokens","unit":"token"},{"name":"output_tokens","source":"usage.output_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"rpm","kind":"requests","unit":"request","window":"minute","fixedLimit":null,"limitHeaders":["x-ratelimit-limit-requests"],"remainingHeaders":["x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["x-ratelimit-reset-requests"]},{"id":"tpm","kind":"tokens","unit":"token","window":"minute","fixedLimit":null,"limitHeaders":["x-ratelimit-limit-tokens"],"remainingHeaders":["x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["x-ratelimit-reset-tokens"]},{"id":"subscription-primary","kind":"subscription","unit":"percent","window":"primary","fixedLimit":100,"limitHeaders":[],"remainingHeaders":[],"usedHeaders":["x-codex-primary-used-percent"],"resetHeaders":["x-codex-primary-reset-at"]},{"id":"subscription-secondary","kind":"subscription","unit":"percent","window":"secondary","fixedLimit":100,"limitHeaders":[],"remainingHeaders":[],"usedHeaders":["x-codex-secondary-used-percent"],"resetHeaders":["x-codex-secondary-reset-at"]},{"id":"credits","kind":"credits","unit":"credit","window":null,"fixedLimit":null,"limitHeaders":[],"remainingHeaders":["x-codex-credits-balance"],"usedHeaders":[],"resetHeaders":[]}],"probes":[{"grantKinds":["subscription"],"url":"https://chatgpt.com/backend-api/wham/usage","method":"GET","headers":{"ChatGPT-Account-ID":"${grant.accountId}","User-Agent":"codex-cli"},"windows":[{"id":"subscription-primary","kind":"subscription","unit":"percent","window":"primary","fixedLimit":100,"limitPointer":null,"remainingPointer":null,"usedPointer":"/rate_limit/primary_window/used_percent","resetPointer":"/rate_limit/primary_window/reset_at"},{"id":"subscription-secondary","kind":"subscription","unit":"percent","window":"secondary","fixedLimit":100,"limitPointer":null,"remainingPointer":null,"usedPointer":"/rate_limit/secondary_window/used_percent","resetPointer":"/rate_limit/secondary_window/reset_at"},{"id":"credits","kind":"credits","unit":"credit","window":null,"fixedLimit":null,"limitPointer":null,"remainingPointer":"/credits/balance","usedPointer":null,"resetPointer":null}]}]}},{"id":"openrouter","display_name":"OpenRouter","status":"stable","class":"openai_compatible","service_platform":"openrouter","service_kind":"gateway_platform","config_keys":["OPENROUTER_API_KEY","OPENROUTER_SITE_URL"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://openrouter.ai/api"},"routing":{"nativePrefixes":["clawrouter-openrouter","openrouter"],"modelPrefixes":["openrouter/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-openrouter","openrouter"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{"HTTP-Referer":"${site_url}","X-Title":"ClawRouter"},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"openrouter/auto","upstream":"openrouter/auto","capabilities":["llm.chat"],"pricing_ref":"openrouter-auto","pricing":null}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[{"name":"input_tokens","source":"usage.prompt_tokens","unit":"token"},{"name":"output_tokens","source":"usage.completion_tokens","unit":"token"}]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"perplexity","display_name":"Perplexity","status":"stable","class":"openai_compatible","service_platform":"perplexity","service_kind":"model_provider","config_keys":["PERPLEXITY_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.perplexity.ai"},"routing":{"nativePrefixes":["clawrouter-perplexity","perplexity"],"modelPrefixes":["perplexity/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-perplexity","perplexity"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"perplexity/sonar-pro","upstream":"sonar-pro","capabilities":["llm.chat"],"pricing_ref":"perplexity-sonar-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.perplexity.ai/docs/sonar/models/sonar-pro","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":8192,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"replicate","display_name":"Replicate","status":"stable","class":"rest_json","service_platform":"replicate","service_kind":"tool_provider","config_keys":["REPLICATE_API_TOKEN"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_token","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_token"],"base_urls":{"default":"https://api.replicate.com"},"routing":{"nativePrefixes":["clawrouter-replicate","replicate"],"modelPrefixes":["replicate/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-replicate","replicate"],"adapter":{"request":"replicate","response":"replicate","stream":null,"error":"replicate_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"media.predict","endpoint":"predictions","methods":["POST"]},{"id":"media.prediction.read","endpoint":"prediction","methods":["GET"]}],"endpoints":[{"id":"prediction","method":"GET","methods":["GET"],"path":"/v1/predictions/${prediction_id}","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":["prediction_id"],"path_param_styles":{},"request_format":"replicate.prediction_get","response_format":"replicate.prediction","streaming":null,"timeout_ms":120000},{"id":"predictions","method":"POST","methods":["POST"],"path":"/v1/predictions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"replicate.prediction_create","response_format":"replicate.prediction","streaming":null,"timeout_ms":120000}],"models":[{"id":"replicate/predictions","upstream":"predictions","capabilities":["media.predict","media.prediction.read"],"pricing_ref":"replicate-predictions","pricing":null}],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"tavily","display_name":"Tavily","status":"stable","class":"rest_json","service_platform":"tavily","service_kind":"tool_provider","config_keys":["TAVILY_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.tavily.com"},"routing":{"nativePrefixes":["clawrouter-tavily","tavily"],"modelPrefixes":["tavily/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-tavily","tavily"],"adapter":{"request":"rest_json","response":"rest_json","stream":null,"error":"tavily_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"web.search","endpoint":"search","methods":["POST"]},{"id":"web.extract","endpoint":"extract","methods":["POST"]},{"id":"web.crawl","endpoint":"crawl","methods":["POST"]}],"endpoints":[{"id":"crawl","method":"POST","methods":["POST"],"path":"/crawl","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.crawl","response_format":"tavily.crawl","streaming":null,"timeout_ms":300000},{"id":"extract","method":"POST","methods":["POST"],"path":"/extract","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.extract","response_format":"tavily.extract","streaming":null,"timeout_ms":120000},{"id":"search","method":"POST","methods":["POST"],"path":"/search","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"tavily.search","response_format":"tavily.search","streaming":null,"timeout_ms":120000}],"models":[{"id":"tavily/search","upstream":"search","capabilities":["web.search"],"pricing_ref":"tavily-search","pricing":null},{"id":"tavily/extract","upstream":"extract","capabilities":["web.extract"],"pricing_ref":"tavily-extract","pricing":null}],"billing":{"meter":"clawrouter.requests","dimensions":["provider","endpoint","key","service","subject"],"counters":[{"name":"request","source":"request.count","unit":"request"}]},"meter":"clawrouter.requests","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"together","display_name":"Together AI","status":"stable","class":"openai_compatible","service_platform":"together","service_kind":"model_provider","config_keys":["TOGETHER_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.together.xyz"},"routing":{"nativePrefixes":["clawrouter-together","together"],"modelPrefixes":["together/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-together","together"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"together/glm-5.2","upstream":"zai-org/GLM-5.2","capabilities":["llm.chat"],"pricing_ref":"together-glm-5-2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.together.ai/docs/serverless/models","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}},{"id":"xai","display_name":"xAI","status":"stable","class":"openai_compatible","service_platform":"xai","service_kind":"model_provider","config_keys":["XAI_API_KEY"],"optional_config_keys":[],"auth":{"schemes":[{"type":"bearer","header":"Authorization","format":"Bearer ${secret}","secretKind":"api_key","required":true}],"authorization":null,"refresh":null,"grantTransports":{}},"auth_schemes":["bearer:api_key"],"base_urls":{"default":"https://api.x.ai"},"routing":{"nativePrefixes":["clawrouter-xai","xai"],"modelPrefixes":["xai/"],"baseUrlParam":null,"serviceParam":null},"native_prefixes":["clawrouter-xai","xai"],"adapter":{"request":"openai","response":"openai","stream":"openai_sse","error":"openai_error","passthroughHeaders":[],"injectHeaders":{},"injectQuery":{},"requestTransforms":{"renameFields":[]}},"capabilities":[{"id":"llm.chat","endpoint":"chat_completions","methods":["POST"]}],"endpoints":[{"id":"chat_completions","method":"POST","methods":["POST"],"path":"/v1/chat/completions","native_proxy":true,"auth":null,"headers":{},"request_headers":[],"response_headers":[],"query":{},"path_params":[],"path_param_styles":{},"request_format":"openai.chat_completions","response_format":"openai.chat_completions","streaming":"sse","timeout_ms":600000}],"models":[{"id":"xai/grok-4.3","upstream":"grok-4.3","capabilities":["llm.chat"],"pricing_ref":"xai-grok-4-3-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://api.x.ai/v1/models/grok-4.3","inputMicrosPerMillion":1250000,"outputMicrosPerMillion":2500000,"cachedInputMicrosPerMillion":200000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":200000,"inputMicrosPerMillion":2500000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":400000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}}],"billing":{"meter":"clawrouter.tokens","dimensions":["provider","model","key","service","subject"],"counters":[]},"meter":"clawrouter.tokens","quota":{"responseHeaders":[{"id":"requests","kind":"requests","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-requests","x-ratelimit-limit-requests"],"remainingHeaders":["ratelimit-remaining-requests","x-ratelimit-remaining-requests"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-requests","x-ratelimit-reset-requests"]},{"id":"tokens","kind":"tokens","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit-tokens","x-ratelimit-limit-tokens"],"remainingHeaders":["ratelimit-remaining-tokens","x-ratelimit-remaining-tokens"],"usedHeaders":[],"resetHeaders":["ratelimit-reset-tokens","x-ratelimit-reset-tokens"]},{"id":"generic","kind":"generic","unit":null,"window":null,"fixedLimit":null,"limitHeaders":["ratelimit-limit","x-ratelimit-limit"],"remainingHeaders":["ratelimit-remaining","x-ratelimit-remaining"],"usedHeaders":[],"resetHeaders":["ratelimit-reset","x-ratelimit-reset"]}],"probes":[]}}],"capability_index":{"llm.messages":[{"provider":"anthropic","endpoint":"messages","methods":["POST"]}],"llm.count_tokens":[{"provider":"anthropic","endpoint":"count_tokens","methods":["POST"]}],"llm.invoke":[{"provider":"aws-bedrock","endpoint":"invoke_model","methods":["POST"]}],"llm.stream":[{"provider":"aws-bedrock","endpoint":"invoke_model_stream","methods":["POST"]},{"provider":"google-gemini","endpoint":"stream_generate_content","methods":["POST"]}],"llm.chat":[{"provider":"azure-openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"cloudflare-ai-gateway","endpoint":"universal","methods":["POST"]},{"provider":"cohere","endpoint":"chat","methods":["POST"]},{"provider":"deepseek","endpoint":"chat_completions","methods":["POST"]},{"provider":"fireworks","endpoint":"chat_completions","methods":["POST"]},{"provider":"groq","endpoint":"chat_completions","methods":["POST"]},{"provider":"huggingface","endpoint":"chat_completions","methods":["POST"]},{"provider":"local-openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"minimax","endpoint":"chat_completions","methods":["POST"]},{"provider":"mistral","endpoint":"chat_completions","methods":["POST"]},{"provider":"openai","endpoint":"chat_completions","methods":["POST"]},{"provider":"openrouter","endpoint":"chat_completions","methods":["POST"]},{"provider":"perplexity","endpoint":"chat_completions","methods":["POST"]},{"provider":"together","endpoint":"chat_completions","methods":["POST"]},{"provider":"xai","endpoint":"chat_completions","methods":["POST"]}],"llm.embeddings":[{"provider":"azure-openai","endpoint":"embeddings","methods":["POST"]},{"provider":"cohere","endpoint":"embed","methods":["POST"]},{"provider":"mistral","endpoint":"embeddings","methods":["POST"]},{"provider":"openai","endpoint":"embeddings","methods":["POST"]}],"llm.responses":[{"provider":"cloudflare-ai-gateway","endpoint":"universal","methods":["POST"]},{"provider":"openai","endpoint":"responses","methods":["POST"]}],"web.scrape":[{"provider":"firecrawl","endpoint":"scrape","methods":["POST"]}],"llm.generate":[{"provider":"google-gemini","endpoint":"generate_content","methods":["POST"]}],"media.predict":[{"provider":"replicate","endpoint":"predictions","methods":["POST"]}],"media.prediction.read":[{"provider":"replicate","endpoint":"prediction","methods":["GET"]}],"web.search":[{"provider":"tavily","endpoint":"search","methods":["POST"]}],"web.extract":[{"provider":"tavily","endpoint":"extract","methods":["POST"]}],"web.crawl":[{"provider":"tavily","endpoint":"crawl","methods":["POST"]}]},"model_index":{"anthropic/claude-opus-4-8":{"provider":"anthropic","upstream":"claude-opus-4-8","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-opus-4-8-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":25000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":6250000,"cacheWrite1hInputMicrosPerMillion":10000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":null}},"anthropic/claude-sonnet-4-6":{"provider":"anthropic","upstream":"claude-sonnet-4-6","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-sonnet-4-6-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":300000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":3750000,"cacheWrite1hInputMicrosPerMillion":6000000,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},"anthropic/claude-haiku-4-5":{"provider":"anthropic","upstream":"claude-haiku-4-5","capabilities":["llm.messages","llm.count_tokens"],"pricing_ref":"anthropic-claude-haiku-4-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.claude.com/docs/en/about-claude/pricing","inputMicrosPerMillion":1000000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":1250000,"cacheWrite1hInputMicrosPerMillion":2000000,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":64000,"inputTokenOverhead":1024,"longContext":null}},"bedrock/amazon.nova-lite-v1:0":{"provider":"aws-bedrock","upstream":"amazon.nova-lite-v1:0","capabilities":["llm.invoke","llm.stream"],"pricing_ref":"aws-bedrock-model","pricing":null},"azure-openai/deployment":{"provider":"azure-openai","upstream":"${deployment}","capabilities":["llm.chat","llm.embeddings"],"pricing_ref":"azure-openai-deployment","pricing":null},"cloudflare-ai-gateway/auto":{"provider":"cloudflare-ai-gateway","upstream":"auto","capabilities":["llm.chat","llm.responses"],"pricing_ref":"cloudflare-ai-gateway-auto","pricing":null},"cohere/command-a-plus-05-2026":{"provider":"cohere","upstream":"command-a-plus-05-2026","capabilities":["llm.chat"],"pricing_ref":"cohere-command-a-plus-05-2026","pricing":null},"cohere/embed-v4.0":{"provider":"cohere","upstream":"embed-v4.0","capabilities":["llm.embeddings"],"pricing_ref":"cohere-embed-v4-0","pricing":null},"deepseek/deepseek-v4-pro":{"provider":"deepseek","upstream":"deepseek-v4-pro","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":435000,"outputMicrosPerMillion":870000,"cachedInputMicrosPerMillion":3625,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},"deepseek/deepseek-v4-flash":{"provider":"deepseek","upstream":"deepseek-v4-flash","capabilities":["llm.chat"],"pricing_ref":"deepseek-v4-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://api-docs.deepseek.com/quick_start/pricing","inputMicrosPerMillion":140000,"outputMicrosPerMillion":280000,"cachedInputMicrosPerMillion":2800,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":384000,"inputTokenOverhead":1024,"longContext":null}},"fireworks/glm-5.2":{"provider":"fireworks","upstream":"accounts/fireworks/models/glm-5p2","capabilities":["llm.chat"],"pricing_ref":"fireworks-glm-5p2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://fireworks.ai/blog/glm-5p2","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"fireworks/gpt-oss-120b":{"provider":"fireworks","upstream":"accounts/fireworks/models/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"fireworks-gpt-oss-120b","pricing":null},"google/gemini-3.5-flash":{"provider":"google-gemini","upstream":"gemini-3.5-flash","capabilities":["llm.generate","llm.stream"],"pricing_ref":"google-gemini-3-5-flash-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://ai.google.dev/gemini-api/docs/pricing#gemini-3.5-flash","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":9000000,"cachedInputMicrosPerMillion":150000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1048576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"groq/gpt-oss-120b":{"provider":"groq","upstream":"openai/gpt-oss-120b","capabilities":["llm.chat"],"pricing_ref":"groq-gpt-oss-120b-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://console.groq.com/docs/model/openai/gpt-oss-120b","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":75000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"huggingface/gpt-oss-120b-fastest":{"provider":"huggingface","upstream":"openai/gpt-oss-120b:fastest","capabilities":["llm.chat"],"pricing_ref":"huggingface-router-dynamic","pricing":null},"local/default":{"provider":"local-openai","upstream":"default","capabilities":["llm.chat"],"pricing_ref":"local-compute-zero-api-charge-v1","pricing":{"effectiveAt":"2026-07-02","source":"https://docs.ollama.com/api/openai-compatibility","inputMicrosPerMillion":0,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":131072,"maxRequestInputTokens":null,"defaultMaxOutputTokens":4096,"inputTokenOverhead":1024,"longContext":null}},"minimax/MiniMax-M2.7":{"provider":"minimax","upstream":"MiniMax-M2.7","capabilities":["llm.chat"],"pricing_ref":"minimax-m2-7-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://platform.minimax.io/docs/guides/pricing-paygo","inputMicrosPerMillion":300000,"outputMicrosPerMillion":1200000,"cachedInputMicrosPerMillion":60000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":204800,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-medium-3-5":{"provider":"mistral","upstream":"mistral-medium-3-5","capabilities":["llm.chat"],"pricing_ref":"mistral-medium-3-5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/models/model-cards/mistral-medium-3-5-26-04","inputMicrosPerMillion":1500000,"outputMicrosPerMillion":7500000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-small-2603":{"provider":"mistral","upstream":"mistral-small-2603","capabilities":["llm.chat"],"pricing_ref":"mistral-small-4-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.mistral.ai/getting-started/models/","inputMicrosPerMillion":150000,"outputMicrosPerMillion":600000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":65536,"inputTokenOverhead":1024,"longContext":null}},"mistral/mistral-embed":{"provider":"mistral","upstream":"mistral-embed","capabilities":["llm.embeddings"],"pricing_ref":"mistral-embed-23-12-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://docs.mistral.ai/models/mistral-embed-23-12","inputMicrosPerMillion":100000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":null,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}},"openai/gpt-5.6":{"provider":"openai","upstream":"gpt-5.6","capabilities":["llm.responses","llm.chat"],"supportedReasoningEfforts":["none","low","medium","high","xhigh","max"],"pricing_ref":"openai-gpt-5.6-standard-2026-07-09","pricing":{"effectiveAt":"2026-07-09","source":"https://developers.openai.com/api/docs/models/gpt-5.6-sol","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":6250000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":12500000,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/gpt-5.5":{"provider":"openai","upstream":"gpt-5.5","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.5-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://developers.openai.com/api/docs/models/gpt-5.5/","inputMicrosPerMillion":5000000,"outputMicrosPerMillion":30000000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":10000000,"outputMicrosPerMillion":45000000,"cachedInputMicrosPerMillion":1000000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/gpt-4.1-mini":{"provider":"openai","upstream":"gpt-4.1-mini","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-4.1-mini-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/models/gpt-4.1-mini","inputMicrosPerMillion":400000,"outputMicrosPerMillion":1600000,"cachedInputMicrosPerMillion":100000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1047576,"maxRequestInputTokens":null,"defaultMaxOutputTokens":32768,"inputTokenOverhead":1024,"longContext":null}},"openai/gpt-5.4":{"provider":"openai","upstream":"gpt-5.4","capabilities":["llm.responses","llm.chat"],"pricing_ref":"openai-gpt-5.4-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://developers.openai.com/api/docs/models/gpt-5.4/","inputMicrosPerMillion":2500000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":250000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1050000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":128000,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":272000,"inputMicrosPerMillion":5000000,"outputMicrosPerMillion":22500000,"cachedInputMicrosPerMillion":500000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}},"openai/text-embedding-3-large":{"provider":"openai","upstream":"text-embedding-3-large","capabilities":["llm.embeddings"],"pricing_ref":"openai-text-embedding-3-large-standard-2026-06-19","pricing":{"effectiveAt":"2026-06-19","source":"https://platform.openai.com/docs/pricing","inputMicrosPerMillion":130000,"outputMicrosPerMillion":0,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":8192,"maxRequestInputTokens":300000,"defaultMaxOutputTokens":0,"inputTokenOverhead":1024,"longContext":null}},"openrouter/auto":{"provider":"openrouter","upstream":"openrouter/auto","capabilities":["llm.chat"],"pricing_ref":"openrouter-auto","pricing":null},"perplexity/sonar-pro":{"provider":"perplexity","upstream":"sonar-pro","capabilities":["llm.chat"],"pricing_ref":"perplexity-sonar-pro-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.perplexity.ai/docs/sonar/models/sonar-pro","inputMicrosPerMillion":3000000,"outputMicrosPerMillion":15000000,"cachedInputMicrosPerMillion":null,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":200000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":8192,"inputTokenOverhead":1024,"longContext":null}},"replicate/predictions":{"provider":"replicate","upstream":"predictions","capabilities":["media.predict","media.prediction.read"],"pricing_ref":"replicate-predictions","pricing":null},"tavily/search":{"provider":"tavily","upstream":"search","capabilities":["web.search"],"pricing_ref":"tavily-search","pricing":null},"tavily/extract":{"provider":"tavily","upstream":"extract","capabilities":["web.extract"],"pricing_ref":"tavily-extract","pricing":null},"together/glm-5.2":{"provider":"together","upstream":"zai-org/GLM-5.2","capabilities":["llm.chat"],"pricing_ref":"together-glm-5-2-standard-2026-06-22","pricing":{"effectiveAt":"2026-06-22","source":"https://docs.together.ai/docs/serverless/models","inputMicrosPerMillion":1400000,"outputMicrosPerMillion":4400000,"cachedInputMicrosPerMillion":260000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":262144,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":null}},"xai/grok-4.3":{"provider":"xai","upstream":"grok-4.3","capabilities":["llm.chat"],"pricing_ref":"xai-grok-4-3-standard-2026-06-21","pricing":{"effectiveAt":"2026-06-21","source":"https://api.x.ai/v1/models/grok-4.3","inputMicrosPerMillion":1250000,"outputMicrosPerMillion":2500000,"cachedInputMicrosPerMillion":200000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null,"maxInputTokens":1000000,"maxRequestInputTokens":null,"defaultMaxOutputTokens":131072,"inputTokenOverhead":1024,"longContext":{"thresholdInputTokens":200000,"inputMicrosPerMillion":2500000,"outputMicrosPerMillion":5000000,"cachedInputMicrosPerMillion":400000,"cacheWriteInputMicrosPerMillion":null,"cacheWrite5mInputMicrosPerMillion":null,"cacheWrite1hInputMicrosPerMillion":null}}}}} diff --git a/worker/test/discovery.test.mjs b/worker/test/discovery.test.mjs index ec1bd69..bc39e20 100644 --- a/worker/test/discovery.test.mjs +++ b/worker/test/discovery.test.mjs @@ -22,6 +22,18 @@ const { catalogModels } = await import("../discovery.ts"); const fireworks = providerById("fireworks"); assert.ok(fireworks); const endpoints = fireworks.endpoints.map((endpoint) => endpoint.id); +const openai = providerById("openai"); +assert.ok(openai); +const openaiEndpoints = openai.endpoints.map((endpoint) => endpoint.id); + +test("catalog models preserve declared reasoning efforts without adding sibling metadata", () => { + const models = catalogModels(openai, openaiEndpoints, null); + const gpt56 = models.find((model) => model.id === "openai/gpt-5.6"); + const gpt55 = models.find((model) => model.id === "openai/gpt-5.5"); + + assert.deepEqual(gpt56.supportedReasoningEfforts, ["none", "low", "medium", "high", "xhigh", "max"]); + assert.equal("supportedReasoningEfforts" in gpt55, false); +}); test("budgeted proxy-key catalogs omit unpriced models without fixed request pricing", () => { const models = catalogModels(fireworks, endpoints, { diff --git a/worker/test/provider-compiler.test.mjs b/worker/test/provider-compiler.test.mjs index ebada60..b8f60fe 100644 --- a/worker/test/provider-compiler.test.mjs +++ b/worker/test/provider-compiler.test.mjs @@ -19,6 +19,9 @@ test("TypeScript provider compiler is deterministic and preserves the catalog co const gpt56 = openai.models.find((model) => model.id === "openai/gpt-5.6"); assert.equal(gpt56.upstream, "gpt-5.6"); assert.deepEqual(gpt56.capabilities, ["llm.responses", "llm.chat"]); + assert.deepEqual(gpt56.supportedReasoningEfforts, ["none", "low", "medium", "high", "xhigh", "max"]); + assert.deepEqual(compiled.model_index["openai/gpt-5.6"].supportedReasoningEfforts, gpt56.supportedReasoningEfforts); + assert.equal("supportedReasoningEfforts" in openai.models.find((model) => model.id === "openai/gpt-5.5"), false); assert.deepEqual(gpt56.pricing, { effectiveAt: "2026-07-09", source: "https://developers.openai.com/api/docs/models/gpt-5.6-sol", @@ -50,6 +53,17 @@ test("TypeScript provider compiler is deterministic and preserves the catalog co assert.ok(compiled.capability_index["llm.chat"].length >= 10); }); +test("provider schema bounds reasoning efforts to canonical wire values", () => { + const schema = JSON.parse(readFileSync("providers/_schema/service-provider.schema.json", "utf8")); + assert.deepEqual(schema.$defs.model.properties.supportedReasoningEfforts, { + type: "array", + items: { enum: ["none", "minimal", "low", "medium", "high", "xhigh", "max"] }, + minItems: 1, + maxItems: 7, + uniqueItems: true, + }); +}); + test("compiled providers have unique ids, models, capabilities, and executable endpoint references", () => { const snapshot = JSON.parse(readFileSync("worker/generated/provider-snapshot.json", "utf8")); assert.equal(new Set(snapshot.providers.map((provider) => provider.id)).size, snapshot.providers.length); @@ -85,3 +99,22 @@ test("quota header sources must retain their declared array shape", () => { rmSync(directory, { recursive: true, force: true }); } }); + +test("reasoning effort metadata rejects empty, duplicate, and unsupported values", () => { + const directory = mkdtempSync(join(tmpdir(), "clawrouter-provider-")); + const manifest = join(directory, "openai.provider.yaml"); + const source = readFileSync("providers/openai.provider.yaml", "utf8"); + const cases = [ + ["[]", /must contain 1-7 entries/], + ["[none, low, low]", /must contain unique entries/], + ["[none, ultra]", /contains an unsupported effort/], + ]; + try { + for (const [value, expected] of cases) { + writeFileSync(manifest, source.replace("[none, low, medium, high, xhigh, max]", value)); + assert.throws(() => execFileSync(process.execPath, ["scripts/compile-providers.mjs", manifest], { encoding: "utf8", stdio: "pipe" }), expected); + } + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); diff --git a/worker/types.ts b/worker/types.ts index 0d9660c..ba1f0dd 100644 --- a/worker/types.ts +++ b/worker/types.ts @@ -2,7 +2,7 @@ export interface ProviderSnapshot { version: string; providers: CompiledProvider[]; capability_index: Record>; - model_index: Record; + model_index: Record; } export interface CompiledProvider { @@ -59,7 +59,8 @@ export interface AuthorizationConfig { authorizeUrl: string; tokenUrl: string; c export interface RefreshConfig { tokenUrl: string; clientId: string | null; clientIdConfig: string | null; clientSecretConfig: string | null; extraParams: Record } export interface LongContextPricing { thresholdInputTokens: number; inputMicrosPerMillion: number; outputMicrosPerMillion: number; cachedInputMicrosPerMillion: number | null; cacheWriteInputMicrosPerMillion: number | null; cacheWrite5mInputMicrosPerMillion: number | null; cacheWrite1hInputMicrosPerMillion: number | null } export interface ModelPricing { effectiveAt: string; source: string; inputMicrosPerMillion: number; outputMicrosPerMillion: number; cachedInputMicrosPerMillion: number | null; cacheWriteInputMicrosPerMillion: number | null; cacheWrite5mInputMicrosPerMillion: number | null; cacheWrite1hInputMicrosPerMillion: number | null; maxInputTokens: number; maxRequestInputTokens: number | null; defaultMaxOutputTokens: number; inputTokenOverhead: number; longContext: LongContextPricing | null } -export interface CompiledModel { id: string; upstream: string; capabilities: string[]; pricing_ref: string | null; pricing: ModelPricing | null } +export type ProviderReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max"; +export interface CompiledModel { id: string; upstream: string; capabilities: string[]; supportedReasoningEfforts?: ProviderReasoningEffort[]; pricing_ref: string | null; pricing: ModelPricing | null } export interface CompiledEndpoint { id: string; method: string; methods: string[]; path: string; native_proxy: boolean; auth: string | null; headers: Record; request_headers: string[]; response_headers: string[]; query: Record; path_params: string[]; path_param_styles: Record; request_format: string; response_format: string; streaming: string | null; timeout_ms: number | null } export interface Env {