{
  "data": {
    "a": {
      "slug": "402cron",
      "name": "402cron",
      "vendor": "Georgi Kalchev",
      "vendorUrl": "https://402cron.com",
      "kind": "http-api",
      "category": "webhooks",
      "summary": "402cron is a hosted cron service that calls an agent's HTTPS endpoint on schedule with a signed request and bills one prepaid delivery per attempt. Agents pay by x402 in USDC on Base and manage tasks over REST or MCP.",
      "url": "https://www.anchorterminal.com/tools/402cron",
      "markdownUrl": "https://www.anchorterminal.com/tools/402cron.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/402cron.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/402cron.json",
      "repo": "https://github.com/402cron/402cron",
      "license": "Proprietary hosted service under 402cron's terms of service, effective 23 October 2026. The server's source isn't published. The docs and examples repository is MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://402cron.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "No account, password or card. `GET /buy/{pack}` answers 402 with x402 payment requirements; a paid repeat answers 200 with a management token, shown once and tied to the wallet that paid. Every `/api/` call sends it as `Authorization: Bearer \u003ctoken\u003e`. One token per wallet, no scopes and no read-only token. Rotation is another purchase from the same wallet with `?rotate=1` (the $0.02 trial pack is the cheapest), which kills the old token at once. `/api/pricing`, `/health`, `/docs` and the MCP tools `get_pricing`, `get_docs` and `get_service_status` need no token.",
      "pricing": "usage",
      "pricingNotes": "Prepaid packs paid by x402 in USDC on Base, counted in delivery attempts that never expire. Trial 20 attempts for $0.02 ($0.001 each), starter 2,000 for $1 and month 50,000 for $25 ($0.0005 each), per https://402cron.com/api/pricing on 30 October 2026. Every attempt is charged, whether the endpoint answered 2xx, 4xx or 5xx, timed out or was unreachable. 402cron's own failures and skipped overlapping runs aren't charged, and a failing cycle costs at most 3 attempts. The trial isn't free, and no card is involved (checked 2026-10-30).",
      "priceSummary": "$0.02 / call",
      "where": "hosted",
      "x402": {
        "level": "yes",
        "evidence": "x402 v2 (v1 with `?x402Version=1`) on the three pack URLs, USDC on Base (eip155:8453), settled through the Coinbase CDP facilitator per the privacy policy, with the requirements in the PAYMENT-REQUIRED header and the body. Documented in the OpenAPI file, /docs, llms.txt and /.well-known/x402, which lists the trial and starter URLs. Read on 2026-10-30; we didn't request the 402 challenge, by the batch's rules.",
        "endpoints": [
          {
            "url": "https://402cron.com/buy/trial",
            "priceUsd": 0.02,
            "network": "eip155:8453"
          },
          {
            "url": "https://402cron.com/buy/starter",
            "priceUsd": 1,
            "network": "eip155:8453"
          },
          {
            "url": "https://402cron.com/buy/month",
            "priceUsd": 25,
            "network": "eip155:8453"
          }
        ]
      },
      "toolCount": 16,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-30"
      },
      "docsUrl": "https://402cron.com/docs",
      "llmsTxt": "https://402cron.com/llms.txt",
      "openapi": "https://402cron.com/openapi.json",
      "registryName": "com.402cron/402cron",
      "capabilities": [
        "events.schedule",
        "events.webhooks-send"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "x402",
        "prepaid",
        "usage-priced",
        "no-card",
        "webhooks",
        "new"
      ],
      "lastRelease": "2026-10-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.5,
        "grade": "B",
        "agentReady": false,
        "rank": 452,
        "ranked": true,
        "rankOf": 1226,
        "categoryRank": 9,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 62,
          "payments": 86,
          "reliability": 45,
          "schema": 81,
          "security": 41,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-30"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 file with 20 operations, an error catalogue of 57 entries, and x402 purchase with no account, so an agent can start alone for $0.02. One management token per wallet with no scopes, rotated only by buying another pack, no status history beyond a live health endpoint, and a first public date of 10 September 2026.",
        "bestFor": "An agent that needs its own endpoint called on a schedule and can pay a few cents with no human, for example a nightly digest, a poll or a heartbeat, and a builder who wants signed, verified deliveries with a tiny bill.",
        "strengths": [
          "An agent can buy credits, register and verify a destination and schedule a task with no account, card or human step, paying $0.02 for 20 attempts by x402",
          "A public OpenAPI 3.1 file with 20 operations, a JSON docs document with `?section=` and an llms.txt, all on the vendor's domain",
          "Signed deliveries with a stable delivery id across retries, a documented canonical string, and verification examples in Node and Python in the MIT repository",
          "Refusals carry stable snake_case codes with `retryable`, `retryTomorrow` and `retryAfterSeconds` fields, and the payment path says which 500 must never be retried",
          "The privacy policy states a retention period for every record it names and the parties that see data"
        ],
        "weaknesses": [
          "One management token per wallet with no scopes or read-only token, rotated only by buying another pack with `?rotate=1`",
          "No status page or incident history; /health reports the live state only, and no SLA is published",
          "No security.txt, disclosure policy, bug bounty or certification was found",
          "No endpoint returns the delivery log the privacy policy says is kept 90 days; a task shows only counters and the last run time",
          "The service's first public date is 10 September 2026, the domain was registered on 22 August 2026, and the two GitHub issues on the docs repository have no reply",
          "Schedules are 5-field cron in UTC at one-minute resolution with no time zones, and a run is skipped while the previous one is still in flight"
        ],
        "agentNotes": [
          "Buy first with `GET /buy/trial`, pay the 402 with a stock x402 client, and store the management token from the 200 body. It's shown once; losing it costs another purchase with `?rotate=1`.",
          "Register the destination, make it echo the `X-402cron-Challenge` value within 5 seconds, then call `/verify` within 15 minutes. A fixed-response catch URL can't pass.",
          "Branch on the `error` code and the HTTP status, never on `message`. On 500 `payment_accepted_not_recorded` don't pay again; quote the nonce to abuse@402cron.com.",
          "Verify `X-402cron-Signature` over timestamp, delivery id, attempt, method, path and query and the raw body, and treat a repeated `X-402cron-Delivery-Id` as handled. Delivery is at least once.",
          "Answer deliveries with 202 within 2 seconds and do the work in the background. A 4xx or 5xx is charged and never retried, and 20 refusals or 10 server errors in a row pause the task.",
          "Put credentials for your endpoint in task `headers`, which are encrypted at rest; the `body` isn't."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63.5
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 62,
          "payments": 86,
          "reliability": 45,
          "schema": 81,
          "security": 41,
          "transparency": 66
        },
        "provenanceScore": 61,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-30",
            "maintenance": "2026-10-30",
            "payments": "2026-10-30",
            "reliability": "2026-10-30",
            "schema": "2026-10-30",
            "security": "2026-10-30",
            "transparency": "2026-10-30"
          },
          "last": "2026-10-30",
          "oldest": "2026-10-30",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -i https://402cron.com/buy/trial",
        "claudeCode": "claude mcp add --transport http 402cron https://402cron.com/mcp --header \"Authorization: Bearer $CRON402_TOKEN\"",
        "config": {
          "mcpServers": {
            "402cron": {
              "headers": {
                "Authorization": "Bearer \u003cmanagement token\u003e"
              },
              "url": "https://402cron.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/events.schedule",
        "tool": "https://letme.dev/402cron"
      },
      "area": "developer",
      "unitPrices": [
        {
          "item": "Delivery attempt, trial pack (20 attempts for $0.02)",
          "unit": "call",
          "usd": 0.001,
          "note": "Paid by x402 in USDC on Base, per /api/pricing on 30 October 2026. Charged per attempt, including 4xx, 5xx, timeouts and unreachable hosts"
        },
        {
          "item": "Delivery attempt, starter (2,000 for $1) and month (50,000 for $25) packs",
          "unit": "call",
          "usd": 0.0005,
          "note": "The volume rate, called an intro price for the starter pack, per /api/pricing on 30 October 2026. Credits never expire"
        },
        {
          "item": "1,000 delivery attempts at the volume rate",
          "unit": "1k-calls",
          "usd": 0.5,
          "note": "Prepaid in packs of 2,000 or 50,000 attempts, per /api/pricing on 30 October 2026"
        }
      ],
      "provenance": {
        "legalEntity": "Georgi Kalchev (operator, a named person; no company named)",
        "domain": "402cron.com",
        "domainRegistered": "2026-08-22",
        "endpointOnVendorDomain": true,
        "terms": "https://402cron.com/terms",
        "privacy": "https://402cron.com/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-30",
        "notes": [
          "The terms and the privacy policy, both effective 23 October 2026, say \"Operated by Georgi Kalchev\" with abuse@402cron.com as the contact. No company, registration number or address is given anywhere on the site.",
          "RDAP for 402cron.com gives a registration date of 2026-08-22 and a last change on 2026-08-27.",
          "The API, the MCP endpoint, the A2A endpoint and all manifests are on 402cron.com.",
          "No status page exists; /health is a live liveness check. /status and /changelog answer 404. /.well-known/security.txt and /security.txt answer 404.",
          "The official MCP registry lists com.402cron/402cron 1.0.0 on 10 September 2026 (repository gitlab.com/georgikalchev/402cron) and 1.0.1 on 21 September 2026 (repository github.com/402cron/402cron). The GitLab page answered 403 behind a bot check and wasn't read.",
          "firstReleased is the registry's 10 September 2026 entry, the earliest first-hand date found; the first Wayback Machine capture of the home page is 13 September 2026. lastRelease is the 9 October 2026 README commit recording the starter pack's change to 2,000 deliveries for $1."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/402cron.json",
      "live": {
        "slug": "402cron",
        "probe": {
          "target": "https://402cron.com",
          "method": "get",
          "lastAt": "2026-10-30T13:20:07.465738146Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 115,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 115,
          "p95ms24h": 348,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-30",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "updatedAt": "2026-10-30T13:20:07.465738146Z"
      }
    },
    "answer": "Upstash QStash scores 72.3 (BB) on agent readiness against 402cron's 63.5 (B), and leads in 5 of 7 scored categories. 402cron leads on payments \u0026 pricing.",
    "b": {
      "slug": "upstash-qstash",
      "name": "Upstash QStash",
      "vendor": "Upstash",
      "vendorUrl": "https://upstash.com/qstash",
      "kind": "http-api",
      "category": "webhooks",
      "summary": "Upstash QStash is a hosted HTTP message queue and scheduler. A caller publishes a request to its REST API, and QStash sends it to a public URL with retries, delays, cron schedules, FIFO queues and signed requests.",
      "url": "https://www.anchorterminal.com/tools/upstash-qstash",
      "markdownUrl": "https://www.anchorterminal.com/tools/upstash-qstash.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/upstash-qstash.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json",
      "repo": "https://github.com/upstash/qstash-js",
      "license": "Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://qstash.upstash.io/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@upstash/qstash"
        },
        {
          "registry": "pypi",
          "name": "qstash"
        },
        {
          "registry": "npm",
          "name": "@upstash/mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A person signs up at console.upstash.com and copies `QSTASH_TOKEN` for a region, sent as a Bearer token or, as a documented option, in a `qstash_token` query parameter. Each region has one full-access token and one read-only token, and resetting the token revokes the old one. The hosted MCP server uses OAuth with a per-client, revocable grant that can be read-only, or account email plus a Developer API key, which can be read-only and can expire.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with 1,000 messages a day and no card. Pay as you go is $1 per 100,000 messages with 50 GB of bandwidth a month free, then $0.05 per GB. Fixed plans are $180 a month for 1M messages a day and $420 for 10M. Enterprise by quote. The pricing FAQ bills each delivery attempt, retries included, while the Markdown version of the page also says retries are free. The price of the Prod Pack add-on wasn't found (https://upstash.com/pricing/qstash).",
      "priceSummary": "$0.05 / GB",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the QStash docs, the OpenAPI file or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 10,
      "popularity": {
        "githubStars": 269,
        "npmWeekly": 816190,
        "pypiWeekly": 90589,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://upstash.com/docs/qstash/overall/getstarted",
      "llmsTxt": "https://upstash.com/docs/llms.txt",
      "openapi": "https://upstash.com/docs/qstash/openapi.yaml",
      "registryName": "io.github.upstash/mcp-server",
      "capabilities": [
        "events.queue",
        "events.schedule",
        "events.webhooks-send",
        "events.webhooks-receive"
      ],
      "tags": [
        "hosted",
        "freemium",
        "no-card",
        "free-tier",
        "openapi",
        "mcp",
        "llms-txt",
        "closed-source",
        "typescript",
        "python",
        "status-page"
      ],
      "lastRelease": "2026-09-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 72.3,
        "grade": "BB",
        "agentReady": true,
        "rank": 115,
        "ranked": true,
        "rankOf": 1226,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 77,
          "payments": 40,
          "reliability": 83,
          "schema": 78,
          "security": 61,
          "transparency": 81
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Agents and serverless apps that need a delayed, retried or scheduled HTTP call without running a queue.",
        "strengths": [
          "Public OpenAPI 3.1 file with 43 operations for messages, queues, schedules, URL groups, the dead letter queue, logs and signing keys",
          "Retries default to 3 with exponential backoff capped at one day, and a destination's `Retry-After` header is honoured",
          "`Upstash-Deduplication-Id` makes a repeated publish safe for 10 minutes, with 202 returned for a duplicate",
          "Every request to the destination carries an HS256 JWT in `Upstash-Signature`, with two signing keys so rotation needs no downtime",
          "Free plan of 1,000 messages a day with no card, then $1 per 100,000 messages"
        ],
        "weaknesses": [
          "One full-access token and one read-only token per region. No per-queue or per-destination scopes were found",
          "The token is accepted as a `qstash_token` query parameter, which the webhook receiver guide relies on",
          "The Markdown pricing page says retries are free and, in its FAQ, that each retry is billed as a message",
          "Two QStash incidents in us-east-1 in 90 days, on 16 July and 28 August 2026, both under 15 minutes",
          "The docs changelog stops at February 2026, and the Python SDK last shipped on 18 March 2026"
        ],
        "agentNotes": [
          "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`",
          "Send `Upstash-Deduplication-Id` on every publish so a retried request isn't queued twice. The window is 10 minutes",
          "Budget for retries. Per the pricing FAQ each delivery attempt is billed as a message, so set `Upstash-Retries` deliberately",
          "Give monitoring agents the read-only token, and set `Upstash-Redact-Fields` on publish, because that token still reads message bodies and headers",
          "Make the destination idempotent on `Upstash-Message-Id`. Delivery is at least once, and duplicates can follow a server restart"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 72.3
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 77,
          "payments": 40,
          "reliability": 83,
          "schema": 78,
          "security": 61,
          "transparency": 62
        },
        "provenanceScore": 100,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-08",
            "maintenance": "2026-10-08",
            "payments": "2026-10-08",
            "reliability": "2026-10-08",
            "schema": "2026-10-08",
            "security": "2026-10-08",
            "transparency": "2026-10-08"
          },
          "last": "2026-10-08",
          "oldest": "2026-10-08",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @upstash/qstash",
        "http": "curl -XPOST \\\n    -H 'Authorization: Bearer \u003cQSTASH_TOKEN\u003e' \\\n    -H \"Content-type: application/json\" \\\n    -d '{ \"hello\": \"world\" }' \\\n    'https://qstash.upstash.io/v2/publish/https://\u003cyour-api-url\u003e'",
        "claudeCode": "claude mcp add --scope user --transport http upstash https://mcp.upstash.com/mcp",
        "config": {
          "mcpServers": {
            "upstash": {
              "url": "https://mcp.upstash.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/events.queue",
        "tool": "https://letme.dev/upstash-qstash"
      },
      "sameCompany": [
        "upstash-vector"
      ],
      "area": "developer",
      "unitPrices": [
        {
          "item": "Pay as you go message",
          "unit": "message",
          "usd": 0.00001,
          "note": "$1 per 100,000 messages. The pricing FAQ counts each delivery attempt as a message"
        },
        {
          "item": "Bandwidth over 50 GB a month",
          "unit": "gb",
          "usd": 0.05,
          "note": "pay as you go"
        },
        {
          "item": "Fixed 1M plan",
          "unit": "month",
          "usd": 180,
          "note": "1M messages a day, 1 TB bandwidth, 50 MB messages"
        },
        {
          "item": "Fixed 10M plan",
          "unit": "month",
          "usd": 420,
          "note": "10M messages a day, 5 TB bandwidth, 50 MB messages"
        }
      ],
      "provenance": {
        "legalEntity": "Upstash, Inc.",
        "domain": "upstash.com",
        "domainRegistered": "2015-06-23",
        "endpointOnVendorDomain": true,
        "terms": "https://upstash.com/trust/terms.pdf",
        "privacy": "https://upstash.com/trust/privacy.pdf",
        "statusPage": "https://status.upstash.com",
        "changelog": "https://upstash.com/docs/qstash/overall/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms of service (last updated April 2025) name Upstash, Inc., a Delaware corporation, and list upstash.io subdomains as Upstash-owned. The QStash API answers at qstash.upstash.io and qstash-us-east-1.upstash.io.",
          "upstash.com/.well-known/security.txt names security@upstash.com, expires on 29 September 2027 and links a vulnerability disclosure policy last updated in September 2026.",
          "RDAP for upstash.com gives a registration date of 2015-06-23.",
          "The docs changelog says changes moved to GitHub Discussions from October 2025. Its own last entry is February 2026."
        ],
        "score": 100
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/upstash-qstash.json",
      "live": {
        "slug": "upstash-qstash",
        "probe": {
          "target": "https://qstash.upstash.io/v2",
          "method": "get",
          "lastAt": "2026-10-30T13:20:41.457481133Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 67,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 71,
          "p95ms24h": 119,
          "samples24h": 249,
          "samples30d": 5496,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 139,
              "ok": 139
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.upstash.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-30T13:13:29.000101876Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "upstash/qstash-js",
            "version": "v2.12.1",
            "released": "2026-10-20",
            "seenAt": "2026-10-29T13:48:34.44429349Z"
          },
          {
            "registry": "npm",
            "name": "@upstash/mcp-server",
            "version": "0.4.0",
            "seenAt": "2026-10-29T13:48:33.763534808Z"
          },
          {
            "registry": "npm",
            "name": "@upstash/qstash",
            "version": "2.12.1",
            "seenAt": "2026-10-29T13:48:32.200391973Z"
          },
          {
            "registry": "pypi",
            "name": "qstash",
            "version": "3.4.0",
            "released": "2026-03-18",
            "seenAt": "2026-10-29T13:48:33.483667177Z"
          }
        ],
        "githubStars": 271,
        "npmWeekly": 742058,
        "pypiWeekly": 98871,
        "securityTxt": {
          "url": "https://upstash.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-09-29T00:00:00.000Z",
          "checkedAt": "2026-10-29T15:36:27.529427128Z"
        },
        "llmsTxt": {
          "url": "https://upstash.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-29T15:05:51.35413685Z"
        },
        "domain": {
          "domain": "upstash.com",
          "registered": "2015-06-23",
          "source": "https://rdap.verisign.com/com/v1/domain/upstash.com",
          "checkedAt": "2026-10-25T14:02:05.02471679Z"
        },
        "pages": [
          {
            "url": "https://upstash.com/docs/qstash/overall/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-30T05:51:04.878790184Z",
            "changedAt": "2026-10-24T02:27:43.738261524Z",
            "fingerprint": "cdddc1eee40d"
          },
          {
            "url": "https://upstash.com/pricing/qstash",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-30T05:51:08.955132424Z",
            "changedAt": "2026-10-22T01:27:56.318232958Z",
            "fingerprint": "70ea09c1c642"
          }
        ],
        "github": {
          "repo": "upstash/qstash-js",
          "checkedAt": "2026-10-26T08:14:03.634139239Z",
          "stars": 272,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T06:00:49Z",
          "openIssues": 9,
          "openPRs": 2,
          "issuesOpened90d": 1,
          "issuesClosed90d": 2,
          "prsMerged90d": 10,
          "replies": {
            "sampled": 25,
            "unanswered": 5,
            "medianDays": 4.3
          }
        },
        "updatedAt": "2026-10-30T13:20:41.457481133Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Georgi Kalchev",
        "b": "Upstash",
        "name": "Vendor"
      },
      {
        "a": "https://402cron.com",
        "b": "https://qstash.upstash.io/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "yes, from $0.02/call",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under 402cron's terms of service, effective 23 October 2026. The server's source isn't published. The docs and examples repository is MIT",
        "b": "Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT",
        "name": "Licence"
      },
      {
        "a": "16",
        "b": "10",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "com.402cron/402cron",
        "b": "io.github.upstash/mcp-server",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-09",
        "b": "2026-09-29",
        "name": "Last release"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "0 stars",
        "b": "269 stars, 816k npm/wk, 91k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Upstash QStash scores 72.3 (BB) on agent readiness against 402cron's 63.5 (B), and leads in 5 of 7 scored categories. 402cron leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, 402cron or Upstash QStash?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in. An agent can also pay 402cron per call over x402, with no account.",
        "question": "Do 402cron and Upstash QStash need an API key?"
      },
      {
        "answer": "Yes. 402cron has a hosted endpoint at https://402cron.com and Upstash QStash at https://qstash.upstash.io/v2.",
        "question": "Can an agent call 402cron and Upstash QStash without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 86 against 40"
        ],
        "also": [
          "An agent can pay per call over x402, with no account"
        ],
        "goodFor": "An agent that needs its own endpoint called on a schedule and can pay a few cents with no human, for example a nightly digest, a poll or a heartbeat, and a builder who wants signed, verified deliveries with a tiny bill.",
        "slug": "402cron",
        "watchFor": "One management token per wallet with no scopes or read-only token, rotated only by buying another pack with `?rotate=1`"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 45",
          "Agent ergonomics, 83 against 76",
          "Security \u0026 auth, 61 against 41",
          "Maintenance \u0026 community, 77 against 62",
          "Transparency \u0026 trust, 81 against 64"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Agents and serverless apps that need a delayed, retried or scheduled HTTP call without running a queue.",
        "slug": "upstash-qstash",
        "watchFor": "One full-access token and one read-only token per region. No per-queue or per-destination scopes were found"
      }
    ],
    "job": {
      "capability": "events.schedule",
      "name": "Events schedule"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-ably.json",
        "title": "402cron vs Ably",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-ably"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-convoy.json",
        "title": "402cron vs Convoy",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-convoy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-hook0.json",
        "title": "402cron vs Hook0",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-hook0"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-hookdeck.json",
        "title": "402cron vs Hookdeck",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-hookdeck"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-pubnub.json",
        "title": "402cron vs PubNub",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-pubnub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-pusher-channels.json",
        "title": "402cron vs Pusher Channels",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-pusher-channels"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-svix.json",
        "title": "402cron vs Svix",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-svix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.json",
        "title": "Amazon EventBridge vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/convoy-vs-upstash-qstash.json",
        "title": "Convoy vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/convoy-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.json",
        "title": "Hook0 vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pubnub-vs-upstash-qstash.json",
        "title": "PubNub vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/pubnub-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pusher-channels-vs-upstash-qstash.json",
        "title": "Pusher Channels vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/pusher-channels-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/svix-vs-upstash-qstash.json",
        "title": "Svix vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/svix-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hookdeck-vs-upstash-qstash.json",
        "title": "Hookdeck vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/hookdeck-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-amazon-eventbridge.json",
        "title": "402cron vs Amazon EventBridge",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-amazon-eventbridge"
      },
      {
        "json": "https://www.anchorterminal.com/compare/402cron-vs-webhook-relay.json",
        "title": "402cron vs Webhook Relay",
        "url": "https://www.anchorterminal.com/compare/402cron-vs-webhook-relay"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ably-vs-upstash-qstash.json",
        "title": "Ably vs Upstash QStash",
        "url": "https://www.anchorterminal.com/compare/ably-vs-upstash-qstash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/upstash-qstash-vs-webhook-relay.json",
        "title": "Upstash QStash vs Webhook Relay",
        "url": "https://www.anchorterminal.com/compare/upstash-qstash-vs-webhook-relay"
      }
    ],
    "scores": [
      {
        "402cron": 45,
        "by": 38,
        "edge": "upstash-qstash",
        "key": "reliability",
        "name": "Reliability",
        "upstash-qstash": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "402cron": 81,
        "by": 3,
        "edge": "402cron",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "upstash-qstash": 78,
        "weight": 13
      },
      {
        "402cron": 76,
        "by": 7,
        "edge": "upstash-qstash",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "upstash-qstash": 83,
        "weight": 13
      },
      {
        "402cron": 41,
        "by": 20,
        "edge": "upstash-qstash",
        "key": "security",
        "name": "Security \u0026 auth",
        "upstash-qstash": 61,
        "weight": 14
      },
      {
        "402cron": 86,
        "by": 46,
        "edge": "402cron",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "upstash-qstash": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "402cron": 62,
        "by": 15,
        "edge": "upstash-qstash",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "upstash-qstash": 77,
        "weight": 7
      },
      {
        "402cron": 64,
        "by": 17,
        "edge": "upstash-qstash",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "upstash-qstash": 81,
        "weight": 7
      }
    ],
    "summary": "Upstash QStash scores 72.3 (BB) on agent readiness against 402cron's 63.5 (B), and leads in 5 of 7 scored categories. 402cron leads on payments \u0026 pricing. Both do events schedule. 402cron accepts x402. Upstash QStash doesn't.",
    "tutorials": [],
    "verdicts": {
      "402cron": "A public OpenAPI 3.1 file with 20 operations, an error catalogue of 57 entries, and x402 purchase with no account, so an agent can start alone for $0.02. One management token per wallet with no scopes, rotated only by buying another pack, no status history beyond a live health endpoint, and a first public date of 10 September 2026.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash",
    "json": "https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash.min.md"
  },
  "markdown": "Upstash QStash scores 72.3 (BB) on agent readiness against 402cron's 63.5 (B), and leads in 5 of 7 scored categories. 402cron leads on payments \u0026 pricing. Both do events schedule. 402cron accepts x402. Upstash QStash doesn't.\n\n- 402cron: grade B, 63.5/100, rank #452 of 1226. Markdown https://www.anchorterminal.com/tools/402cron.md · JSON https://www.anchorterminal.com/api/v1/tools/402cron.json\n- Upstash QStash: grade BB, 72.3/100, rank #115 of 1226. Markdown https://www.anchorterminal.com/tools/upstash-qstash.md · JSON https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json\n- Best webhook and event delivery infrastructure for AI agents: https://www.anchorterminal.com/best/webhooks/index.md\n- All 58 webhooks comparisons: https://www.anchorterminal.com/compare/webhooks/index.md\n\n## Which one, for what\n\n### 402cron (B)\n\nGood for: An agent that needs its own endpoint called on a schedule and can pay a few cents with no human, for example a nightly digest, a poll or a heartbeat, and a builder who wants signed, verified deliveries with a tiny bill.\n\nAhead on:\n- Payments \u0026 pricing, 86 against 40\n\nAlso in its favour:\n- An agent can pay per call over x402, with no account\n\nWatch for: One management token per wallet with no scopes or read-only token, rotated only by buying another pack with `?rotate=1`\n\n### Upstash QStash (BB)\n\nGood for: Agents and serverless apps that need a delayed, retried or scheduled HTTP call without running a queue.\n\nAhead on:\n- Reliability, 83 against 45\n- Agent ergonomics, 83 against 76\n- Security \u0026 auth, 61 against 41\n- Maintenance \u0026 community, 77 against 62\n- Transparency \u0026 trust, 81 against 64\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: One full-access token and one read-only token per region. No per-queue or per-destination scopes were found\n\n\n## Score by category\n\n| Category | Weight | 402cron | Upstash QStash | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 83 | Upstash QStash +38 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 81 | 78 | 402cron +3 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 83 | Upstash QStash +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 41 | 61 | Upstash QStash +20 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 86 | 40 | 402cron +46 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 62 | 77 | Upstash QStash +15 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 81 | Upstash QStash +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **63.5 · B** | **72.3 · BB** | |\n\n## Facts side by side\n\n| Fact | 402cron | Upstash QStash |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Georgi Kalchev | Upstash |\n| Hosted endpoint | `https://402cron.com` | `https://qstash.upstash.io/v2` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| x402 | yes, from $0.02/call | no |\n| Licence | Proprietary hosted service under 402cron's terms of service, effective 23 October 2026. The server's source isn't published. The docs and examples repository is MIT | Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT |\n| Tools exposed | 16 | 10 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | `com.402cron/402cron` | `io.github.upstash/mcp-server` |\n| Last release | 2026-10-09 | 2026-09-29 |\n| Terms last updated |  |  |\n| Privacy policy last updated |  |  |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 0 stars | 269 stars, 816k npm/wk, 91k PyPI/wk |\n| Agent reviews | none | 3.3/5 (4) |\n\n## Verdicts\n\n**402cron.** A public OpenAPI 3.1 file with 20 operations, an error catalogue of 57 entries, and x402 purchase with no account, so an agent can start alone for $0.02. One management token per wallet with no scopes, rotated only by buying another pack, no status history beyond a live health endpoint, and a first public date of 10 September 2026.\n\n**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.\n\n## Before you call either\n\n### 402cron\n\n1. Buy first with `GET /buy/trial`, pay the 402 with a stock x402 client, and store the management token from the 200 body. It's shown once; losing it costs another purchase with `?rotate=1`.\n2. Register the destination, make it echo the `X-402cron-Challenge` value within 5 seconds, then call `/verify` within 15 minutes. A fixed-response catch URL can't pass.\n3. Branch on the `error` code and the HTTP status, never on `message`. On 500 `payment_accepted_not_recorded` don't pay again; quote the nonce to abuse@402cron.com.\n4. Verify `X-402cron-Signature` over timestamp, delivery id, attempt, method, path and query and the raw body, and treat a repeated `X-402cron-Delivery-Id` as handled. Delivery is at least once.\n5. Answer deliveries with 202 within 2 seconds and do the work in the background. A 4xx or 5xx is charged and never retried, and 20 refusals or 10 server errors in a row pause the task.\n6. Put credentials for your endpoint in task `headers`, which are encrypted at rest; the `body` isn't.\n\n### Upstash QStash\n\n1. 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`\n2. Send `Upstash-Deduplication-Id` on every publish so a retried request isn't queued twice. The window is 10 minutes\n3. Budget for retries. Per the pricing FAQ each delivery attempt is billed as a message, so set `Upstash-Retries` deliberately\n4. Give monitoring agents the read-only token, and set `Upstash-Redact-Fields` on publish, because that token still reads message bodies and headers\n5. Make the destination idempotent on `Upstash-Message-Id`. Delivery is at least once, and duplicates can follow a server restart\n\n## Questions\n\n### Which is better for AI agents, 402cron or Upstash QStash?\n\nUpstash QStash scores 72.3 (BB) on agent readiness against 402cron's 63.5 (B), and leads in 5 of 7 scored categories. 402cron leads on payments \u0026 pricing.\n\n### Do 402cron and Upstash QStash need an API key?\n\nBoth take an API key or an OAuth sign-in. An agent can also pay 402cron per call over x402, with no account.\n\n### Can an agent call 402cron and Upstash QStash without installing anything?\n\nYes. 402cron has a hosted endpoint at https://402cron.com and Upstash QStash at https://qstash.upstash.io/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash.json, and with the fewest tokens: https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"402cron\", \"b\": \"upstash-qstash\"}`. From a terminal: `anchor compare 402cron upstash-qstash`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/402cron.json and https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json\n\n## Other comparisons with 402cron or Upstash QStash\n\n- [402cron vs Ably](https://www.anchorterminal.com/compare/402cron-vs-ably.md)\n- [402cron vs Convoy](https://www.anchorterminal.com/compare/402cron-vs-convoy.md)\n- [402cron vs Hook0](https://www.anchorterminal.com/compare/402cron-vs-hook0.md)\n- [402cron vs Hookdeck](https://www.anchorterminal.com/compare/402cron-vs-hookdeck.md)\n- [402cron vs PubNub](https://www.anchorterminal.com/compare/402cron-vs-pubnub.md)\n- [402cron vs Pusher Channels](https://www.anchorterminal.com/compare/402cron-vs-pusher-channels.md)\n- [402cron vs Svix](https://www.anchorterminal.com/compare/402cron-vs-svix.md)\n- [Amazon EventBridge vs Upstash QStash](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.md)\n- [Convoy vs Upstash QStash](https://www.anchorterminal.com/compare/convoy-vs-upstash-qstash.md)\n- [Hook0 vs Upstash QStash](https://www.anchorterminal.com/compare/hook0-vs-upstash-qstash.md)\n- [PubNub vs Upstash QStash](https://www.anchorterminal.com/compare/pubnub-vs-upstash-qstash.md)\n- [Pusher Channels vs Upstash QStash](https://www.anchorterminal.com/compare/pusher-channels-vs-upstash-qstash.md)\n- [Svix vs Upstash QStash](https://www.anchorterminal.com/compare/svix-vs-upstash-qstash.md)\n- [Hookdeck vs Upstash QStash](https://www.anchorterminal.com/compare/hookdeck-vs-upstash-qstash.md)\n- [402cron vs Amazon EventBridge](https://www.anchorterminal.com/compare/402cron-vs-amazon-eventbridge.md)\n- [402cron vs Webhook Relay](https://www.anchorterminal.com/compare/402cron-vs-webhook-relay.md)\n- [Ably vs Upstash QStash](https://www.anchorterminal.com/compare/ably-vs-upstash-qstash.md)\n- [Upstash QStash vs Webhook Relay](https://www.anchorterminal.com/compare/upstash-qstash-vs-webhook-relay.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-30",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "402cron vs Upstash QStash",
        "url": ""
      }
    ],
    "description": "Upstash QStash scores 72.3 (BB) to 402cron's 63.5 (B) for events schedule. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "402cron B 63.5",
      "Upstash QStash BB 72.3",
      "scores"
    ],
    "h1": "402cron vs Upstash QStash",
    "image": "https://www.anchorterminal.com/assets/og/compare-402cron-vs-upstash-qstash.png",
    "path": "/compare/402cron-vs-upstash-qstash",
    "published": "2026-10-01",
    "section": "tools",
    "title": "402cron vs Upstash QStash for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-30",
    "url": "https://www.anchorterminal.com/compare/402cron-vs-upstash-qstash"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 680
  },
  "version": 1
}
