{
  "data": {
    "a": {
      "slug": "amazon-eventbridge",
      "name": "Amazon EventBridge",
      "vendor": "Amazon Web Services",
      "vendorUrl": "https://aws.amazon.com/eventbridge/",
      "kind": "http-api",
      "category": "webhooks",
      "summary": "Amazon EventBridge is AWS's serverless event bus. Applications, AWS services and SaaS partners publish events, and the bus routes them to targets such as Lambda functions, SQS queues and HTTPS endpoints. It includes Pipes, a scheduler and a schema registry.",
      "url": "https://www.anchorterminal.com/tools/amazon-eventbridge",
      "markdownUrl": "https://www.anchorterminal.com/tools/amazon-eventbridge.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-eventbridge.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-eventbridge.json",
      "repo": "https://github.com/aws/api-models-aws",
      "license": "Proprietary service under the AWS Customer Agreement. The AWS SDKs, the API models and the agent toolkit skill are Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://events.us-east-1.amazonaws.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@aws-sdk/client-eventbridge"
        },
        {
          "registry": "npm",
          "name": "@aws-sdk/client-eventbridgev2"
        }
      ],
      "auth": "mixed",
      "authNotes": "Requests are signed with AWS Signature Version 4 under the service name `events`, using IAM credentials. IAM identity policies and bus resource policies use the `events:` action prefix for both APIs. Access is self-serve with an AWS account. Another account publishes or subscribes through a Classic bus resource policy or, on the Custom Event Bus, a share through AWS Resource Access Manager. API destinations hold the target's own credentials in an AWS Secrets Manager secret.",
      "pricing": "usage",
      "pricingNotes": "Pay per use with no minimum charge. The pricing page's worked examples use $1.00 per million custom events on a Classic bus, $0.20 per million API destination invocations and, on the Custom Event Bus, $0.18 per GB published, $0.05 per GB sent to subscribers and $0.08 per GB-month of retention beyond 24 hours. AWS management events are free to ingest and Scheduler includes 14,000,000 free invocations a month. The per-Region price tables are drawn by script and were not read. New AWS customers get up to $200 in credits, and AWS says most can sign up without a payment method (https://aws.amazon.com/eventbridge/pricing/, https://aws.amazon.com/free/free-tier-faqs/).",
      "priceSummary": "$0.18 / GB",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the user guide index, the two API models or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 3198017,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.aws.amazon.com/eventbridge/",
      "llmsTxt": "https://docs.aws.amazon.com/eventbridge/latest/userguide/llms.txt",
      "capabilities": [
        "events.webhooks-send",
        "events.queue",
        "events.schedule"
      ],
      "tags": [
        "hosted",
        "llms-txt",
        "typescript",
        "cli",
        "webhooks",
        "queues",
        "agent-skills",
        "status-page",
        "soc2",
        "sla",
        "enterprise"
      ],
      "lastRelease": "2026-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.7,
        "grade": "BB",
        "agentReady": true,
        "rank": 83,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 75,
          "payments": 35,
          "reliability": 73,
          "schema": 82,
          "security": 88,
          "transparency": 87
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "IAM policies scope a credential to single actions and buses, and an SLA commits 99.99 per cent monthly uptime per Region. The Custom Event Bus API of 24 September 2026 adds retention, replay, ordering and publish-time deduplication. Classic `PutEvents` takes no idempotency token and answers 200 for a bus that does not exist. A person must open the AWS account.",
        "bestFor": "Teams already on AWS that want events routed between AWS services, their own code and outside HTTPS endpoints under IAM, with retention and replay on the bus.",
        "strengths": [
          "Smithy models published for both APIs, 57 Classic operations and 25 for the Custom Event Bus, with llms.txt and a Markdown twin of each guide page",
          "99.99 per cent monthly uptime commitment per Region under the Amazon EventBridge SLA, last updated 2 May 2022",
          "The Custom Event Bus keeps every event for 1 to 365 days, replays from a point in time, orders by event group and suppresses duplicates for 300 seconds",
          "IAM identity and bus resource policies per action, an `AmazonEventBridgeReadOnlyAccess` managed policy, and four AWS RAM permissions for buses shared across accounts",
          "Published quotas, with Classic `PutEvents` at 10,000 requests a second in US East (N. Virginia) and 400 in the smallest Regions"
        ],
        "weaknesses": [
          "Classic `PutEvents` has no idempotency token or deduplication, and failed entries come back inside a successful response for the caller to resend",
          "A Classic `PutEvents` call that names a bus that does not exist returns 200 and the event is dropped, per the user guide",
          "API destination connections carry Basic, OAuth client credentials or API key authorisation only. No request signature was found, and the target has 5 seconds to answer",
          "A Custom Event Bus subscriber stops after 5 attempts or 300 seconds by default, and without a dead-letter queue the event is dropped with only a metric",
          "The Custom Event Bus model declares the Smithy RPC v2 CBOR protocol only, and subscriber filters and JSONata transformers travel as strings"
        ],
        "agentNotes": [
          "Use `aws eventsv2` and the `EventBridgeV2` SDK client for the Custom Event Bus, but write IAM actions with the `events:` prefix. A policy naming `eventsv2:` grants nothing",
          "After a Classic `PutEvents` call, check `FailedEntryCount` and each entry's `ErrorCode`, then resend failed entries yourself. A request holds up to 10 entries and under 1 MB",
          "Set `SystemMetadata.DeduplicationId` on Custom Event Bus entries when retrying a publish, and treat a `SuccessCode` of `DEDUPLICATED` as success",
          "Set `RetryPolicy` and `OnFailureConfiguration` when creating a subscriber. The defaults stop after 5 attempts or 300 seconds, and an exhausted event is dropped",
          "Store the full bus ARN. A Custom Event Bus ARN ends in a generated identifier that changes when a bus of the same name is recreated"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.7
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 75,
          "payments": 35,
          "reliability": 73,
          "schema": 82,
          "security": 88,
          "transparency": 78
        },
        "provenanceScore": 95
      },
      "letme": {
        "capability": "https://letme.dev/events.webhooks-send",
        "tool": "https://letme.dev/amazon-eventbridge"
      },
      "sameCompany": [
        "amazon-bedrock-customization",
        "agentcore-code-interpreter",
        "amazon-textract",
        "aws-end-user-messaging",
        "amazon-sns",
        "amazon-s3"
      ],
      "area": "developer",
      "unitPrices": [
        {
          "item": "Custom or partner event ingested, Classic bus",
          "unit": "message",
          "usd": 0.000001,
          "note": "$1.00 per million in the pricing page's worked examples. Each 64 KB of payload counts as one event. AWS management events are free"
        },
        {
          "item": "API destination invocation",
          "unit": "message",
          "usd": 2e-7,
          "note": "$0.20 per million in the pricing page's worked example, per 64 KB, plus data transfer"
        },
        {
          "item": "Event data published, Custom Event Bus",
          "unit": "gb",
          "usd": 0.18,
          "note": "First 5 TB a month, $0.12 in the next tier, per the worked example. Events round up to the nearest 1 KB"
        },
        {
          "item": "Event data sent to subscribers, Custom Event Bus",
          "unit": "gb",
          "usd": 0.05,
          "note": "Per the worked example. Retries are charged as further egress"
        },
        {
          "item": "Retention beyond 24 hours, Custom Event Bus",
          "unit": "gb-month",
          "usd": 0.08,
          "note": "The first 24 hours are included"
        },
        {
          "item": "Pipes requests after filtering",
          "unit": "1k-requests",
          "usd": 0.0004,
          "note": "$0.40 per million in the worked example, per 64 KB"
        },
        {
          "item": "Scheduler invocations",
          "unit": "1k-requests",
          "usd": 0.001,
          "note": "$1.00 per million after 14,000,000 free a month"
        }
      ],
      "provenance": {
        "legalEntity": "Amazon Web Services, Inc.",
        "domain": "amazonaws.com",
        "domainRegistered": "2005-08-18",
        "endpointOnVendorDomain": true,
        "terms": "https://aws.amazon.com/agreement/",
        "privacy": "https://aws.amazon.com/privacy/",
        "statusPage": "https://health.aws.amazon.com/health/status",
        "changelog": "https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-document-history.md",
        "securityTxt": "expired",
        "checked": "2026-10-09",
        "notes": [
          "The AWS Customer Agreement (last updated 14 August 2026) governs use of the service, with other AWS entities as contracting party by account country. Section 1.5 promises at least 12 months' notice before a material functionality of a generally available service is discontinued, with exceptions for emergencies, third-party claims and law.",
          "The AWS Service Terms (last updated 1 October 2026) have no section naming Amazon EventBridge. Section 1.8 allows benchmarks of the services, on condition that enough is disclosed to replicate them (https://aws.amazon.com/service-terms/).",
          "The AWS Privacy Notice (last updated 18 May 2026) says it does not apply to content customers process with AWS services, which the agreement governs.",
          "https://aws.amazon.com/.well-known/security.txt carries Expires 2026-09-24T16:25:03.000Z, so it had expired on 9 October 2026. It names a vulnerability disclosure programme on HackerOne.",
          "RDAP for amazonaws.com gives a registration date of 2005-08-18. The APIs answer at events.\u003cregion\u003e.amazonaws.com and eventsv2.\u003cregion\u003e.amazonaws.com, while product and legal pages sit on aws.amazon.com.",
          "The public service health page is drawn by script and showed our reader no text, so the incident history is unread."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-eventbridge.json",
      "live": {
        "slug": "amazon-eventbridge",
        "probe": {
          "target": "https://events.us-east-1.amazonaws.com",
          "method": "get",
          "lastAt": "2026-10-10T02:54:45.320251264Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 252,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 255,
          "p95ms24h": 326,
          "samples24h": 115,
          "samples30d": 115,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@aws-sdk/client-eventbridge",
            "version": "3.1148.0",
            "seenAt": "2026-10-09T16:38:33.868917617Z"
          },
          {
            "registry": "npm",
            "name": "@aws-sdk/client-eventbridgev2",
            "version": "3.1148.0",
            "seenAt": "2026-10-09T16:38:35.977795305Z"
          }
        ],
        "githubStars": 229,
        "npmWeekly": 3198017,
        "pages": [
          {
            "url": "https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-document-history.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:36:40.226872542Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "80ba6f1b0bf2"
          },
          {
            "url": "https://aws.amazon.com/eventbridge/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:33:01.95818769Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eec65d6af269"
          },
          {
            "url": "https://aws.amazon.com/agreement/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:32:54.040870298Z",
            "changedAt": "2026-10-09T18:32:54.040870298Z",
            "fingerprint": "535a92da3afa"
          }
        ],
        "updatedAt": "2026-10-10T02:54:45.320251264Z"
      }
    },
    "answer": "Amazon EventBridge scores 73.7 (BB) on agent readiness against Upstash QStash's 72.3 (BB), and leads in 3 of 7 scored categories. Upstash QStash leads on reliability, agent ergonomics and 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": 109,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 5,
        "methodology": "0.4",
        "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": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "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
      },
      "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-10T02:55:14.380387964Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 65,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 65,
          "p95ms24h": 104,
          "samples24h": 249,
          "samples30d": 373,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.upstash.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T02:50:50.388129082Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "upstash/qstash-js",
            "version": "v2.12.0",
            "released": "2026-09-29",
            "seenAt": "2026-10-09T17:26:23.881782598Z"
          },
          {
            "registry": "npm",
            "name": "@upstash/mcp-server",
            "version": "0.3.0",
            "seenAt": "2026-10-09T17:26:22.763531198Z"
          },
          {
            "registry": "npm",
            "name": "@upstash/qstash",
            "version": "2.12.0",
            "seenAt": "2026-10-09T17:26:21.655935434Z"
          },
          {
            "registry": "pypi",
            "name": "qstash",
            "version": "3.4.0",
            "released": "2026-03-18",
            "seenAt": "2026-10-09T17:26:22.578340174Z"
          }
        ],
        "githubStars": 269,
        "npmWeekly": 739734,
        "pypiWeekly": 87118,
        "securityTxt": {
          "url": "https://upstash.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-09-29T00:00:00.000Z",
          "checkedAt": "2026-10-09T15:40:33.259672118Z"
        },
        "llmsTxt": {
          "url": "https://upstash.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-09T14:02:57.079377439Z"
        },
        "pages": [
          {
            "url": "https://upstash.com/docs/qstash/overall/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:47:01.70252508Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1a6fc37bf667"
          },
          {
            "url": "https://upstash.com/pricing/qstash",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:47:05.816838521Z",
            "changedAt": "2026-10-09T18:47:05.816838521Z",
            "fingerprint": "b09c09f9dcaa"
          }
        ],
        "updatedAt": "2026-10-10T02:55:14.380387964Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Amazon Web Services",
        "b": "Upstash",
        "name": "Vendor"
      },
      {
        "a": "https://events.us-east-1.amazonaws.com",
        "b": "https://qstash.upstash.io/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "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": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the AWS Customer Agreement. The AWS SDKs, the API models and the agent toolkit skill are Apache-2.0",
        "b": "Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "10",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.upstash/mcp-server",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-24",
        "b": "2026-09-29",
        "name": "Last release"
      },
      {
        "a": "2026-08-14",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "2026-05-18",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "3.2M npm/wk",
        "b": "269 stars, 816k npm/wk, 91k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Amazon EventBridge scores 73.7 (BB) on agent readiness against Upstash QStash's 72.3 (BB), and leads in 3 of 7 scored categories. Upstash QStash leads on reliability, agent ergonomics and payments \u0026 pricing.",
        "question": "Which is better for AI agents, Amazon EventBridge or Upstash QStash?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Amazon EventBridge and Upstash QStash need an API key?"
      },
      {
        "answer": "Yes. Amazon EventBridge has a hosted endpoint at https://events.us-east-1.amazonaws.com and Upstash QStash at https://qstash.upstash.io/v2.",
        "question": "Can an agent call Amazon EventBridge and Upstash QStash without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 88 against 61",
          "Transparency \u0026 trust, 87 against 81"
        ],
        "also": null,
        "goodFor": "Teams already on AWS that want events routed between AWS services, their own code and outside HTTPS endpoints under IAM, with retention and replay on the bus.",
        "slug": "amazon-eventbridge",
        "watchFor": "Classic `PutEvents` has no idempotency token or deduplication, and failed entries come back inside a successful response for the caller to resend"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 73",
          "Agent ergonomics, 83 against 73",
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": [
          "Free to start without a card"
        ],
        "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.webhooks-send",
      "name": "Sending webhooks"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ably-vs-amazon-eventbridge.json",
        "title": "Ably vs Amazon EventBridge",
        "url": "https://www.anchorterminal.com/compare/ably-vs-amazon-eventbridge"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-convoy.json",
        "title": "Amazon EventBridge vs Convoy",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-convoy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hook0.json",
        "title": "Amazon EventBridge vs Hook0",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hook0"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hookdeck.json",
        "title": "Amazon EventBridge vs Hookdeck",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hookdeck"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pubnub.json",
        "title": "Amazon EventBridge vs PubNub",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pubnub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pusher-channels.json",
        "title": "Amazon EventBridge vs Pusher Channels",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pusher-channels"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-svix.json",
        "title": "Amazon EventBridge vs Svix",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-svix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-webhook-relay.json",
        "title": "Amazon EventBridge vs Webhook Relay",
        "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-webhook-relay"
      },
      {
        "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/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": [
      {
        "amazon-eventbridge": 73,
        "by": 10,
        "edge": "upstash-qstash",
        "key": "reliability",
        "name": "Reliability",
        "upstash-qstash": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-eventbridge": 82,
        "by": 4,
        "edge": "amazon-eventbridge",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "upstash-qstash": 78,
        "weight": 13
      },
      {
        "amazon-eventbridge": 73,
        "by": 10,
        "edge": "upstash-qstash",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "upstash-qstash": 83,
        "weight": 13
      },
      {
        "amazon-eventbridge": 88,
        "by": 27,
        "edge": "amazon-eventbridge",
        "key": "security",
        "name": "Security \u0026 auth",
        "upstash-qstash": 61,
        "weight": 14
      },
      {
        "amazon-eventbridge": 35,
        "by": 5,
        "edge": "upstash-qstash",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "upstash-qstash": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-eventbridge": 75,
        "by": 2,
        "edge": "upstash-qstash",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "upstash-qstash": 77,
        "weight": 7
      },
      {
        "amazon-eventbridge": 87,
        "by": 6,
        "edge": "amazon-eventbridge",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "upstash-qstash": 81,
        "weight": 7
      }
    ],
    "summary": "Amazon EventBridge scores 73.7 (BB) on agent readiness against Upstash QStash's 72.3 (BB), and leads in 3 of 7 scored categories. Upstash QStash leads on reliability, agent ergonomics and payments \u0026 pricing. Both do sending webhooks.",
    "verdicts": {
      "amazon-eventbridge": "IAM policies scope a credential to single actions and buses, and an SLA commits 99.99 per cent monthly uptime per Region. The Custom Event Bus API of 24 September 2026 adds retention, replay, ordering and publish-time deduplication. Classic `PutEvents` takes no idempotency token and answers 200 for a bus that does not exist. A person must open the AWS account.",
      "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/amazon-eventbridge-vs-upstash-qstash",
    "json": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.min.md"
  },
  "markdown": "Amazon EventBridge scores 73.7 (BB) on agent readiness against Upstash QStash's 72.3 (BB), and leads in 3 of 7 scored categories. Upstash QStash leads on reliability, agent ergonomics and payments \u0026 pricing. Both do sending webhooks.\n\n- Amazon EventBridge: grade BB, 73.7/100, rank #83 of 950. Markdown https://www.anchorterminal.com/tools/amazon-eventbridge.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-eventbridge.json\n- Upstash QStash: grade BB, 72.3/100, rank #109 of 950. 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 48 webhooks comparisons: https://www.anchorterminal.com/compare/webhooks/index.md\n\n## Which one, for what\n\n### Amazon EventBridge (BB)\n\nGood for: Teams already on AWS that want events routed between AWS services, their own code and outside HTTPS endpoints under IAM, with retention and replay on the bus.\n\nAhead on:\n- Security \u0026 auth, 88 against 61\n- Transparency \u0026 trust, 87 against 81\n\nWatch for: Classic `PutEvents` has no idempotency token or deduplication, and failed entries come back inside a successful response for the caller to resend\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 73\n- Agent ergonomics, 83 against 73\n- Payments \u0026 pricing, 40 against 35\n\nAlso in its favour:\n- Free to start without a card\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 | Amazon EventBridge | Upstash QStash | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 73 | 83 | Upstash QStash +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 78 | Amazon EventBridge +4 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 83 | Upstash QStash +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 88 | 61 | Amazon EventBridge +27 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Upstash QStash +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 77 | Upstash QStash +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 87 | 81 | Amazon EventBridge +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **73.7 · BB** | **72.3 · BB** | |\n\n## Facts side by side\n\n| Fact | Amazon EventBridge | Upstash QStash |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Amazon Web Services | Upstash |\n| Hosted endpoint | `https://events.us-east-1.amazonaws.com` | `https://qstash.upstash.io/v2` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under the AWS Customer Agreement. The AWS SDKs, the API models and the agent toolkit skill are Apache-2.0 | Proprietary hosted service under Upstash's terms of service. The TypeScript and Python SDKs and the MCP server are MIT |\n| Tools exposed | none | 10 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.upstash/mcp-server` |\n| Last release | 2026-09-24 | 2026-09-29 |\n| Terms last updated | 2026-08-14 |  |\n| Privacy policy last updated | 2026-05-18 |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | yes |  |\n| Popularity | 3.2M npm/wk | 269 stars, 816k npm/wk, 91k PyPI/wk |\n\n## Verdicts\n\n**Amazon EventBridge.** IAM policies scope a credential to single actions and buses, and an SLA commits 99.99 per cent monthly uptime per Region. The Custom Event Bus API of 24 September 2026 adds retention, replay, ordering and publish-time deduplication. Classic `PutEvents` takes no idempotency token and answers 200 for a bus that does not exist. A person must open the AWS account.\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### Amazon EventBridge\n\n1. Use `aws eventsv2` and the `EventBridgeV2` SDK client for the Custom Event Bus, but write IAM actions with the `events:` prefix. A policy naming `eventsv2:` grants nothing\n2. After a Classic `PutEvents` call, check `FailedEntryCount` and each entry's `ErrorCode`, then resend failed entries yourself. A request holds up to 10 entries and under 1 MB\n3. Set `SystemMetadata.DeduplicationId` on Custom Event Bus entries when retrying a publish, and treat a `SuccessCode` of `DEDUPLICATED` as success\n4. Set `RetryPolicy` and `OnFailureConfiguration` when creating a subscriber. The defaults stop after 5 attempts or 300 seconds, and an exhausted event is dropped\n5. Store the full bus ARN. A Custom Event Bus ARN ends in a generated identifier that changes when a bus of the same name is recreated\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, Amazon EventBridge or Upstash QStash?\n\nAmazon EventBridge scores 73.7 (BB) on agent readiness against Upstash QStash's 72.3 (BB), and leads in 3 of 7 scored categories. Upstash QStash leads on reliability, agent ergonomics and payments \u0026 pricing.\n\n### Do Amazon EventBridge and Upstash QStash need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Amazon EventBridge and Upstash QStash without installing anything?\n\nYes. Amazon EventBridge has a hosted endpoint at https://events.us-east-1.amazonaws.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/amazon-eventbridge-vs-upstash-qstash.json, and with the fewest tokens: https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"amazon-eventbridge\", \"b\": \"upstash-qstash\"}`. From a terminal: `anchor compare amazon-eventbridge upstash-qstash`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/amazon-eventbridge.json and https://www.anchorterminal.com/api/v1/tools/upstash-qstash.json\n\n## Other comparisons with Amazon EventBridge or Upstash QStash\n\n- [Ably vs Amazon EventBridge](https://www.anchorterminal.com/compare/ably-vs-amazon-eventbridge.md)\n- [Amazon EventBridge vs Convoy](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-convoy.md)\n- [Amazon EventBridge vs Hook0](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hook0.md)\n- [Amazon EventBridge vs Hookdeck](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-hookdeck.md)\n- [Amazon EventBridge vs PubNub](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pubnub.md)\n- [Amazon EventBridge vs Pusher Channels](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-pusher-channels.md)\n- [Amazon EventBridge vs Svix](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-svix.md)\n- [Amazon EventBridge vs Webhook Relay](https://www.anchorterminal.com/compare/amazon-eventbridge-vs-webhook-relay.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- [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)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "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": "Amazon EventBridge vs Upstash QStash",
        "url": ""
      }
    ],
    "description": "Amazon EventBridge scores 73.7 (BB) to Upstash QStash's 72.3 (BB) for sending webhooks. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Amazon EventBridge BB 73.7",
      "Upstash QStash BB 72.3",
      "scores"
    ],
    "h1": "Amazon EventBridge vs Upstash QStash",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-eventbridge-vs-upstash-qstash.png",
    "path": "/compare/amazon-eventbridge-vs-upstash-qstash",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon EventBridge vs Upstash QStash for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/amazon-eventbridge-vs-upstash-qstash"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 780
  },
  "version": 1
}
