orcarouter-mcp
Browse OrcaRouter's model catalog and run chat completions from inside any Model Context Protocol client — Claude Desktop, Claude Code, Cursor, Windsurf, Zed, or anything else that speaks the protocol.
Catalog browsing works without an API key — compare pricing and capabilities before signing up.
What you can do
🗺️ Discover providers and models without an API key
💬 Run chat completions through any served model
🧠 Auto-route requests through your workspace's
orcarouter/autorouter (cost / quality / balanced / LinUCB / gated-adaptive strategies)🔁 Configure fallback chains (primary + up to 4 fallbacks) for resilience
📊 Filter models server-side by provider, capability, or minimum context window
🎯 Inspect detailed model cards: pricing, context, latency, supported endpoints
🔌 Works with Claude Desktop, Claude Code, Cursor, Windsurf, Zed, and any MCP client
Related MCP server: whichmodel-mcp
Examples
Try saying things like:
"List all providers on OrcaRouter"
"Show me all Anthropic models with their pricing"
"Get details about
minimax/minimax-m2.7""Chat with
orcarouter/autoand explain quantum computing"
Quick Start
Claude Code (CLI one-liner)
claude mcp add orcarouter -s user \
-e ORCAROUTER_API_KEY=sk-orca-your-key \
-- npx -y @orcarouter/mcpOther clients (config-file path)
Copy the example config for your MCP client into the client's config file:
Client
Example
Action
Claude Desktop
Replace
Claude Code
Merge
Cursor
Replace
Windsurf
Replace
See
examples/README.mdfor the config-file paths and notes on Zed and other clients.Replace
sk-or-...in the copied file with your OrcaRouter API key.Restart your MCP client.
The root .mcp.json is the same config in the Open Plugins standard location, so registry/discovery tools that scan for it (e.g. cursor.directory) can pick this server up automatically.
Requires Node.js 18 or later. The ORCAROUTER_API_KEY env var is only
required for orcarouter_chat; catalog tools work without it.
Tools
orcarouter_chat— run a chat completion (with optional fallback chain)orcarouter_models_list— browse the catalog (pricing, context, capabilities)orcarouter_model_card— detailed info for one modelorcarouter_providers_list— list providers with model counts
Full input schemas are exposed at runtime via the MCP tools/list method — your MCP client (Claude Desktop, Cursor, etc.) reads them automatically.
Configuration
Name | Required | Description |
| optional | OrcaRouter API key. Required only for |
| optional | API base URL. Defaults to |
| optional | Per-request HTTP timeout in seconds. Defaults to |
Security
API keys are read from environment variables, never logged, and only sent to the OrcaRouter API. See SECURITY.md for the vulnerability disclosure policy.
Development
# bun (preferred)
bun install
bun run test
bun run typecheck
bun run build
# or with npm
npm install
npm test
npm run typecheck
npm run buildThe build produces an ESM bundle at dist/index.js with a
#!/usr/bin/env node shebang, runnable as the orcarouter-mcp binary.
Contributing
See CONTRIBUTING.md. For newcomer-friendly tasks, browse the good first issue label.
License
Available Tools
4 toolsorcarouter_chatA
Send a single-turn chat request to OrcaRouter and return the assistant's response text. Default model is the workspace's auto-router. Use orcarouter/<name> for other routers or <provider>/<model> for direct calls. For OpenAI reasoning models (gpt-5/o1/o3/...), max_tokens is automatically routed to max_completion_tokens at the wire level. The optional models array sets a fallback chain — the primary model is tried first, then each entry on failure (5 entries total max, including the primary). Errors are returned as text content with isError:true; common cases include missing API key, rate limits, and upstream provider outages. Requires ORCAROUTER_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model to call. Defaults to `orcarouter/auto` — your workspace's seeded auto-router. Use `orcarouter/<name>` for other workspace routers, or `<provider>/<model>` for direct upstream selection (e.g. `openai/gpt-4o-mini`, `anthropic/claude-haiku-4.5`). | orcarouter/auto |
| prompt | Yes | User message to send (single-turn). | |
| system_prompt | No | Optional system prompt prepended to the conversation. | |
| max_tokens | No | Maximum tokens to generate (default 10000). Automatically translated to max_completion_tokens for OpenAI reasoning models. | |
| temperature | No | Sampling temperature (default 0.7). | |
| models | No | Optional fallback chain. Models are tried in order if the primary fails. Max 5 entries including the primary. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (no readonly, not destructive), the description details automatic max_tokens routing for reasoning models, fallback chain behavior, error representation (isError:true), common failure cases, and required API key. This enriches agent understanding of side effects and operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of 5 sentences, front-loaded with the primary purpose. Every sentence adds essential information (model routing, fallback, error handling, auth) without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers input usage, error handling, authentication requirements, and behavioral nuances. The sibling tools are all list/info tools, so this tool's role is clearly the primary action tool. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters. The description adds value beyond schema by explaining the automatic max_completion_token routing for reasoning models and confirming the fallback chain behavior, which is not fully detailed in the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send a single-turn chat request to OrcaRouter and return the assistant's response text,' specifying verb (send), resource (chat request), and outcome. It distinguishes from siblings (model_card, models_list, providers_list) which are information retrieval tools, not action tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use default model vs. other routers or direct providers, the fallback chain, error handling, and authentication. It lacks explicit 'when not to use' but the sibling tools are clearly different, so usage context is well established.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orcarouter_model_cardARead-onlyIdempotent
Get detailed information about a single model — display name, long description, pricing (per-call and per-million tokens), context window, max output, modalities (input/output), supported endpoints, latency percentiles (p50/p95), and release date. Use this when you already know the model id and want full details; for browsing or filtering across many models use orcarouter_models_list instead. Returns isError:true with a clear hint when the id is not found. Read-only, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model ref in `provider/slug` form (e.g. `openai/gpt-4o-mini`, `anthropic/claude-haiku-4.5`). Use the exact `id` value returned by orcarouter_models_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds error behavior ('isError:true with hint on not found') and confirms read-only and no API key, consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient, front-loaded sentences with no waste; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given single parameter, no output schema, and informative annotations, description covers all necessary context including error and auth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter description fully; description adds practical guidance on using exact id from sibling tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets detailed info about a single model, listing specific fields. Differentiates from sibling orcarouter_models_list by purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use when model id is known and full details are needed, and directs to orcarouter_models_list for browsing/filtering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orcarouter_models_listARead-onlyIdempotent
List LLM models in the OrcaRouter catalog. Each entry includes id, name, description, owned_by, context_length, supported_endpoint_types, and pricing (both per-token and per-million tokens). Filter by provider, capability, or min_context — filters compose (all conditions must match) and are applied server-side. Discover valid provider ids first with orcarouter_providers_list. Returns the full catalog when called without filters. Read-only, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Provider id (lowercase, e.g. 'openai', 'anthropic'). Get the full list via orcarouter_providers_list. | |
| capability | No | Filter to models supporting this capability. | |
| min_context | No | Filter to models with context window at least this large (tokens). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description reinforces 'Read-only, no API key required' and explains filter composition behavior, adding transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences), front-loaded with purpose and output details, and contains no unnecessary information. Every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description details the returned fields (id, name, description, owned_by, context_length, supported_endpoint_types, pricing). It covers filtering behavior and prerequisites, making the tool fully understandable for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters with descriptions (100% coverage). The description adds value by explaining filter composition, server-side filtering, and provider id format (lowercase), which enhances meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists LLM models from the OrcaRouter catalog, specifies included fields, and distinguishes itself from sibling tools like orcarouter_chat, orcarouter_model_card, and orcarouter_providers_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains filter composition (all conditions must match), server-side filtering, and suggests using orcarouter_providers_list first. It lacks explicit when-not-to-use guidance but provides sufficient context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orcarouter_providers_listARead-onlyIdempotent
List all model providers on OrcaRouter with their provider_id, human-readable display_name, icon_url, and model_count. Call this first to discover valid provider ids (e.g. 'openai', 'anthropic', 'google', 'qwen', 'deepseek') which you can then pass to orcarouter_models_list as the provider filter. Takes no parameters and returns the same list on every call until the deployment's catalog changes. Read-only, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, etc. The description adds 'no API key required' and 'returns the same list until catalog changes,' providing additional context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no redundancy. All essential information is front-loaded and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and clear annotations, the description provides all necessary context: purpose, usage flow, and behavioral properties (caching, auth requirements).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the description correctly notes that it takes no parameters. The schema is fully covered; no further parameter semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that it lists all model providers with specific fields (provider_id, display_name, icon_url, model_count). It also distinguishes itself from sibling tools by noting that it should be called first to discover provider IDs for orcarouter_models_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call this first to discover provider IDs and then pass them to orcarouter_models_list. It also mentions that it takes no parameters and returns the same list on every call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.1.3- First observed
orcarouter_chat - First observed
orcarouter_model_card - First observed
orcarouter_models_list - First observed
orcarouter_providers_list
TDQS
Each tool has a clearly distinct purpose: chat, model card, model listing, and provider listing. No overlap or ambiguity.
All tools follow the consistent pattern 'orcarouter_<noun>', using snake_case throughout. The naming is predictable and uniform.
With 4 tools, the server is well-scoped for its purpose—covering chat and model catalog exploration without unnecessary bloat.
Core operations (chat, model info, model listing, provider listing) are present. Minor gap: no health/status tool, but functionality is largely complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OpenRouter for tools and data. Compare catalog providers and call them from one hosted MCP endpoint.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
471Connect MCP clients to 2,000+ AI models without managing provider API keys.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceLLM routing proxy that cuts API costs 60-90% by auto-selecting the cheapest capable model across OpenAI, Anthropic, and Google. Provides stats, config, and model comparison tools via MCP.211MIT
- AlicenseNot gradedqualityDmaintenanceA model routing advisor for autonomous agents — get cost-optimised LLM recommendations via MCP.10MIT
- FlicenseNot gradedqualityDmaintenanceUnified local MCP AI Gateway that routes across Groq, OpenRouter, Mistral, and local Ollama providers, with OpenAI-compatible APIs, MCP tools, fallback/racing router, monitoring, and web dashboard.-
- AlicenseAqualityBmaintenanceEnables AI agents to discover models, pricing, and chat completions through RouterBase, an API gateway for 200+ AI models.501MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Continuum-AI-Corp/orcarouter-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server