The OpenRouter MCP connector routes your AI agent's tool calls to OpenRouter's own MCP server through Scalekit. Each user signs in to OpenRouter once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 23 tools.
- Tools
- 23
- What they doRead · write · destructive
- 18 · 5 · 018 read5 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the OpenRouter MCP connection
In AgentKit > Connections, create an OpenRouter MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for OpenRouter MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'openroutermcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize OpenRouter MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'openroutermcp_get_credits',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "openroutermcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize OpenRouter MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="openroutermcp_get_credits",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolopenroutermcp_get_creditsCheck the remaining account credit balance before running a workload.Read-onlyGet Credits
Check the remaining account credit balance before running a workload.
Inputs
This tool takes no inputs.
openroutermcp_get_endpoint_uptime_historyGet the hourly uptime history of every provider endpoint serving a model over the last 72 hours — the same per-provider uptime timeline shown on the model page.Read-onlyGet Endpoint Uptime History
Get the hourly uptime history of every provider endpoint serving a model over the last 72 hours — the same per-provider uptime timeline shown on the model page. Use it to find which provider degraded during a window (e.g. "model X was failing between 05:00 and 08:30 UTC — whose uptime dipped?").
Inputs
authorstringrequired- The model author/organization, e.g. "deepseek"
slugstringrequired- The model slug, optionally with a variant suffix, e.g. "deepseek-chat" or "deepseek-chat:free"
fromstring- Optional ISO 8601 start of the window, e.g. "2026-07-23T05:00:00Z". Data covers the last 72 hours.
tostring- Optional ISO 8601 end of the window, e.g. "2026-07-23T09:00:00Z"
openroutermcp_get_generationInspect cost, token counts, and serving provider for a specific generation id, to debug spend and routing.Read-onlyGet Generation
Inspect cost, token counts, and serving provider for a specific generation id, to debug spend and routing. send-message returns the generation id of each call in its output.
Inputs
requestobjectrequired- Identifies the generation to inspect.
openroutermcp_get_modelGet full details for one model by author/slug (supports :variant suffixes and slug aliases) without fetching the whole catalog.Read-onlyGet Model
Get full details for one model by author/slug (supports :variant suffixes and slug aliases) without fetching the whole catalog. Use this instead of list-models when the model is already known.
Inputs
requestobjectrequired- Identifies the model to fetch by author and slug.
openroutermcp_get_presetGet one saved preset by slug, including its designated version's config bundle (model, system prompt, temperature, and other sampling parameters), to inspect or reuse that configuration in a request.Read-onlyGet Preset
Get one saved preset by slug, including its designated version's config bundle (model, system prompt, temperature, and other sampling parameters), to inspect or reuse that configuration in a request. Find slugs with list-presets.
Inputs
requestobjectrequired- Identifies the preset to fetch.
openroutermcp_install_ori_harnessGet the instructions for installing and using Ori Harness, then follow them.Read-onlyInstall Ori Harness
Get the instructions for installing and using Ori Harness, then follow them. Call this tool FIRST when the user asks to install Ori, run their existing coding agent CLI through Ori, sign in to Ori, upgrade Ori, or choose an OpenRouter model for a local agent. It returns the complete recipe for installing Ori, signing in with OAuth without an API key, running an agent CLI under Ori, passing any OpenRouter model id with `--model`, upgrading with `ori update`, and verifying the installation. Do not use it for Ori model evaluations, plain unit tests, or when the user only wants to run an already-installed agent directly. Takes no arguments; the same document is published at https://openrouter.ai/skills/install-ori-harness.
Inputs
This tool takes no inputs.
openroutermcp_list_app_rankingsSee which APPS/products drive the most OpenRouter traffic, filterable by category, to gauge ecosystem adoption and find example use cases.Read-onlyList App Rankings
See which APPS/products drive the most OpenRouter traffic, filterable by category, to gauge ecosystem adoption and find example use cases. For model rankings use list-daily-model-rankings instead.
Inputs
requestobject- Optional filters and pagination for the app ranking query.
openroutermcp_list_benchmarksCompare model quality beyond price using third-party benchmarks.Read-onlyList Benchmarks
Compare model quality beyond price using third-party benchmarks. The optional source arg selects the dataset and the result shape: source=artificial-analysis returns intelligence, coding, and agentic index scores; source=design-arena returns head-to-head standings (elo, win rate) filterable by arena and category. Omit source to get results from all sources in one call. Optional task_type (coding, intelligence, agentic) narrows to models suited for that workload.
Inputs
requestobject- Optional filters for the benchmark query.
openroutermcp_list_daily_model_rankingsSee which MODELS are most used and trending by token volume, to pick a proven model.Read-onlyList Daily Model Rankings
See which MODELS are most used and trending by token volume, to pick a proven model. Optionally slice by period (day/week/month), modality, context_bucket, or by category / language_type (sampled weekly estimates). For app/product rankings use list-app-rankings instead.
Inputs
requestobject- Optional filters and time grain for the model ranking query.
openroutermcp_list_model_endpointsSee which providers serve a given model and at what price, latency, throughput, and data-policy status, to choose routing or debug a slow provider.Read-onlyList Model Endpoints
See which providers serve a given model and at what price, latency, throughput, and data-policy status, to choose routing or debug a slow provider.
Inputs
requestobjectrequired- Identifies the model whose serving endpoints should be listed.
openroutermcp_list_modelsList the live OpenRouter model catalog with pricing, context length, modalities, supported parameters, and benchmark scores, to pick a model and wire the right slug into code.Read-onlyList Models
List the live OpenRouter model catalog with pricing, context length, modalities, supported parameters, and benchmark scores, to pick a model and wire the right slug into code. Prefer the server-side params over fetching the full list and post-processing. Search/sort: q (free-text name/slug search), sort (pricing-low-to-high/high-to-low, context-high-to-low, throughput-high-to-low, latency-low-to-high, most-popular, top-weekly, newest, intelligence-high-to-low, coding-high-to-low, agentic-high-to-low, design-arena-elo-high-to-low). Filters: category (use case, e.g. programming), min_price/max_price (prompt $/M), min_output_price/max_output_price (completion $/M), context (minimum tokens), min_age_days/max_age_days (model age), min_intelligence_index/max, min_coding_index/max, min_agentic_index/max (Artificial Analysis indices), min_tool_success_rate/max (0-1), arch (model family), model_authors, providers (case-sensitive display names, e.g. Groq), input/output_modalities, supported_parameters, zdr, and region.
Inputs
requestobject- Search, sort, and filter parameters for the model catalog. All fields are optional; omit entirely to list all models with default ordering.
openroutermcp_list_presetsList the caller's saved presets (named bundles of model, system prompt, and sampling config created in the OpenRouter dashboard), ordered by most recently updated.Read-onlyList Presets
List the caller's saved presets (named bundles of model, system prompt, and sampling config created in the OpenRouter dashboard), ordered by most recently updated. Use to discover which presets exist and get their slugs; use get-preset to inspect one preset's full config.
Inputs
requestobject- Optional pagination for the preset listing.
openroutermcp_list_providersList available providers to configure allow/deny/routing preferences.Read-onlyList Providers
List available providers to configure allow/deny/routing preferences.
Inputs
This tool takes no inputs.
openroutermcp_list_task_classificationsSee what OpenRouter traffic is actually used for: a market-share breakdown by task type (code generation, web search, summarization, ...) over a trailing window, each with its top models by usage, plus macro-category (Code, Data, Agent, General) aggregates.Read-onlyList Task Classifications
See what OpenRouter traffic is actually used for: a market-share breakdown by task type (code generation, web search, summarization, ...) over a trailing window, each with its top models by usage, plus macro-category (Code, Data, Agent, General) aggregates. Use to learn which models real usage favors for a given kind of work. All shares are fractions (0-1) of sampled traffic; absolute volumes are not exposed.
Inputs
requestobject- Optional windowing options for the task classification query.
openroutermcp_pingHealth-check tool that verifies the MCP connection is alive.Read-onlyPing
Health-check tool that verifies the MCP connection is alive.
Inputs
This tool takes no inputs.
openroutermcp_search_docsSearch the full OpenRouter documentation to answer "how do I…" questions with correct, current API usage.Read-onlySearch OpenRouter Docs
Search the full OpenRouter documentation to answer "how do I…" questions with correct, current API usage. Each result includes a "View docs" link to the source page; if a result is marked truncated or the complete page is needed, fetch that link or share it with the user.
Inputs
querystringrequired- What to look up in the OpenRouter docs, e.g. "stream responses"
max_resultsinteger- How many doc sections to returndefault
4
openroutermcp_spawn_ori_evalGet the instructions for running a model eval with Ori, then follow them.Read-onlySpawn An Ori Eval
Get the instructions for running a model eval with Ori, then follow them. Ori runs the user's own agent on their own prompts, on a pinned harness and model, and grades what it did — so a score change means the model changed, not the environment. Call this tool FIRST, before writing any eval code: it returns a step-by-step recipe (install and auth checks, how to spawn `ori code -p`, how to relay Ori's scoping questions to the user, how to report results) that you carry out yourself. Do not hand-roll an eval instead. Use it when the user asks which model they should use, wants to compare or bake off models, wants to measure whether their agent or prompt does the right thing, wants to catch regressions in agent behavior, or asks how good their current model is. Works for any codebase in any language. Do not use it for plain unit tests that involve no model, and do not use it to re-run an eval that already exists (run `ori eval <file>` directly instead). Takes no arguments; the same document is published at https://openrouter.ai/skills/spawn-ori-eval.
Inputs
This tool takes no inputs.
openroutermcp_view_skillsRetrieve a curated OpenRouter best-practice recipe (an Agent Skill) by name.Read-onlyView An OpenRouter Skill
Retrieve a curated OpenRouter best-practice recipe (an Agent Skill) by name. Available skills: - find-best-model-evals: Find the best OpenRouter model for a specific task by running a real eval on your own data — balancing quality, cost, and speed, with each candidate pinned to one provider so results don't drift.
Inputs
namestringrequired- Skill name from the list in this tool description
pathstring- File within the skill (defaults to SKILL.md)
openroutermcp_generate_imageGenerate an image from a text prompt and return it inline.WriteGenerate An Image
Generate an image from a text prompt and return it inline. The image is sent back as an image content block: clients that render images (e.g. desktop apps) display it, and the model can see it. This bills the authenticated user for the generation.
Inputs
modelstringrequired- Image model slug, e.g. "bytedance-seed/seedream-4.5"
promptstringrequired- Text description of the desired image
sizestring- Optional output size, e.g. "2K", "4K", or explicit "1024x1024"
openroutermcp_generate_speechSynthesize speech from text and return it inline as an audio content block (clients that can play audio render it; not all MCP clients can).WriteGenerate Speech Audio
Synthesize speech from text and return it inline as an audio content block (clients that can play audio render it; not all MCP clients can). This bills the authenticated user. Find TTS models via list-models with output_modalities=speech, and each model's voices via get-model (supported_voices). Cost is available afterwards via get-generation.
Inputs
inputstringrequired- Text to synthesize
modelstringrequired- TTS model slug, e.g. "mistralai/voxtral-mini-tts-2603"
voicestringrequired- Voice identifier (provider-specific); list a model's supported_voices via get-model
response_formatstring- Audio output format; defaults to mp3one of
mp3pcm speednumber- Playback speed multiplier; only honored by models that support it
openroutermcp_send_feedbackSubmit structured feedback on a specific generation the caller made — a category plus an optional comment.WriteSend Feedback
Submit structured feedback on a specific generation the caller made — a category plus an optional comment. Use after a generation had a problem (wrong or incoherent output, latency, formatting, billing, or an API error) so the OpenRouter team can act on it. Requires the generation id, which get-generation and send-message both return.
Inputs
requestobjectrequired- Structured feedback about a specific generation
openroutermcp_send_messageChat with a model and get its plain-text response, to test a prompt or compare models without leaving the editor.WriteSend A Chat Message
Chat with a model and get its plain-text response, to test a prompt or compare models without leaving the editor. Model slug suffixes activate routing variants: ":online" enables web search (e.g. "deepseek/deepseek-v4-pro:online"), ":nitro" prioritizes throughput, ":floor" prioritizes lowest price, ":free" uses a free endpoint if one exists. For normal chats, omit "provider" and let the router choose. Set "provider" to pin the upstream provider only when zero variance is needed, such as running evals or reproducing a result.
Inputs
messagestringrequired- The user message to send
modelstringrequired- Model slug, e.g. "openai/gpt-4o-mini"
max_tokensinteger- Cap the total tokens generated (including reasoning). The single most effective lever to stop a reasoning model from running unbounded on a hard prompt. Omit for the model default.
providerobject- Provider routing preferences. Leave unset for normal chats so the router picks the best provider. Set ONLY when the request needs zero provider variance — running evals, benchmarking, or reproducing a result — because providers differ in quantization, throughput, and sampling, so the same model can return different outputs depending on who serves it. To hard-pin one provider: { only: ["fireworks"], allow_fallbacks: false }.
reasoning_effortstring- How hard a reasoning model should think: "max" | "xhigh" | "high" | "medium" | "low" | "minimal" | "none". Omit to use the model's own default. Use a lower value to cap cost/latency on reasoning models that over-think, or a higher value for hard prompts. Non-reasoning models ignore it. Discover a model's supported/default efforts via list-models or get-model.one of
maxxhighhighmediumlowminimalnone systemstring- Optional system prompt
timeout_msinteger- Abort the call locally after this many milliseconds. Returns a typed client_timeout error with elapsed_ms. If the timeout fires before any response, no generation id is available; if it fires while reading the response body, the generation may have completed upstream and been billed. Omit to wait for the default gateway timeout.
openroutermcp_transcribe_audioTranscribe speech from an audio file to text.WriteTranscribe Audio To Text
Transcribe speech from an audio file to text. Pass exactly one of audio_url (preferred; fetched server-side) or audio_base64. Returns the transcript plus the cost and generation id. This bills the authenticated user. Find STT models via list-models with output_modalities=transcription.
Inputs
modelstringrequired- STT model slug, e.g. "openai/whisper-large-v3"
audio_base64string- Base64-encoded audio bytes, for small clips only. Requires format.
audio_urlstring- HTTPS URL of the audio file to transcribe; fetched server-side (max 25 MB). Preferred over audio_base64.
formatstring- Audio container format. Required with audio_base64; inferred from the URL or Content-Type otherwise.one of
wavmp3flacm4aoggwebmaac languagestring- ISO-639-1 language hint (e.g. "en", "ja"). Auto-detected if omitted.
No tools match.