Switchback MCP
Switchback MCP
Switchback 用の MCP サーバー — AI エージェントのターンを複雑さで分類し、処理できる最も安価なモデルを選択します。Claude Desktop、Cursor、Cline、および任意の MCP クライアントにそのまま組み込めます。
VibeKit によって構築 — 当社のホステッド製品のすべての「Auto」ターンを支える同じカスケードルーターです。詳細はこちら →
機能
Model Context Protocol 上で2つのツールを公開します:
classify_turn— ユーザーメッセージを受け取り、{tier: 0|1|2, why, fallback, durationMs}を返します。次のエージェントステップでフラッグシップモデルにコストをかけるか、安価なモデルに留まるかを判断するときに使用します。recommend_model— ユーザーメッセージとモデルのラダー(安価 → フラッグシップ)を受け取り、そのラダーの中で処理できそうな最も安価なモデルを返します。classify_turnの便利なラッパーです。
両方のツールは OpenRouter 経由で単一の小規模モデル呼び出しを行います(デフォルト: openai/gpt-5.4-mini、約 $0.0001/回)。フェイルソフト: エラーが発生した場合は、エージェントをブロックせずに fallback: true 付きの tier 1 を返します。
Related MCP server: oracle-models
インストール
npm install -g vibekit-switchback-mcp設定
OpenRouter キーを設定してください(https://openrouter.ai/keys で取得できます):
export OPENROUTER_API_KEY=sk-or-...オプション: 分類モデルを上書きする:
export SWITCHBACK_CLASSIFIER_MODEL=anthropic/claude-haiku-4.5Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json に追加してください:
{
"mcpServers": {
"switchback": {
"command": "npx",
"args": ["-y", "vibekit-switchback-mcp"],
"env": {
"OPENROUTER_API_KEY": "sk-or-..."
}
}
}
}Cursor / Cline / その他
stdio サーバーをサポートする任意の MCP クライアント。同じ npx 呼び出しを使用します。
呼び出し例
classify_turn:
{
"userMessage": "rebuild the auth flow with passkeys"
}返り値:
{
"tier": 2,
"why": "architectural rework + new auth method",
"fallback": false,
"durationMs": 412
}recommend_model:
{
"userMessage": "fix typo in README",
"ladder": [
"openai/gpt-5.4-mini",
"openai/gpt-5.4",
"openai/gpt-5.5"
]
}返り値:
{
"recommended_model": "openai/gpt-5.4-mini",
"tier": 0,
"ladder_size": 3,
"classifier": { "tier": 0, "why": "trivial copy edit", "fallback": false, "durationMs": 318 }
}使用すべき場面
マルチステップエージェント — ラウンド間でモデルを切り替えられる場合。
BYOK スタイルの製品 — すべてのルーティングをユーザーが選択したブランド内に留めたい場合。ユーザーごとにブランド固定のラダーを渡します。
コスト重視のオーケストレーター — 些細なターンにフラッグシップ料金を費やさないようにしたい場合。
使用すべきでない場面
ワンショットチャット補完 — 最初の呼び出し後にモデルを変更できない場合。代わりに OpenRouter の
autoまたは NotDiamond/Martian を使用してください。レイテンシが重要な 200ms 未満のファーストトークン UX — 分類器は 200〜500ms 追加します。
ライセンス
MIT。 LICENSE を参照してください。
VibeKit によって構築されました。コアライブラリは vibekit-switchback です — このパッケージは MCP ラッパーです。
Available Tools
2 toolsclassify_turnA
Classify how complex a user request is on a 0/1/2 scale. Use this when you're orchestrating an agent and want to decide whether to spend on a flagship model (tier 2), a mid-tier model (tier 1), or stay cheap (tier 0). Returns {tier, why, fallback, durationMs}.
| Name | Required | Description | Default |
|---|---|---|---|
| userMessage | Yes | The user's request to classify. Capped at 1500 chars internally. | |
| recentHistory | No | Optional. Last 1-2 assistant turns for context. Each capped at 200 chars internally. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the return shape ({tier, why, fallback, durationMs}) and explains the tier meanings, which adds value. However, it does not disclose potential side effects, fallback semantics, or internal behavior such as truncation limits beyond what the schema already contains.
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 two sentences, front-loaded with the core action and scale, then followed by the use case and return shape. Every sentence earns its place with no wasted words.
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?
The schema is simple and the description covers purpose, use case, and return fields, but it does not explain the meanings of 'fallback' and 'durationMs', nor does it contrast with the sibling 'recommend_model'. This leaves gaps an agent might need to resolve before confidently choosing this tool.
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 description coverage is 100%, so the baseline is 3. The description does not add parameter-specific detail beyond the schema; it only explains the tier scale, not how userMessage or recentHistory should be formatted beyond what the schema already states.
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?
Description states a specific verb ('Classify'), a resource ('user request'), and the 0/1/2 scale, making the tool's purpose immediately clear. It also ties the scale to model-tier decisions, but it does not explicitly differentiate from the sibling tool 'recommend_model'.
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 says when to use it ('when you're orchestrating an agent and want to decide whether to spend...'), giving clear context for deployment. However, it does not state when not to use it or mention the alternative tool, so it lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_modelA
Given a ladder of models (cheap → flagship) and a user message, return the cheapest model on the ladder that can plausibly handle it, plus reasoning. The ladder should be brand-locked (all-Anthropic, all-OpenAI, etc.) to honor your user's BYOK provider.
| Name | Required | Description | Default |
|---|---|---|---|
| ladder | Yes | Ordered model ids, index 0 = cheapest. Example: ['openai/gpt-5.4-mini', 'openai/gpt-5.4', 'openai/gpt-5.5'] | |
| userMessage | Yes | The user's request. | |
| recentHistory | No | Optional context. Last 1-2 assistant turns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It states the tool returns a recommendation plus reasoning and enforces a brand-locked ladder, but it does not disclose what happens when no model is suitable, how 'plausibly' is determined, or whether the tool actually invokes any external model.
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?
Two sentences, no filler. The primary behavior is front-loaded in the first sentence, and the BYOK constraint earns its place in the second sentence.
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?
With no output schema, the description appropriately explains the expected return: cheapest model plus reasoning. It could be more explicit about edge cases, such as an incapable ladder or how 'recentHistory' should influence the selection, but the core invocation context is covered.
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 description coverage is 100%, so the baseline is 3. The description adds useful context about ladder ordering and brand-locking, but it does not materially expand on the meaning of 'userMessage' or 'recentHistory' beyond what the schema already provides.
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 uses a specific verb ('return') and resource ('the cheapest model on the ladder') and clearly defines the task: select the cheapest plausible model for a user message and provide reasoning. It is easy to distinguish from the sibling 'classify_turn' because the purpose centers on model selection, not classification.
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 gives clear context for when to use the tool: when a model ladder and a user message are available, and when BYOK provider constraints apply. It does not explicitly contrast with 'classify_turn' or state when not to use it, but the usage context is unambiguous enough.
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.
2 tool updates
v0.1.1- First observed
classify_turn - First observed
recommend_model
TDQS
Scored across 2 tools
The two tools both relate to routing user requests to models, so an agent could confuse classifying a turn with recommending a model. However, the inputs and outputs are distinct enough—one returns a tier, the other returns a specific model—to be workable with clear descriptions.
Both tools follow a consistent verb_noun snake_case pattern: classify_turn and recommend_model. Naming is predictable and clearly indicates the action and object.
With only two tools, the server feels thin, but the scope is narrow enough that both tools can earn their place. The count is borderline rather than egregiously insufficient.
The server covers the core routing workflow: classifying complexity and selecting a cost-appropriate model. Minor gaps exist, such as no combined route tool or ladder management, but agents can work around these using the provided inputs.
Maintenance
Related MCP Connectors
Cost-optimized LLM model routing recommendations for autonomous AI agents
Pay-per-call ($0.01 USDC) model-routing for AI coding agents: which LLM to call, cost vs. quality.
Reduces AI Agent token usage by 40% via three-stage SOP workflow.
AI agent infrastructure: dedup, cost prediction, validation, governance, failure intelligence.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA model routing advisor for autonomous agents — get cost-optimised LLM recommendations via MCP.6 npmMIT
- AlicenseAqualityDmaintenanceClassifies development task complexity (LIGHT/MEDIUM/HEAVY) and recommends the most cost-efficient AI model per provider, enabling optimized model selection for coding tasks.336 npmMIT
- AlicenseAqualityDmaintenanceOptimizes token costs by intelligently delegating low-complexity tasks to local LLMs via LiteLLM, enabling cost-effective development workflows.31MIT
- AlicenseAqualityCmaintenancePre-execution cost estimation for LLM agent workflows, providing cost estimates before running tasks and improving accuracy over time through calibration.642 PyPI2MIT