# Hook0 vs Upstash QStash > Upstash QStash scores 72.3 (BB) on agent readiness against Hook0's 64.6 (B), and leads in 2 of 7 scored categories. Hook0 leads on maintenance & community. Both do events webhooks send. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash - Markdown: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.md (~2,150 tokens) - Slim: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.min.md (~780 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.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-09 Upstash QStash scores 72.3 (BB) on agent readiness against Hook0's 64.6 (B), and leads in 2 of 7 scored categories. Hook0 leads on maintenance & community. Both do events webhooks send. - Hook0: grade B, 64.6/100, rank #313 of 842. Markdown https://www.anchorterminal.com/tools/hook0.md · JSON https://www.anchorterminal.com/api/v1/tools/hook0.json - Upstash QStash: grade BB, 72.3/100, rank #105 of 842. Markdown https://www.anchorterminal.com/tools/upstash-qstash.md · JSON https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json ## Which one, for what ### Hook0 (B) Good for: A product that has to send signed webhooks to its own customers' endpoints with retries, replay and a delivery log, and that wants EU hosting or the option to self-host the same code. Ahead on: - Maintenance & community, 87 against 77 Also in its favour: - Runs on your own machine Watch for: Six advisories were published between 6 August and 9 September 2026, including a High-rated SSRF in the delivery worker fixed on 11 August ### Upstash QStash (BB) Good for: Agents and serverless apps that need a delayed, retried or scheduled HTTP call without running a queue. Ahead on: - Reliability, 83 against 70 - Agent ergonomics, 83 against 65 Also in its favour: - Agent-ready, a grade of BB or better - A hosted endpoint, with nothing to install - No incidents deducted, where Hook0 loses 4 points for them Watch for: One full-access token and one read-only token per region. No per-queue or per-destination scopes were found ## Score by category | Category | Weight | Hook0 | Upstash QStash | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 70 | 83 | Upstash QStash +13 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 79 | 78 | Hook0 +1 | | Agent ergonomics | 13% (16.2 this run) | 65 | 83 | Upstash QStash +18 | | Security & auth | 14% (17.5 this run) | 64 | 61 | Hook0 +3 | | Payments & pricing | 10% (12.5 this run) | 40 | 40 | even | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 87 | 77 | Hook0 +10 | | Transparency & trust | 7% (8.8 this run) | 84 | 81 | Hook0 +3 | | Negative events | ≤15 | -4 | 0 | | | **Total** | | **64.6 · B** | **72.3 · BB** | | ## Facts side by side | Fact | Hook0 | Upstash QStash | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | FGRibreau SARL | Upstash | | Hosted endpoint | no (local only) | `https://qstash.upstash.io/v2` | | Transports | HTTP, stdio | HTTP, Streamable HTTP | | Auth | API key | OAuth or key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | SSPL-1.0 for the server (source available, not an OSI licence). The SDKs and the `hook0-mcp` server are MIT per crates.io and npm. Hook0 Cloud is a hosted service under Hook0's terms of service | Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT | | Tools exposed | 23 | 10 | | Read-only variant documented | yes | yes | | llms.txt | yes | yes | | MCP registry | not listed | `io.github.upstash/mcp-server` | | Last release | 2026-09-21 | 2026-09-29 | | Terms last updated | 2026-06-27 | | | Privacy policy last updated | 2026-09-09 | | | Customer content may train models | not found in the text | | | Terms restrict automated access | yes | | | Terms restrict benchmarking | not found in the text | | | Terms or service can change without notice | yes | | | Arbitration or class-action waiver | not found in the text | | | Popularity | 1.5k stars, 507 npm/wk, 11 PyPI/wk | 269 stars, 816k npm/wk, 91k PyPI/wk | ## Verdicts **Hook0.** Hook0 Cloud sends signed webhooks from one REST call, with a public OpenAPI document, RFC 7807 errors and service tokens that can be narrowed offline to one application, an expiry or read-only actions. Six security advisories were published between August and September 2026, one rated High. Signup needs a browser check, and no uptime commitment exists below Enterprise. **Upstash QStash.** A public OpenAPI 3.1 file covers 43 operations, and publishing has no per-second limit, deduplication IDs and a dead letter queue with replay. Each region has one full-access token and one read-only token, and the token may travel in the URL. The Markdown pricing page contradicts itself on whether retries are billed. ## Before you call either ### Hook0 1. Use a service token narrowed to one application and an expiry. A root service token covers the whole organisation, and an application secret can delete its application 2. Send your own UUID as `event_id` on `POST /api/v1/event/`. A repeat returns `EventAlreadyIngested` (409), which means the first call succeeded 3. Create the event type before sending. Unknown types fail with `EventTypeDoesNotExist`, and `labels`, `occurred_at` and `payload_content_type` are required 4. Send `payload` as a string, with JSON serialised inside it, up to 512 KiB 5. Set `HOOK0_API_URL` for `hook0-mcp` to the origin without `/api/v1`, and set `HOOK0_READ_ONLY=true` to hide the ten write tools ### Upstash QStash 1. Use the regional host that matches the token. `qstash.upstash.io` is the EU region, and US tokens work only on `qstash-us-east-1.upstash.io` 2. Send `Upstash-Deduplication-Id` on every publish so a retried request isn't queued twice. The window is 10 minutes 3. Budget for retries. Per the pricing FAQ each delivery attempt is billed as a message, so set `Upstash-Retries` deliberately 4. Give monitoring agents the read-only token, and set `Upstash-Redact-Fields` on publish, because that token still reads message bodies and headers 5. Make the destination idempotent on `Upstash-Message-Id`. Delivery is at least once, and duplicates can follow a server restart ## Questions ### Which is better for AI agents, Hook0 or Upstash QStash? Upstash QStash scores 72.3 (BB) on agent readiness against Hook0's 64.6 (B), and leads in 2 of 7 scored categories. Hook0 leads on maintenance & community. ### Do Hook0 and Upstash QStash need an API key? Hook0 needs an API key. Upstash QStash takes an API key or an OAuth sign-in. ### Can an agent call Hook0 and Upstash QStash without installing anything? Hook0 runs on your own machine, with no hosted endpoint listed. Upstash QStash has a hosted endpoint at https://qstash.upstash.io/v2. ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.json, and with the fewest tokens: https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "hook0", "b": "upstash-qstash"}`. From a terminal: `anchor compare hook0 upstash-qstash` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/hook0.json and https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json ## Other comparisons with Hook0 or Upstash QStash - [Ably vs Hook0](https://www.anchorterminal.com/compare/ably-vs-hook0.md) - [Convoy vs Hook0](https://www.anchorterminal.com/compare/convoy-vs-hook0.md) - [Convoy vs Upstash QStash](https://www.anchorterminal.com/compare/convoy-vs-upstash-qstash.md) - [Hook0 vs Hookdeck](https://www.anchorterminal.com/compare/hook0-vs-hookdeck.md) - [Hook0 vs Pusher Channels](https://www.anchorterminal.com/compare/hook0-vs-pusher-channels.md) - [Hook0 vs Svix](https://www.anchorterminal.com/compare/hook0-vs-svix.md) - [Pusher Channels vs Upstash QStash](https://www.anchorterminal.com/compare/pusher-channels-vs-upstash-qstash.md) - [Svix vs Upstash QStash](https://www.anchorterminal.com/compare/svix-vs-upstash-qstash.md) - [Hookdeck vs Upstash QStash](https://www.anchorterminal.com/compare/hookdeck-vs-upstash-qstash.md) - [Ably vs Upstash QStash](https://www.anchorterminal.com/compare/ably-vs-upstash-qstash.md)