Zuplo vs
Arcade.dev
- SOC 2 Type II
- 99.999% SLA
- 300+ edge locations
The Independent, Code-First MCP Gateway Teams Choose Over a US-Only, Closed-Runtime Tool Catalog
What's wrong with Arcade
Arcade's key limitations for modern engineering teams
The forces driving enterprises off Arcade in 2026 — operational tax, plugin sprawl, retrofitted AI, and pricing that doesn't predict.
Arcade Cloud is US-only with no multi-region option
All of Arcade Cloud's infrastructure — control plane, MCP server clusters, data storage and processing — is located in the United States, per the deployment docs. There is no EU region, no APAC region, no managed multi-region SaaS. Teams with sovereignty or residency requirements are pushed to self-hosted Kubernetes — which is itself an Enterprise-tier offering, deployed as a closed binary via Helm chart.
Audit logs, RBAC, and SSO are Enterprise-tier-only
Per the published pricing page, Audit Logs, Role-Based Access Control, SSO, and SAML for the Arcade admin console are all Enterprise-tier features. Hobby and Growth tiers share a single tenant with no isolation. For a product whose entire pitch is enterprise authorization, basic enterprise governance starts at a sales call.
Tool training data collection is opt-out by default
Arcade Cloud collects tool queries, tool execution inputs, and tool execution results for ML training by default, with retention up to 5 years. Opt-out is org-level and takes effect immediately — but the default is opt-in. For regulated workloads handling customer payloads through tools like Stripe, Salesforce, or HubSpot, this is a non-trivial default to inherit. (Source: Arcade Cloud docs.)
Engine is a closed binary and tools went closed-source in July 2025
The Arcade Engine is distributed as a closed Docker image and binary — not source-buildable. On July 25, 2025 Arcade transitioned most MCP server source code out of the public arcade-ai monorepo to closed-source, with source "available upon request" only for paying customers (per the public changelog). The OSS framework (arcade-mcp) remains MIT-licensed, but the runtime and tool catalog you actually depend on are not.
Hooks are webhooks, not in-process policies
Arcade's Contextual Access extensions (Access, Pre-Execution, Post-Execution) are external webhooks that you host yourself, with a default 5-second timeout per call. Every PII redaction, allow/deny check, or payload transform adds webhook round-trip latency. There is no first-party JavaScript or WASM sandbox for policy code — policies are arbitrary code in an HTTP endpoint you operate.
No native GitOps or PR preview environments
The documented deployment workflow is arcade deploy from the CLI to push a local MCP server to Arcade Cloud. There is no Git-driven promotion model, no per-branch preview environments, and no first-class CI/CD integration. For teams that expect branch = environment, PR = live preview, push = global deploy, the Arcade workflow is a step back.
Why Zuplo
Built for teams replatforming off Arcade.dev
Managed, modern API management with predictable economics across procurement cycles — no operator overhead, no plugin sprawl, no consumption-pricing surprises.
Product Category and Architecture
Programmable gateway with full API surface vs. MCP-only runtime with curated tool catalog.
Deployment Model and Data Residency
Managed edge, dedicated cloud, and self-hosted with region pinning vs. US-only SaaS with self-host as the only non-US path.
Audit Logs, RBAC, and SSO Tier Gating
OIDC SSO and policy controls on all paid tiers vs. governance basics behind an Enterprise sales call.
A solutions architect can walk you through your current Arcade setup, surface the biggest operational tax, and map a migration path — no slide deck required.
"We didn't touch a line of code, it's just plug and play. The results were very surprising, in just a couple of hours we had a great result and a fully working MCP Server."
Miguel Madeira
CTO & Co-Founder, Finsolutia
Enterprise ready
Production-ready for regulated and high-volume workloads
Compliance & Audit
- SOC 2 Type II audited annually
- Third-party penetration test reports available under NDA
- GDPR-aligned data processing
- Audit logs across the control plane
- API governance with policy enforcement
Identity & Access
- SAML SSO and SCIM provisioning
- Role-based access control across organizations, projects, and environments
- Service-account credentials with scoped permissions
- API key metadata for downstream authorization
Deployment Flexibility
- Managed edge across 300+ locations — global by default
- Managed dedicated single-tenant on AWS, Azure, GCP, Akamai, or any major cloud
- Self-hosted on Kubernetes with full control plane
- Bring-your-own-cloud for data residency requirements
Support & Success
- Up to 30-minute response SLA on Enterprise
- 24/7/365 emergency hotline for critical incidents
- Named technical account manager
- Architecture and migration professional services
Built for the AI era
Built as a programmable MCP gateway, not a closed-runtime tool catalog
Arcade ships an opinionated, US-only SaaS runtime with a Python-first SDK, a managed tool catalog that went closed-source in July 2025, and webhook hooks for custom policy. Audit logs, RBAC, SSO, dedicated tenancy, and self-hosting are Enterprise-only. Zuplo gives you the same OAuth 2.1 inbound, per-user upstream OAuth brokering, and tool-level RBAC as first-class policies in a TypeScript-programmable gateway that runs on 300+ edge POPs, your dedicated cloud, or your Kubernetes cluster.
OAuth 2.1 with RFC 8707 resource indicators
Zuplo's MCP Gateway is both an OAuth 2.1 Resource Server and Authorization Server. The <code>resource</code> parameter is required on every authorization and token request, and tokens are bound to a specific virtual MCP server — a token minted for one server is rejected at another. PKCE S256 required, RFC 7009 token revocation published at <code>/oauth/revoke</code>. CIMD (OAuth Client ID Metadata Documents) preferred over Dynamic Client Registration for trusted MCP clients like Claude Desktop, Claude Code, and VS Code.
Per-user OAuth brokering with encrypted token vaulting
Each end-user completes the upstream's OAuth flow themselves; the gateway brokers and refreshes their tokens per session with per-user revocation. Refresh tokens are sealed in the gateway vault, encrypted at rest and keyed to the user's subject ID, and never returned to the MCP client. Token passthrough is explicitly forbidden by the MCP spec and enforced — the inbound token a client presents and the upstream token the gateway forwards are never the same token. Works with Linear, Notion, Stripe, GitHub, Grafana Cloud, Microsoft 365, Slack, PostHog, and any OAuth-compliant MCP server.
Virtual MCP servers and capability filtering
Compose multiple upstream MCP servers behind one Zuplo deployment with a curated tool list per role or team. The <code>mcp-capability-filter-inbound</code> policy filters tools, prompts, resources, and resource templates by exact identifier. Calls to hidden tools return JSON-RPC <code>MethodNotFound</code> before the request is forwarded upstream, so even cached tool names can't be invoked. Finance gets a read-only view of Stripe and QuickBooks; engineering gets GitHub and deployment tools — same governance, different exposure.
OpenAPI-to-MCP and programmable TypeScript policies
The MCP Server handler (GA) auto-generates an MCP server from any OpenAPI specification — Finsolutia stood up a working MCP server in under 24 hours with zero code changes to their REST APIs. Custom policies are TypeScript code, not webhook calls, executing in the same edge runtime as the rest of the gateway. Pre and post hooks compose anywhere in the inbound chain alongside the MCP OAuth, token exchange, and capability filter policies.
See it in action
See Zuplo running on your stack
A 30-minute working session with a Zuplo solutions engineer. Bring an OpenAPI spec or a Kong route definition and walk away with a working preview.
Side by side
Feature-by-feature comparison
ZuploRequest / ZuploContext. custom-code-inbound and custom-code-outbound policies compose anywhere in the inbound or outbound chain. Same runtime as the rest of the Zuplo platform. No webhook RTT, no separate service to operate. main and deploy main, push to feature-auth and get a feature-auth environment automatically. PR preview environments let reviewers test changes against a live gateway before merging. Global deploys to 300+ POPs in under 20 seconds. GitHub native integration with auto-deploys; GitLab, BitBucket, and Azure DevOps source-control integration available on Enterprise. arcade deploy from the CLI to push a local MCP server to Arcade Cloud. No Git-driven promotion model, no per-branch preview environments, and no first-class CI/CD integration in the public docs. Branch = environment, PR = live preview is not the Arcade pattern. @zuplo/mcp is published on npm as a fetch-API-based, remote-server-first TypeScript SDK that runs on Zuplo, Node, Deno, and Workerd. Build custom tools in TypeScript with full @zuplo/runtime type safety. Independent of any pre-built catalog — federate whichever upstream MCP servers your team actually uses. arcade-ai repo to closed-source. Custom tools built with the Python arcade-mcp-server SDK or Java/Spring AI (TypeScript SDK is early — 2 GitHub stars). reconsent_required and the user re-authorizes through the same browser flow. RFC 7009 token revocation published at /oauth/revoke. 2025-11-25 revision for authorization and protocol. Streamable HTTP transport on POST; GET returns 405. Stateless gateway — no MCP session affinity required, scales horizontally on the edge. RFC 8707 resource indicators mandatory. RFC 7636 PKCE S256 required. OAuth Client ID Metadata Documents (CIMD) preferred over Dynamic Client Registration. 2025-11-25 spec via the arcade-mcp framework — Arcade co-authored the SEP for URL Elicitation in that revision in collaboration with Anthropic. Streamable HTTP transport. Allowlist mechanism for trusted MCP clients via Client ID Metadata Document URL (Claude Desktop, Claude Code, VS Code). Arcade docs explicitly claim RFC 6750 and RFC 9728; RFC 8707 resource indicators are not mentioned in public docs. @zuplo/mcp open-source TypeScript SDK published on npm, designed to be "minimum common API" compliant per WinterTC. Inspired by and attributing the official modelcontextprotocol/typescript-sdk. Zudoku developer portal (MIT, ~540 GitHub stars). 81 public repos on the GitHub org. Source-available platform with TypeScript escape hatches. arcade-mcp framework is MIT-licensed (~900 GitHub stars) and is genuine OSS. The Arcade Engine itself is a closed binary distributed via Brew, APT, and a private Docker image — no source repo published. On July 25, 2025, most MCP server source code was moved out of the public arcade-ai monorepo to closed-source — "source code remains available upon request for our paying customers." request.user.data. mcp_request, capability_invocation, auth_event — with seven outcome classes and per-event subjectId, upstreamServerId, latency split gateway-vs-upstream, failure origin, and reason code. Structured logs export to Datadog (native plugin), AWS CloudWatch, Dynatrace, Google Cloud Logging, Loki, New Relic, Splunk, Sumo Logic, or any OTLP-compatible destination (Honeycomb, Tempo, self-hosted Jaeger). Audit logs available as an Enterprise add-on. TOOL_CALL resource type, so per-tool-call audit trails route through a separate OpenTelemetry pipeline. Audit logs are an Enterprise-tier feature. Execution logs are stored as Application data with user-controlled retention. @zuplo/runtime, @zuplo/mcp, and @zuplo/cli on npm. Browser-based authoring in the Zuplo portal with Working Copy environments. Local development via the CLI. Drop-in compatibility with the OpenAI SDK baseURL for AI Gateway traffic. arcade-mcp-server) for authoring custom tools. Java/Spring AI SDK added April 2026. TypeScript MCP server framework (arcade-mcp-ts) exists but is early (~2 GitHub stars). Client SDKs in Python, Node, Go, and Java. Built-in framework integrations for AG2, CrewAI, Google ADK, LangChain, OpenAI Agents, Mastra, Vercel AI, TanStack AI, Spring AI. Migration path
Moving MCP traffic from Arcade to Zuplo
Migrating from Arcade is a low-disruption change because MCP clients (Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, MCP Inspector) point at a gateway URL — swap the URL, repoint OAuth to Zuplo, keep your existing IDP. The biggest practical work is mapping the tool catalog: any custom Python tools you wrote with <code>arcade-mcp-server</code> get re-authored as TypeScript MCP tools (or kept on Arcade temporarily and federated through Zuplo until the renewal cycle consolidates the decision). Pre-built upstream MCP servers — GitHub, Linear, Slack, Notion, Stripe — federate into Zuplo natively with one route per upstream and the gateway's standard OAuth brokering.
Inventory tools and upstreams in use
Catalog the tools your agents call today via Arcade — both pre-built MCP servers (GitHub, Linear, Slack, Notion, Stripe, HubSpot, Salesforce, Microsoft 365) and any custom Arcade-MCP-server tools you authored. Capture which require per-user OAuth and which use shared service accounts.
Stand up Zuplo MCP Gateway
Configure your IDP (Auth0 preset or any OIDC provider), import each upstream MCP server as a route, and define virtual MCP servers per role or team using <code>mcp-capability-filter-inbound</code>. Bind a credential model per route — per-user OAuth where the upstream supports it, shared API key from the encrypted vault where it doesn't. Pin <code>compatibilityDate</code> ≥ 2026-03-01 in <code>zuplo.jsonc</code>.
Port custom tools to TypeScript or keep on Arcade temporarily
Custom Python tools authored with <code>arcade-mcp-server</code> re-author as TypeScript using <code>@zuplo/mcp</code>, or expose the existing Arcade Engine as one more upstream in your Zuplo MCP Gateway until renewal forces a consolidation. For APIs you own, use the MCP Server handler to auto-generate from OpenAPI — zero code in many cases.
Apply guardrails and capability filtering
Add prompt-injection detection (<code>prompt-injection-outbound</code>) and secret-masking (<code>secret-masking-outbound</code>) to the inbound MCP request path. Curate each virtual server's tool list with <code>mcp-capability-filter-inbound</code> so each team sees only the tools they should call. Test against your Claude, Cursor, and VS Code clients via the MCP Inspector.
Routes & specs
Direct OpenAPI import
Arcade.dev plugins
Map to TypeScript policies
Migration phases
Typical MCP cut-over in 2–6 weeks for governed deployments
Inventory tools and upstreams in use
Catalog the tools your agents call today via Arcade — both pre-built MCP servers (GitHub, Linear, Slack, Notion, Stripe, HubSpot, Salesforce, Microsoft 365) and any custom Arcade-MCP-server tools you authored. Capture which require per-user OAuth and which use shared service accounts.
2 wksPlan lockedStand up Zuplo MCP Gateway
Configure your IDP (Auth0 preset or any OIDC provider), import each upstream MCP server as a route, and define virtual MCP servers per role or team using <code>mcp-capability-filter-inbound</code>. Bind a credential model per route — per-user OAuth where the upstream supports it, shared API key from the encrypted vault where it doesn't. Pin <code>compatibilityDate</code> ≥ 2026-03-01 in <code>zuplo.jsonc</code>.
2 wksFoundation livePort custom tools to TypeScript or keep on Arcade temporarily
Custom Python tools authored with <code>arcade-mcp-server</code> re-author as TypeScript using <code>@zuplo/mcp</code>, or expose the existing Arcade Engine as one more upstream in your Zuplo MCP Gateway until renewal forces a consolidation. For APIs you own, use the MCP Server handler to auto-generate from OpenAPI — zero code in many cases.
4 wksSide-by-sideApply guardrails and capability filtering
Add prompt-injection detection (<code>prompt-injection-outbound</code>) and secret-masking (<code>secret-masking-outbound</code>) to the inbound MCP request path. Curate each virtual server's tool list with <code>mcp-capability-filter-inbound</code> so each team sees only the tools they should call. Test against your Claude, Cursor, and VS Code clients via the MCP Inspector.
2 wksCut-over done
What our customers say
Trusted by engineering teams at scale
90%
Hardware footprint reduction at scale
Read the Blockdaemon case study →
"The move to Zuplo from our existing API Management vendor was easy, taking just over 2 months to switch mission critical systems, and we're saving over 70% on costs."
Ryan Waites
Senior Director, Blockdaemon
"Zuplo gives us the flexibility to scale efficiently, ensures security and compliance, and reduces operational complexity so we can focus on building new capabilities."
Daryl Benzel
Staff Software Engineer, Yext
1B+
End users served via Zuplo APIs
Read the AccuWeather case study →
Hours
To launch MCP server on regulated APIs
Read the Finsolutia case study →
"We didn't touch a line of code, it's just plug and play. The results were very surprising, in just a couple of hours we had a great result and a fully working MCP Server."
Miguel Madeira
CTO & Co-Founder, Finsolutia
Trusted for regulated and high-volume workloads
Frequently Asked Questions
Common questions about Zuplo vs Arcade.dev.
Ready to talk to an expert?
Book a call with a solutions architect for a tailored walkthrough — SOC 2 controls, dedicated deployment, AI Gateway, and enterprise support. Or start free and explore the platform yourself.