claudish 5.4.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -27321,7 +27321,7 @@ Tokens: ${result.usage.input} input, ${result.usage.output} output`;
27321
27321
  };
27322
27322
  }
27323
27323
  });
27324
- server.tool("list_models", "List recommended OpenRouter models for coding tasks", {}, async () => {
27324
+ server.tool("list_models", "List recommended models for coding tasks", {}, async () => {
27325
27325
  const models = loadRecommendedModels();
27326
27326
  if (models.length === 0) {
27327
27327
  return {
@@ -27347,12 +27347,12 @@ Tokens: ${result.usage.input} input, ${result.usage.output} output`;
27347
27347
  output += `
27348
27348
  ## Quick Picks
27349
27349
  `;
27350
- output += "- **Fast & cheap**: `x-ai/grok-code-fast-1` ($0.85/1M)\n";
27351
- output += "- **Most advanced**: `openai/gpt-5.3` ($5.00/1M)\n";
27352
- output += "- **Large context**: `google/gemini-3-pro-preview` (1M tokens)\n";
27353
- output += "- **Reasoning**: `moonshotai/kimi-k2-thinking` ($2.50/1M)\n";
27354
- output += "- **Budget**: `minimax/minimax-m2.1` ($0.60/1M)\n";
27355
- output += "- **Code specialist**: `deepseek/deepseek-v3.2` ($1.00/1M)\n";
27350
+ output += "- **Budget**: `minimax-m2.5` ($0.75/1M)\n";
27351
+ output += "- **Large context**: `gemini-3.1-pro-preview` (1M tokens)\n";
27352
+ output += "- **Most advanced**: `gpt-5.2` ($7.88/1M)\n";
27353
+ output += "- **Vision + coding**: `kimi-k2.5` ($1.32/1M)\n";
27354
+ output += "- **Agentic**: `glm-5` ($1.68/1M)\n";
27355
+ output += "- **Multimodal**: `qwen3.5-plus-02-15` ($1.40/1M)\n";
27356
27356
  return { content: [{ type: "text", text: output }] };
27357
27357
  });
