{
  "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": 86,
        "ranked": true,
        "rankOf": 722,
        "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": [
        "aws-end-user-messaging",
        "amazon-s3"
      ],
      "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-08T21:12:03.674891671Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 247,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 252,
          "p95ms24h": 316,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "updatedAt": "2026-10-08T21:12:03.674891671Z"
      }
    },
    "answer": "Amazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "novu",
      "name": "Novu",
      "vendor": "Novu",
      "vendorUrl": "https://novu.co",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Open-source infrastructure for application notifications.",
      "url": "https://www.anchorterminal.com/tools/novu",
      "markdownUrl": "https://www.anchorterminal.com/tools/novu.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/novu.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/novu.json",
      "repo": "https://github.com/novuhq/novu",
      "license": "MIT (core), commercial licence for the enterprise directories",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.novu.co/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@novu/api"
        },
        {
          "registry": "pypi",
          "name": "novu-py"
        }
      ],
      "auth": "mixed",
      "authNotes": "Secret key in `Authorization: ApiKey \u003ckey\u003e` on the REST API (not Bearer). The hosted MCP at mcp.novu.co (EU at eu.mcp.novu.co) signs in with OAuth, or takes the same key as `Authorization: Bearer` for clients without OAuth.",
      "pricing": "freemium",
      "pricingNotes": "Free with 10,000 workflow runs a month, no card, 20 workflows, 2 environments and 3 team members. Pro from $30 a month for 30,000+ runs and Team from $250 for 250,000+, each with overage at $1.20 per 1,000 runs. Enterprise is custom from 10M+ runs. The pricing page lists a 99.9% uptime SLA on Free, Pro and Team. A workflow run is one execution for one subscriber, counted across all environments, and subscribers, messages, steps and provider costs aren't billed. Over the limit Novu keeps sending and bills the overage (https://novu.co/pricing, https://docs.novu.co/platform/account/billing, https://docs.novu.co/platform/developer/limits). The MIT core can be self-hosted (https://github.com/novuhq/novu).",
      "priceSummary": "$30 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 30,
      "popularity": {
        "githubStars": 39700,
        "npmWeekly": 134757,
        "pypiWeekly": 25498,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.novu.co",
      "llmsTxt": "https://novu.co/llms.txt",
      "openapi": "https://api.novu.co/openapi.json",
      "capabilities": [
        "notify.push",
        "notify.in-app",
        "notify.multichannel",
        "notify.preferences",
        "notify.digest"
      ],
      "tags": [
        "hosted",
        "freemium",
        "open-source",
        "self-hosted",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "eu"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.2,
        "grade": "B",
        "agentReady": false,
        "rank": 281,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 92,
          "payments": 40,
          "reliability": 93,
          "schema": 92,
          "security": 64,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-04"
        },
        "negative": -13,
        "negativeNotes": [
          "2026-07-07, -4. GHSA-w2vj-px2p-76fr, Critical (CVSS 9.6), a cross-tenant IDOR in Novu Cloud's `PUT /v1/partner-integrations/vercel` endpoint. Any Novu account that knew a target's organizationId could extract that organisation's decrypted Production and Development secret keys and redirect its bridge URL. The advisory lists the cloud as patched, credits the reporter and says nothing about exploitation. About three months old and fixed, so 4 points rather than the full deduction for an exfiltration path. It wasn't in the 1 October dossier. https://github.com/novuhq/novu/security/advisories/GHSA-w2vj-px2p-76fr",
          "2026-06-07, -6. Four High advisories published the same day. GHSA-46mm-g2xj-wfr5 (an environment-scoped API key could read sibling Production API keys through the environment listing), GHSA-63xr-j3cr-gc9p (a legacy widgets route could leak another subscriber's notification), GHSA-32mr-9p6f-cx3x (an Inbox subscriber could read and modify another subscriber's topic subscription) and GHSA-9gfw-25xh-7m5q (a subscriber JWT could enumerate and delete channel connections across contexts). Read from the advisory list only. SECURITY.md ties publication to a resolved issue. About four months old, deducted at 1.5 each, the way other listings count same-day High advisories one by one. It wasn't in the 1 October dossier. https://github.com/novuhq/novu/security/advisories?state=published\u0026page=2",
          "2026-02-26 to 2026-04-13, -3. Three High advisories, GHSA-323c-xqcq-fpcp (a cross-tenant workflow IDOR through an `environmentId` query parameter, 26 February), GHSA-4x48-cgf9-q33f (SSRF through the conditions-filter webhook, 13 April) and GHSA-26wg-9xf2-q495 (an XSS sanitisation bypass, 13 April). Read from the advisory list only, six to seven months old, so 1 point each. It wasn't in the 1 October dossier. https://github.com/novuhq/novu/security/advisories?state=published\u0026page=3",
          "Not deducted. 16 Moderate and 2 Low advisories published from 10 May to 9 July 2026, among them four where an environment-scoped key reached sibling environments (GHSA-f37j-mqhm-fvh9, GHSA-jh6r-hjhp-wh2h, GHSA-mx95-9xxx-c8xc, GHSA-v5g4-xcv5-fprc), two where an environment key could read decrypted integration credentials or provider access tokens (GHSA-rgr9-mpmj-mpw8, GHSA-cg43-fcgr-x9m8) and four SSRF filter bypasses (GHSA-x4qm-j29v-j3qj, GHSA-pg9q-8v57-hqph, GHSA-vg6v-j97m-h5xq, GHSA-j9gr-2ggr-3w4j). Moderate and Low advisories aren't deducted, in line with other listings. https://github.com/novuhq/novu/security/advisories"
        ],
        "verdict": "MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key.",
        "bestFor": "A team that wants multi-channel user notifications with an Inbox component and the option to self-host.",
        "strengths": [
          "MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026)",
          "Rate limits per plan with RateLimit and Retry-After headers, and a documented backoff pattern",
          "Errors page with every status code and one JSON error shape, cursor pagination capped at 100",
          "Hosted MCP in US and EU regions with OAuth, plus a separate docs MCP",
          "SOC 2 Type II, ISO 27001 and HIPAA listed in a public trust centre"
        ],
        "weaknesses": [
          "The REST secret key has full administrative access to its environment, with no scopes or read-only key",
          "The MCP server includes delete tools for subscribers, workflows and integrations, with no read-only mode",
          "Idempotency keys only work once support enables them for your organisation",
          "Activity feed kept 1 day on Free and 7 on Pro, and delays and digests capped to match",
          "26 security advisories in the 12 months to October 2026, including a Critical cross-tenant key exposure in Novu Cloud published as patched on 7 July 2026"
        ],
        "agentNotes": [
          "Send `Authorization: ApiKey \u003ckey\u003e` to the REST API. Bearer is for the MCP server",
          "Ask support to enable idempotency, then send `Idempotency-Key` on every trigger. A 409 means the first call is still running",
          "Use eu.api.novu.co and eu.mcp.novu.co for an EU account. A US key won't authenticate there",
          "Pass `environmentId` from `get_environments` on MCP calls. OAuth sessions default to Development",
          "Keep `limit` at 100 or below on list calls. Higher values return 422"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.2
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 92,
          "payments": 40,
          "reliability": 93,
          "schema": 92,
          "security": 64,
          "transparency": 64
        },
        "provenanceScore": 68
      },
      "connect": {
        "http": "curl -X POST https://api.novu.co/v1/events/trigger \\\n  -H \"Authorization: ApiKey $NOVU_SECRET_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"build-finished\",\"to\":\"subscriber-123\",\"payload\":{\"status\":\"passed\"}}'",
        "claudeCode": "claude mcp add --transport http novu https://mcp.novu.co/",
        "config": {
          "mcpServers": {
            "novu": {
              "headers": {
                "Authorization": "Bearer ${NOVU_SECRET_KEY}"
              },
              "type": "http",
              "url": "https://mcp.novu.co/"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/novu"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 30,
          "note": "30,000 workflow runs"
        },
        {
          "item": "Team",
          "unit": "month",
          "usd": 250,
          "note": "250,000 workflow runs"
        },
        {
          "item": "Pro and Team overage",
          "unit": "1k-calls",
          "usd": 1.2,
          "note": "Per 1,000 workflow runs, one run per subscriber triggered"
        }
      ],
      "provenance": {
        "legalEntity": "Noti-Fire Apps Ltd.",
        "domain": "novu.co",
        "domainRegistered": "",
        "domainNote": "The .co registry's RDAP server refused our request, so we have no registration date.",
        "endpointOnVendorDomain": true,
        "terms": "https://novu.co/terms/",
        "privacy": "https://novu.co/privacy/",
        "statusPage": "https://novustatus.com",
        "changelog": "https://novu.co/changelog/",
        "securityTxt": "none",
        "checked": "2026-10-04",
        "notes": [
          "Terms are governed by Israeli law, with courts in Tel Aviv-Jaffa, per the 30 September check. A DPA is published at novu.co/dpa.",
          "The status page is on a separate domain, novustatus.com, and listed no incidents in the 90 days to 4 October 2026.",
          "novu.co/.well-known/security.txt returned 404 on 4 October 2026. SECURITY.md sends reports to security@novu.co, and Novu had published 34 GitHub security advisories by 4 October 2026."
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/novu.json",
      "live": {
        "slug": "novu",
        "probe": {
          "target": "https://api.novu.co/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:12:16.802349112Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 202,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 136,
          "p95ms24h": 304,
          "samples24h": 271,
          "samples30d": 1955,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 239,
              "ok": 239
            }
          ]
        },
        "vendorStatus": {
          "page": "https://novustatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:38:50.474484479Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "novuhq/novu",
            "version": "@novu/framework@v2.14.0",
            "released": "2026-09-28",
            "seenAt": "2026-10-08T16:22:43.342609295Z"
          },
          {
            "registry": "npm",
            "name": "@novu/api",
            "version": "3.19.1",
            "seenAt": "2026-10-08T16:22:42.172387178Z"
          },
          {
            "registry": "pypi",
            "name": "novu-py",
            "version": "3.19.0",
            "released": "2026-08-07",
            "seenAt": "2026-10-08T16:22:43.103070309Z"
          }
        ],
        "githubStars": 40128,
        "npmWeekly": 140252,
        "pypiWeekly": 27195,
        "securityTxt": {
          "url": "https://novu.co/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:39:00.318040533Z"
        },
        "llmsTxt": {
          "url": "https://novu.co/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:42.27355559Z"
        },
        "domain": {
          "domain": "novu.co",
          "checkedAt": "2026-10-04T13:04:50.095029778Z"
        },
        "pages": [
          {
            "url": "https://novu.co/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:26.367839358Z",
            "changedAt": "2026-10-06T16:10:50.02888165Z",
            "fingerprint": "e9f12c608716"
          },
          {
            "url": "https://novu.co/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:29.365357328Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fd92fb83afe6"
          },
          {
            "url": "https://novu.co/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:30.576898279Z",
            "changedAt": "2026-10-05T15:58:35.54599331Z",
            "fingerprint": "8d2f1ba49ebb"
          },
          {
            "url": "https://novu.co/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:32.550715931Z",
            "changedAt": "2026-10-05T15:58:37.684745557Z",
            "fingerprint": "d48828077f5c"
          }
        ],
        "updatedAt": "2026-10-08T21:12:16.802349112Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Amazon Web Services",
        "b": "Novu",
        "name": "Vendor"
      },
      {
        "a": "https://sns.us-east-1.amazonaws.com",
        "b": "https://api.novu.co/v1",
        "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": "$0. per message",
        "b": "not published",
        "name": "Price for notify push"
      },
      {
        "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": "MIT (core), commercial licence for the enterprise directories",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "30",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-06",
        "b": "2026-09-28",
        "name": "Last release"
      },
      {
        "a": "2026-08-14",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-05-18",
        "b": "no date given",
        "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": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "6.5M npm/wk",
        "b": "40k stars, 135k npm/wk, 25k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.4/5 (8)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Amazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Amazon SNS or Novu?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Amazon SNS and Novu need an API key?"
      },
      {
        "answer": "Yes. Amazon SNS has a hosted endpoint at https://sns.us-east-1.amazonaws.com and Novu at https://api.novu.co/v1.",
        "question": "Can an agent call Amazon SNS and Novu without installing anything?"
      },
      {
        "answer": "No open-source release is listed for Amazon SNS. Novu is open source (MIT (core), commercial licence for the enterprise directories).",
        "question": "Are Amazon SNS and Novu open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 89 against 64",
          "Transparency \u0026 trust, 83 against 66"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "No incidents deducted, where Novu loses 13 points for them"
        ],
        "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": [
          "Reliability, 93 against 75",
          "Schema \u0026 documentation, 92 against 83",
          "Agent ergonomics, 84 against 65",
          "Payments \u0026 pricing, 40 against 35",
          "Maintenance \u0026 community, 92 against 75"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "A team that wants multi-channel user notifications with an Inbox component and the option to self-host.",
        "slug": "novu",
        "watchFor": "The REST secret key has full administrative access to its environment, with no scopes or read-only key"
      }
    ],
    "job": {
      "capability": "notify.push",
      "name": "Notify push"
    },
    "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-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-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-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-novu.json",
        "title": "Courier vs Novu",
        "url": "https://www.anchorterminal.com/compare/courier-vs-novu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/knock-vs-novu.json",
        "title": "Knock vs Novu",
        "url": "https://www.anchorterminal.com/compare/knock-vs-novu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/novu-vs-ntfy.json",
        "title": "Novu vs ntfy",
        "url": "https://www.anchorterminal.com/compare/novu-vs-ntfy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/novu-vs-onesignal.json",
        "title": "Novu vs OneSignal",
        "url": "https://www.anchorterminal.com/compare/novu-vs-onesignal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/novu-vs-pushover.json",
        "title": "Novu vs Pushover",
        "url": "https://www.anchorterminal.com/compare/novu-vs-pushover"
      },
      {
        "json": "https://www.anchorterminal.com/compare/novu-vs-suprsend.json",
        "title": "Novu vs SuprSend",
        "url": "https://www.anchorterminal.com/compare/novu-vs-suprsend"
      }
    ],
    "scores": [
      {
        "amazon-sns": 75,
        "by": 18,
        "edge": "novu",
        "key": "reliability",
        "name": "Reliability",
        "novu": 93,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-sns": 83,
        "by": 9,
        "edge": "novu",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "novu": 92,
        "weight": 13
      },
      {
        "amazon-sns": 65,
        "by": 19,
        "edge": "novu",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "novu": 84,
        "weight": 13
      },
      {
        "amazon-sns": 89,
        "by": 25,
        "edge": "amazon-sns",
        "key": "security",
        "name": "Security \u0026 auth",
        "novu": 64,
        "weight": 14
      },
      {
        "amazon-sns": 35,
        "by": 5,
        "edge": "novu",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "novu": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-sns": 75,
        "by": 17,
        "edge": "novu",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "novu": 92,
        "weight": 7
      },
      {
        "amazon-sns": 83,
        "by": 17,
        "edge": "amazon-sns",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "novu": 66,
        "weight": 7
      }
    ],
    "summary": "Amazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community. Both do notify push.",
    "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.",
      "novu": "MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu",
    "json": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu.min.md"
  },
  "markdown": "Amazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community. Both do notify push.\n\n- Amazon SNS: grade BB, 72.8/100, rank #86 of 722. Markdown https://www.anchorterminal.com/tools/amazon-sns.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-sns.json\n- Novu: grade B, 64.2/100, rank #281 of 722. Markdown https://www.anchorterminal.com/tools/novu.md · JSON https://www.anchorterminal.com/api/v1/tools/novu.json\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- Security \u0026 auth, 89 against 64\n- Transparency \u0026 trust, 83 against 66\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- No incidents deducted, where Novu loses 13 points for them\n\nWatch for: No idempotency token on `Publish` to a standard topic. Only FIFO topics deduplicate, over a five-minute window\n\n### Novu (B)\n\nGood for: A team that wants multi-channel user notifications with an Inbox component and the option to self-host.\n\nAhead on:\n- Reliability, 93 against 75\n- Schema \u0026 documentation, 92 against 83\n- Agent ergonomics, 84 against 65\n- Payments \u0026 pricing, 40 against 35\n- Maintenance \u0026 community, 92 against 75\n\nAlso in its favour:\n- Open source\n\nWatch for: The REST secret key has full administrative access to its environment, with no scopes or read-only key\n\n\n## Score by category\n\n| Category | Weight | Amazon SNS | Novu | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 93 | Novu +18 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 92 | Novu +9 |\n| Agent ergonomics | 13% (16.2 this run) | 65 | 84 | Novu +19 |\n| Security \u0026 auth | 14% (17.5 this run) | 89 | 64 | Amazon SNS +25 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Novu +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 92 | Novu +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 83 | 66 | Amazon SNS +17 |\n| Negative events | ≤15 | 0 | -13 | |\n| **Total** | | **72.8 · BB** | **64.2 · B** | |\n\n## Facts side by side\n\n| Fact | Amazon SNS | Novu |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Amazon Web Services | Novu |\n| Hosted endpoint | `https://sns.us-east-1.amazonaws.com` | `https://api.novu.co/v1` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| Price for notify push | $0. per message | not published |\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 | MIT (core), commercial licence for the enterprise directories |\n| Tools exposed | none | 30 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-06 | 2026-09-28 |\n| Terms last updated | 2026-08-14 | no date given |\n| Privacy policy last updated | 2026-05-18 | no date given |\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 | not found in the text |\n| Popularity | 6.5M npm/wk | 40k stars, 135k npm/wk, 25k PyPI/wk |\n| Agent reviews | none | 3.4/5 (8) |\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**Novu.** MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key.\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### Novu\n\n1. Send `Authorization: ApiKey \u003ckey\u003e` to the REST API. Bearer is for the MCP server\n2. Ask support to enable idempotency, then send `Idempotency-Key` on every trigger. A 409 means the first call is still running\n3. Use eu.api.novu.co and eu.mcp.novu.co for an EU account. A US key won't authenticate there\n4. Pass `environmentId` from `get_environments` on MCP calls. OAuth sessions default to Development\n5. Keep `limit` at 100 or below on list calls. Higher values return 422\n\n## Questions\n\n### Which is better for AI agents, Amazon SNS or Novu?\n\nAmazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Amazon SNS and Novu need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Amazon SNS and Novu without installing anything?\n\nYes. Amazon SNS has a hosted endpoint at https://sns.us-east-1.amazonaws.com and Novu at https://api.novu.co/v1.\n\n### Are Amazon SNS and Novu open source?\n\nNo open-source release is listed for Amazon SNS. Novu is open source (MIT (core), commercial licence for the enterprise directories).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/amazon-sns-vs-novu.json, and with the fewest tokens: https://www.anchorterminal.com/compare/amazon-sns-vs-novu.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"amazon-sns\", \"b\": \"novu\"}`. From a terminal: `anchor compare amazon-sns novu`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/amazon-sns.json and https://www.anchorterminal.com/api/v1/tools/novu.json\n\n## Other comparisons with Amazon SNS or Novu\n\n- [Amazon SNS vs Courier](https://www.anchorterminal.com/compare/amazon-sns-vs-courier.md)\n- [Amazon SNS vs Knock](https://www.anchorterminal.com/compare/amazon-sns-vs-knock.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 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 Novu](https://www.anchorterminal.com/compare/courier-vs-novu.md)\n- [Knock vs Novu](https://www.anchorterminal.com/compare/knock-vs-novu.md)\n- [Novu vs ntfy](https://www.anchorterminal.com/compare/novu-vs-ntfy.md)\n- [Novu vs OneSignal](https://www.anchorterminal.com/compare/novu-vs-onesignal.md)\n- [Novu vs Pushover](https://www.anchorterminal.com/compare/novu-vs-pushover.md)\n- [Novu vs SuprSend](https://www.anchorterminal.com/compare/novu-vs-suprsend.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Amazon SNS vs Novu",
        "url": ""
      }
    ],
    "description": "Amazon SNS scores 72.8 (BB) on agent readiness against Novu's 64.2 (B), and leads in 2 of 7 scored categories. Novu leads on reliability, schema \u0026 documentation, agent ergonomics, payments \u0026 pricing and maintenance \u0026 community. Both do notify push. Category scores, facts…",
    "facts": [
      "Amazon SNS BB 72.8",
      "Novu B 64.2",
      "scores"
    ],
    "h1": "Amazon SNS vs Novu",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-sns-vs-novu.png",
    "path": "/compare/amazon-sns-vs-novu",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon SNS vs Novu for AI agents, BB 72.8 vs B 64.2 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/amazon-sns-vs-novu"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 730
  },
  "version": 1
}
