{
  "data": {
    "a": {
      "slug": "inngest",
      "name": "Inngest",
      "vendor": "Inngest",
      "vendorUrl": "https://www.inngest.com",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Durable execution platform for TypeScript, Python and Go, with event-driven workflows and support for human approval.",
      "url": "https://www.anchorterminal.com/tools/inngest",
      "markdownUrl": "https://www.anchorterminal.com/tools/inngest.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/inngest.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/inngest.json",
      "repo": "https://github.com/inngest/inngest",
      "license": "SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://inn.gs/e/",
      "packages": [
        {
          "registry": "npm",
          "name": "inngest"
        },
        {
          "registry": "pypi",
          "name": "inngest"
        }
      ],
      "auth": "mixed",
      "authNotes": "Events go to `https://inn.gs/e/\u003cevent key\u003e`, so the event key sits in the URL path. Your app's serve endpoint checks requests with a signing key. The REST API and the Cloud MCP at `api.inngest.com/mcp` take an API key (`sk-inn-api-...`) as a Bearer token, and the Cloud MCP won't accept signing keys.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 50,000 executions a month, 5 concurrent steps, 5 seats and 24-hour trace history, no card. Pro from $99 a month with 1 million executions, 100 concurrent steps, 15 seats and 7-day traces, then $50 per extra million. Business from $499 a month with 10 million executions, 500 concurrent steps, 30 seats and 14-day traces. Enterprise is priced on request. One execution is one run plus one per step, so a run with 5 steps costs 6, and Free pauses execution at the quota instead of billing overage (https://www.inngest.com/pricing).",
      "priceSummary": "$99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://www.inngest.com/docs/ai-patterns/human-in-the-loop",
      "llmsTxt": "https://www.inngest.com/llms.txt",
      "openapi": "https://api-docs.inngest.com/api-specs/v2.json",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "source-available",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "llms-txt",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-09-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 160,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 3,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 56
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business. No reviewer inbox, Slack app or email, so the human side is your code.",
        "strengths": [
          "Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business",
          "Two resume paths, events matched by ID for many runs and transactional signals for one",
          "Free plan of 50,000 executions a month with no card, and per-execution prices published",
          "OpenAPI spec for REST v2, llms.txt and a dated changelog",
          "SOC 2 Type II, a paid bounty and Apache-2.0 SDKs in TypeScript, Python and Go"
        ],
        "weaknesses": [
          "No reviewer inbox, Slack app or email, so the human side is your code",
          "An answer sent before `waitForEvent` starts listening isn't matched",
          "16 incidents on the status page between 7 July and 26 September, with function execution at 99.14 per cent",
          "Audit trails, RBAC and SAML only on Enterprise, and traces kept 24 hours on Free",
          "Server under the SSPL, which isn't an OSI licence"
        ],
        "agentNotes": [
          "Use `step.waitForSignal()` when one run waits for one answer, and `waitForEvent` only when one answer resumes many runs",
          "Register the wait before you send the approval request, or check the external state first, since early events are missed",
          "Use a unique approval ID per tool call and `match` on it, so parallel approvals resolve independently",
          "Treat `null` or `undefined` as a timeout and decide on purpose whether that rejects, approves or escalates",
          "Set an event `id` when sending the answer, so a retried send is dropped within 24 hours"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 52
        },
        "provenanceScore": 60
      },
      "connect": {
        "install": "npm install inngest",
        "http": "curl -X POST \"https://inn.gs/e/$INNGEST_EVENT_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"agent/approval.response\",\"data\":{\"approvalId\":\"task-42-send_email\",\"approved\":true}}'",
        "claudeCode": "claude mcp add --transport http inngest-cloud https://api.inngest.com/mcp --header \"Authorization: Bearer $INNGEST_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/inngest"
      },
      "alsoIn": [
        "workflow-automation"
      ],
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 99,
          "note": "From $99, 1 million executions, 100 concurrent steps, 15 seats"
        },
        {
          "item": "Business plan",
          "unit": "month",
          "usd": 499,
          "note": "From $499, 10 million executions, 500 concurrent steps, 30 seats"
        },
        {
          "item": "Extra executions on Pro",
          "unit": "1k-calls",
          "usd": 0.05,
          "note": "$50 per million executions, tiered down to $0.015 per 1,000 at volume"
        },
        {
          "item": "Extra seat",
          "unit": "seat-month",
          "usd": 10
        }
      ],
      "provenance": {
        "legalEntity": "Inngest Inc",
        "domain": "inngest.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.inngest.com/terms",
        "privacy": "https://www.inngest.com/privacy",
        "statusPage": "https://status.inngest.com",
        "changelog": "https://www.inngest.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "The event API is on inn.gs, a separate domain. The REST API and Cloud MCP are on api.inngest.com.",
          "The terms give Inngest Inc at 821 Howard St, San Francisco, and the privacy policy (updated 2026-04-03) an address at 600 California St, San Francisco.",
          "https://www.inngest.com/.well-known/security.txt returned 404 on 2026-10-01. The security page names security@inngest.com and a bounty, and the trust centre is at trust.inngest.com.",
          "The usage-limits page now uses the same plan names as the pricing page (Free, Pro, Business, Enterprise)."
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/inngest.json",
      "live": {
        "slug": "inngest",
        "probe": {
          "target": "https://inn.gs/e/",
          "method": "get",
          "lastAt": "2026-10-04T23:48:10.049265147Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 290,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 296,
          "p95ms24h": 331,
          "samples24h": 272,
          "samples30d": 898,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 270,
              "ok": 270
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.inngest.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:49:17.231466291Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "inngest/inngest",
            "version": "v1.45.1",
            "released": "2026-09-17",
            "seenAt": "2026-10-04T16:30:17.798203821Z"
          },
          {
            "registry": "npm",
            "name": "inngest",
            "version": "4.21.1",
            "seenAt": "2026-10-04T16:30:17.360851892Z"
          },
          {
            "registry": "pypi",
            "name": "inngest",
            "version": "0.5.19",
            "released": "2026-06-23",
            "seenAt": "2026-10-04T16:30:17.615210455Z"
          }
        ],
        "githubStars": 5908,
        "npmWeekly": 3079142,
        "pypiWeekly": 251067,
        "securityTxt": {
          "url": "https://inngest.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:40.181853602Z"
        },
        "llmsTxt": {
          "url": "https://www.inngest.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:54.82938436Z"
        },
        "domain": {
          "domain": "inngest.com",
          "registered": "2020-10-12",
          "source": "https://rdap.verisign.com/com/v1/domain/inngest.com",
          "checkedAt": "2026-10-04T13:07:14.754460124Z"
        },
        "pages": [
          {
            "url": "https://www.inngest.com/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:48.34767254Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdfd298ff2b4"
          },
          {
            "url": "https://www.inngest.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:50.387896235Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b300dcb70f05"
          },
          {
            "url": "https://www.inngest.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:52.384497946Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "70f51804be5c"
          },
          {
            "url": "https://www.inngest.com/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:54.552360041Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "52d76880cc57"
          }
        ],
        "updatedAt": "2026-10-04T23:49:17.231466291Z"
      }
    },
    "b": {
      "slug": "permit-mcp-gateway",
      "name": "Permit MCP Gateway",
      "vendor": "Permit.io",
      "vendorUrl": "https://www.permit.io/mcp-gateway",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Hosted proxy between MCP clients and MCP servers that signs in the human behind the agent, checks each tool call against Permit.io policy and logs it.",
      "url": "https://www.anchorterminal.com/tools/permit-mcp-gateway",
      "markdownUrl": "https://www.anchorterminal.com/tools/permit-mcp-gateway.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/permit-mcp-gateway.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/permit-mcp-gateway.json",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://{subdomain}.agent.security/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "The gateway is an OAuth 2.1 authorisation server per host. The MCP client gets a 401, reads `/.well-known/oauth-authorization-server` and opens a browser, where the user signs in with email and password, a one-time code, a passkey, Google, GitHub or Microsoft, or SAML or OIDC single sign-on, then picks the access the agent gets. Upstream OAuth (GitHub, Linear) runs through the same consent flow. Sessions expire 90 days after the last tool call.",
      "pricing": "paid",
      "pricingNotes": "Human-in-the-loop approvals are on Enterprise plans, arranged through a demo (https://docs.permit.io/permit-mcp-gateway/human-in-the-loop), and so are the customer-controlled and fully on-premises deployments. The hosted gateway is where evaluation starts, sign-up at app.agent.security. Permit's pricing page lists a free Community plan (1,000 MAU, 20 tenants, no card, 14-day audit logs, best-effort cloud uptime) and Enterprise through sales with SOC 2 Type II, HIPAA BAA and a 99.99 per cent uptime option, but no line for the MCP gateway (https://www.permit.io/pricing).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.permit.io/permit-mcp-gateway/human-in-the-loop",
      "capabilities": [
        "hitl.approve",
        "hitl.channels",
        "hitl.audit",
        "auth.oauth",
        "auth.consent",
        "auth.agent-identity",
        "auth.audit"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "mcp",
        "oauth",
        "enterprise"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.5,
        "grade": "C",
        "agentReady": false,
        "rank": 321,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 4,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 43,
          "payments": 10,
          "reliability": 47,
          "schema": 53,
          "security": 80,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "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.",
        "strengths": [
          "No SDK or client change, since the client points at the gateway URL and keeps its tool list",
          "Fails closed, with timeouts that reject and disconnects that cancel",
          "OAuth 2.1 with consent, a trust ceiling per user and admin revocation",
          "Approval history with the outcome, deciding admin and decision time, plus every call in Permit audit logs",
          "Customer-controlled and on-premises deployments keep tool traffic inside your network"
        ],
        "weaknesses": [
          "Approvals are Enterprise only, through a demo, with no published price",
          "Only gateway admins approve, so routing to the right person needs admin seats",
          "5-minute default window, extendable 5 minutes at a time, suits live sessions more than overnight review",
          "No gateway changelog, and the product changelog on Canny stopped in May 2024",
          "Rate limits exist but aren't published, and the status page doesn't list the gateway"
        ],
        "agentNotes": [
          "Expect a waiting message before an approval-gated tool returns, and don't retry the call while it waits",
          "Read the rejection reason in the error and change approach instead of calling the same tool again",
          "Treat a timeout as a rejection and ask the user to have an admin online before a batch of destructive calls",
          "Stay connected while waiting, since dropping the connection cancels the request",
          "On a 429 with `rate_limited`, back off for a few seconds and grow the wait on each retry"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.5
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 43,
          "payments": 10,
          "reliability": 47,
          "schema": 53,
          "security": 80,
          "transparency": 40
        },
        "provenanceScore": 50
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http linear-gated \"https://YOUR-HOST.agent.security/mcp?upstream_mcp=https://mcp.linear.app/mcp\""
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/permit-mcp-gateway"
      },
      "alsoIn": [
        "agent-auth"
      ],
      "area": "agent-runtime",
      "provenance": {
        "legalEntity": "Permit Inc.",
        "domain": "permit.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.permit.io/legal/terms-and-conditions",
        "privacy": "https://www.permit.io/legal/privacy-policy",
        "statusPage": "https://permit-io.instatus.com/",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-01",
        "notes": [
          "Gateway hosts and the admin dashboard run on agent.security (app.agent.security, \u003chost\u003e.agent.security), while policy and audit logs live on app.permit.io.",
          "The status page lists the backend, OPAL, frontend, website, PDP Deltas and PDP Data. It has no component for the gateway or agent.security.",
          "The docs changelog page says the Canny changelog has no entries after 2024-05-16 and points to SDK and PDP release notes instead.",
          "The gateway docs in permitio/docs were last changed on 2026-09-20. The human-in-the-loop page was added on 2026-05-11.",
          "The terms (updated 2026-07-01) name Permit Inc., a Delaware corporation with a registered office in Dover, Delaware. We couldn't read security.txt or RDAP on 2026-10-01."
        ],
        "score": 50
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/permit-mcp-gateway.json",
      "live": {
        "slug": "permit-mcp-gateway",
        "probe": {
          "target": "https://{subdomain}.agent.security/mcp",
          "method": "get",
          "lastAt": "2026-10-04T23:48:13.806081875Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "invalid character \"{\" in host name",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 272,
          "samples30d": 898,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 0
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 0
            },
            {
              "date": "2026-10-04",
              "probes": 270,
              "ok": 0
            }
          ]
        },
        "vendorStatus": {
          "page": "https://permit-io.instatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:22.877190474Z"
        },
        "securityTxt": {
          "url": "https://permit.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:16:02.774068255Z"
        },
        "domain": {
          "domain": "permit.io",
          "checkedAt": "2026-10-04T13:04:38.037359139Z"
        },
        "pages": [
          {
            "url": "https://www.permit.io/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:51:41.531863438Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c9ed914508e4"
          },
          {
            "url": "https://www.permit.io/legal/privacy-policy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:51:37.367686321Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2c4815352975"
          },
          {
            "url": "https://www.permit.io/legal/terms-and-conditions",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:51:39.899345922Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7561c6093e56"
          }
        ],
        "updatedAt": "2026-10-04T23:48:13.806081875Z"
      }
    },
    "summary": "Inngest has a score of 66.3 (B) against Permit MCP Gateway's 54.5 (C). Both do hitl approve. The largest gap is maintenance \u0026 community, 45 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway",
    "json": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.md",
    "slim": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.min.md"
  },
  "markdown": "Inngest has a score of 66.3 (B) against Permit MCP Gateway's 54.5 (C). Both do hitl approve. The largest gap is maintenance \u0026 community, 45 points.\n\n- Inngest: grade B, 66.3/100, rank #160 of 452. Markdown https://www.anchorterminal.com/tools/inngest.md · JSON https://www.anchorterminal.com/api/v1/tools/inngest.json\n- Permit MCP Gateway: grade C, 54.5/100, rank #321 of 452. Markdown https://www.anchorterminal.com/tools/permit-mcp-gateway.md · JSON https://www.anchorterminal.com/api/v1/tools/permit-mcp-gateway.json\n\n## Which one, for what\n\nPick Inngest for reliability (+10), schema \u0026 documentation (+36), payments \u0026 pricing (+30), maintenance \u0026 community (+45), transparency \u0026 trust (+11).\n\nPick Permit MCP Gateway for agent ergonomics (+7), security \u0026 auth (+20).\n\n## Score by category\n\n| Category | Weight | Inngest | Permit MCP Gateway | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 57 | 47 | Inngest +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 89 | 53 | Inngest +36 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 83 | Permit MCP Gateway +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 80 | Permit MCP Gateway +20 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 10 | Inngest +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 88 | 43 | Inngest +45 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 56 | 45 | Inngest +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **54.5 · C** | |\n\n## Facts side by side\n\n| Fact | Inngest | Permit MCP Gateway |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | Inngest | Permit.io |\n| Hosted endpoint | `https://inn.gs/e/` | `https://{subdomain}.agent.security/mcp` |\n| Transports | HTTP, Streamable HTTP | Streamable HTTP |\n| Auth | OAuth or key | OAuth |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs) | none |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-22 | none |\n| Popularity | none | none |\n| Agent reviews | 2.5/5 (2) | 2.5/5 (2) |\n\n## Verdicts\n\n**Inngest.** Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business. No reviewer inbox, Slack app or email, so the human side is your code.\n\n**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.\n\n## Before you call either\n\n### Inngest\n\n1. Use `step.waitForSignal()` when one run waits for one answer, and `waitForEvent` only when one answer resumes many runs\n2. Register the wait before you send the approval request, or check the external state first, since early events are missed\n3. Use a unique approval ID per tool call and `match` on it, so parallel approvals resolve independently\n4. Treat `null` or `undefined` as a timeout and decide on purpose whether that rejects, approves or escalates\n5. Set an event `id` when sending the answer, so a retried send is dropped within 24 hours\n\n### Permit MCP Gateway\n\n1. Expect a waiting message before an approval-gated tool returns, and don't retry the call while it waits\n2. Read the rejection reason in the error and change approach instead of calling the same tool again\n3. Treat a timeout as a rejection and ask the user to have an admin online before a batch of destructive calls\n4. Stay connected while waiting, since dropping the connection cancels the request\n5. On a 429 with `rate_limited`, back off for a few seconds and grow the wait on each retry\n\n## Other comparisons with Inngest or Permit MCP Gateway\n\n- [gotoHuman vs Inngest](https://www.anchorterminal.com/compare/gotohuman-vs-inngest.md)\n- [gotoHuman vs Permit MCP Gateway](https://www.anchorterminal.com/compare/gotohuman-vs-permit-mcp-gateway.md)\n- [Inngest vs Orkes Conductor Human tasks](https://www.anchorterminal.com/compare/inngest-vs-orkes-conductor.md)\n- [Inngest vs Pushary](https://www.anchorterminal.com/compare/inngest-vs-pushary.md)\n- [Inngest vs Temporal](https://www.anchorterminal.com/compare/inngest-vs-temporal.md)\n- [Inngest vs Trigger.dev](https://www.anchorterminal.com/compare/inngest-vs-trigger-dev.md)\n- [Orkes Conductor Human tasks vs Permit MCP Gateway](https://www.anchorterminal.com/compare/orkes-conductor-vs-permit-mcp-gateway.md)\n- [Permit MCP Gateway vs Pushary](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-pushary.md)\n- [Permit MCP Gateway vs Temporal](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal.md)\n- [Permit MCP Gateway vs Trigger.dev](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-trigger-dev.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Inngest vs Permit MCP Gateway",
        "url": ""
      }
    ],
    "description": "Inngest has a score of 66.3 (B) against Permit MCP Gateway's 54.5 (C). Both do hitl approve. The largest gap is maintenance \u0026 community, 45 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Inngest B 66.3",
      "Permit MCP Gateway C 54.5",
      "scores"
    ],
    "h1": "Inngest vs Permit MCP Gateway",
    "image": "https://www.anchorterminal.com/assets/og/compare-inngest-vs-permit-mcp-gateway.png",
    "path": "/compare/inngest-vs-permit-mcp-gateway",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Inngest vs Permit MCP Gateway for AI agents, B 66.3 vs C 54.5",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway"
  },
  "tokens": {
    "markdown": 1450,
    "slim": 380
  },
  "version": 1
}
