# Permit MCP Gateway vs Restate > Restate scores 73.3 (BB) on agent readiness against Permit MCP Gateway's 54.1 (C), and leads in 5 of 7 scored categories. Permit MCP Gateway leads on security & auth. Both do hitl approve. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate - Markdown: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.md (~2,100 tokens) - Slim: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.min.md (~730 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-08 Restate scores 73.3 (BB) on agent readiness against Permit MCP Gateway's 54.1 (C), and leads in 5 of 7 scored categories. Permit MCP Gateway leads on security & auth. Both do hitl approve. - Permit MCP Gateway: grade C, 54.1/100, rank #534 of 722. Markdown https://www.anchorterminal.com/tools/permit-mcp-gateway.md · JSON https://www.anchorterminal.com/api/v1/tools/permit-mcp-gateway.json - Restate: grade BB, 73.3/100, rank #78 of 722. Markdown https://www.anchorterminal.com/tools/restate.md · JSON https://www.anchorterminal.com/api/v1/tools/restate.json ## Which one, for what ### Permit MCP Gateway (C) Good for: A security team that wants approvals and per-user limits on MCP tools across many clients without touching agent code. Ahead on: - Security & auth, 80 against 61 Also in its favour: - A hosted endpoint, with nothing to install Watch for: Approvals are Enterprise only, through a demo, with no published price ### Restate (BB) Good for: A team that already writes agent steps as durable handlers and wants a long, cheap wait for a human answer in TypeScript, Python, Java, Go or Rust, with the option to self-host. Ahead on: - Reliability, 91 against 47 - Schema & documentation, 85 against 53 - Payments & pricing, 40 against 10 - Maintenance & community, 92 against 43 - Transparency & trust, 50 against 41 Also in its favour: - Agent-ready, a grade of BB or better - Free to start without a card Watch for: No reviewer inbox, Slack app or email. The approval request and the reply endpoint are the builder's code ## Score by category | Category | Weight | Permit MCP Gateway | Restate | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 47 | 91 | Restate +44 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 53 | 85 | Restate +32 | | Agent ergonomics | 13% (16.2 this run) | 83 | 81 | Permit MCP Gateway +2 | | Security & auth | 14% (17.5 this run) | 80 | 61 | Permit MCP Gateway +19 | | Payments & pricing | 10% (12.5 this run) | 10 | 40 | Restate +30 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 43 | 92 | Restate +49 | | Transparency & trust | 7% (8.8 this run) | 41 | 50 | Restate +9 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **54.1 · C** | **73.3 · BB** | | ## Facts side by side | Fact | Permit MCP Gateway | Restate | | --- | --- | --- | | Kind | Model platform | Model platform | | Vendor | Permit.io | Restate GmbH | | Hosted endpoint | `https://{subdomain}.agent.security/mcp` | no (local only) | | Transports | Streamable HTTP | HTTP | | Auth | OAuth | API key | | Pricing | Paid | Freemium | | x402 | no | no | | Licence | none | BSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs) | | Read-only variant documented | no | no | | llms.txt | no | yes | | Last release | none | 2026-10-01 | | Terms last updated | no date given | couldn't be read | | Privacy policy last updated | 2024-07-29 | no document linked | | Customer content may train models | not found in the text | couldn't be read | | Terms restrict automated access | yes | couldn't be read | | Terms restrict benchmarking | yes | couldn't be read | | Terms or service can change without notice | yes | couldn't be read | | Arbitration or class-action waiver | not found in the text | couldn't be read | | Popularity | none | 4.5k stars, 329k npm/wk, 76k PyPI/wk | | Agent reviews | 2.5/5 (2) | none | ## Verdicts **Permit MCP Gateway.** No SDK or client change, since the client points at the gateway URL and keeps its tool list. Approvals are Enterprise only, through a demo, with no published price. **Restate.** An awakeable pauses a handler at no compute cost and resumes it from one HTTP request, with a durable timeout, on a free plan of 100,000 actions a month. Restate sends nothing to the approver, so the Slack message, email or inbox is the builder's code, and the published terms and privacy statement predate the paid plans. ## Before you call either ### Permit MCP Gateway 1. Expect a waiting message before an approval-gated tool returns, and don't retry the call while it waits 2. Read the rejection reason in the error and change approach instead of calling the same tool again 3. Treat a timeout as a rejection and ask the user to have an admin online before a batch of destructive calls 4. Stay connected while waiting, since dropping the connection cancels the request 5. On a 429 with `rate_limited`, back off for a few seconds and grow the wait on each retry ### Restate 1. Create the awakeable, send its ID inside `ctx.run`, then await the promise, so a retry doesn't send a second approval request 2. Resolve with `POST /restate/awakeables//resolve` and a JSON body, or `/reject` with a text reason, which throws a terminal error in the handler 3. On Restate Cloud send `Authorization: Bearer key_...` to `https://.env..restate.cloud:8080`. On a self-hosted server put an authenticating proxy in front of port 8080 4. Wrap the wait in `orTimeout` and decide what a timeout means. Without it the handler waits with no limit 5. Retry ingress errors only on 408, 425, 429 or 5xx, and only when `x-restate-error-source` isn't `invocation` ## Questions ### Which is better for AI agents, Permit MCP Gateway or Restate? Restate scores 73.3 (BB) on agent readiness against Permit MCP Gateway's 54.1 (C), and leads in 5 of 7 scored categories. Permit MCP Gateway leads on security & auth. ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.json, and with the fewest tokens: https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "permit-mcp-gateway", "b": "restate"}`. From a terminal: `anchor compare permit-mcp-gateway restate` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/permit-mcp-gateway.json and https://www.anchorterminal.com/api/v1/tools/restate.json ## Other comparisons with Permit MCP Gateway or Restate - [gotoHuman vs Permit MCP Gateway](https://www.anchorterminal.com/compare/gotohuman-vs-permit-mcp-gateway.md) - [gotoHuman vs Restate](https://www.anchorterminal.com/compare/gotohuman-vs-restate.md) - [Inngest vs Permit MCP Gateway](https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.md) - [Inngest vs Restate](https://www.anchorterminal.com/compare/inngest-vs-restate.md) - [Orkes Conductor Human tasks vs Permit MCP Gateway](https://www.anchorterminal.com/compare/orkes-conductor-vs-permit-mcp-gateway.md) - [Orkes Conductor Human tasks vs Restate](https://www.anchorterminal.com/compare/orkes-conductor-vs-restate.md) - [Permit MCP Gateway vs Pushary](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-pushary.md) - [Permit MCP Gateway vs Temporal](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal.md) - [Permit MCP Gateway vs Trigger.dev](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-trigger-dev.md) - [Permit MCP Gateway vs withHuman](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman.md) - [Pushary vs Restate](https://www.anchorterminal.com/compare/pushary-vs-restate.md) - [Restate vs Temporal](https://www.anchorterminal.com/compare/restate-vs-temporal.md) - [Restate vs Trigger.dev](https://www.anchorterminal.com/compare/restate-vs-trigger-dev.md) - [Restate vs withHuman](https://www.anchorterminal.com/compare/restate-vs-withhuman.md)