fix(openrouter): sort models by name to be more deterministic (#64)

Andrey Nering created

* fix(openrouter): sort models by name to be more deterministic

Looks like OpenRouter returns models at a random order. Sort by name
to make the process of generating `openrouter.json` more deterministic.

Changes between runs can still happen, specially when it comes to cost,
but the diff will be small and easier to review.

* chore: add a taskfile

* chore: re-generate `openrouter.json` with sorted name

Change summary

Taskfile.yaml                              |   28 
cmd/openrouter/main.go                     |    5 
internal/providers/configs/openrouter.json | 1012 ++++++++++++-----------
3 files changed, 565 insertions(+), 480 deletions(-)

Detailed changes

Taskfile.yaml 🔗

@@ -0,0 +1,28 @@
+version: '3'
+
+tasks:
+  generate:
+    desc: Generate OpenRouter models
+    aliases: [gen]
+    cmds:
+      - go run cmd/openrouter/main.go
+
+  lint:
+    desc: Run linters
+    cmds:
+      - golangci-lint run ./...
+
+  lint:fix:
+    desc: Run linters and fix issues
+    cmds:
+      - golangci-lint run --fix ./...
+
+  fmt:
+    desc: Format code
+    cmds:
+      - go fmt ./...
+
+  modernize:
+    desc: Modernize code
+    cmds:
+      - modernize ./...

cmd/openrouter/main.go 🔗

@@ -12,6 +12,7 @@ import (
 	"os"
 	"slices"
 	"strconv"
+	"strings"
 	"time"
 
 	"github.com/charmbracelet/catwalk/pkg/catwalk"
@@ -358,6 +359,10 @@ func main() {
 			model.ID, bestEndpoint.ContextLength, bestEndpoint.ProviderName)
 	}
 
+	slices.SortFunc(openRouterProvider.Models, func(a catwalk.Model, b catwalk.Model) int {
+		return strings.Compare(a.Name, b.Name)
+	})
+
 	// save the json in internal/providers/config/openrouter.json
 	data, err := json.MarshalIndent(openRouterProvider, "", "  ")
 	if err != nil {

internal/providers/configs/openrouter.json 🔗

@@ -8,131 +8,222 @@
   "default_small_model_id": "anthropic/claude-3.5-haiku",
   "models": [
     {
-      "id": "qwen/qwen3-next-80b-a3b-thinking",
-      "name": "Qwen: Qwen3 Next 80B A3B Thinking",
-      "cost_per_1m_in": 0.09782604,
-      "cost_per_1m_out": 0.391304304,
+      "id": "ai21/jamba-large-1.7",
+      "name": "AI21: Jamba Large 1.7",
+      "cost_per_1m_in": 2,
+      "cost_per_1m_out": 8,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 256000,
+      "default_max_tokens": 2048,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "qwen/qwen3-next-80b-a3b-instruct",
-      "name": "Qwen: Qwen3 Next 80B A3B Instruct",
-      "cost_per_1m_in": 0.09782604,
-      "cost_per_1m_out": 0.391304304,
+      "id": "ai21/jamba-mini-1.7",
+      "name": "AI21: Jamba Mini 1.7",
+      "cost_per_1m_in": 0.19999999999999998,
+      "cost_per_1m_out": 0.39999999999999997,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
+      "context_window": 256000,
+      "default_max_tokens": 2048,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "qwen/qwen-plus-2025-07-28",
-      "name": "Qwen: Qwen Plus 0728",
-      "cost_per_1m_in": 0.39999999999999997,
-      "cost_per_1m_out": 1.2,
+      "id": "amazon/nova-lite-v1",
+      "name": "Amazon: Nova Lite 1.0",
+      "cost_per_1m_in": 0.06,
+      "cost_per_1m_out": 0.24,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 1000000,
-      "default_max_tokens": 16384,
+      "context_window": 300000,
+      "default_max_tokens": 2560,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "qwen/qwen-plus-2025-07-28:thinking",
-      "name": "Qwen: Qwen Plus 0728 (thinking)",
-      "cost_per_1m_in": 0.39999999999999997,
-      "cost_per_1m_out": 4,
+      "id": "amazon/nova-micro-v1",
+      "name": "Amazon: Nova Micro 1.0",
+      "cost_per_1m_in": 0.035,
+      "cost_per_1m_out": 0.14,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 1000000,
-      "default_max_tokens": 16384,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2560,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "nvidia/nemotron-nano-9b-v2:free",
-      "name": "NVIDIA: Nemotron Nano 9B V2 (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
+      "id": "amazon/nova-pro-v1",
+      "name": "Amazon: Nova Pro 1.0",
+      "cost_per_1m_in": 0.7999999999999999,
+      "cost_per_1m_out": 3.1999999999999997,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 128000,
-      "default_max_tokens": 12800,
+      "context_window": 300000,
+      "default_max_tokens": 2560,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3-haiku",
+      "name": "Anthropic: Claude 3 Haiku",
+      "cost_per_1m_in": 0.25,
+      "cost_per_1m_out": 1.25,
+      "cost_per_1m_in_cached": 0.3,
+      "cost_per_1m_out_cached": 0.03,
+      "context_window": 200000,
+      "default_max_tokens": 2048,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3-opus",
+      "name": "Anthropic: Claude 3 Opus",
+      "cost_per_1m_in": 15,
+      "cost_per_1m_out": 75,
+      "cost_per_1m_in_cached": 18.75,
+      "cost_per_1m_out_cached": 1.5,
+      "context_window": 200000,
+      "default_max_tokens": 2048,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3.5-haiku",
+      "name": "Anthropic: Claude 3.5 Haiku",
+      "cost_per_1m_in": 0.7999999999999999,
+      "cost_per_1m_out": 4,
+      "cost_per_1m_in_cached": 1,
+      "cost_per_1m_out_cached": 0.08,
+      "context_window": 200000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3.5-haiku-20241022",
+      "name": "Anthropic: Claude 3.5 Haiku (2024-10-22)",
+      "cost_per_1m_in": 0.7999999999999999,
+      "cost_per_1m_out": 4,
+      "cost_per_1m_in_cached": 1,
+      "cost_per_1m_out_cached": 0.08,
+      "context_window": 200000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3.5-sonnet",
+      "name": "Anthropic: Claude 3.5 Sonnet",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
+      "cost_per_1m_in_cached": 3.75,
+      "cost_per_1m_out_cached": 0.3,
+      "context_window": 200000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3.5-sonnet-20240620",
+      "name": "Anthropic: Claude 3.5 Sonnet (2024-06-20)",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
+      "cost_per_1m_in_cached": 3.75,
+      "cost_per_1m_out_cached": 0.3,
+      "context_window": 200000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "anthropic/claude-3.7-sonnet",
+      "name": "Anthropic: Claude 3.7 Sonnet",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
+      "cost_per_1m_in_cached": 3.75,
+      "cost_per_1m_out_cached": 0.3,
+      "context_window": 200000,
+      "default_max_tokens": 32000,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "nvidia/nemotron-nano-9b-v2",
-      "name": "NVIDIA: Nemotron Nano 9B V2",
-      "cost_per_1m_in": 0.04,
-      "cost_per_1m_out": 0.16,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
+      "id": "anthropic/claude-3.7-sonnet:thinking",
+      "name": "Anthropic: Claude 3.7 Sonnet (thinking)",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
+      "cost_per_1m_in_cached": 3.75,
+      "cost_per_1m_out_cached": 0.3,
+      "context_window": 200000,
+      "default_max_tokens": 32000,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "openrouter/sonoma-dusk-alpha",
-      "name": "Sonoma Dusk Alpha",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 2000000,
-      "default_max_tokens": 200000,
-      "can_reason": false,
-      "has_reasoning_efforts": false,
+      "id": "anthropic/claude-opus-4",
+      "name": "Anthropic: Claude Opus 4",
+      "cost_per_1m_in": 15,
+      "cost_per_1m_out": 75,
+      "cost_per_1m_in_cached": 18.75,
+      "cost_per_1m_out_cached": 1.5,
+      "context_window": 200000,
+      "default_max_tokens": 16000,
+      "can_reason": true,
+      "has_reasoning_efforts": true,
       "supports_attachments": true
     },
     {
-      "id": "openrouter/sonoma-sky-alpha",
-      "name": "Sonoma Sky Alpha",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 2000000,
-      "default_max_tokens": 200000,
+      "id": "anthropic/claude-opus-4.1",
+      "name": "Anthropic: Claude Opus 4.1",
+      "cost_per_1m_in": 15,
+      "cost_per_1m_out": 75,
+      "cost_per_1m_in_cached": 18.75,
+      "cost_per_1m_out_cached": 1.5,
+      "context_window": 200000,
+      "default_max_tokens": 16000,
       "can_reason": true,
       "has_reasoning_efforts": true,
       "supports_attachments": true
     },
     {
-      "id": "qwen/qwen3-max",
-      "name": "Qwen: Qwen3 Max",
-      "cost_per_1m_in": 1.2,
-      "cost_per_1m_out": 6,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.24,
-      "context_window": 256000,
-      "default_max_tokens": 16384,
-      "can_reason": false,
-      "has_reasoning_efforts": false,
-      "supports_attachments": false
+      "id": "anthropic/claude-sonnet-4",
+      "name": "Anthropic: Claude Sonnet 4",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
+      "cost_per_1m_in_cached": 3.75,
+      "cost_per_1m_out_cached": 0.3,
+      "context_window": 1000000,
+      "default_max_tokens": 32000,
+      "can_reason": true,
+      "has_reasoning_efforts": true,
+      "supports_attachments": true
     },
     {
-      "id": "moonshotai/kimi-k2-0905",
-      "name": "MoonshotAI: Kimi K2 0905",
-      "cost_per_1m_in": 0.5,
-      "cost_per_1m_out": 2,
+      "id": "arcee-ai/virtuoso-large",
+      "name": "Arcee AI: Virtuoso Large",
+      "cost_per_1m_in": 0.75,
+      "cost_per_1m_out": 1.2,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
+      "context_window": 131072,
+      "default_max_tokens": 32000,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
@@ -151,400 +242,400 @@
       "supports_attachments": true
     },
     {
-      "id": "stepfun-ai/step3",
-      "name": "StepFun: Step3",
-      "cost_per_1m_in": 0.5700000000000001,
-      "cost_per_1m_out": 1.42,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 65536,
-      "default_max_tokens": 32768,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
-    },
-    {
-      "id": "qwen/qwen3-30b-a3b-thinking-2507",
-      "name": "Qwen: Qwen3 30B A3B Thinking 2507",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.3,
+      "id": "cohere/command-r",
+      "name": "Cohere: Command R",
+      "cost_per_1m_in": 0.5,
+      "cost_per_1m_out": 1.5,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "x-ai/grok-code-fast-1",
-      "name": "xAI: Grok Code Fast 1",
-      "cost_per_1m_in": 0.19999999999999998,
+      "id": "cohere/command-r-03-2024",
+      "name": "Cohere: Command R (03-2024)",
+      "cost_per_1m_in": 0.5,
       "cost_per_1m_out": 1.5,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.02,
-      "context_window": 256000,
-      "default_max_tokens": 5000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 128000,
+      "default_max_tokens": 2000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "nousresearch/hermes-4-70b",
-      "name": "Nous: Hermes 4 70B",
-      "cost_per_1m_in": 0.127173852,
-      "cost_per_1m_out": 0.5086955952000001,
+      "id": "cohere/command-r-08-2024",
+      "name": "Cohere: Command R (08-2024)",
+      "cost_per_1m_in": 0.15,
+      "cost_per_1m_out": 0.6,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "deepseek/deepseek-chat-v3.1:free",
-      "name": "DeepSeek: DeepSeek V3.1 (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
+      "id": "cohere/command-r-plus",
+      "name": "Cohere: Command R+",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 163840,
-      "default_max_tokens": 16384,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "deepseek/deepseek-chat-v3.1",
-      "name": "DeepSeek: DeepSeek V3.1",
-      "cost_per_1m_in": 0.27,
-      "cost_per_1m_out": 1,
+      "id": "cohere/command-r-plus-04-2024",
+      "name": "Cohere: Command R+ (04-2024)",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 15,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 163840,
-      "default_max_tokens": 16384,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "openai/gpt-4o-audio-preview",
-      "name": "OpenAI: GPT-4o Audio",
+      "id": "cohere/command-r-plus-08-2024",
+      "name": "Cohere: Command R+ (08-2024)",
       "cost_per_1m_in": 2.5,
       "cost_per_1m_out": 10,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 128000,
-      "default_max_tokens": 8192,
+      "default_max_tokens": 2000,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "mistralai/mistral-medium-3.1",
-      "name": "Mistral: Mistral Medium 3.1",
-      "cost_per_1m_in": 0.39999999999999997,
-      "cost_per_1m_out": 2,
+      "id": "deepseek/deepseek-chat",
+      "name": "DeepSeek: DeepSeek V3",
+      "cost_per_1m_in": 0.8999999999999999,
+      "cost_per_1m_out": 0.8999999999999999,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 131072,
       "default_max_tokens": 13107,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": true
-    },
-    {
-      "id": "z-ai/glm-4.5v",
-      "name": "Z.AI: GLM 4.5V",
-      "cost_per_1m_in": 0.5,
-      "cost_per_1m_out": 1.7999999999999998,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 65536,
-      "default_max_tokens": 32768,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "ai21/jamba-mini-1.7",
-      "name": "AI21: Jamba Mini 1.7",
-      "cost_per_1m_in": 0.19999999999999998,
-      "cost_per_1m_out": 0.39999999999999997,
+      "id": "deepseek/deepseek-chat-v3-0324",
+      "name": "DeepSeek: DeepSeek V3 0324",
+      "cost_per_1m_in": 0.27,
+      "cost_per_1m_out": 1.13,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 256000,
-      "default_max_tokens": 2048,
+      "context_window": 163840,
+      "default_max_tokens": 81920,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "ai21/jamba-large-1.7",
-      "name": "AI21: Jamba Large 1.7",
-      "cost_per_1m_in": 2,
-      "cost_per_1m_out": 8,
+      "id": "deepseek/deepseek-chat-v3-0324:free",
+      "name": "DeepSeek: DeepSeek V3 0324 (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 256000,
-      "default_max_tokens": 2048,
+      "context_window": 163840,
+      "default_max_tokens": 16384,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "openai/gpt-5",
-      "name": "OpenAI: GPT-5",
-      "cost_per_1m_in": 1.25,
-      "cost_per_1m_out": 10,
+      "id": "deepseek/deepseek-chat-v3.1",
+      "name": "DeepSeek: DeepSeek V3.1",
+      "cost_per_1m_in": 0.27,
+      "cost_per_1m_out": 1,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.125,
-      "context_window": 400000,
-      "default_max_tokens": 64000,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 163840,
+      "default_max_tokens": 16384,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "openai/gpt-5-mini",
-      "name": "OpenAI: GPT-5 Mini",
-      "cost_per_1m_in": 0.25,
-      "cost_per_1m_out": 2,
+      "id": "deepseek/deepseek-chat-v3.1:free",
+      "name": "DeepSeek: DeepSeek V3.1 (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.024999999999999998,
-      "context_window": 400000,
-      "default_max_tokens": 64000,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 163840,
+      "default_max_tokens": 16384,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "openai/gpt-5-nano",
-      "name": "OpenAI: GPT-5 Nano",
-      "cost_per_1m_in": 0.049999999999999996,
-      "cost_per_1m_out": 0.39999999999999997,
+      "id": "deepseek/deepseek-r1",
+      "name": "DeepSeek: R1",
+      "cost_per_1m_in": 0.7,
+      "cost_per_1m_out": 2.4,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.005,
-      "context_window": 400000,
-      "default_max_tokens": 64000,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 163840,
+      "default_max_tokens": 81920,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "openai/gpt-oss-120b",
-      "name": "OpenAI: gpt-oss-120b",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.5,
+      "id": "deepseek/deepseek-r1-0528",
+      "name": "DeepSeek: R1 0528",
+      "cost_per_1m_in": 0.7,
+      "cost_per_1m_out": 2.5,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
+      "context_window": 163840,
+      "default_max_tokens": 81920,
       "can_reason": true,
       "has_reasoning_efforts": true,
       "supports_attachments": false
     },
     {
-      "id": "openai/gpt-oss-20b",
-      "name": "OpenAI: gpt-oss-20b",
-      "cost_per_1m_in": 0.049999999999999996,
-      "cost_per_1m_out": 0.19999999999999998,
+      "id": "google/gemini-flash-1.5",
+      "name": "Google: Gemini 1.5 Flash ",
+      "cost_per_1m_in": 0.075,
+      "cost_per_1m_out": 0.3,
+      "cost_per_1m_in_cached": 0.1583,
+      "cost_per_1m_out_cached": 0.01875,
+      "context_window": 1000000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "google/gemini-flash-1.5-8b",
+      "name": "Google: Gemini 1.5 Flash 8B",
+      "cost_per_1m_in": 0.0375,
+      "cost_per_1m_out": 0.15,
+      "cost_per_1m_in_cached": 0.0583,
+      "cost_per_1m_out_cached": 0.01,
+      "context_window": 1000000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
+    },
+    {
+      "id": "google/gemini-pro-1.5",
+      "name": "Google: Gemini 1.5 Pro",
+      "cost_per_1m_in": 1.25,
+      "cost_per_1m_out": 5,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 16384,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "context_window": 2000000,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": true
     },
     {
-      "id": "anthropic/claude-opus-4.1",
-      "name": "Anthropic: Claude Opus 4.1",
-      "cost_per_1m_in": 15,
-      "cost_per_1m_out": 75,
-      "cost_per_1m_in_cached": 18.75,
-      "cost_per_1m_out_cached": 1.5,
-      "context_window": 200000,
-      "default_max_tokens": 16000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "id": "google/gemini-2.0-flash-001",
+      "name": "Google: Gemini 2.0 Flash",
+      "cost_per_1m_in": 0.09999999999999999,
+      "cost_per_1m_out": 0.39999999999999997,
+      "cost_per_1m_in_cached": 0.18330000000000002,
+      "cost_per_1m_out_cached": 0.024999999999999998,
+      "context_window": 1048576,
+      "default_max_tokens": 4096,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": true
     },
     {
-      "id": "mistralai/codestral-2508",
-      "name": "Mistral: Codestral 2508",
-      "cost_per_1m_in": 0.3,
-      "cost_per_1m_out": 0.8999999999999999,
+      "id": "google/gemini-2.0-flash-exp:free",
+      "name": "Google: Gemini 2.0 Flash Experimental (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 256000,
-      "default_max_tokens": 25600,
+      "context_window": 1048576,
+      "default_max_tokens": 4096,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "qwen/qwen3-coder-30b-a3b-instruct",
-      "name": "Qwen: Qwen3 Coder 30B A3B Instruct",
-      "cost_per_1m_in": 0.07065213999999999,
-      "cost_per_1m_out": 0.282608664,
+      "id": "google/gemini-2.0-flash-lite-001",
+      "name": "Google: Gemini 2.0 Flash Lite",
+      "cost_per_1m_in": 0.075,
+      "cost_per_1m_out": 0.3,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
+      "context_window": 1048576,
+      "default_max_tokens": 4096,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": false
+      "supports_attachments": true
+    },
+    {
+      "id": "google/gemini-2.5-flash",
+      "name": "Google: Gemini 2.5 Flash",
+      "cost_per_1m_in": 0.3,
+      "cost_per_1m_out": 2.5,
+      "cost_per_1m_in_cached": 0.3833,
+      "cost_per_1m_out_cached": 0.075,
+      "context_window": 1048576,
+      "default_max_tokens": 32767,
+      "can_reason": true,
+      "has_reasoning_efforts": true,
+      "supports_attachments": true
     },
     {
-      "id": "qwen/qwen3-30b-a3b-instruct-2507",
-      "name": "Qwen: Qwen3 30B A3B Instruct 2507",
+      "id": "google/gemini-2.5-flash-lite",
+      "name": "Google: Gemini 2.5 Flash Lite",
       "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.3,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
-      "can_reason": false,
-      "has_reasoning_efforts": false,
-      "supports_attachments": false
+      "cost_per_1m_out": 0.39999999999999997,
+      "cost_per_1m_in_cached": 0.18330000000000002,
+      "cost_per_1m_out_cached": 0.024999999999999998,
+      "context_window": 1048576,
+      "default_max_tokens": 32767,
+      "can_reason": true,
+      "has_reasoning_efforts": true,
+      "supports_attachments": true
     },
     {
-      "id": "z-ai/glm-4.5",
-      "name": "Z.AI: GLM 4.5",
-      "cost_per_1m_in": 0.6,
-      "cost_per_1m_out": 2.2,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.11,
-      "context_window": 131072,
-      "default_max_tokens": 48000,
+      "id": "google/gemini-2.5-flash-lite-preview-06-17",
+      "name": "Google: Gemini 2.5 Flash Lite Preview 06-17",
+      "cost_per_1m_in": 0.09999999999999999,
+      "cost_per_1m_out": 0.39999999999999997,
+      "cost_per_1m_in_cached": 0.18330000000000002,
+      "cost_per_1m_out_cached": 0.024999999999999998,
+      "context_window": 1048576,
+      "default_max_tokens": 32767,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "z-ai/glm-4.5-air:free",
-      "name": "Z.AI: GLM 4.5 Air (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 48000,
+      "id": "google/gemini-2.5-pro",
+      "name": "Google: Gemini 2.5 Pro",
+      "cost_per_1m_in": 1.25,
+      "cost_per_1m_out": 10,
+      "cost_per_1m_in_cached": 1.625,
+      "cost_per_1m_out_cached": 0.31,
+      "context_window": 1048576,
+      "default_max_tokens": 32768,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "z-ai/glm-4.5-air",
-      "name": "Z.AI: GLM 4.5 Air",
-      "cost_per_1m_in": 0.19999999999999998,
-      "cost_per_1m_out": 1.1,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.03,
-      "context_window": 131072,
-      "default_max_tokens": 48000,
+      "id": "google/gemini-2.5-pro-preview-05-06",
+      "name": "Google: Gemini 2.5 Pro Preview 05-06",
+      "cost_per_1m_in": 1.25,
+      "cost_per_1m_out": 10,
+      "cost_per_1m_in_cached": 1.625,
+      "cost_per_1m_out_cached": 0.31,
+      "context_window": 1048576,
+      "default_max_tokens": 32768,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "qwen/qwen3-235b-a22b-thinking-2507",
-      "name": "Qwen: Qwen3 235B A22B Thinking 2507",
-      "cost_per_1m_in": 0.0974999532,
-      "cost_per_1m_out": 0.38999995632,
-      "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
+      "id": "google/gemini-2.5-pro-preview",
+      "name": "Google: Gemini 2.5 Pro Preview 06-05",
+      "cost_per_1m_in": 1.25,
+      "cost_per_1m_out": 10,
+      "cost_per_1m_in_cached": 1.625,
+      "cost_per_1m_out_cached": 0.31,
+      "context_window": 1048576,
+      "default_max_tokens": 32768,
       "can_reason": true,
       "has_reasoning_efforts": true,
-      "supports_attachments": false
+      "supports_attachments": true
     },
     {
-      "id": "z-ai/glm-4-32b",
-      "name": "Z.AI: GLM 4 32B ",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.09999999999999999,
+      "id": "inception/mercury",
+      "name": "Inception: Mercury",
+      "cost_per_1m_in": 0.25,
+      "cost_per_1m_out": 1,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 128000,
-      "default_max_tokens": 12800,
+      "default_max_tokens": 8192,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "qwen/qwen3-coder:free",
-      "name": "Qwen: Qwen3 Coder 480B A35B (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
+      "id": "inception/mercury-coder",
+      "name": "Inception: Mercury Coder",
+      "cost_per_1m_in": 0.25,
+      "cost_per_1m_out": 1,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 26214,
+      "context_window": 128000,
+      "default_max_tokens": 8192,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "qwen/qwen3-coder",
-      "name": "Qwen: Qwen3 Coder 480B A35B",
-      "cost_per_1m_in": 0.29,
-      "cost_per_1m_out": 1.2,
+      "id": "meta-llama/llama-3-70b-instruct",
+      "name": "Meta: Llama 3 70B Instruct",
+      "cost_per_1m_in": 0.3,
+      "cost_per_1m_out": 0.39999999999999997,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 32768,
+      "context_window": 8192,
+      "default_max_tokens": 8192,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "google/gemini-2.5-flash-lite",
-      "name": "Google: Gemini 2.5 Flash Lite",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.39999999999999997,
-      "cost_per_1m_in_cached": 0.18330000000000002,
-      "cost_per_1m_out_cached": 0.024999999999999998,
-      "context_window": 1048576,
-      "default_max_tokens": 32767,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
-    },
-    {
-      "id": "qwen/qwen3-235b-a22b-2507",
-      "name": "Qwen: Qwen3 235B A22B Instruct 2507",
-      "cost_per_1m_in": 0.22,
-      "cost_per_1m_out": 0.7999999999999999,
+      "id": "meta-llama/llama-3-8b-instruct",
+      "name": "Meta: Llama 3 8B Instruct",
+      "cost_per_1m_in": 0.03,
+      "cost_per_1m_out": 0.06,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 262144,
-      "default_max_tokens": 131072,
+      "context_window": 8192,
+      "default_max_tokens": 8192,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "moonshotai/kimi-k2:free",
-      "name": "MoonshotAI: Kimi K2 0711 (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
+      "id": "meta-llama/llama-3.1-405b-instruct",
+      "name": "Meta: Llama 3.1 405B Instruct",
+      "cost_per_1m_in": 3,
+      "cost_per_1m_out": 3,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 32768,
-      "default_max_tokens": 3276,
+      "context_window": 131072,
+      "default_max_tokens": 13107,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "moonshotai/kimi-k2",
-      "name": "MoonshotAI: Kimi K2 0711",
-      "cost_per_1m_in": 0.5,
-      "cost_per_1m_out": 2.4,
+      "id": "meta-llama/llama-3.1-70b-instruct",
+      "name": "Meta: Llama 3.1 70B Instruct",
+      "cost_per_1m_in": 0.39999999999999997,
+      "cost_per_1m_out": 0.39999999999999997,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 131072,
@@ -554,244 +645,205 @@
       "supports_attachments": false
     },
     {
-      "id": "mistralai/devstral-medium",
-      "name": "Mistral: Devstral Medium",
-      "cost_per_1m_in": 0.39999999999999997,
-      "cost_per_1m_out": 2,
+      "id": "meta-llama/llama-3.1-8b-instruct",
+      "name": "Meta: Llama 3.1 8B Instruct",
+      "cost_per_1m_in": 0.015,
+      "cost_per_1m_out": 0.02,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 131072,
-      "default_max_tokens": 13107,
+      "default_max_tokens": 8192,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "x-ai/grok-4",
-      "name": "xAI: Grok 4",
-      "cost_per_1m_in": 3,
-      "cost_per_1m_out": 15,
+      "id": "meta-llama/llama-3.2-3b-instruct",
+      "name": "Meta: Llama 3.2 3B Instruct",
+      "cost_per_1m_in": 0.03,
+      "cost_per_1m_out": 0.049999999999999996,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.75,
-      "context_window": 256000,
-      "default_max_tokens": 25600,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
+      "cost_per_1m_out_cached": 0,
+      "context_window": 32768,
+      "default_max_tokens": 16000,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
+      "supports_attachments": false
     },
     {
-      "id": "inception/mercury",
-      "name": "Inception: Mercury",
-      "cost_per_1m_in": 0.25,
-      "cost_per_1m_out": 1,
+      "id": "meta-llama/llama-3.3-70b-instruct",
+      "name": "Meta: Llama 3.3 70B Instruct",
+      "cost_per_1m_in": 0.039,
+      "cost_per_1m_out": 0.12,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 128000,
-      "default_max_tokens": 8192,
+      "context_window": 131072,
+      "default_max_tokens": 4096,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "mistralai/mistral-small-3.2-24b-instruct:free",
-      "name": "Mistral: Mistral Small 3.2 24B (free)",
+      "id": "meta-llama/llama-3.3-70b-instruct:free",
+      "name": "Meta: Llama 3.3 70B Instruct (free)",
       "cost_per_1m_in": 0,
       "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
+      "context_window": 65536,
+      "default_max_tokens": 6553,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "mistralai/mistral-small-3.2-24b-instruct",
-      "name": "Mistral: Mistral Small 3.2 24B",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.3,
+      "id": "meta-llama/llama-3.3-8b-instruct:free",
+      "name": "Meta: Llama 3.3 8B Instruct (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
+      "context_window": 128000,
+      "default_max_tokens": 2014,
       "can_reason": false,
       "has_reasoning_efforts": false,
-      "supports_attachments": true
+      "supports_attachments": false
     },
     {
-      "id": "google/gemini-2.5-flash-lite-preview-06-17",
-      "name": "Google: Gemini 2.5 Flash Lite Preview 06-17",
-      "cost_per_1m_in": 0.09999999999999999,
-      "cost_per_1m_out": 0.39999999999999997,
-      "cost_per_1m_in_cached": 0.18330000000000002,
-      "cost_per_1m_out_cached": 0.024999999999999998,
-      "context_window": 1048576,
-      "default_max_tokens": 32767,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "id": "meta-llama/llama-4-maverick",
+      "name": "Meta: Llama 4 Maverick",
+      "cost_per_1m_in": 0.18,
+      "cost_per_1m_out": 0.6,
+      "cost_per_1m_in_cached": 0,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 1048576,
+      "default_max_tokens": 524288,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": true
     },
     {
-      "id": "google/gemini-2.5-flash",
-      "name": "Google: Gemini 2.5 Flash",
-      "cost_per_1m_in": 0.3,
-      "cost_per_1m_out": 2.5,
-      "cost_per_1m_in_cached": 0.3833,
-      "cost_per_1m_out_cached": 0.075,
-      "context_window": 1048576,
-      "default_max_tokens": 32767,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "id": "meta-llama/llama-4-maverick:free",
+      "name": "Meta: Llama 4 Maverick (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
+      "cost_per_1m_in_cached": 0,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 128000,
+      "default_max_tokens": 2014,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": true
     },
     {
-      "id": "google/gemini-2.5-pro",
-      "name": "Google: Gemini 2.5 Pro",
-      "cost_per_1m_in": 1.25,
-      "cost_per_1m_out": 10,
-      "cost_per_1m_in_cached": 1.625,
-      "cost_per_1m_out_cached": 0.31,
+      "id": "meta-llama/llama-4-scout",
+      "name": "Meta: Llama 4 Scout",
+      "cost_per_1m_in": 0.15,
+      "cost_per_1m_out": 0.6,
+      "cost_per_1m_in_cached": 0,
+      "cost_per_1m_out_cached": 0,
       "context_window": 1048576,
-      "default_max_tokens": 32768,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "default_max_tokens": 104857,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": true
     },
     {
-      "id": "openai/o3-pro",
-      "name": "OpenAI: o3 Pro",
-      "cost_per_1m_in": 20,
-      "cost_per_1m_out": 80,
+      "id": "meta-llama/llama-4-scout:free",
+      "name": "Meta: Llama 4 Scout (free)",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 200000,
-      "default_max_tokens": 50000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 2014,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": true
     },
     {
-      "id": "x-ai/grok-3-mini",
-      "name": "xAI: Grok 3 Mini",
-      "cost_per_1m_in": 0.6,
-      "cost_per_1m_out": 4,
+      "id": "microsoft/phi-3-medium-128k-instruct",
+      "name": "Microsoft: Phi-3 Medium 128K Instruct",
+      "cost_per_1m_in": 1,
+      "cost_per_1m_out": 1,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 0.15,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 128000,
+      "default_max_tokens": 12800,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "x-ai/grok-3",
-      "name": "xAI: Grok 3",
-      "cost_per_1m_in": 5,
-      "cost_per_1m_out": 25,
+      "id": "microsoft/phi-3-mini-128k-instruct",
+      "name": "Microsoft: Phi-3 Mini 128K Instruct",
+      "cost_per_1m_in": 0.09999999999999999,
+      "cost_per_1m_out": 0.09999999999999999,
       "cost_per_1m_in_cached": 0,
-      "cost_per_1m_out_cached": 1.25,
-      "context_window": 131072,
-      "default_max_tokens": 13107,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 128000,
+      "default_max_tokens": 12800,
       "can_reason": false,
       "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "mistralai/magistral-small-2506",
-      "name": "Mistral: Magistral Small 2506",
-      "cost_per_1m_in": 0.5,
-      "cost_per_1m_out": 1.5,
+      "id": "microsoft/phi-3.5-mini-128k-instruct",
+      "name": "Microsoft: Phi-3.5 Mini 128K Instruct",
+      "cost_per_1m_in": 0.09999999999999999,
+      "cost_per_1m_out": 0.09999999999999999,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 40000,
-      "default_max_tokens": 20000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 12800,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "mistralai/magistral-medium-2506",
-      "name": "Mistral: Magistral Medium 2506",
+      "id": "mistralai/mistral-large",
+      "name": "Mistral Large",
       "cost_per_1m_in": 2,
-      "cost_per_1m_out": 5,
+      "cost_per_1m_out": 6,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 40960,
-      "default_max_tokens": 20000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 128000,
+      "default_max_tokens": 12800,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "mistralai/magistral-medium-2506:thinking",
-      "name": "Mistral: Magistral Medium 2506 (thinking)",
+      "id": "mistralai/mistral-large-2407",
+      "name": "Mistral Large 2407",
       "cost_per_1m_in": 2,
-      "cost_per_1m_out": 5,
+      "cost_per_1m_out": 6,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 40960,
-      "default_max_tokens": 20000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 131072,
+      "default_max_tokens": 13107,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "google/gemini-2.5-pro-preview",
-      "name": "Google: Gemini 2.5 Pro Preview 06-05",
-      "cost_per_1m_in": 1.25,
-      "cost_per_1m_out": 10,
-      "cost_per_1m_in_cached": 1.625,
-      "cost_per_1m_out_cached": 0.31,
-      "context_window": 1048576,
-      "default_max_tokens": 32768,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
-    },
-    {
-      "id": "deepseek/deepseek-r1-0528",
-      "name": "DeepSeek: R1 0528",
-      "cost_per_1m_in": 2.5500000000000003,
-      "cost_per_1m_out": 5.95,
+      "id": "mistralai/mistral-large-2411",
+      "name": "Mistral Large 2411",
+      "cost_per_1m_in": 2,
+      "cost_per_1m_out": 6,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
-      "context_window": 163840,
-      "default_max_tokens": 65536,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
+      "context_window": 131072,
+      "default_max_tokens": 13107,
+      "can_reason": false,
+      "has_reasoning_efforts": false,
       "supports_attachments": false
     },
     {
-      "id": "anthropic/claude-opus-4",
-      "name": "Anthropic: Claude Opus 4",
-      "cost_per_1m_in": 15,
-      "cost_per_1m_out": 75,
-      "cost_per_1m_in_cached": 18.75,
-      "cost_per_1m_out_cached": 1.5,
-      "context_window": 200000,
-      "default_max_tokens": 16000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
-    },
-    {
-      "id": "anthropic/claude-sonnet-4",
-      "name": "Anthropic: Claude Sonnet 4",
-      "cost_per_1m_in": 3,
-      "cost_per_1m_out": 15,
-      "cost_per_1m_in_cached": 3.75,
-      "cost_per_1m_out_cached": 0.3,
-      "context_window": 1000000,
-      "default_max_tokens": 32000,
-      "can_reason": true,
-      "has_reasoning_efforts": true,
-      "supports_attachments": true
-    },
-    {
-      "id": "mistralai/devstral-small-2505:free",
-      "name": "Mistral: Devstral Small 2505 (free)",
-      "cost_per_1m_in": 0,
-      "cost_per_1m_out": 0,
+      "id": "mistralai/mistral-small",
+      "name": "Mistral Small",
+      "cost_per_1m_in": 0.19999999999999998,
+      "cost_per_1m_out": 0.6,
       "cost_per_1m_in_cached": 0,
       "cost_per_1m_out_cached": 0,
       "context_window": 32768,