27358
27358
  server.tool("search_models", "Search all OpenRouter models by name, provider, or capability", {
@@ -31119,8 +31119,7 @@ function loadRecommendedModels2() {
31119
31119
  const data = JSON.parse(content);
31120
31120
  return (data.models || []).map((model) => ({
31121
31121
  ...model,
31122
- id: model.id.startsWith("openrouter@") ? model.id : `openrouter@${model.id}`,
31123
- source: "OpenRouter"
31122
+ source: "Recommended"
31124
31123
  }));
31125
31124
  } catch {
31126
31125
  return [];
@@ -33332,6 +33331,7 @@ var init_model_parser = __esm(() => {
33332
33331
  { pattern: /^meta-llama\//i, provider: "ollamacloud" },
33333
33332
  { pattern: /^llama-/i, provider: "ollamacloud" },
33334
33333
  { pattern: /^llama3/i, provider: "ollamacloud" },
33334
+ { pattern: /^qwen/i, provider: "qwen" },
33335
33335
  { pattern: /^poe:/i, provider: "poe" },
33336
33336
  { pattern: /^anthropic\//i, provider: "native-anthropic" },
33337
33337
  { pattern: /^claude-/i, provider: "native-anthropic" }
@@ -33995,12 +33995,14 @@ var init_auto_route = __esm(() => {
33995
33995
  OPENROUTER_VENDOR_MAP = {
33996
33996
  google: "google",
33997
33997
  openai: "openai",
33998
- kimi: "moonshot",
33999
- "kimi-coding": "moonshot",
34000
- glm: "zhipuai",
34001
- "glm-coding": "zhipuai",
33998
+ kimi: "moonshotai",
33999
+ "kimi-coding": "moonshotai",
34000
+ glm: "z-ai",
34001
+ "glm-coding": "z-ai",
34002
+ zai: "z-ai",
34002
34003
  minimax: "minimax",
34003
- ollamacloud: "meta-llama"
34004
+ ollamacloud: "meta-llama",
34005
+ qwen: "qwen"
34004
34006
  };
34005
34007
  PROVIDER_HINT_MAP = {
34006
34008
  "kimi-coding": {
@@ -35686,24 +35688,20 @@ function printAvailableModels() {
35686
35688
  const modelInfo = loadModelInfo();
35687
35689
  for (const model of basicModels) {
35688
35690
  const info = modelInfo[model];
35689
- const displayModel = model === "custom" ? model : `openrouter@${model}`;
35690
- console.log(` ${displayModel}`);
35691
+ console.log(` ${model}`);
35691
35692
  console.log(` ${info.name} - ${info.description}`);
35692
35693
  console.log("");
35693
35694
  }
35694
35695
  return;
35695
35696
  }
35696
35697
  console.log(`
35697
- Available OpenRouter Models (last updated: ${lastUpdated}):
35698
+ Recommended Models (last updated: ${lastUpdated}):
35698
35699
  `);
35699
- console.log(" Model Provider Pricing Context Capabilities");
35700
- console.log(" " + "─".repeat(86));
35700
+ console.log(" Model Pricing Context Capabilities");
35701
+ console.log(" " + "─".repeat(66));
35701
35702
  for (const model of models) {
35702
- const fullModelId = model.id.startsWith("openrouter@") ? model.id : `openrouter@${model.id}`;
35703
- const modelId = fullModelId.length > 30 ? fullModelId.substring(0, 27) + "..." : fullModelId;
35704
- const modelIdPadded = modelId.padEnd(30);
35705
- const provider = model.provider.length > 10 ? model.provider.substring(0, 7) + "..." : model.provider;
35706
- const providerPadded = provider.padEnd(10);
35703
+ const modelId = model.id.length > 28 ? model.id.substring(0, 25) + "..." : model.id;
35704
+ const modelIdPadded = modelId.padEnd(28);
35707
35705
  let pricing = model.pricing?.average || "N/A";
35708
35706
  if (pricing.includes("-1000000")) {
35709
35707
  pricing = "varies";
@@ -35717,7 +35715,7 @@ Available OpenRouter Models (last updated: ${lastUpdated}):
35717
35715
  const reasoning = model.supportsReasoning ? "\uD83E\uDDE0" : " ";
35718
35716
  const vision = model.supportsVision ? "\uD83D\uDC41️ " : " ";
35719
35717
  const capabilities = `${tools} ${reasoning} ${vision}`;
35720
- console.log(` ${modelIdPadded} ${providerPadded} ${pricingPadded} ${contextPadded} ${capabilities}`);
35718
+ console.log(` ${modelIdPadded} ${pricingPadded} ${contextPadded} ${capabilities}`);
35721
35719
  }
35722
35720
  console.log("");
35723
35721
  console.log(" Capabilities: \uD83D\uDD27 Tools \uD83E\uDDE0 Reasoning \uD83D\uDC41️ Vision");
@@ -35734,14 +35732,7 @@ function printAvailableModelsJSON() {
35734
35732
  try {
35735
35733
  const jsonContent = readFileSync9(jsonPath, "utf-8");
35736
35734
  const data = JSON.parse(jsonContent);
35737
- const outputData = {
35738
- ...data,
35739
- models: data.models.map((model) => ({
35740
- ...model,
35741
- id: model.id.startsWith("openrouter@") ? model.id : `openrouter@${model.id}`
35742
- }))
35743
- };
35744
- console.log(JSON.stringify(outputData, null, 2));
35735
+ console.log(JSON.stringify(data, null, 2));
35745
35736
  } catch (error46) {
35746
35737
  const models = getAvailableModels();
35747
35738
  const modelInfo = loadModelInfo();
@@ -35752,7 +35743,7 @@ function printAvailableModelsJSON() {
35752
35743
  models: models.filter((m) => m !== "custom").map((modelId) => {
35753
35744
  const info = modelInfo[modelId];
35754
35745
  return {
35755
- id: `openrouter@${modelId}`,
35746
+ id: modelId,
35756
35747
  name: info.name,
35757
35748
  description: info.description,
35758
35749
  provider: info.provider,
@@ -35824,7 +35815,7 @@ async function fetchGLMCodingModels2() {
35824
35815
  return [];
35825
35816
  }
35826
35817
  }
35827
- var __filename5, __dirname5, VERSION = "5.4.0", CACHE_MAX_AGE_DAYS3 = 2, MODELS_JSON_PATH, CLAUDISH_CACHE_DIR3, ALL_MODELS_JSON_PATH2;
35818
+ var __filename5, __dirname5, VERSION = "5.5.0", CACHE_MAX_AGE_DAYS3 = 2, MODELS_JSON_PATH, CLAUDISH_CACHE_DIR3, ALL_MODELS_JSON_PATH2;
35828
35819
  var init_cli = __esm(() => {
35829
35820
  init_config();
35830
35821
  init_model_loader();
@@ -35999,7 +35990,7 @@ function mergeUserSettingsIfPresent(config3, tempSettingsPath, statusLine) {
35999
35990
  }
36000
35991
  async function runClaudeWithProxy(config3, proxyUrl) {
36001
35992
  const hasProfileMappings = config3.modelOpus || config3.modelSonnet || config3.modelHaiku || config3.modelSubagent;
36002
- const modelId = config3.model || (hasProfileMappings ? undefined : "unknown");
35993
+ const modelId = config3.model || (hasProfileMappings || config3.monitor ? undefined : "unknown");
36003
35994
  const portMatch = proxyUrl.match(/:(\d+)/);
36004
35995
  const port = portMatch ? portMatch[1] : "unknown";
36005
35996
  const { path: tempSettingsPath, statusLine } = createTempSettingsFile(modelId, port);
@@ -40897,6 +40888,56 @@ var init_deepseek_adapter = __esm(() => {
40897
40888
  };
40898
40889
  });
40899
40890
 
40891
+ // src/adapters/glm-adapter.ts
40892
+ var GLM_CONTEXT_WINDOWS, GLM_VISION_MODELS, GLMAdapter;
40893
+ var init_glm_adapter = __esm(() => {
40894
+ init_base_adapter();
40895
+ init_logger();
40896
+ GLM_CONTEXT_WINDOWS = {
40897
+ "glm-5": 128000,
40898
+ "glm-4-plus": 128000,
40899
+ "glm-4-long": 1e6,
40900
+ "glm-4-flash": 128000,
40901
+ "glm-4": 128000,
40902
+ "glm-3-turbo": 128000
40903
+ };
40904
+ GLM_VISION_MODELS = ["glm-4v", "glm-4v-plus", "glm-5"];
40905
+ GLMAdapter = class GLMAdapter extends BaseModelAdapter {
40906
+ processTextContent(textContent, accumulatedText) {
40907
+ return {
40908
+ cleanedText: textContent,
40909
+ extractedToolCalls: [],
40910
+ wasTransformed: false
40911
+ };
40912
+ }
40913
+ prepareRequest(request, originalRequest) {
40914
+ if (originalRequest.thinking) {
40915
+ log(`[GLMAdapter] Stripping thinking object (not supported by GLM API)`);
40916
+ delete request.thinking;
40917
+ }
40918
+ return request;
40919
+ }
40920
+ shouldHandle(modelId) {
40921
+ return modelId.includes("glm-") || modelId.includes("zhipu/");
40922
+ }
40923
+ getName() {
40924
+ return "GLMAdapter";
40925
+ }
40926
+ getContextWindow() {
40927
+ const lower = this.modelId.toLowerCase();
40928
+ for (const [pattern, size] of Object.entries(GLM_CONTEXT_WINDOWS)) {
40929
+ if (lower.includes(pattern))
40930
+ return size;
40931
+ }
40932
+ return 128000;
40933
+ }
40934
+ supportsVision() {
40935
+ const lower = this.modelId.toLowerCase();
40936
+ return GLM_VISION_MODELS.some((m) => lower.includes(m));
40937
+ }
40938
+ };
40939
+ });
40940
+
40900
40941
  // src/adapters/adapter-manager.ts
40901
40942
  class AdapterManager {
40902
40943
  adapters;
@@ -40908,7 +40949,8 @@ class AdapterManager {
40908
40949
  new OpenAIAdapter(modelId),
40909
40950
  new QwenAdapter(modelId),
40910
40951
  new MiniMaxAdapter(modelId),
40911
- new DeepSeekAdapter(modelId)
40952
+ new DeepSeekAdapter(modelId),
40953
+ new GLMAdapter(modelId)
40912
40954
  ];
40913
40955
  this.defaultAdapter = new DefaultAdapter(modelId);
40914
40956
  }
@@ -40932,6 +40974,7 @@ var init_adapter_manager = __esm(() => {
40932
40974
  init_qwen_adapter();
40933
40975
  init_minimax_adapter();
40934
40976
  init_deepseek_adapter();
40977
+ init_glm_adapter();
40935
40978
  });
40936
40979
 
40937
40980
  // src/adapters/openrouter-adapter.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudish",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "description": "Run Claude Code with any model - OpenRouter, Ollama, LM Studio & local models",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -4,19 +4,20 @@
4
4
  "source": "https://openrouter.ai/models?categories=programming&fmt=cards&order=top-weekly",
5
5
  "models": [
6
6
  {
7
- "id": "x-ai/grok-code-fast-1",
8
- "name": "xAI: Grok Code Fast 1",
9
- "description": "Grok Code Fast 1 is a speedy and economical reasoning model that excels at agentic coding. With reasoning traces visible in the response, developers can steer Grok Code for high-quality work flows.",
10
- "provider": "X-ai",
11
- "category": "reasoning",
7
+ "id": "minimax-m2.5",
8
+ "openrouterId": "minimax/minimax-m2.5",
9
+ "name": "MiniMax: MiniMax M2.5",
10
+ "description": "MiniMax-M2.5 is a SOTA large language model designed for real-world productivity. Trained in a diverse range of complex real-world digital working environments, M2.5 builds upon the coding expertise of M2.1 to extend into general office work, reaching fluency in generating and operating Word, Excel, and Powerpoint files, context switching between diverse software environments, and working across different agent and human teams. Scoring 80.2% on SWE-Bench Verified, 51.3% on Multi-SWE-Bench, and 76.3% on BrowseComp, M2.5 is also more token efficient than previous generations, having been trained to optimize its actions and output through planning.",
11
+ "provider": "Minimax",
12
+ "category": "programming",
12
13
  "priority": 1,
13
14
  "pricing": {
14
- "input": "$0.20/1M",
15
- "output": "$1.50/1M",
16
- "average": "$0.85/1M"
15
+ "input": "$0.29/1M",
16
+ "output": "$1.20/1M",
17
+ "average": "$0.75/1M"
17
18
  },
18
- "context": "256K",
19
- "maxOutputTokens": 10000,
19
+ "context": "196K",
20
+ "maxOutputTokens": 196608,
20
21
  "modality": "text->text",
21
22
  "supportsTools": true,
22
23
  "supportsReasoning": true,
@@ -25,37 +26,39 @@
25
26
  "recommended": true
26
27
  },
27
28
  {
28
- "id": "minimax/minimax-m2.1",
29
- "name": "MiniMax: MiniMax M2.1",
30
- "description": "MiniMax-M2.1 is a lightweight, state-of-the-art large language model optimized for coding, agentic workflows, and modern application development. With only 10 billion activated parameters, it delivers a major jump in real-world capability while maintaining exceptional latency, scalability, and cost efficiency.\n\nCompared to its predecessor, M2.1 delivers cleaner, more concise outputs and faster perceived response times. It shows leading multilingual coding performance across major systems and application languages, achieving 49.4% on Multi-SWE-Bench and 72.5% on SWE-Bench Multilingual, and serves as a versatile agent “brain” for IDEs, coding tools, and general-purpose assistance.\n\nTo avoid degrading this model's performance, MiniMax highly recommends preserving reasoning between turns. Learn more about using reasoning_details to pass back reasoning in our [docs](https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks).",
31
- "provider": "Minimax",
32
- "category": "reasoning",
29
+ "id": "kimi-k2.5",
30
+ "openrouterId": "moonshotai/kimi-k2.5",
31
+ "name": "MoonshotAI: Kimi K2.5",
32
+ "description": "Kimi K2.5 is Moonshot AI's native multimodal model, delivering state-of-the-art visual coding capability and a self-directed agent swarm paradigm. Built on Kimi K2 with continued pretraining over approximately 15T mixed visual and text tokens, it delivers strong performance in general reasoning, visual coding, and agentic tool-calling.",
33
+ "provider": "Moonshotai",
34
+ "category": "vision",
33
35
  "priority": 2,
34
36
  "pricing": {
35
- "input": "$0.27/1M",
36
- "output": "$0.95/1M",
37
- "average": "$0.61/1M"
37
+ "input": "$0.45/1M",
38
+ "output": "$2.20/1M",
39
+ "average": "$1.32/1M"
38
40
  },
39
- "context": "196K",
40
- "maxOutputTokens": null,
41
- "modality": "text->text",
41
+ "context": "262K",
42
+ "maxOutputTokens": 65535,
43
+ "modality": "text+image->text",
42
44
  "supportsTools": true,
43
45
  "supportsReasoning": true,
44
- "supportsVision": false,
46
+ "supportsVision": true,
45
47
  "isModerated": false,
46
48
  "recommended": true
47
49
  },
48
50
  {
49
- "id": "z-ai/glm-4.7",
50
- "name": "Z.ai: GLM 4.7",
51
- "description": "GLM-4.7 is Z.ai’s latest flagship model, featuring upgrades in two key areas: enhanced programming capabilities and more stable multi-step reasoning/execution. It demonstrates significant improvements in executing complex agent tasks while delivering more natural conversational experiences and superior front-end aesthetics.",
51
+ "id": "glm-5",
52
+ "openrouterId": "z-ai/glm-5",
53
+ "name": "Z.ai: GLM 5",
54
+ "description": "GLM-5 is Z.ai’s flagship open-source foundation model engineered for complex systems design and long-horizon agent workflows. Built for expert developers, it delivers production-grade performance on large-scale programming tasks, rivaling leading closed-source models. With advanced agentic planning, deep backend reasoning, and iterative self-correction, GLM-5 moves beyond code generation to full-system construction and autonomous execution.",
52
55
  "provider": "Z-ai",
53
56
  "category": "reasoning",
54
57
  "priority": 3,
55
58
  "pricing": {
56
- "input": "$0.30/1M",
57
- "output": "$1.40/1M",
58
- "average": "$0.85/1M"
59
+ "input": "$0.80/1M",
60
+ "output": "$2.56/1M",
61
+ "average": "$1.68/1M"
59
62
  },
60
63
  "context": "202K",
61
64
  "maxOutputTokens": null,
@@ -67,9 +70,10 @@
67
70
  "recommended": true
68
71
  },
69
72
  {
70
- "id": "google/gemini-3-pro-preview",
71
- "name": "Google: Gemini 3 Pro Preview",
72
- "description": "Gemini 3 Pro is Google’s flagship frontier model for high-precision multimodal reasoning, combining strong performance across text, image, video, audio, and code with a 1M-token context window. Reasoning Details must be preserved when using multi-turn tool calling, see our docs here: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks. It delivers state-of-the-art benchmark results in general reasoning, STEM problem solving, factual QA, and multimodal understanding, including leading scores on LMArena, GPQA Diamond, MathArena Apex, MMMU-Pro, and Video-MMMU. Interactions emphasize depth and interpretability: the model is designed to infer intent with minimal prompting and produce direct, insight-focused responses.\n\nBuilt for advanced development and agentic workflows, Gemini 3 Pro provides robust tool-calling, long-horizon planning stability, and strong zero-shot generation for complex UI, visualization, and coding tasks. It excels at agentic coding (SWE-Bench Verified, Terminal-Bench 2.0), multimodal analysis, and structured long-form tasks such as research synthesis, planning, and interactive learning experiences. Suitable applications include autonomous agents, coding assistants, multimodal analytics, scientific reasoning, and high-context information processing.",
73
+ "id": "gemini-3.1-pro-preview",
74
+ "openrouterId": "google/gemini-3.1-pro-preview",
75
+ "name": "Google: Gemini 3.1 Pro Preview",
76
+ "description": "Gemini 3.1 Pro Preview is Google’s frontier reasoning model, delivering enhanced software engineering performance, improved agentic reliability, and more efficient token usage across complex workflows. Building on the multimodal foundation of the Gemini 3 series, it combines high-precision reasoning across text, image, video, audio, and code with a 1M-token context window. Reasoning Details must be preserved when using multi-turn tool calling, see our docs here: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning. The 3.1 update introduces measurable gains in SWE benchmarks and real-world coding environments, along with stronger autonomous task execution in structured domains such as finance and spreadsheet-based workflows.\n\nDesigned for advanced development and agentic systems, Gemini 3.1 Pro Preview improves long-horizon stability and tool orchestration while increasing token efficiency. It introduces a new medium thinking level to better balance cost, speed, and performance. The model excels in agentic coding, structured planning, multimodal analysis, and workflow automation, making it well-suited for autonomous agents, financial modeling, spreadsheet automation, and high-context enterprise tasks.",
73
77
  "provider": "Google",
74
78
  "category": "vision",
75
79
  "priority": 4,
@@ -88,62 +92,43 @@
88
92
  "recommended": true
89
93
  },
90
94
  {
91
- "id": "moonshotai/kimi-k2-thinking",
92
- "name": "MoonshotAI: Kimi K2 Thinking",
93
- "description": "Kimi K2 Thinking is Moonshot AI’s most advanced open reasoning model to date, extending the K2 series into agentic, long-horizon reasoning. Built on the trillion-parameter Mixture-of-Experts (MoE) architecture introduced in Kimi K2, it activates 32 billion parameters per forward pass and supports 256 k-token context windows. The model is optimized for persistent step-by-step thought, dynamic tool invocation, and complex reasoning workflows that span hundreds of turns. It interleaves step-by-step reasoning with tool use, enabling autonomous research, coding, and writing that can persist for hundreds of sequential actions without drift.\n\nIt sets new open-source benchmarks on HLE, BrowseComp, SWE-Multilingual, and LiveCodeBench, while maintaining stable multi-agent behavior through 200–300 tool calls. Built on a large-scale MoE architecture with MuonClip optimization, it combines strong reasoning depth with high inference efficiency for demanding agentic and analytical tasks.",
94
- "provider": "Moonshotai",
95
+ "id": "gpt-5.2",
96
+ "openrouterId": "openai/gpt-5.2",
97
+ "name": "OpenAI: GPT-5.2",
98
+ "description": "GPT-5.2 is the latest frontier-grade model in the GPT-5 series, offering stronger agentic and long context perfomance compared to GPT-5.1. It uses adaptive reasoning to allocate computation dynamically, responding quickly to simple queries while spending more depth on complex tasks.\n\nBuilt for broad task coverage, GPT-5.2 delivers consistent gains across math, coding, sciende, and tool calling workloads, with more coherent long-form answers and improved tool-use reliability.",
99
+ "provider": "Openai",
95
100
  "category": "reasoning",
96
101
  "priority": 5,
97
102
  "pricing": {
98
- "input": "$0.47/1M",
99
- "output": "$2.00/1M",
100
- "average": "$1.24/1M"
103
+ "input": "$1.75/1M",
104
+ "output": "$14.00/1M",
105
+ "average": "$7.88/1M"
101
106
  },
102
- "context": "131K",
103
- "maxOutputTokens": null,
104
- "modality": "text->text",
107
+ "context": "400K",
108
+ "maxOutputTokens": 128000,
109
+ "modality": "text+image+file->text",
105
110
  "supportsTools": true,
106
111
  "supportsReasoning": true,
107
- "supportsVision": false,
108
- "isModerated": false,
109
- "recommended": true
110
- },
111
- {
112
- "id": "deepseek/deepseek-v3.2",
113
- "name": "DeepSeek: DeepSeek V3.2",
114
- "description": "DeepSeek-V3.2 is a large language model designed to harmonize high computational efficiency with strong reasoning and agentic tool-use performance. It introduces DeepSeek Sparse Attention (DSA), a fine-grained sparse attention mechanism that reduces training and inference cost while preserving quality in long-context scenarios. A scalable reinforcement learning post-training framework further improves reasoning, with reported performance in the GPT-5 class, and the model has demonstrated gold-medal results on the 2025 IMO and IOI. V3.2 also uses a large-scale agentic task synthesis pipeline to better integrate reasoning into tool-use settings, boosting compliance and generalization in interactive environments.\n\nUsers can control the reasoning behaviour with the `reasoning` `enabled` boolean. [Learn more in our docs](https://openrouter.ai/docs/use-cases/reasoning-tokens#enable-reasoning-with-default-config)",
115
- "provider": "Deepseek",
116
- "category": "reasoning",
117
- "priority": 6,
118
- "pricing": {
119
- "input": "$0.25/1M",
120
- "output": "$0.40/1M",
121
- "average": "$0.32/1M"
122
- },
123
- "context": "163K",
124
- "maxOutputTokens": 65536,
125
- "modality": "text->text",
126
- "supportsTools": true,
127
- "supportsReasoning": true,
128
- "supportsVision": false,
129
- "isModerated": false,
112
+ "supportsVision": true,
113
+ "isModerated": true,
130
114
  "recommended": true
131
115
  },
132
116
  {
133
- "id": "qwen/qwen3-vl-235b-a22b-thinking",
134
- "name": "Qwen: Qwen3 VL 235B A22B Thinking",
135
- "description": "Qwen3-VL-235B-A22B Thinking is a multimodal model that unifies strong text generation with visual understanding across images and video. The Thinking model is optimized for multimodal reasoning in STEM and math. The series emphasizes robust perception (recognition of diverse real-world and synthetic categories), spatial understanding (2D/3D grounding), and long-form visual comprehension, with competitive results on public multimodal benchmarks for both perception and reasoning.\n\nBeyond analysis, Qwen3-VL supports agentic interaction and tool use: it can follow complex instructions over multi-image, multi-turn dialogues; align text to video timelines for precise temporal queries; and operate GUI elements for automation tasks. The models also enable visual coding workflows, turning sketches or mockups into code and assisting with UI debugging, while maintaining strong text-only performance comparable to the flagship Qwen3 language models. This makes Qwen3-VL suitable for production scenarios spanning document AI, multilingual OCR, software/UI assistance, spatial/embodied tasks, and research on vision-language agents.",
117
+ "id": "qwen3.5-plus-02-15",
118
+ "openrouterId": "qwen/qwen3.5-plus-02-15",
119
+ "name": "Qwen: Qwen3.5 Plus 2026-02-15",
120
+ "description": "The Qwen3.5 native vision-language series Plus models are built on a hybrid architecture that integrates linear attention mechanisms with sparse mixture-of-experts models, achieving higher inference efficiency. In a variety of task evaluations, the 3.5 series consistently demonstrates performance on par with state-of-the-art leading models. Compared to the 3 series, these models show a leap forward in both pure-text and multimodal capabilities.",
136
121
  "provider": "Qwen",
137
122
  "category": "vision",
138
- "priority": 7,
123
+ "priority": 6,
139
124
  "pricing": {
140
- "input": "FREE",
141
- "output": "FREE",
142
- "average": "FREE"
125
+ "input": "$0.40/1M",
126
+ "output": "$2.40/1M",
127
+ "average": "$1.40/1M"
143
128
  },
144
- "context": "131K",
145
- "maxOutputTokens": 32768,
146
- "modality": "text+image->text",
129
+ "context": "1000K",
130
+ "maxOutputTokens": 65536,
131
+ "modality": "text+image+video->text",
147
132
  "supportsTools": true,
148
133
  "supportsReasoning": true,
149
134
  "supportsVision": true,