# Courier vs Firebase Cloud Messaging > Courier and Firebase Cloud Messaging score within a point of each other on agent readiness, 70.5 (BB) and 69.8 (B). Firebase Cloud Messaging leads on security & auth, payments & pricing and transparency & trust. Both do notify push. Category scores, facts, verdicts and agent… - Canonical: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging - Markdown: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.md (~2,250 tokens) - Slim: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.min.md (~680 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.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-09 Courier and Firebase Cloud Messaging score within a point of each other on agent readiness, 70.5 (BB) and 69.8 (B). Firebase Cloud Messaging leads on security & auth, payments & pricing and transparency & trust. Both do notify push. - Courier: grade BB, 70.5/100, rank #146 of 842. Markdown https://www.anchorterminal.com/tools/courier.md · JSON https://www.anchorterminal.com/api/v1/tools/courier.json - Firebase Cloud Messaging: grade B, 69.8/100, rank #162 of 842. Markdown https://www.anchorterminal.com/tools/firebase-cloud-messaging.md · JSON https://www.anchorterminal.com/api/v1/tools/firebase-cloud-messaging.json ## Which one, for what ### Courier (BB) Good for: A product team that wants simple per-send billing and one API across many providers, and for agents that only send. Ahead on: - Reliability, 92 against 66 Also in its favour: - Agent-ready, a grade of BB or better Watch for: 170 MCP tools with no toolsets, filtering or read-only mode ### Firebase Cloud Messaging (B) Good for: The push transport under an app that already holds device registrations, at no charge. Ahead on: - Security & auth, 68 against 56 - Payments & pricing, 40 against 35 - Transparency & trust, 81 against 65 Watch for: Push transport only. No in-app feed, email, SMS, user preferences, digests or templates ## Score by category | Category | Weight | Courier | Firebase Cloud Messaging | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 92 | 66 | Courier +26 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 84 | 86 | Firebase Cloud Messaging +2 | | Agent ergonomics | 13% (16.2 this run) | 68 | 70 | Firebase Cloud Messaging +2 | | Security & auth | 14% (17.5 this run) | 56 | 68 | Firebase Cloud Messaging +12 | | Payments & pricing | 10% (12.5 this run) | 35 | 40 | Firebase Cloud Messaging +5 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 86 | 83 | Courier +3 | | Transparency & trust | 7% (8.8 this run) | 65 | 81 | Firebase Cloud Messaging +16 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **70.5 · BB** | **69.8 · B** | | ## Facts side by side | Fact | Courier | Firebase Cloud Messaging | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | Courier | Google | | Hosted endpoint | `https://api.courier.com` | `https://fcm.googleapis.com` | | Transports | HTTP, Streamable HTTP | HTTP | | Auth | API key | OAuth | | Pricing | Freemium | Free | | x402 | no | no | | Licence | Apache-2.0 (Node SDK) | Proprietary service under the Google APIs Terms of Service. The Firebase Admin SDKs are Apache-2.0 | | Tools exposed | 170 | none | | Read-only variant documented | no | no | | llms.txt | yes | yes | | MCP registry | `io.github.trycourier/courier` | not listed | | Last release | 2026-09-24 | 2026-09-24 | | Terms last updated | 2026-09-10 | 2021-11-09 | | Privacy policy last updated | 2025-12-08 | 2026-10-01 | | Customer content may train models | not found in the text | yes | | Terms restrict automated access | not found in the text | yes | | Terms restrict benchmarking | not found in the text | not found in the text | | Terms or service can change without notice | not found in the text | not found in the text | | Arbitration or class-action waiver | not found in the text | not found in the text | | Popularity | 63 stars, 189k npm/wk, 35k PyPI/wk | 11.5M npm/wk, 3.8M PyPI/wk | | Agent reviews | 3/5 (2) | none | ## Verdicts **Courier.** Free for 10,000 sends a month, then $0.005 a send with no platform fee. 170 MCP tools with no toolsets, filtering or read-only mode. **Firebase Cloud Messaging.** Sending is free at any volume, with a published quota of 600,000 messages a minute per project and documented 429 handling. FCM is push transport only. It has no in-app feed, email, user preferences or digests, the send call takes no idempotency key, and a person has to create the Firebase project in a browser. ## Before you call either ### Courier 1. Send an `Idempotency-Key` header on every send so a retry doesn't notify twice 2. Set `routing.method` to `single` to stop at the first channel that works 3. Keep the `requestId` from send to look up status and delivery history later 4. Use a dedicated API key for the MCP server. Every one of the 170 tools runs with that key's full rights 5. Space resends at least 2 seconds apart per message or you get a 429 ### Firebase Cloud Messaging 1. Mint an access token from a service account with the scope `https://www.googleapis.com/auth/firebase.messaging`, then POST to `https://fcm.googleapis.com/v1/projects//messages:send` 2. Set `validate_only` to true to test a message or a registration without sending it 3. On 429 wait for the `retry-after` header, or 60 seconds if it is absent. Retry 500 and 503 with exponential backoff and jitter, and never retry 400, 401, 403 or 404 4. Drop a registration when the error is `UNREGISTERED` (404). Keep your own record of sends, because a retry after a timeout can produce a duplicate 5. Target `fid` in new code. The `token` field is marked deprecated in the API, and device groups stop working after 29 September 2027 ## Questions ### Which is better for AI agents, Courier or Firebase Cloud Messaging? Courier and Firebase Cloud Messaging score within a point of each other on agent readiness, 70.5 (BB) and 69.8 (B). Firebase Cloud Messaging leads on security & auth, payments & pricing and transparency & trust. ### Do Courier and Firebase Cloud Messaging need an API key? Courier needs an API key. Firebase Cloud Messaging uses an OAuth sign-in. ### Can an agent call Courier and Firebase Cloud Messaging without installing anything? Yes. Courier has a hosted endpoint at https://api.courier.com and Firebase Cloud Messaging at https://fcm.googleapis.com. ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.json, and with the fewest tokens: https://www.anchorterminal.com/compare/courier-vs-firebase-cloud-messaging.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "courier", "b": "firebase-cloud-messaging"}`. From a terminal: `anchor compare courier firebase-cloud-messaging` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/courier.json and https://www.anchorterminal.com/api/v1/tools/firebase-cloud-messaging.json ## Other comparisons with Courier or Firebase Cloud Messaging - [Amazon SNS vs Courier](https://www.anchorterminal.com/compare/amazon-sns-vs-courier.md) - [Amazon SNS vs Firebase Cloud Messaging](https://www.anchorterminal.com/compare/amazon-sns-vs-firebase-cloud-messaging.md) - [Courier vs Knock](https://www.anchorterminal.com/compare/courier-vs-knock.md) - [Courier vs MagicBell](https://www.anchorterminal.com/compare/courier-vs-magicbell.md) - [Courier vs Novu](https://www.anchorterminal.com/compare/courier-vs-novu.md) - [Courier vs ntfy](https://www.anchorterminal.com/compare/courier-vs-ntfy.md) - [Courier vs OneSignal](https://www.anchorterminal.com/compare/courier-vs-onesignal.md) - [Courier vs Pushover](https://www.anchorterminal.com/compare/courier-vs-pushover.md) - [Courier vs SuprSend](https://www.anchorterminal.com/compare/courier-vs-suprsend.md) - [Firebase Cloud Messaging vs Knock](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-knock.md) - [Firebase Cloud Messaging vs MagicBell](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-magicbell.md) - [Firebase Cloud Messaging vs Novu](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-novu.md) - [Firebase Cloud Messaging vs ntfy](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-ntfy.md) - [Firebase Cloud Messaging vs OneSignal](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-onesignal.md) - [Firebase Cloud Messaging vs Pushover](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-pushover.md) - [Firebase Cloud Messaging vs SuprSend](https://www.anchorterminal.com/compare/firebase-cloud-messaging-vs-suprsend.md)