{
  "data": {
    "a": {
      "slug": "amazon-sns",
      "name": "Amazon SNS",
      "vendor": "Amazon Web Services",
      "vendorUrl": "https://aws.amazon.com/sns/",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Amazon SNS is AWS's publish and subscribe messaging service. A message published to a topic, or directly to a device or phone number, goes out as mobile push, SMS, plain-text email, HTTPS calls or to SQS queues and Lambda functions.",
      "url": "https://www.anchorterminal.com/tools/amazon-sns",
      "markdownUrl": "https://www.anchorterminal.com/tools/amazon-sns.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-sns.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-sns.json",
      "repo": "https://github.com/aws/api-models-aws",
      "license": "Proprietary service under the AWS Customer Agreement. The AWS SDKs and the AWS Labs MCP server are Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://sns.us-east-1.amazonaws.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@aws-sdk/client-sns"
        },
        {
          "registry": "pypi",
          "name": "boto3"
        },
        {
          "registry": "pypi",
          "name": "awslabs.amazon-sns-sqs-mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "Requests are signed with AWS Signature Version 4 using IAM credentials, long-lived access keys or temporary credentials from AWS STS. IAM identity policies and topic resource policies use the `sns` action prefix with topic ARNs and condition keys. Access is self-serve with an AWS account. SMS starts in a sandbox per account, and leaving it or raising the $1 monthly spend quota needs an AWS Support case. Mobile push needs a platform application holding credentials from Apple, Google or another push service.",
      "pricing": "usage",
      "pricingNotes": "Pay per request and per notification with no minimum. On standard topics in US East (N. Virginia), API requests cost $0.50 per million after 1,000,000 free each month, mobile push $0.50 per million after 1,000,000 free, email $2.00 per 100,000 after 1,000 free, and HTTP deliveries $0.60 per million after 100,000 free. Deliveries to SQS and Lambda are free. SMS is billed by AWS End User Messaging. New AWS customers get up to $200 in Free Tier credits, and AWS says most can sign up without a payment method (https://aws.amazon.com/sns/pricing/, https://aws.amazon.com/free/free-tier-faqs/).",
      "priceSummary": "$0.0005 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer guide index, the API model or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 6505984,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.aws.amazon.com/sns/latest/dg/welcome.html",
      "llmsTxt": "https://docs.aws.amazon.com/sns/latest/dg/llms.txt",
      "capabilities": [
        "notify.push",
        "notify.multichannel",
        "messaging.sms"
      ],
      "tags": [
        "hosted",
        "llms-txt",
        "typescript",
        "python",
        "push",
        "sms",
        "mcp",
        "enterprise"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 72.8,
        "grade": "BB",
        "agentReady": true,
        "rank": 99,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 75,
          "payments": 35,
          "reliability": 75,
          "schema": 83,
          "security": 89,
          "transparency": 83
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "IAM and topic policies limit a credential to single actions and topics, a read-only managed policy exists, and CloudTrail can log each publish. Standard topics take no idempotency token, so a retried `Publish` can send twice. SNS has no user preferences, digests or in-app channel, email is plain text to confirmed subscribers, and SMS starts in a sandbox.",
        "bestFor": "Teams already on AWS that want cheap push, SMS and plain-text email alerts or fan-out to queues and functions under IAM and CloudTrail.",
        "strengths": [
          "IAM identity policies and topic resource policies per action and topic, temporary credentials, and an `AmazonSNSReadOnlyAccess` managed policy",
          "Published quotas of 30,000 published messages a second per account in US East (N. Virginia) and 300 in the smallest Regions",
          "First 1,000,000 API requests, 1,000,000 mobile push notifications and 1,000 emails each month are free on standard topics",
          "Smithy model published for all 42 operations, with llms.txt indexes and a Markdown twin of every guide and reference page",
          "99.9 per cent monthly uptime commitment per Region under the Amazon Messaging SLA, last updated 4 May 2022"
        ],
        "weaknesses": [
          "No idempotency token on `Publish` to a standard topic. Only FIFO topics deduplicate, over a five-minute window",
          "No user preferences, digests, templates or in-app channel. Email is plain text and each address has to confirm its subscription",
          "SMS starts in a sandbox with ten verified numbers and a $1 monthly spend quota, raised through an AWS Support case",
          "Topic, subscription and endpoint settings travel as string maps and JSON inside strings, and the model has only four enumerated types",
          "The AWS Health Dashboard lists the service in the UAE and Bahrain Region disruptions open since March 2026"
        ],
        "agentNotes": [
          "Sign requests with SigV4 for service `sns` at `sns.\u003cregion\u003e.amazonaws.com`, or call `aws sns publish --topic-arn \u003carn\u003e --message \u003ctext\u003e` from the AWS CLI",
          "Track `MessageId` yourself on standard topics, because a retried `Publish` sends again. Use a FIFO topic with `MessageDeduplicationId` when duplicates matter",
          "Send per-channel text by setting `MessageStructure` to `json` and passing a JSON string with a `default` key plus keys such as `APNS`, `GCM`, `email` and `sms`",
          "Check `GetSMSSandboxAccountStatus` and the monthly spend quota before texting. Sandbox sends reach only verified numbers",
          "Expect an email subscription to stay in `PendingConfirmation` until the recipient clicks the link, and keep each email subscription under 10 messages a second"
        ],
        "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.8
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 75,
          "payments": 35,
          "reliability": 75,
          "schema": 83,
          "security": 89,
          "transparency": 71
        },
        "provenanceScore": 95
      },
      "connect": {
        "config": {
          "mcpServers": {
            "awslabs.amazon-sns-sqs-mcp-server": {
              "args": [
                "awslabs.amazon-sns-sqs-mcp-server@latest"
              ],
              "command": "uvx",
              "env": {
                "AWS_PROFILE": "your-aws-profile",
                "AWS_REGION": "us-east-1"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/amazon-sns"
      },
      "sameCompany": [
        "amazon-bedrock-customization",
        "agentcore-code-interpreter",
        "amazon-textract",
        "aws-end-user-messaging",
        "amazon-s3",
        "amazon-eventbridge"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "API requests, standard topics",
          "unit": "1k-requests",
          "usd": 0.0005,
          "note": "US East (N. Virginia), after 1,000,000 free a month. Each 64 KB of payload counts as one request"
        },
        {
          "item": "Publishes, FIFO topics",
          "unit": "1k-requests",
          "usd": 0.0003,
          "note": "US East (N. Virginia), plus $0.017 per GB of payload and $0.01 per million subscription messages"
        },
        {
          "item": "Mobile push notification",
          "unit": "message",
          "usd": 5e-7,
          "note": "$0.50 per million after 1,000,000 free a month"
        },
        {
          "item": "Email notification",
          "unit": "1k-emails",
          "usd": 0.02,
          "note": "$2.00 per 100,000 after 1,000 free a month"
        },
        {
          "item": "HTTP or HTTPS notification",
          "unit": "message",
          "usd": 6e-7,
          "note": "$0.60 per million after 100,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/sns/latest/dg/sns-release-notes.html",
        "securityTxt": "expired",
        "checked": "2026-10-08",
        "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 11 of the AWS Service Terms (last updated 1 October 2026) adds terms for Amazon SNS. It says AMCS LLC sells parts of the service in Japan and AMCS SG Private Limited in Singapore, and that fees apply even when delivery is blocked for reasons outside AWS's control (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:03Z, so it had expired on 8 October 2026.",
          "RDAP for amazonaws.com gives a registration date of 2005-08-18. The API answers at sns.\u003cregion\u003e.amazonaws.com, while product and legal pages sit on aws.amazon.com."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-sns.json",
      "live": {
        "slug": "amazon-sns",
        "probe": {
          "target": "https://sns.us-east-1.amazonaws.com",
          "method": "get",
          "lastAt": "2026-10-10T04:40:40.311998394Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 244,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 251,
          "p95ms24h": 316,
          "samples24h": 248,
          "samples30d": 348,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 48,
              "ok": 48
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@aws-sdk/client-sns",
            "version": "3.1148.0",
            "seenAt": "2026-10-09T16:39:00.155753107Z"
          },
          {
            "registry": "pypi",
            "name": "awslabs.amazon-sns-sqs-mcp-server",
            "version": "2.1.1",
            "released": "2026-09-08",
            "seenAt": "2026-10-09T16:39:01.323130717Z"
          },
          {
            "registry": "pypi",
            "name": "boto3",
            "version": "1.43.110",
            "released": "2026-10-08",
            "seenAt": "2026-10-09T16:39:01.132277851Z"
          }
        ],
        "githubStars": 229,
        "npmWeekly": 5316063,
        "pypiWeekly": 577963463,
        "securityTxt": {
          "url": "https://amazonaws.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-24T16:25:03.000Z",
          "checkedAt": "2026-10-09T15:40:31.547092582Z"
        },
        "llmsTxt": {
          "url": "https://docs.aws.amazon.com/sns/latest/dg/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-09T14:01:23.868115156Z"
        },
        "pages": [
          {
            "url": "https://docs.aws.amazon.com/sns/latest/dg/sns-release-notes.html",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:36:52.155488791Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d3d51400e0c1"
          },
          {
            "url": "https://aws.amazon.com/sns/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:33:17.932805681Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2f23a2b26bc9"
          }
        ],
        "updatedAt": "2026-10-10T04:40:40.311998394Z"
      }
    },
    "answer": "Amazon SNS scores 72.8 (BB) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Expo Push Notifications leads on payments \u0026 pricing.",
    "b": {
      "slug": "expo-push-notifications",
      "name": "Expo Push Notifications",
      "vendor": "Expo",
      "vendorUrl": "https://expo.dev",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Hosted push service from Expo that takes one HTTPS request and relays it to Apple's APNs and Google's FCM for apps built with Expo. It issues push tickets and receipts, and sending is free.",
      "url": "https://www.anchorterminal.com/tools/expo-push-notifications",
      "markdownUrl": "https://www.anchorterminal.com/tools/expo-push-notifications.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/expo-push-notifications.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/expo-push-notifications.json",
      "repo": "https://github.com/expo/expo-server-sdk-node",
      "license": "Proprietary service under Expo's terms of service. The Node.js server SDK is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://exp.host/--/api/v2/push/send",
      "packages": [
        {
          "registry": "npm",
          "name": "expo-server-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "No credential by default. The docs say the API \"currently does not require any authentication\", and a send needs only an Expo push token. An owner can turn on enhanced push security in the EAS dashboard, after which every call needs `Authorization: Bearer \u003caccess token\u003e` or fails with `UNAUTHORIZED`. Tokens are personal access tokens, which act on everything the person can reach, or robot user tokens limited by role. Both are created and revoked by a person in the dashboard.",
      "pricing": "free",
      "pricingNotes": "Free. The push FAQ says there is no cost for sending through the service, and the pricing page lists no push charge. A send needs an Expo project with APNs and FCM credentials, which a person sets up on an Expo account. The Free plan is $0 a month, Starter $19 and Production $199, and those prices buy builds and updates, not push. Whether signup asks for a card was not stated.",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the push docs, the pricing page or the Node SDK source (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 1037,
        "npmWeekly": 1348515,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.expo.dev/push-notifications/sending-notifications/",
      "llmsTxt": "https://docs.expo.dev/llms.txt",
      "capabilities": [
        "notify.push"
      ],
      "tags": [
        "hosted",
        "free",
        "push",
        "no-key",
        "llms-txt",
        "typescript",
        "closed-source",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-08-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.8,
        "grade": "C",
        "agentReady": false,
        "rank": 571,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 74,
          "payments": 40,
          "reliability": 65,
          "schema": 60,
          "security": 48,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "A free push relay with a small, well documented HTTP API, published limits of 600 notifications a second and written error codes. Sending needs no credential unless the owner turns on access tokens, there is no idempotency key or SLA, and the status page records three iOS push incidents since 4 August 2026.",
        "bestFor": "An agent that must push to an app already built with Expo, at no cost and with one call for both platforms.",
        "strengths": [
          "One POST to `https://exp.host/--/api/v2/push/send` reaches both APNs and FCM, with up to 100 messages a request",
          "Sending is free, per the push FAQ, and the Free plan costs $0 a month",
          "Limits are published. 600 notifications a second per project, 100 messages a request, 1,000 receipt IDs a request",
          "Docs are served as Markdown with an `llms.txt` index, and every message field is mapped to its APNs or FCM equivalent",
          "Expo states notification content is held only in memory and queues until handed to Apple or Google"
        ],
        "weaknesses": [
          "The send API needs no authentication by default, so anyone holding a push token can send to that device until the owner enables access tokens",
          "No idempotency key. Expo says a notification may reach Apple or Google more than once, or not at all",
          "No SLA for the push service, stated in the docs",
          "Three iOS push incidents on the status page since 4 August 2026, one a partial outage of 83 minutes and one a backlog of 4 hours 41 minutes",
          "No OpenAPI file or push API changelog was found, and only the Node.js SDK is maintained by Expo",
          "Expo's terms say accounts registered by bots, agents or other automated means are not permitted. This matters before any probe is run"
        ],
        "agentNotes": [
          "Send an array of up to 100 messages per request, all for one project, and stay under 600 notifications a second",
          "Keep each ticket `id` and POST them to `/--/api/v2/push/getReceipts` about 15 minutes later. Receipts are cleared after 24 hours",
          "Stop sending to a token when a ticket or receipt returns `DeviceNotRegistered`",
          "If the project has enhanced push security on, send `Authorization: Bearer \u003caccess token\u003e` or the call fails with `UNAUTHORIZED`",
          "Retry 429 and 5xx with exponential backoff, and expect an occasional duplicate because there is no idempotency key"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.8
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 74,
          "payments": 40,
          "reliability": 65,
          "schema": 60,
          "security": 48,
          "transparency": 60
        },
        "provenanceScore": 76
      },
      "connect": {
        "install": "yarn add expo-server-sdk",
        "http": "curl -H \"Content-Type: application/json\" -X POST \"https://exp.host/--/api/v2/push/send\" -d '{\n  \"to\": \"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]\",\n  \"title\":\"hello\",\n  \"body\": \"world\"\n}'"
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/expo-push-notifications"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "650 Industries, Inc.",
        "domain": "expo.dev",
        "domainRegistered": "2019-02-22",
        "endpointOnVendorDomain": false,
        "terms": "https://expo.dev/terms",
        "privacy": "https://expo.dev/privacy",
        "statusPage": "https://status.expo.dev",
        "changelog": "https://github.com/expo/expo-server-sdk-node/blob/main/CHANGELOG.md",
        "securityTxt": "valid",
        "checked": "2026-10-09",
        "notes": [
          "The terms (last updated 29 May 2025, effective 30 June 2025) are a contract with 650 Industries, Inc. and cover any product or service Expo makes available. They list EAS Build, Update, Submit, Hosting and Workflows by name and do not name the push service.",
          "The push API answers at exp.host, a second domain. Expo's docs and its Node SDK source name that host.",
          "expo.dev/.well-known/security.txt gives vulnerability-disclosures@expo.dev and a Canonical line and has no Expires field, which RFC 9116 requires.",
          "The privacy policy (last updated 21 October 2025) says Expo may collect end users' push tokens when the push service is used.",
          "expo.dev/robots.txt disallows `/expo-subscription-agreement`, so that agreement was not read.",
          "The registry's RDAP record for expo.dev gives a registration date of 2019-02-22. The changelog link is the Node SDK's, because no changelog for the push API itself was found."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/expo-push-notifications.json",
      "live": {
        "slug": "expo-push-notifications",
        "probe": {
          "target": "https://exp.host/--/api/v2/push/send",
          "method": "get",
          "lastAt": "2026-10-10T04:40:48.895558329Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 125,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 127,
          "p95ms24h": 221,
          "samples24h": 133,
          "samples30d": 133,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 48,
              "ok": 48
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.expo.dev",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T04:41:02.081582426Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "expo/expo-server-sdk-node",
            "version": "v7.2.0",
            "released": "2026-08-24",
            "seenAt": "2026-10-09T16:52:32.455380467Z"
          },
          {
            "registry": "npm",
            "name": "expo-server-sdk",
            "version": "7.2.0",
            "seenAt": "2026-10-09T16:52:31.59453516Z"
          }
        ],
        "githubStars": 1037,
        "npmWeekly": 1348515,
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/expo/expo-server-sdk-node/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:45:09.224081599Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "851125e2dd50"
          },
          {
            "url": "https://expo.dev/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:39:14.02772659Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "42bd6fab5bc9"
          },
          {
            "url": "https://expo.dev/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:39:16.223165435Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d061e1a55580"
          }
        ],
        "updatedAt": "2026-10-10T04:40:48.895558329Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Amazon Web Services",
        "b": "Expo",
        "name": "Vendor"
      },
      {
        "a": "https://sns.us-east-1.amazonaws.com",
        "b": "https://exp.host/--/api/v2/push/send",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "$0. per message",
        "b": "free",
        "name": "Price for push notifications"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the AWS Customer Agreement. The AWS SDKs and the AWS Labs MCP server are Apache-2.0",
        "b": "Proprietary service under Expo's terms of service. The Node.js server SDK is MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-06",
        "b": "2026-08-24",
        "name": "Last release"
      },
      {
        "a": "2026-08-14",
        "b": "2025-05-29",
        "name": "Terms last updated"
      },
      {
        "a": "2026-05-18",
        "b": "2025-10-21",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "6.5M npm/wk",
        "b": "1k stars, 1.3M npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Amazon SNS scores 72.8 (BB) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Expo Push Notifications leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Amazon SNS or Expo Push Notifications?"
      },
      {
        "answer": "Expo Push Notifications, at free against $0. per message for Amazon SNS. These are the vendors' published prices for the job.",
        "question": "Which is cheaper for push notifications, Amazon SNS or Expo Push Notifications?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Amazon SNS and Expo Push Notifications need an API key?"
      },
      {
        "answer": "Yes. Amazon SNS has a hosted endpoint at https://sns.us-east-1.amazonaws.com and Expo Push Notifications at https://exp.host/--/api/v2/push/send.",
        "question": "Can an agent call Amazon SNS and Expo Push Notifications without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 65",
          "Schema \u0026 documentation, 83 against 60",
          "Security \u0026 auth, 89 against 48",
          "Transparency \u0026 trust, 83 against 68"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Teams already on AWS that want cheap push, SMS and plain-text email alerts or fan-out to queues and functions under IAM and CloudTrail.",
        "slug": "amazon-sns",
        "watchFor": "No idempotency token on `Publish` to a standard topic. Only FIFO topics deduplicate, over a five-minute window"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": null,
        "goodFor": "An agent that must push to an app already built with Expo, at no cost and with one call for both platforms.",
        "slug": "expo-push-notifications",
        "watchFor": "The send API needs no authentication by default, so anyone holding a push token can send to that device until the owner enables access tokens"
      }
    ],
    "job": {
      "capability": "notify.push",
      "name": "Push notifications"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-courier.json",
        "title": "Amazon SNS vs Courier",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-courier"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-firebase-cloud-messaging.json",
        "title": "Amazon SNS vs Firebase Cloud Messaging",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-firebase-cloud-messaging"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-knock.json",
        "title": "Amazon SNS vs Knock",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-knock"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-magicbell.json",
        "title": "Amazon SNS vs MagicBell",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-magicbell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu.json",
        "title": "Amazon SNS vs Novu",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-ntfy.json",
        "title": "Amazon SNS vs ntfy",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-ntfy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-onesignal.json",
        "title": "Amazon SNS vs OneSignal",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-onesignal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-pingram.json",
        "title": "Amazon SNS vs Pingram",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-pingram"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-pushover.json",
        "title": "Amazon SNS vs Pushover",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-pushover"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-suprsend.json",
        "title": "Amazon SNS vs SuprSend",
        "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-suprsend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/courier-vs-expo-push-notifications.json",
        "title": "Courier vs Expo Push Notifications",
        "url": "https://www.anchorterminal.com/compare/courier-vs-expo-push-notifications"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.json",
        "title": "Expo Push Notifications vs Firebase Cloud Messaging",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-knock.json",
        "title": "Expo Push Notifications vs Knock",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-knock"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-magicbell.json",
        "title": "Expo Push Notifications vs MagicBell",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-magicbell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-novu.json",
        "title": "Expo Push Notifications vs Novu",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-novu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-ntfy.json",
        "title": "Expo Push Notifications vs ntfy",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-ntfy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-onesignal.json",
        "title": "Expo Push Notifications vs OneSignal",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-onesignal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-pingram.json",
        "title": "Expo Push Notifications vs Pingram",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-pingram"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-pushover.json",
        "title": "Expo Push Notifications vs Pushover",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-pushover"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-suprsend.json",
        "title": "Expo Push Notifications vs SuprSend",
        "url": "https://www.anchorterminal.com/compare/expo-push-notifications-vs-suprsend"
      }
    ],
    "scores": [
      {
        "amazon-sns": 75,
        "by": 10,
        "edge": "amazon-sns",
        "expo-push-notifications": 65,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-sns": 83,
        "by": 23,
        "edge": "amazon-sns",
        "expo-push-notifications": 60,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "amazon-sns": 65,
        "by": 2,
        "edge": "amazon-sns",
        "expo-push-notifications": 63,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "amazon-sns": 89,
        "by": 41,
        "edge": "amazon-sns",
        "expo-push-notifications": 48,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "amazon-sns": 35,
        "by": 5,
        "edge": "expo-push-notifications",
        "expo-push-notifications": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-sns": 75,
        "by": 1,
        "edge": "amazon-sns",
        "expo-push-notifications": 74,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "amazon-sns": 83,
        "by": 15,
        "edge": "amazon-sns",
        "expo-push-notifications": 68,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Amazon SNS scores 72.8 (BB) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Expo Push Notifications leads on payments \u0026 pricing. Both do push notifications.",
    "verdicts": {
      "amazon-sns": "IAM and topic policies limit a credential to single actions and topics, a read-only managed policy exists, and CloudTrail can log each publish. Standard topics take no idempotency token, so a retried `Publish` can send twice. SNS has no user preferences, digests or in-app channel, email is plain text to confirmed subscribers, and SMS starts in a sandbox.",
      "expo-push-notifications": "A free push relay with a small, well documented HTTP API, published limits of 600 notifications a second and written error codes. Sending needs no credential unless the owner turns on access tokens, there is no idempotency key or SLA, and the status page records three iOS push incidents since 4 August 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications",
    "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.min.md"
  },
  "markdown": "Amazon SNS scores 72.8 (BB) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Expo Push Notifications leads on payments \u0026 pricing. Both do push notifications.\n\n- Amazon SNS: grade BB, 72.8/100, rank #99 of 950. Markdown https://www.anchorterminal.com/tools/amazon-sns.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-sns.json\n- Expo Push Notifications: grade C, 58.8/100, rank #571 of 950. Markdown https://www.anchorterminal.com/tools/expo-push-notifications.md · JSON https://www.anchorterminal.com/api/v1/tools/expo-push-notifications.json\n- Best notification APIs for AI agents: https://www.anchorterminal.com/best/notifications/index.md\n- All 66 notifications comparisons: https://www.anchorterminal.com/compare/notifications/index.md\n\n## Which one, for what\n\n### Amazon SNS (BB)\n\nGood for: Teams already on AWS that want cheap push, SMS and plain-text email alerts or fan-out to queues and functions under IAM and CloudTrail.\n\nAhead on:\n- Reliability, 75 against 65\n- Schema \u0026 documentation, 83 against 60\n- Security \u0026 auth, 89 against 48\n- Transparency \u0026 trust, 83 against 68\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: No idempotency token on `Publish` to a standard topic. Only FIFO topics deduplicate, over a five-minute window\n\n### Expo Push Notifications (C)\n\nGood for: An agent that must push to an app already built with Expo, at no cost and with one call for both platforms.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 35\n\nWatch for: The send API needs no authentication by default, so anyone holding a push token can send to that device until the owner enables access tokens\n\n\n## Score by category\n\n| Category | Weight | Amazon SNS | Expo Push Notifications | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 65 | Amazon SNS +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 60 | Amazon SNS +23 |\n| Agent ergonomics | 13% (16.2 this run) | 65 | 63 | Amazon SNS +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 89 | 48 | Amazon SNS +41 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Expo Push Notifications +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 74 | Amazon SNS +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 83 | 68 | Amazon SNS +15 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **72.8 · BB** | **58.8 · C** | |\n\n## Facts side by side\n\n| Fact | Amazon SNS | Expo Push Notifications |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Amazon Web Services | Expo |\n| Hosted endpoint | `https://sns.us-east-1.amazonaws.com` | `https://exp.host/--/api/v2/push/send` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Free |\n| Price for push notifications | $0. per message | free |\n| x402 | no | no |\n| Licence | Proprietary service under the AWS Customer Agreement. The AWS SDKs and the AWS Labs MCP server are Apache-2.0 | Proprietary service under Expo's terms of service. The Node.js server SDK is MIT |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-06 | 2026-08-24 |\n| Terms last updated | 2026-08-14 | 2025-05-29 |\n| Privacy policy last updated | 2026-05-18 | 2025-10-21 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 6.5M npm/wk | 1k stars, 1.3M npm/wk |\n\n## Verdicts\n\n**Amazon SNS.** IAM and topic policies limit a credential to single actions and topics, a read-only managed policy exists, and CloudTrail can log each publish. Standard topics take no idempotency token, so a retried `Publish` can send twice. SNS has no user preferences, digests or in-app channel, email is plain text to confirmed subscribers, and SMS starts in a sandbox.\n\n**Expo Push Notifications.** A free push relay with a small, well documented HTTP API, published limits of 600 notifications a second and written error codes. Sending needs no credential unless the owner turns on access tokens, there is no idempotency key or SLA, and the status page records three iOS push incidents since 4 August 2026.\n\n## Before you call either\n\n### Amazon SNS\n\n1. Sign requests with SigV4 for service `sns` at `sns.\u003cregion\u003e.amazonaws.com`, or call `aws sns publish --topic-arn \u003carn\u003e --message \u003ctext\u003e` from the AWS CLI\n2. Track `MessageId` yourself on standard topics, because a retried `Publish` sends again. Use a FIFO topic with `MessageDeduplicationId` when duplicates matter\n3. Send per-channel text by setting `MessageStructure` to `json` and passing a JSON string with a `default` key plus keys such as `APNS`, `GCM`, `email` and `sms`\n4. Check `GetSMSSandboxAccountStatus` and the monthly spend quota before texting. Sandbox sends reach only verified numbers\n5. Expect an email subscription to stay in `PendingConfirmation` until the recipient clicks the link, and keep each email subscription under 10 messages a second\n\n### Expo Push Notifications\n\n1. Send an array of up to 100 messages per request, all for one project, and stay under 600 notifications a second\n2. Keep each ticket `id` and POST them to `/--/api/v2/push/getReceipts` about 15 minutes later. Receipts are cleared after 24 hours\n3. Stop sending to a token when a ticket or receipt returns `DeviceNotRegistered`\n4. If the project has enhanced push security on, send `Authorization: Bearer \u003caccess token\u003e` or the call fails with `UNAUTHORIZED`\n5. Retry 429 and 5xx with exponential backoff, and expect an occasional duplicate because there is no idempotency key\n\n## Questions\n\n### Which is better for AI agents, Amazon SNS or Expo Push Notifications?\n\nAmazon SNS scores 72.8 (BB) on agent readiness against Expo Push Notifications's 58.8 (C), and leads in 6 of 7 scored categories. Expo Push Notifications leads on payments \u0026 pricing.\n\n### Which is cheaper for push notifications, Amazon SNS or Expo Push Notifications?\n\nExpo Push Notifications, at free against $0. per message for Amazon SNS. These are the vendors' published prices for the job.\n\n### Do Amazon SNS and Expo Push Notifications need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Amazon SNS and Expo Push Notifications without installing anything?\n\nYes. Amazon SNS has a hosted endpoint at https://sns.us-east-1.amazonaws.com and Expo Push Notifications at https://exp.host/--/api/v2/push/send.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.json, and with the fewest tokens: https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"amazon-sns\", \"b\": \"expo-push-notifications\"}`. From a terminal: `anchor compare amazon-sns expo-push-notifications`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/amazon-sns.json and https://www.anchorterminal.com/api/v1/tools/expo-push-notifications.json\n\n## Other comparisons with Amazon SNS or Expo Push Notifications\n\n- [Amazon SNS vs Courier](https://www.anchorterminal.com/compare/amazon-sns-vs-courier.md)\n- [Amazon SNS vs Firebase Cloud Messaging](https://www.anchorterminal.com/compare/amazon-sns-vs-firebase-cloud-messaging.md)\n- [Amazon SNS vs Knock](https://www.anchorterminal.com/compare/amazon-sns-vs-knock.md)\n- [Amazon SNS vs MagicBell](https://www.anchorterminal.com/compare/amazon-sns-vs-magicbell.md)\n- [Amazon SNS vs Novu](https://www.anchorterminal.com/compare/amazon-sns-vs-novu.md)\n- [Amazon SNS vs ntfy](https://www.anchorterminal.com/compare/amazon-sns-vs-ntfy.md)\n- [Amazon SNS vs OneSignal](https://www.anchorterminal.com/compare/amazon-sns-vs-onesignal.md)\n- [Amazon SNS vs Pingram](https://www.anchorterminal.com/compare/amazon-sns-vs-pingram.md)\n- [Amazon SNS vs Pushover](https://www.anchorterminal.com/compare/amazon-sns-vs-pushover.md)\n- [Amazon SNS vs SuprSend](https://www.anchorterminal.com/compare/amazon-sns-vs-suprsend.md)\n- [Courier vs Expo Push Notifications](https://www.anchorterminal.com/compare/courier-vs-expo-push-notifications.md)\n- [Expo Push Notifications vs Firebase Cloud Messaging](https://www.anchorterminal.com/compare/expo-push-notifications-vs-firebase-cloud-messaging.md)\n- [Expo Push Notifications vs Knock](https://www.anchorterminal.com/compare/expo-push-notifications-vs-knock.md)\n- [Expo Push Notifications vs MagicBell](https://www.anchorterminal.com/compare/expo-push-notifications-vs-magicbell.md)\n- [Expo Push Notifications vs Novu](https://www.anchorterminal.com/compare/expo-push-notifications-vs-novu.md)\n- [Expo Push Notifications vs ntfy](https://www.anchorterminal.com/compare/expo-push-notifications-vs-ntfy.md)\n- [Expo Push Notifications vs OneSignal](https://www.anchorterminal.com/compare/expo-push-notifications-vs-onesignal.md)\n- [Expo Push Notifications vs Pingram](https://www.anchorterminal.com/compare/expo-push-notifications-vs-pingram.md)\n- [Expo Push Notifications vs Pushover](https://www.anchorterminal.com/compare/expo-push-notifications-vs-pushover.md)\n- [Expo Push Notifications vs SuprSend](https://www.anchorterminal.com/compare/expo-push-notifications-vs-suprsend.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 SNS vs Expo Push Notifications",
        "url": ""
      }
    ],
    "description": "Amazon SNS scores 72.8 (BB) to Expo Push Notifications's 58.8 (C) for push notifications. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Amazon SNS BB 72.8",
      "Expo Push Notifications C 58.8",
      "scores"
    ],
    "h1": "Amazon SNS vs Expo Push Notifications",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-sns-vs-expo-push-notifications.png",
    "path": "/compare/amazon-sns-vs-expo-push-notifications",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon SNS vs Expo Push Notifications for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-expo-push-notifications"
  },
  "tokens": {
    "markdown": 2600,
    "slim": 680
  },
  "version": 1
}
