Decides which connected sales-engagement MCP server (Outreach, Salesloft, Apollo, or any other) should handle a given request, based on declared capabilities, scope tier, and live rate-limit usage.
The Sales Stack Router is a free Claude Skill that decides which connected sales-engagement MCP server (Outreach, Salesloft, Apollo, or any other) should handle a given request, based on declared capabilities, scope tier, and live rate-limit usage — with a fallback chain and explicit reasoning.
Most teams now have more than one sales-engagement MCP server connected — Outreach, Salesloft, Apollo, plus whatever else got added along the way. Nothing decides which one should handle a given request. The two default behaviors are both bad: hardcode one tool (breaks the moment that tool is rate-limited or the account changes), or call every connected tool and let the user sort out duplicate results.
This skill is the missing decision layer. Give it a request (e.g. “enrich this contact”) and a live manifest of what’s connected — built to the MCP Capability Manifest Schema — and it returns one ranked pick, a fallback chain, and the reasoning behind the choice.
const { route } = require('./router.js');
const result = route({ capability: 'contact.enrich', min_scope: 'read' }, manifests);
if (result.decision === 'route') {
// call result.pick.server_id; retry against result.fallback_chain[0] on failure
} else if (result.decision === 'rate_limited') {
// every capable server is over its limit — wait result.retry_after_seconds
} else {
// 'no_capable_server' — nothing connected can do this
}
Every capability declares a required_scope of read, write, or destructive. By default, destructive capabilities (deleting a prospect, purging a sequence) are never routed unless the caller explicitly passes allow_destructive: true. Same governance principle MV3 applies to its own MU-plugin deploys — destructive actions need an explicit opt-in, not an implicit one.
It never calls any API itself — a pure decision function, zero network calls, zero dependencies. You still own the actual MCP tool call; this tells you which server to call and why. It also holds no state between calls, so it stays safe to run inside any orchestration loop.
Documentation + a decision function, not a hosted service or an MCP server itself. It runs entirely in your own environment against a manifest you supply.
| File | Purpose |
|---|---|
SKILL.md | The skill definition |
router.js | Zero-dependency routing engine — the route() function |
capability-manifest.schema.json | JSON Schema (2020-12) describing the manifest shape route() expects |
example-manifest.json | Illustrative example — placeholder rate-limit values, not verified vendor limits |
test.js | 12-test suite |
Verified 2026-08-12: zero dependencies (npm audit not applicable), node test.js 12/12 passing — covering priority ranking, rate-limit fallback, degraded-server exclusion, destructive-scope gating (both blocked and explicitly-allowed paths), full-rate-limit exhaustion with retry timing, and input validation.
Open an issue on GitHub Issues. Want this wired into your actual connected MCP servers? Book a scoping call ($175/hr).
MIT
Yes. Free to download and run yourself. MV3 charges $175/hr only if you want it wired into your real connected MCP servers.
A live manifest array — one entry per connected sales-engagement MCP server, built to the MCP Capability Manifest Schema.
No. The routing engine runs entirely in your own environment with zero outbound network calls — it only reasons over the manifest you supply.
No. It decides which server should handle a request; you still make the actual MCP tool call. This keeps the skill safe to run without granting it any API credentials.
Blocked by default. A capability marked required_scope: "destructive" is only routed if the caller explicitly passes allow_destructive: true on the request.
Open a GitHub Issue for bugs or questions. For paid help wiring this into your real CRM/sales stack, book a scoping call.
AI Marketing & SEO Automation, All States
AI Content & SEO Infrastructure for B2B companies that want to own their growth channel , not rent it.
(704) 317-2293 Get the Audit →We use cookies to improve your experience on our site. By using our site, you consent to cookies.
Manage your cookie preferences below:
Essential cookies enable basic functions and are necessary for the proper function of the website.
Google Tag Manager simplifies the management of marketing tags on your website without code changes.
Statistics cookies collect information anonymously. This information helps us understand how visitors use our website.
Google Analytics is a powerful tool that tracks and analyzes website traffic for informed marketing decisions.
Service URL: policies.google.com (opens in a new window)
You can find more information in our Cookie Policy and Privacy Policy.