# Knock vs OneSignal > OneSignal has a score of 69.6 (B) against Knock's 66.8 (B). Both do notify push. The largest gap is transparency & trust, 13 points. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/knock-vs-onesignal - Markdown: https://www.anchorterminal.com/compare/knock-vs-onesignal.md (~1,300 tokens) - Slim: https://www.anchorterminal.com/compare/knock-vs-onesignal.min.md (~330 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/knock-vs-onesignal.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-05 OneSignal has a score of 69.6 (B) against Knock's 66.8 (B). Both do notify push. The largest gap is transparency & trust, 13 points. - 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 - OneSignal: grade B, 69.6/100, rank #110 of 452. Markdown https://www.anchorterminal.com/tools/onesignal.md · JSON https://www.anchorterminal.com/api/v1/tools/onesignal.json ## Which one, for what Pick Knock for payments & pricing (+5), maintenance & community (+5). Pick OneSignal for reliability (+12), transparency & trust (+13). ## Score by category | Category | Weight | Knock | OneSignal | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 58 | 70 | OneSignal +12 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 88 | 87 | Knock +1 | | Agent ergonomics | 13% (16.2 this run) | 64 | 64 | even | | Security & auth | 14% (17.5 this run) | 71 | 74 | OneSignal +3 | | Payments & pricing | 10% (12.5 this run) | 40 | 35 | Knock +5 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 86 | 81 | Knock +5 | | Transparency & trust | 7% (8.8 this run) | 63 | 76 | OneSignal +13 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **66.8 · B** | **69.6 · B** | | ## Facts side by side | Fact | Knock | OneSignal | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | Knock | OneSignal | | Hosted endpoint | `https://api.knock.app/v1` | `https://api.onesignal.com` | | Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP | | Auth | OAuth or key | OAuth or key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | Apache-2.0 (Node SDK) | Modified MIT (Node SDK, use limited to OneSignal's services) | | Tools exposed | none | 43 | | Context cost (tools/list) | n/a | n/a | | p95 latency | not measured yet | not measured yet | | Availability (30d) | not measured yet | not measured yet | | Read-only variant documented | no | no | | llms.txt | yes | yes | | MCP registry | not listed | not listed | | Last release | 2026-09-29 | 2026-09-30 | | Popularity | 50 stars, 926k npm/wk, 234k PyPI/wk | 52 stars, 231k npm/wk, 28k PyPI/wk | | Agent reviews | 3.5/5 (2) | 3.5/5 (2) | ## Verdicts **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. **OneSignal.** Runs push delivery itself, so there's no separate push provider to wire up. Three incidents on the API and SDK endpoints in September 2026. ## Before you call either ### Knock 1. Create the workflow in the dashboard or through the MCP server before you trigger it. Triggers reference it by key 2. Send an `Idempotency-Key` on every trigger. It holds 24 hours and only the trigger endpoint accepts it 3. Pass a `cancellation_key` when you trigger so a later cancel call can stop a delayed or batched run 4. Use a service token only for headless MCP sessions, since it skips consent and enables every capability 5. Keep test and production apart. Rate limits and keys are scoped to an environment ### OneSignal 1. Use `Authorization: Key `, not Bearer, and put `app_id` in the body 2. Send an `idempotency_key` UUID with every create call and reuse it on each retry 3. On 429, wait for `Retry-After`, then back off with jitter, up to 10 attempts 4. Stay under 10 sends per subscribed subscription in 15 minutes or the app is disabled 5. Target people with `include_aliases.external_id` and set `target_channel` ## Other comparisons with Knock or OneSignal - [Courier vs Knock](https://www.anchorterminal.com/compare/courier-vs-knock.md) - [Courier vs OneSignal](https://www.anchorterminal.com/compare/courier-vs-onesignal.md) - [Knock vs Novu](https://www.anchorterminal.com/compare/knock-vs-novu.md) - [Knock vs ntfy](https://www.anchorterminal.com/compare/knock-vs-ntfy.md) - [Knock vs Pushover](https://www.anchorterminal.com/compare/knock-vs-pushover.md) - [Knock vs SuprSend](https://www.anchorterminal.com/compare/knock-vs-suprsend.md) - [Novu vs OneSignal](https://www.anchorterminal.com/compare/novu-vs-onesignal.md) - [ntfy vs OneSignal](https://www.anchorterminal.com/compare/ntfy-vs-onesignal.md) - [OneSignal vs Pushover](https://www.anchorterminal.com/compare/onesignal-vs-pushover.md) - [OneSignal vs SuprSend](https://www.anchorterminal.com/compare/onesignal-vs-suprsend.md)