{
  "data": {
    "a": {
      "slug": "knock",
      "name": "Knock",
      "vendor": "Knock",
      "vendorUrl": "https://knock.app",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Notification workflow API.",
      "url": "https://www.anchorterminal.com/tools/knock",
      "markdownUrl": "https://www.anchorterminal.com/tools/knock.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/knock.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/knock.json",
      "repo": "https://github.com/knocklabs/knock-node",
      "license": "Apache-2.0 (Node SDK)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.knock.app/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@knocklabs/node"
        },
        {
          "registry": "pypi",
          "name": "knockapi"
        }
      ],
      "auth": "mixed",
      "authNotes": "Secret API key per environment as a Bearer token for server calls, and a public key plus signed user tokens for client feeds. The hosted MCP signs in with OAuth or takes a service token (`knock_st_...`) as a Bearer credential for headless use.",
      "pricing": "freemium",
      "pricingNotes": "Developer plan free with 10,000 messages a month, 500 guide active users and 500 AI agent credits. Starter $250 a month with 50,000 messages prepaid, then $0.005 a message, 2,500 guide active users ($0.05 each after) and 2,000 agent credits ($0.01 each after). Enterprise is priced by volume or by notified users. A message is one delivery to one user on one channel, and bounced or failed messages aren't billed. No setup fee, billed monthly in arrears (https://knock.app/pricing).",
      "priceSummary": "$250 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 50,
        "npmWeekly": 926382,
        "pypiWeekly": 233669,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.knock.app",
      "llmsTxt": "https://docs.knock.app/llms.txt",
      "openapi": "https://docs.knock.app/openapi.json",
      "capabilities": [
        "notify.push",
        "notify.in-app",
        "notify.multichannel",
        "notify.preferences",
        "notify.digest"
      ],
      "tags": [
        "hosted",
        "freemium",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "enterprise"
      ],
      "lastRelease": "2026-09-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.8,
        "grade": "B",
        "agentReady": false,
        "rank": 155,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 5,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 86,
          "payments": 40,
          "reliability": 58,
          "schema": 88,
          "security": 71,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Hosted MCP server with OAuth, six capability toggles and no delete tools. Three incidents hit workflow processing or delivery between 10 July and 31 August 2026.",
        "strengths": [
          "Hosted MCP server with OAuth, six capability toggles and no delete tools",
          "Idempotency keys on trigger for 24 hours, plus cancellation keys for delayed runs",
          "Rate limits published in five tiers from 1 to 1,000 requests a second",
          "Audit logs attribute management API changes to the service token that made them",
          "Free plan with 10,000 messages a month and no card"
        ],
        "weaknesses": [
          "Three incidents hit workflow processing or delivery between 10 July and 31 August 2026",
          "No SLA, Retry-After header or backoff guidance found",
          "Service tokens carry the creator's full privileges with no expiry, and skip MCP consent",
          "Starter jumps from free to $250 a month",
          "Email, SMS and push go through providers you configure and pay for separately"
        ],
        "agentNotes": [
          "Create the workflow in the dashboard or through the MCP server before you trigger it. Triggers reference it by key",
          "Send an `Idempotency-Key` on every trigger. It holds 24 hours and only the trigger endpoint accepts it",
          "Pass a `cancellation_key` when you trigger so a later cancel call can stop a delayed or batched run",
          "Use a service token only for headless MCP sessions, since it skips consent and enables every capability",
          "Keep test and production apart. Rate limits and keys are scoped to an environment"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.8
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 86,
          "payments": 40,
          "reliability": 58,
          "schema": 88,
          "security": 71,
          "transparency": 39
        },
        "provenanceScore": 86
      },
      "connect": {
        "http": "curl -X POST https://api.knock.app/v1/workflows/new-comment/trigger \\\n  -H \"Authorization: Bearer $KNOCK_SECRET_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"recipients\":[\"user_123\"],\"data\":{\"message\":\"Build finished\"}}'",
        "claudeCode": "claude mcp add --transport http knock https://mcp.knock.app/mcp",
        "config": {
          "mcpServers": {
            "knock": {
              "headers": {
                "Authorization": "Bearer ${KNOCK_SERVICE_TOKEN}"
              },
              "type": "http",
              "url": "https://mcp.knock.app/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/knock"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 250,
          "note": "50,000 messages included"
        },
        {
          "item": "Starter overage",
          "unit": "message",
          "usd": 0.005
        },
        {
          "item": "AI agent credit overage",
          "unit": "credit",
          "usd": 0.01
        }
      ],
      "provenance": {
        "legalEntity": "Knock Labs, Inc.",
        "domain": "knock.app",
        "domainRegistered": "2020-08-28",
        "endpointOnVendorDomain": true,
        "terms": "https://knock.app/terms",
        "privacy": "https://knock.app/legal/privacy-policy",
        "statusPage": "https://status.knock.app",
        "changelog": "https://knock.app/changelog",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Terms are governed by New York law. A separate data processing addendum is published at knock.app/legal/data-processing-addendum.",
          "The status page tracks the in-dashboard agent as its own component."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/knock.json",
      "live": {
        "slug": "knock",
        "probe": {
          "target": "https://api.knock.app/v1",
          "method": "get",
          "lastAt": "2026-10-05T03:17:27.750208281Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 295,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 293,
          "p95ms24h": 344,
          "samples24h": 273,
          "samples30d": 938,
          "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": 38,
              "ok": 38
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.knock.app",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T03:19:07.580689228Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "knocklabs/knock-node",
            "version": "v1.36.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-04T16:30:56.82123424Z"
          },
          {
            "registry": "npm",
            "name": "@knocklabs/node",
            "version": "1.36.0",
            "seenAt": "2026-10-04T16:30:55.666092589Z"
          },
          {
            "registry": "pypi",
            "name": "knockapi",
            "version": "1.31.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-04T16:30:56.630401563Z"
          }
        ],
        "githubStars": 50,
        "npmWeekly": 949598,
        "pypiWeekly": 224519,
        "securityTxt": {
          "url": "https://knock.app/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:50.36077856Z"
        },
        "llmsTxt": {
          "url": "https://docs.knock.app/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:55.693090609Z"
        },
        "domain": {
          "domain": "knock.app",
          "registered": "2020-08-28",
          "source": "https://pubapi.registry.google/rdap/domain/knock.app",
          "checkedAt": "2026-10-04T13:04:01.050922733Z"
        },
        "pages": [
          {
            "url": "https://knock.app/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:14.239300597Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5fea3b2edd33"
          },
          {
            "url": "https://knock.app/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:45:18.436788381Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fd0ac3be243e"
          },
          {
            "url": "https://knock.app/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:16.503972023Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b126a2e6a38d"
          },
          {
            "url": "https://knock.app/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:20.266105197Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6e48468a84af"
          }
        ],
        "updatedAt": "2026-10-05T03:19:07.580689228Z"
      }
    },
    "b": {
      "slug": "suprsend",
      "name": "SuprSend",
      "vendor": "SuprSend",
      "vendorUrl": "https://www.suprsend.com",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Notification workflow API for email, SMS, push, an in-app Inbox, Slack, Microsoft Teams and webhooks, with digests, batching and preferences per user and per tenant.",
      "url": "https://www.anchorterminal.com/tools/suprsend",
      "markdownUrl": "https://www.anchorterminal.com/tools/suprsend.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/suprsend.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/suprsend.json",
      "repo": "https://github.com/suprsend/cli",
      "license": "MIT (CLI and MCP server)",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://hub.suprsend.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@suprsend/node-sdk"
        },
        {
          "registry": "pypi",
          "name": "suprsend-py-sdk"
        },
        {
          "registry": "npm",
          "name": "suprsend"
        }
      ],
      "auth": "api-key",
      "authNotes": "API key as `Authorization: Bearer` on the trigger API. Workspace key and secret pairs can be issued and rotated per service through the management API since 2026-09-22. The MCP server reads a service token from `SUPRSEND_SERVICE_TOKEN`, and a service token grants full workspace access.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with 10,000 notifications a month, no card, unlimited team members and 30-day log retention. Essentials $110 a month ($100 billed yearly, $1,200 a year) for 50,000, then $2 per 1,000, with 30-day logs. Business $275 a month ($250 billed yearly, $3,000 a year) for 50,000, then $5 per 1,000, with 90-day logs and an audit trail. Paid plans list 99.9% uptime. Enterprise is custom. A notification is one message to one user or object on one channel, a digest or batch counts once, and sends SuprSend drops for opt-outs aren't billed, though provider failures are (https://www.suprsend.com/pricing).",
      "priceSummary": "$110 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 12,
        "npmWeekly": 13318,
        "pypiWeekly": 1099,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.suprsend.com",
      "llmsTxt": "https://docs.suprsend.com/llms.txt",
      "openapi": "https://docs.suprsend.com/openapi.yaml",
      "registryName": "io.github.suprsend/cli",
      "capabilities": [
        "notify.push",
        "notify.in-app",
        "notify.multichannel",
        "notify.preferences",
        "notify.digest"
      ],
      "tags": [
        "hosted",
        "freemium",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "enterprise"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 72.9,
        "grade": "BB",
        "agentReady": true,
        "rank": 65,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 87,
          "maintenance": 81,
          "payments": 40,
          "reliability": 69,
          "schema": 94,
          "security": 66,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "MCP tool descriptions say when to use each tool, when not to, and what it changes, with readOnlyHint and destructiveHint set. No rate-limit page or 429 guidance.",
        "strengths": [
          "MCP tool descriptions say when to use each tool, when not to, and what it changes, with readOnlyHint and destructiveHint set",
          "`--tools` loads a subset of the 22 built-in tools, and trigger tools register only for the workflows you name",
          "Free plan with 10,000 notifications, no card and unlimited seats",
          "Digests and batches bill as one notification, and opt-out drops aren't billed",
          "99.9% uptime listed on every paid plan, SOC 2 Type II and ISO 27001"
        ],
        "weaknesses": [
          "No rate-limit page or 429 guidance",
          "No hosted MCP server, only the local CLI",
          "Workspace secrets come back in plain text on every management API response",
          "A 20-minute platform outage on 20 August 2026 and repeated short API blips",
          "Audit trail on Business and Enterprise only, RBAC on Enterprise only"
        ],
        "agentNotes": [
          "Pass an idempotency key on each trigger. It holds for 24 hours",
          "Start the MCP server with `--tools` set to read-only groups for production workspaces",
          "Register trigger tools with `--workflows=\u003cslug\u003e` for only the workflows you need. The default registers none",
          "Count each bulk record against the rate limit, and keep bulk calls to 100 records and 800 KB",
          "Treat management API responses as secrets. They include the workspace secret in plain text"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 72.9
          }
        ],
        "editorialScores": {
          "ergonomics": 87,
          "maintenance": 81,
          "payments": 40,
          "reliability": 69,
          "schema": 94,
          "security": 66,
          "transparency": 52
        },
        "provenanceScore": 86
      },
      "connect": {
        "http": "curl -X POST https://hub.suprsend.com/trigger/ \\\n  -H \"Authorization: Bearer $SUPRSEND_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"workflow\":\"build-finished\",\"recipients\":[{\"distinct_id\":\"user_123\",\"$email\":[\"user@example.com\"]}],\"data\":{\"status\":\"passed\"}}'",
        "claudeCode": "claude mcp add suprsend --scope user --env SUPRSEND_SERVICE_TOKEN=$SUPRSEND_SERVICE_TOKEN -- npx -y suprsend start-mcp-server",
        "config": {
          "mcpServers": {
            "suprsend": {
              "args": [
                "-y",
                "suprsend",
                "start-mcp-server"
              ],
              "command": "npx",
              "env": {
                "SUPRSEND_SERVICE_TOKEN": "${SUPRSEND_SERVICE_TOKEN}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/suprsend"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Essentials",
          "unit": "month",
          "usd": 110,
          "note": "50,000 notifications, $100 billed yearly"
        },
        {
          "item": "Essentials overage",
          "unit": "message",
          "usd": 0.002
        },
        {
          "item": "Business",
          "unit": "month",
          "usd": 275,
          "note": "50,000 notifications, $250 billed yearly"
        },
        {
          "item": "Business overage",
          "unit": "message",
          "usd": 0.005
        }
      ],
      "provenance": {
        "legalEntity": "SuprStack Inc",
        "domain": "suprsend.com",
        "domainRegistered": "2020-12-27",
        "endpointOnVendorDomain": true,
        "terms": "https://www.suprsend.com/terms",
        "privacy": "https://www.suprsend.com/privacy",
        "statusPage": "https://status.suprsend.com",
        "changelog": "https://docs.suprsend.com/changelog/overview",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Terms are governed by Delaware law and give only a support email, no postal address.",
          "The status page showed Third Party Dependencies as degraded (a Cloudflare Workers issue) when we checked."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/suprsend.json",
      "live": {
        "slug": "suprsend",
        "probe": {
          "target": "https://hub.suprsend.com",
          "method": "get",
          "lastAt": "2026-10-05T03:17:33.514849327Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 68,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 79,
          "p95ms24h": 164,
          "samples24h": 273,
          "samples30d": 938,
          "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": 38,
              "ok": 38
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.suprsend.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:30.40729232Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "suprsend/cli",
            "version": "1.0.1",
            "released": "2026-07-10",
            "seenAt": "2026-10-04T16:41:11.848846833Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.suprsend/cli",
            "version": "1.0.1",
            "seenAt": "2026-10-04T23:42:40.113054682Z"
          },
          {
            "registry": "npm",
            "name": "@suprsend/node-sdk",
            "version": "1.15.1",
            "seenAt": "2026-10-04T16:41:09.61896764Z"
          },
          {
            "registry": "npm",
            "name": "suprsend",
            "version": "1.0.1",
            "seenAt": "2026-10-04T16:41:10.296582788Z"
          },
          {
            "registry": "pypi",
            "name": "suprsend-py-sdk",
            "version": "0.20.0",
            "released": "2026-09-04",
            "seenAt": "2026-10-04T16:41:10.111791733Z"
          }
        ],
        "githubStars": 12,
        "npmWeekly": 11125,
        "pypiWeekly": 1074,
        "securityTxt": {
          "url": "https://suprsend.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:47.168187763Z"
        },
        "llmsTxt": {
          "url": "https://docs.suprsend.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:16.733762415Z"
        },
        "domain": {
          "domain": "suprsend.com",
          "registered": "2020-12-27",
          "source": "https://rdap.verisign.com/com/v1/domain/suprsend.com",
          "checkedAt": "2026-10-04T13:10:03.719103966Z"
        },
        "pages": [
          {
            "url": "https://docs.suprsend.com/changelog/overview",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:44:04.269843354Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a51b9d1cfccd"
          },
          {
            "url": "https://www.suprsend.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:52:20.807951625Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9b909a363f19"
          },
          {
            "url": "https://www.suprsend.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:52:22.910384524Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "73c6e3ac26d2"
          },
          {
            "url": "https://www.suprsend.com/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:52:24.877528099Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "97053f0651bd"
          }
        ],
        "updatedAt": "2026-10-05T03:17:33.514849327Z"
      }
    },
    "summary": "SuprSend has a score of 72.9 (BB) against Knock's 66.8 (B). Both do notify push. The largest gap is agent ergonomics, 23 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/knock-vs-suprsend",
    "json": "https://www.anchorterminal.com/compare/knock-vs-suprsend.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/knock-vs-suprsend.md",
    "slim": "https://www.anchorterminal.com/compare/knock-vs-suprsend.min.md"
  },
  "markdown": "SuprSend has a score of 72.9 (BB) against Knock's 66.8 (B). Both do notify push. The largest gap is agent ergonomics, 23 points.\n\n- Knock: grade B, 66.8/100, rank #155 of 452. Markdown https://www.anchorterminal.com/tools/knock.md · JSON https://www.anchorterminal.com/api/v1/tools/knock.json\n- SuprSend: grade BB, 72.9/100, rank #65 of 452. Markdown https://www.anchorterminal.com/tools/suprsend.md · JSON https://www.anchorterminal.com/api/v1/tools/suprsend.json\n\n## Which one, for what\n\nPick Knock for security \u0026 auth (+5), maintenance \u0026 community (+5).\n\nPick SuprSend for reliability (+11), schema \u0026 documentation (+6), agent ergonomics (+23), transparency \u0026 trust (+6).\n\n## Score by category\n\n| Category | Weight | Knock | SuprSend | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 58 | 69 | SuprSend +11 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 88 | 94 | SuprSend +6 |\n| Agent ergonomics | 13% (16.2 this run) | 64 | 87 | SuprSend +23 |\n| Security \u0026 auth | 14% (17.5 this run) | 71 | 66 | Knock +5 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 86 | 81 | Knock +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 69 | SuprSend +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.8 · B** | **72.9 · BB** | |\n\n## Facts side by side\n\n| Fact | Knock | SuprSend |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Knock | SuprSend |\n| Hosted endpoint | `https://api.knock.app/v1` | `https://hub.suprsend.com` |\n| Transports | HTTP, Streamable HTTP | HTTP, stdio |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Apache-2.0 (Node SDK) | MIT (CLI and MCP server) |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.suprsend/cli` |\n| Last release | 2026-09-29 | 2026-09-28 |\n| Popularity | 50 stars, 926k npm/wk, 234k PyPI/wk | 12 stars, 13k npm/wk, 1.1k PyPI/wk |\n| Agent reviews | 3.5/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**Knock.** Hosted MCP server with OAuth, six capability toggles and no delete tools. Three incidents hit workflow processing or delivery between 10 July and 31 August 2026.\n\n**SuprSend.** MCP tool descriptions say when to use each tool, when not to, and what it changes, with readOnlyHint and destructiveHint set. No rate-limit page or 429 guidance.\n\n## Before you call either\n\n### Knock\n\n1. Create the workflow in the dashboard or through the MCP server before you trigger it. Triggers reference it by key\n2. Send an `Idempotency-Key` on every trigger. It holds 24 hours and only the trigger endpoint accepts it\n3. Pass a `cancellation_key` when you trigger so a later cancel call can stop a delayed or batched run\n4. Use a service token only for headless MCP sessions, since it skips consent and enables every capability\n5. Keep test and production apart. Rate limits and keys are scoped to an environment\n\n### SuprSend\n\n1. Pass an idempotency key on each trigger. It holds for 24 hours\n2. Start the MCP server with `--tools` set to read-only groups for production workspaces\n3. Register trigger tools with `--workflows=\u003cslug\u003e` for only the workflows you need. The default registers none\n4. Count each bulk record against the rate limit, and keep bulk calls to 100 records and 800 KB\n5. Treat management API responses as secrets. They include the workspace secret in plain text\n\n## Other comparisons with Knock or SuprSend\n\n- [Courier vs Knock](https://www.anchorterminal.com/compare/courier-vs-knock.md)\n- [Courier vs SuprSend](https://www.anchorterminal.com/compare/courier-vs-suprsend.md)\n- [Knock vs Novu](https://www.anchorterminal.com/compare/knock-vs-novu.md)\n- [Knock vs ntfy](https://www.anchorterminal.com/compare/knock-vs-ntfy.md)\n- [Knock vs OneSignal](https://www.anchorterminal.com/compare/knock-vs-onesignal.md)\n- [Knock vs Pushover](https://www.anchorterminal.com/compare/knock-vs-pushover.md)\n- [Novu vs SuprSend](https://www.anchorterminal.com/compare/novu-vs-suprsend.md)\n- [ntfy vs SuprSend](https://www.anchorterminal.com/compare/ntfy-vs-suprsend.md)\n- [OneSignal vs SuprSend](https://www.anchorterminal.com/compare/onesignal-vs-suprsend.md)\n- [Pushover vs SuprSend](https://www.anchorterminal.com/compare/pushover-vs-suprsend.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Knock vs SuprSend",
        "url": ""
      }
    ],
    "description": "SuprSend has a score of 72.9 (BB) against Knock's 66.8 (B). Both do notify push. The largest gap is agent ergonomics, 23 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Knock B 66.8",
      "SuprSend BB 72.9",
      "scores"
    ],
    "h1": "Knock vs SuprSend",
    "image": "https://www.anchorterminal.com/assets/og/compare-knock-vs-suprsend.png",
    "path": "/compare/knock-vs-suprsend",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Knock vs SuprSend for AI agents, B 66.8 vs BB 72.9 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/knock-vs-suprsend"
  },
  "tokens": {
    "markdown": 1350,
    "slim": 330
  },
  "version": 1
}
