Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 163 additions & 45 deletions conf/openrouter_models.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@
{
"model_name": "anthropic/claude-opus-4.5",
"aliases": [
"opus",
"opus4.5",
"claude-opus"
"opus4.5"
],
"context_window": 200000,
"max_output_tokens": 64000,
Expand All @@ -41,10 +39,26 @@
"description": "Claude Opus 4.5 - Anthropic's frontier reasoning model for complex software engineering and agentic workflows",
"intelligence_score": 18
},
{
"model_name": "anthropic/claude-opus-4.6",
"aliases": [
"opus",
"opus4.6",
"claude-opus"
],
"context_window": 1000000,
"max_output_tokens": 128000,
"supports_extended_thinking": false,
"supports_json_mode": false,
"supports_function_calling": false,
"supports_images": true,
"max_image_size_mb": 5.0,
"description": "Claude Opus 4.6 - Anthropic's strongest model for coding, long-running professional tasks, and agentic workflows",
"intelligence_score": 18
},
{
"model_name": "anthropic/claude-sonnet-4.5",
"aliases": [
"sonnet",
"sonnet4.5"
],
"context_window": 200000,
Expand All @@ -57,6 +71,22 @@
"description": "Claude Sonnet 4.5 - High-performance model with exceptional reasoning and efficiency",
"intelligence_score": 12
},
{
"model_name": "anthropic/claude-sonnet-4.6",
"aliases": [
"sonnet",
"sonnet4.6"
],
"context_window": 1000000,
"max_output_tokens": 128000,
"supports_extended_thinking": false,
"supports_json_mode": false,
"supports_function_calling": false,
"supports_images": true,
"max_image_size_mb": 5.0,
"description": "Claude Sonnet 4.6 - Frontier Sonnet with coding, agents, and professional task performance",
"intelligence_score": 13
},
{
"model_name": "anthropic/claude-opus-4.1",
"aliases": [
Expand Down Expand Up @@ -104,12 +134,30 @@
},
{
"model_name": "google/gemini-3-pro-preview",
"aliases": [
"gemini3.0",
"gemini-3.0",
"pro-openrouter"
],
"context_window": 1048576,
"max_output_tokens": 65536,
"supports_extended_thinking": true,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": true,
"max_image_size_mb": 20.0,
"allow_code_generation": true,
"description": "Google's Gemini 3.0 Pro via OpenRouter with vision",
"intelligence_score": 17
},
{
"model_name": "google/gemini-3.1-pro-preview",
"aliases": [
"pro",
"gemini-pro",
"gemini",
"gemini3",
"pro-openrouter"
"gemini3.1"
],
"context_window": 1048576,
"max_output_tokens": 65536,
Expand All @@ -119,8 +167,8 @@
"supports_images": true,
"max_image_size_mb": 20.0,
"allow_code_generation": true,
"description": "Google's Gemini 3.0 Pro via OpenRouter with vision",
"intelligence_score": 18
"description": "Google's Gemini 3.1 Pro - Frontier reasoning with enhanced software engineering and agentic capabilities",
"intelligence_score": 19
},
{
"model_name": "google/gemini-2.5-pro",
Expand Down Expand Up @@ -171,25 +219,6 @@
"description": "Mistral's largest model (text-only)",
"intelligence_score": 11
},
{
"model_name": "meta-llama/llama-3-70b",
"aliases": [
"llama",
"llama3",
"llama3-70b",
"llama-70b",
"llama3-openrouter"
],
"context_window": 8192,
"max_output_tokens": 8192,
"supports_extended_thinking": false,
"supports_json_mode": false,
"supports_function_calling": false,
"supports_images": false,
"max_image_size_mb": 0.0,
"description": "Meta's Llama 3 70B model (text-only)",
"intelligence_score": 9
},
{
"model_name": "deepseek/deepseek-r1-0528",
"aliases": [
Expand All @@ -208,23 +237,6 @@
"description": "DeepSeek R1 with thinking mode - advanced reasoning capabilities (text-only)",
"intelligence_score": 15
},
{
"model_name": "perplexity/llama-3-sonar-large-32k-online",
"aliases": [
"perplexity",
"sonar",
"perplexity-online"
],
"context_window": 32768,
"max_output_tokens": 32768,
"supports_extended_thinking": false,
"supports_json_mode": false,
"supports_function_calling": false,
"supports_images": false,
"max_image_size_mb": 0.0,
"description": "Perplexity's online model with web search (text-only)",
"intelligence_score": 9
},
{
"model_name": "openai/o3",
"aliases": [
Expand Down Expand Up @@ -334,8 +346,7 @@
"model_name": "openai/gpt-5.2-pro",
"aliases": [
"gpt5.2-pro",
"gpt5.2pro",
"gpt5pro"
"gpt5.2pro"
],
"context_window": 400000,
"max_output_tokens": 272000,
Expand All @@ -352,6 +363,28 @@
"description": "GPT-5.2 Pro - Advanced reasoning model with highest quality responses (text+image input, text output only)",
"intelligence_score": 18
},
{
"model_name": "openai/gpt-5.4-pro",
"aliases": [
"gpt5.4-pro",
"gpt5.4pro",
"gpt5pro"
Comment thread
timeleft-- marked this conversation as resolved.
],
"context_window": 1050000,
"max_output_tokens": 128000,
"supports_extended_thinking": true,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": true,
"max_image_size_mb": 20.0,
"supports_temperature": false,
"temperature_constraint": "fixed",
"use_openai_response_api": true,
"default_reasoning_effort": "high",
"allow_code_generation": true,
"description": "GPT-5.4 Pro - OpenAI's most advanced model with enhanced reasoning and 1M context window",
"intelligence_score": 19
},
{
"model_name": "openai/gpt-5-codex",
"aliases": [
Expand Down Expand Up @@ -450,6 +483,27 @@
"description": "GPT-5.1 Codex (400K context, 128K output) - Agentic coding specialization available through the Responses API",
"intelligence_score": 19
},
{
"model_name": "openai/gpt-5.3-codex",
"aliases": [
"codex-5.3",
"gpt5.3-codex"
],
"context_window": 400000,
"max_output_tokens": 128000,
"supports_extended_thinking": true,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": true,
"max_image_size_mb": 20.0,
"supports_temperature": true,
Comment thread
timeleft-- marked this conversation as resolved.
Outdated
"temperature_constraint": "fixed",
"use_openai_response_api": true,
"default_reasoning_effort": "high",
"allow_code_generation": true,
"description": "GPT-5.3 Codex - OpenAI's most advanced agentic coding model with frontier software engineering performance",
"intelligence_score": 19
},
{
"model_name": "openai/gpt-5.1-codex-mini",
"aliases": [
Expand Down Expand Up @@ -507,6 +561,70 @@
"temperature_constraint": "range",
"description": "xAI's Grok 4.1 Fast Reasoning via OpenRouter (2M context) with vision and advanced reasoning",
"intelligence_score": 15
},
{
"model_name": "deepseek/deepseek-v3.2-exp",
"aliases": [
"deepseek-v3",
"deepseek-v3.2",
"dsv3"
],
"context_window": 163840,
"max_output_tokens": 65536,
"supports_extended_thinking": true,
"supports_json_mode": true,
"supports_function_calling": false,
"supports_images": false,
"max_image_size_mb": 0.0,
"description": "DeepSeek V3.2 Experimental - Strong reasoning capabilities (text-only)",
"intelligence_score": 16
},
{
"model_name": "mistralai/devstral-2512",
"aliases": [
"devstral"
],
"context_window": 262144,
"max_output_tokens": 32768,
"supports_extended_thinking": false,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": false,
"max_image_size_mb": 0.0,
"description": "Devstral 2 - Mistral's 123B parameter model specialized for agentic coding and codebase exploration",
"intelligence_score": 15
},
{
"model_name": "qwen/qwen3.5-397b-a17b",
"aliases": [
"qwen",
"qwen3.5"
],
"context_window": 262144,
"max_output_tokens": 65536,
"supports_extended_thinking": true,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": true,
"max_image_size_mb": 20.0,
"description": "Qwen 3.5 397B - Frontier reasoning model with vision, hybrid architecture (text+image+video input)",
"intelligence_score": 16
},
{
"model_name": "minimax/minimax-m2.5",
"aliases": [
"minimax",
"m2.5"
],
"context_window": 196608,
"max_output_tokens": 196608,
Comment thread
timeleft-- marked this conversation as resolved.
Outdated
"supports_extended_thinking": false,
"supports_json_mode": true,
"supports_function_calling": true,
"supports_images": false,
"max_image_size_mb": 0.0,
"description": "MiniMax M2.5 - SWE-Bench 80.2%, optimized for agent workflows and real-world productivity",
"intelligence_score": 16
}
]
}
4 changes: 2 additions & 2 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
# These values are used in server responses and for tracking releases
# IMPORTANT: This is the single source of truth for version and author info
# Semantic versioning: MAJOR.MINOR.PATCH
__version__ = "9.8.2"
__version__ = "9.9.0"
# Last update date in ISO format
__updated__ = "2025-12-15"
__updated__ = "2026-03-06"
# Primary maintainer
__author__ = "Fahad Gilani"

Expand Down
20 changes: 12 additions & 8 deletions docs/custom_models.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,22 @@ The curated defaults in `conf/openrouter_models.json` include popular entries su

| Alias | Canonical Model | Highlights |
|-------|-----------------|------------|
| `opus`, `claude-opus` | `anthropic/claude-opus-4.1` | Flagship Claude reasoning model with vision |
| `sonnet`, `sonnet4.5` | `anthropic/claude-sonnet-4.5` | Balanced Claude with high context window |
| `opus`, `claude-opus` | `anthropic/claude-opus-4.6` | Latest Anthropic flagship (1M context, vision). `opus4.5` → 4.5, `opus4.1` → 4.1 |
| `sonnet` | `anthropic/claude-sonnet-4.6` | Frontier Sonnet (1M context, vision). `sonnet4.5` → 4.5 |
| `haiku` | `anthropic/claude-3.5-haiku` | Fast Claude option with vision |
| `pro`, `gemini` | `google/gemini-2.5-pro` | Frontier Gemini with extended thinking |
| `pro`, `gemini` | `google/gemini-3.1-pro-preview` | Latest Gemini Pro with 1M context, thinking. `gemini3.0` → 3.0 |
| `flash` | `google/gemini-2.5-flash` | Ultra-fast Gemini with vision |
| `mistral` | `mistralai/mistral-large-2411` | Frontier Mistral (text only) |
| `llama3` | `meta-llama/llama-3-70b` | Large open-weight text model |
| `deepseek-r1` | `deepseek/deepseek-r1-0528` | DeepSeek reasoning model |
| `perplexity` | `perplexity/llama-3-sonar-large-32k-online` | Search-augmented model |
| `gpt5pro` | `openai/gpt-5.4-pro` | OpenAI's most advanced reasoning (1M context). `gpt5.2-pro` → 5.2 Pro |
| `codex-5.3`, `gpt5.3-codex` | `openai/gpt-5.3-codex` | Latest agentic coding model (Responses API) |
| `gpt5.2`, `gpt-5.2`, `5.2` | `openai/gpt-5.2` | Flagship GPT-5.2 with reasoning and vision |
| `gpt5.1-codex`, `codex-5.1` | `openai/gpt-5.1-codex` | Agentic coding specialization (Responses API) |
| `codex-mini`, `gpt5.1-codex-mini` | `openai/gpt-5.1-codex-mini` | Cost-efficient Codex variant with streaming |
| `codex-mini` | `openai/gpt-5.1-codex-mini` | Cost-efficient Codex variant with streaming |
| `mistral` | `mistralai/mistral-large-2411` | Frontier Mistral (text only) |
| `devstral` | `mistralai/devstral-2512` | 123B agentic coding model (262K context) |
| `deepseek-r1` | `deepseek/deepseek-r1-0528` | DeepSeek reasoning model |
| `deepseek-v3`, `dsv3` | `deepseek/deepseek-v3.2-exp` | DeepSeek V3.2 with strong reasoning (164K context) |
| `qwen`, `qwen3.5` | `qwen/qwen3.5-397b-a17b` | Frontier 397B MoE reasoning model (262K context) |
| `minimax`, `m2.5` | `minimax/minimax-m2.5` | SWE-Bench 80.2%, agent-optimized (197K context) |

Consult the JSON file for the full list, aliases, and capability flags. Add new entries as OpenRouter releases additional models.

Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[project]
name = "pal-mcp-server"
version = "9.8.2"
version = "9.9.0"
description = "AI-powered MCP server with multiple model providers"
requires-python = ">=3.9"
requires-python = ">=3.10"
Comment thread
timeleft-- marked this conversation as resolved.
Comment thread
timeleft-- marked this conversation as resolved.
dependencies = [
"mcp>=1.0.0",
"google-genai>=1.19.0",
Expand Down
10 changes: 5 additions & 5 deletions tests/test_custom_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ def test_model_alias_resolution(self):
provider = CustomProvider(api_key="test-key", base_url="http://localhost:11434/v1")

# Test that aliases resolve properly
# "llama" now resolves to "meta-llama/llama-3-70b" (the OpenRouter model)
resolved = provider._resolve_model_name("llama")
assert resolved == "meta-llama/llama-3-70b"
# "deepseek" resolves to "deepseek/deepseek-r1-0528" (the OpenRouter model)
resolved = provider._resolve_model_name("deepseek")
assert resolved == "deepseek/deepseek-r1-0528"

# Test local model alias
resolved_local = provider._resolve_model_name("local-llama")
Expand Down Expand Up @@ -216,8 +216,8 @@ def custom_provider_factory(api_key=None):
custom_provider = custom_provider_factory()
openrouter_provider = OpenRouterProvider(api_key="test-openrouter-key")

assert not custom_provider.validate_model_name("llama")
assert openrouter_provider.validate_model_name("llama")
assert not custom_provider.validate_model_name("deepseek")
assert openrouter_provider.validate_model_name("deepseek")


class TestConfigureProvidersFunction:
Expand Down
Loading
Loading