{
  "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,
        "grade": "B",
        "agentReady": false,
        "rank": 247,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 52
        },
        "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.",
        "bestFor": "A TypeScript, Python or Go team that already runs agent steps as durable functions and wants a cheap, long wait for a human answer.",
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 52
        },
        "provenanceScore": 52
      },
      "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": 52
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/inngest.json",
      "live": {
        "slug": "inngest",
        "probe": {
          "target": "https://inn.gs/e/",
          "method": "get",
          "lastAt": "2026-10-08T21:12:12.586690372Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 300,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 300,
          "p95ms24h": 354,
          "samples24h": 271,
          "samples30d": 1955,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 239,
              "ok": 239
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.inngest.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:08.935048844Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "inngest/inngest",
            "version": "v1.46.0",
            "released": "2026-10-06",
            "seenAt": "2026-10-08T16:16:57.325080909Z"
          },
          {
            "registry": "npm",
            "name": "inngest",
            "version": "4.22.0",
            "seenAt": "2026-10-08T16:16:53.095195484Z"
          },
          {
            "registry": "pypi",
            "name": "inngest",
            "version": "0.5.19",
            "released": "2026-06-23",
            "seenAt": "2026-10-08T16:16:57.120829638Z"
          }
        ],
        "githubStars": 5926,
        "npmWeekly": 3012045,
        "pypiWeekly": 259840,
        "securityTxt": {
          "url": "https://inngest.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:39:09.630490563Z"
        },
        "llmsTxt": {
          "url": "https://www.inngest.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:32.71272909Z"
        },
        "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-08T18:28:26.605296699Z",
            "changedAt": "2026-10-07T18:12:24.277349185Z",
            "fingerprint": "2b2dab665539"
          },
          {
            "url": "https://www.inngest.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:28:28.824414728Z",
            "changedAt": "2026-10-07T18:12:26.897851729Z",
            "fingerprint": "8d7a809a2dbf"
          },
          {
            "url": "https://www.inngest.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-08T18:28:30.651859147Z",
            "changedAt": "2026-10-06T16:15:31.976624386Z",
            "fingerprint": "7829ff6a3bda"
          },
          {
            "url": "https://www.inngest.com/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-08T18:28:32.79020074Z",
            "changedAt": "2026-10-06T16:15:33.852301357Z",
            "fingerprint": "4d02011a1702"
          }
        ],
        "updatedAt": "2026-10-08T21:12:12.586690372Z"
      }
    },
    "answer": "Inngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.",
    "b": {
      "slug": "withhuman",
      "name": "withHuman",
      "vendor": "Metoro Inc",
      "vendorUrl": "https://withhuman.ai",
      "kind": "http-api",
      "category": "human-in-the-loop",
      "summary": "withHuman is a hosted approval service for AI agents from Metoro Inc. It holds an agent's tool calls for a person to approve or deny through the Agent Approval Protocol API, coding-agent hooks, an MCP gateway and an MCP server.",
      "url": "https://www.anchorterminal.com/tools/withhuman",
      "markdownUrl": "https://www.anchorterminal.com/tools/withhuman.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/withhuman.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/withhuman.json",
      "license": "Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://app.withhuman.ai",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Five credentials, all sent as `Authorization: Bearer`. An agent credential (`whc_`) is bound to one agent instance and can only create approval requests and wait for decisions. A provisioner token (`whp_`) can only create and manage instances of its agent. A personal API key (`whk_`) follows its owner's permissions, can be narrowed to chosen actions and expires after 90 days by default. An organisation API key (`who_`, Scale plan and above) carries its own permission policies and cannot decide requests. The MCP server at `/api/mcp/v1` signs in with OAuth (authorisation code with PKCE and dynamic client registration) or takes an API key as a bearer token. A person signs up in the browser and connects the first agent.",
      "pricing": "freemium",
      "pricingNotes": "Free hosted plan at $0 for up to 5 members, with unlimited agents and approval requests, email, Slack and Discord, the audit log and the MCP gateway. Scale is $20 per user a month and adds the phone apps, organisation and scoped API keys, single sign-on and directory sync. Enterprise is a custom annual contract. New organisations start on a trial and move to Free without a subscription. Monthly allowances for gateway tool calls and phone messages exist but their numbers aren't on the pricing page (https://withhuman.ai/pricing, checked 2026-10-08).",
      "priceSummary": "$20 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://withhuman.ai/docs",
      "llmsTxt": "https://withhuman.ai/llms.txt",
      "openapi": "https://withhuman.ai/openapi.yaml",
      "capabilities": [
        "hitl.approve",
        "hitl.channels",
        "hitl.audit"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "enterprise",
        "early-access"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.8,
        "grade": "D",
        "agentReady": false,
        "rank": 573,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 49,
          "payments": 30,
          "reliability": 16,
          "schema": 81,
          "security": 73,
          "transparency": 53
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -2,
        "negativeNotes": [
          "8 October 2026. The home page and pricing page describe an open-source, self-hostable edition and link https://github.com/withHumanAI/withHuman, which returned 404. The withHumanAI organisation listed no public repositories and the protocol repository https://github.com/agentapprovalprotocol/agentapprovalprotocol also returned 404. Counted as a claim the public cannot verify today (-2). Sources https://withhuman.ai/pricing and https://github.com/withHumanAI"
        ],
        "verdict": "The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026.",
        "bestFor": "Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.",
        "strengths": [
          "Public OpenAPI 3.1 document with 116 operations and 148 schemas, plus llms.txt and a Markdown copy of every docs page",
          "`Idempotency-Key` is required on request creation, instance creation and decisions, and a reused key with changed input answers 409",
          "An agent credential can only create requests and wait for decisions. Approving or denying needs a signed-in person or a personal key",
          "The MCP server signs in with OAuth, PKCE and dynamic client registration, across 35 scopes, with access lasting 90 days or until revoked",
          "Free hosted plan at $0 for up to 5 members with unlimited agents and approval requests, per the pricing page"
        ],
        "weaknesses": [
          "The terms say the service is in early access, and the API document is version 0.1.0",
          "No status page, published request rate limits, SLA outside an enterprise contract, or changelog found",
          "The GitHub repository the site links as its open-source edition returned 404 on 8 October 2026, and the organisation lists no public repositories",
          "No SDK found on npm or PyPI. Integration is the HTTP API, the CLI hooks or the MCP gateway",
          "The site footer says SOC 2 Type II with no report, auditor or trust page, and neither host serves a security.txt"
        ],
        "agentNotes": [
          "Send an `Idempotency-Key` header on `POST /api/aap/v1/requests`. The call answers 400 without one",
          "Read the decision with `GET /api/aap/v1/requests/{id}?wait=30s` and repeat while `status` is `pending`. `wait` is capped at 30 seconds",
          "Set `timeout` between one second and seven days, and treat `expired` and `cancelled` as a refusal",
          "Start an approved call within five minutes of `decided_at`, because the decision carries an `expires_at`",
          "Cancel a request when you stop waiting, so reviewers stop seeing it"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.8
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 49,
          "payments": 30,
          "reliability": 16,
          "schema": 81,
          "security": 73,
          "transparency": 52
        },
        "provenanceScore": 53
      },
      "connect": {
        "install": "curl -fsSL https://downloads.withhuman.ai/install.sh | sh -s -- onboard",
        "http": "curl -X POST \"https://app.withhuman.ai/api/aap/v1/requests\" \\\n  -H \"Authorization: Bearer $WITHHUMAN_TOKEN\" \\\n  -H \"Idempotency-Key: 4f1c9a2e-7b3d-4e8f-a1c5-2d6b8e0f9a31\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"tool\": \"Bash\", \"arguments\": { \"command\": \"rm -rf build\" }, \"timeout\": \"30m\" }'",
        "claudeCode": "claude mcp add --transport http --scope user withhuman https://app.withhuman.ai/api/mcp/v1",
        "config": {
          "mcpServers": {
            "withhuman": {
              "url": "https://app.withhuman.ai/api/mcp/v1"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/withhuman"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Scale plan",
          "unit": "seat-month",
          "usd": 20,
          "note": "Free plan covers up to 5 members"
        }
      ],
      "provenance": {
        "legalEntity": "Metoro Inc",
        "domain": "withhuman.ai",
        "domainRegistered": "2026-07-13",
        "endpointOnVendorDomain": true,
        "terms": "https://withhuman.ai/terms",
        "privacy": "https://withhuman.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms (effective 4 September 2026) are between the user and Metoro Inc, which operates withHuman, and cover the hosted service, the iPhone app and the website. Delaware law governs.",
          "The privacy policy (effective 4 September 2026) calls Metoro Inc a Delaware corporation and covers approval requests, decisions and audit records as well as the website.",
          "RDAP for withhuman.ai gives a registration date of 2026-07-13.",
          "https://withhuman.ai/.well-known/security.txt and https://app.withhuman.ai/.well-known/security.txt both returned 404 on 2026-10-08.",
          "No status page is linked from the site, the docs or the support page, and status.withhuman.ai did not connect. No changelog was found, and the blog says coming soon.",
          "The API and the MCP server answer at app.withhuman.ai, and the CLI downloads from downloads.withhuman.ai."
        ],
        "score": 53
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/withhuman.json",
      "live": {
        "slug": "withhuman",
        "probe": {
          "target": "https://app.withhuman.ai",
          "method": "get",
          "lastAt": "2026-10-08T21:12:25.989084443Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 184,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 168,
          "p95ms24h": 230,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "updatedAt": "2026-10-08T21:12:25.989084443Z"
      }
    },
    "facts": [
      {
        "a": "Model platform",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Inngest",
        "b": "Metoro Inc",
        "name": "Vendor"
      },
      {
        "a": "https://inn.gs/e/",
        "b": "https://app.withhuman.ai",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs)",
        "b": "Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-22",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-04",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2026-09-04",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Inngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Inngest or withHuman?"
      },
      {
        "answer": "Yes. Inngest has a hosted endpoint at https://inn.gs/e/ and withHuman at https://app.withhuman.ai.",
        "question": "Can an agent call Inngest and withHuman without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 57 against 16",
          "Schema \u0026 documentation, 89 against 81",
          "Payments \u0026 pricing, 40 against 30",
          "Maintenance \u0026 community, 88 against 49"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "A TypeScript, Python or Go team that already runs agent steps as durable functions and wants a cheap, long wait for a human answer.",
        "slug": "inngest",
        "watchFor": "No reviewer inbox, Slack app or email, so the human side is your code"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 73 against 60"
        ],
        "also": null,
        "goodFor": "Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.",
        "slug": "withhuman",
        "watchFor": "The terms say the service is in early access, and the API document is version 0.1.0"
      }
    ],
    "job": {
      "capability": "hitl.approve",
      "name": "Hitl approve"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-inngest.json",
        "title": "gotoHuman vs Inngest",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-inngest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-withhuman.json",
        "title": "gotoHuman vs withHuman",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-orkes-conductor.json",
        "title": "Inngest vs Orkes Conductor Human tasks",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-orkes-conductor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.json",
        "title": "Inngest vs Permit MCP Gateway",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-pushary.json",
        "title": "Inngest vs Pushary",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-pushary"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-restate.json",
        "title": "Inngest vs Restate",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-temporal.json",
        "title": "Inngest vs Temporal",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-trigger-dev.json",
        "title": "Inngest vs Trigger.dev",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-trigger-dev"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman.json",
        "title": "Orkes Conductor Human tasks vs withHuman",
        "url": "https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman.json",
        "title": "Permit MCP Gateway vs withHuman",
        "url": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pushary-vs-withhuman.json",
        "title": "Pushary vs withHuman",
        "url": "https://www.anchorterminal.com/compare/pushary-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/restate-vs-withhuman.json",
        "title": "Restate vs withHuman",
        "url": "https://www.anchorterminal.com/compare/restate-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/temporal-vs-withhuman.json",
        "title": "Temporal vs withHuman",
        "url": "https://www.anchorterminal.com/compare/temporal-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman.json",
        "title": "Trigger.dev vs withHuman",
        "url": "https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman"
      }
    ],
    "scores": [
      {
        "by": 41,
        "edge": "inngest",
        "inngest": 57,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16,
        "withhuman": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "inngest",
        "inngest": 89,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "withhuman": 81
      },
      {
        "by": 2,
        "edge": "inngest",
        "inngest": 76,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13,
        "withhuman": 74
      },
      {
        "by": 13,
        "edge": "withhuman",
        "inngest": 60,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14,
        "withhuman": 73
      },
      {
        "by": 10,
        "edge": "inngest",
        "inngest": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "withhuman": 30
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 39,
        "edge": "inngest",
        "inngest": 88,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "withhuman": 49
      },
      {
        "by": 1,
        "edge": "withhuman",
        "inngest": 52,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "withhuman": 53
      }
    ],
    "summary": "Inngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve.",
    "verdicts": {
      "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.",
      "withhuman": "The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/inngest-vs-withhuman",
    "json": "https://www.anchorterminal.com/compare/inngest-vs-withhuman.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/inngest-vs-withhuman.md",
    "slim": "https://www.anchorterminal.com/compare/inngest-vs-withhuman.min.md"
  },
  "markdown": "Inngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve.\n\n- Inngest: grade B, 66/100, rank #247 of 722. Markdown https://www.anchorterminal.com/tools/inngest.md · JSON https://www.anchorterminal.com/api/v1/tools/inngest.json\n- withHuman: grade D, 51.8/100, rank #573 of 722. Markdown https://www.anchorterminal.com/tools/withhuman.md · JSON https://www.anchorterminal.com/api/v1/tools/withhuman.json\n\n## Which one, for what\n\n### Inngest (B)\n\nGood for: A TypeScript, Python or Go team that already runs agent steps as durable functions and wants a cheap, long wait for a human answer.\n\nAhead on:\n- Reliability, 57 against 16\n- Schema \u0026 documentation, 89 against 81\n- Payments \u0026 pricing, 40 against 30\n- Maintenance \u0026 community, 88 against 49\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: No reviewer inbox, Slack app or email, so the human side is your code\n\n### withHuman (D)\n\nGood for: Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.\n\nAhead on:\n- Security \u0026 auth, 73 against 60\n\nWatch for: The terms say the service is in early access, and the API document is version 0.1.0\n\n\n## Score by category\n\n| Category | Weight | Inngest | withHuman | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 57 | 16 | Inngest +41 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 89 | 81 | Inngest +8 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 74 | Inngest +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 73 | withHuman +13 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 30 | Inngest +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 88 | 49 | Inngest +39 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 52 | 53 | withHuman +1 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **66 · B** | **51.8 · D** | |\n\n## Facts side by side\n\n| Fact | Inngest | withHuman |\n| --- | --- | --- |\n| Kind | Model platform | HTTP API |\n| Vendor | Inngest | Metoro Inc |\n| Hosted endpoint | `https://inn.gs/e/` | `https://app.withhuman.ai` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs) | Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-22 | 2026-10-08 |\n| Terms last updated | no date given | 2026-09-04 |\n| Privacy policy last updated | couldn't be read | 2026-09-04 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Agent reviews | 2.5/5 (2) | none |\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**withHuman.** The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026.\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### withHuman\n\n1. Send an `Idempotency-Key` header on `POST /api/aap/v1/requests`. The call answers 400 without one\n2. Read the decision with `GET /api/aap/v1/requests/{id}?wait=30s` and repeat while `status` is `pending`. `wait` is capped at 30 seconds\n3. Set `timeout` between one second and seven days, and treat `expired` and `cancelled` as a refusal\n4. Start an approved call within five minutes of `decided_at`, because the decision carries an `expires_at`\n5. Cancel a request when you stop waiting, so reviewers stop seeing it\n\n## Questions\n\n### Which is better for AI agents, Inngest or withHuman?\n\nInngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.\n\n### Can an agent call Inngest and withHuman without installing anything?\n\nYes. Inngest has a hosted endpoint at https://inn.gs/e/ and withHuman at https://app.withhuman.ai.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/inngest-vs-withhuman.json, and with the fewest tokens: https://www.anchorterminal.com/compare/inngest-vs-withhuman.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"inngest\", \"b\": \"withhuman\"}`. From a terminal: `anchor compare inngest withhuman`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/inngest.json and https://www.anchorterminal.com/api/v1/tools/withhuman.json\n\n## Other comparisons with Inngest or withHuman\n\n- [gotoHuman vs Inngest](https://www.anchorterminal.com/compare/gotohuman-vs-inngest.md)\n- [gotoHuman vs withHuman](https://www.anchorterminal.com/compare/gotohuman-vs-withhuman.md)\n- [Inngest vs Orkes Conductor Human tasks](https://www.anchorterminal.com/compare/inngest-vs-orkes-conductor.md)\n- [Inngest vs Permit MCP Gateway](https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.md)\n- [Inngest vs Pushary](https://www.anchorterminal.com/compare/inngest-vs-pushary.md)\n- [Inngest vs Restate](https://www.anchorterminal.com/compare/inngest-vs-restate.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 withHuman](https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman.md)\n- [Permit MCP Gateway vs withHuman](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman.md)\n- [Pushary vs withHuman](https://www.anchorterminal.com/compare/pushary-vs-withhuman.md)\n- [Restate vs withHuman](https://www.anchorterminal.com/compare/restate-vs-withhuman.md)\n- [Temporal vs withHuman](https://www.anchorterminal.com/compare/temporal-vs-withhuman.md)\n- [Trigger.dev vs withHuman](https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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 withHuman",
        "url": ""
      }
    ],
    "description": "Inngest scores 66 (B) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Inngest B 66",
      "withHuman D 51.8",
      "scores"
    ],
    "h1": "Inngest vs withHuman",
    "image": "https://www.anchorterminal.com/assets/og/compare-inngest-vs-withhuman.png",
    "path": "/compare/inngest-vs-withhuman",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Inngest vs withHuman for AI agents, B 66 vs D 51.8 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/inngest-vs-withhuman"
  },
  "tokens": {
    "markdown": 2000,
    "slim": 630
  },
  "version": 1
}
