Firebase Cloud Messaging
by Google HTTP API in Notifications
Hosted
Google LLC · google.com since 1997 · status page · who's behind it
Google's push messaging service for Android, Apple and web apps. A server sends notification or data messages to devices, topics or conditions through the HTTP v1 API or the Firebase Admin SDKs.
Good for The push transport under an app that already holds device registrations, at no charge.
Is this your product? Claim this listing or verify it
More from Google Gemini Developer API (Models) · Gemini Embedding (Embeddings) · Vertex AI Gemini tuning (Fine-tuning) · Google Cloud Model Armor (Guardrails) · Google Imagen (Image) · Google Veo (Video) · Google Lyria (Music) · Google Cloud Speech-to-Text (STT) · Gemini Live API (Voice agents) · Agent Development Kit (ADK) (Frameworks) · Google Cloud Secret Manager (Secrets) · Google Weather API (Maps Platform) (Weather) · Chrome DevTools MCP (Browser) · Google Maps Platform + Grounding Lite MCP (Maps) · Google Cloud Translation (Translation) · Google Calendar API (Scheduling) · Google Drive API + MCP (Storage) · Gemini CLI (Harnesses) · Google Search Console API (SEO) · Google Ads API (Advertising) · Google Forms API (Forms) · Google Sheets API (Spreadsheets) · Gmail API (Mailboxes)
Assessment. 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.
Facts
- Transport
- HTTP
- Endpoint
https://fcm.googleapis.com- Auth
- OAuth
- Pricing
- Free · Free
- x402
- No
- Licence
- Proprietary service under the Google APIs Terms of Service. The Firebase Admin SDKs are Apache-2.0
- Packages
npmfirebase-adminpypifirebase-admin- llms.txt
- published
- Last release
- npm / week
- 11.5M
- PyPI / week
- 3.8M
- API
- HTTP v1 at
https://fcm.googleapis.com/v1/projects/<project-id>/messages:send, plus five topic subscription methods. Discovery revision 20261006 - Targets
- A Firebase installation ID or registration token, a topic, or a condition over topics. Device groups are deprecated and stop on 29 September 2027
- Platforms
- Android, Apple platforms through APNs, and web push
- Payload
- Up to 4,096 bytes, or 2,048 bytes for a topic message
- Quota
- 600,000 messages a minute per project. 240 a minute and 5,000 an hour to one Android device. 3,000 topic subscription changes a second. 1,000 concurrent fanouts
- Retries
- 429 with
retry-after(60 seconds if absent). Exponential backoff with jitter on 500 and 503. No idempotency key - Credentials
- OAuth 2.0 token from a service account, scope
firebase.messaging, IAM permissioncloudmessaging.messages.create - Admin SDKs
- Node.js, Python, Java, Go and .NET. Up to 500 messages or targets per SDK call, sent as separate requests
- Delivery data
- Aggregate Data API for Android (
v1beta1) and an optional BigQuery export of per-message events - Message storage
- Up to four weeks for undelivered messages, or the
ttlgiven - Price
- No charge on the Spark and Blaze plans
- Capabilities
- notify.push
Facts verified 2026-10-08 from vendor docs, repositories and package registries. JSON · Markdown
Strengths
- No charge for sending on either Firebase plan, and no billing account needed (https://firebase.google.com/pricing)
- Default quota of 600,000 messages a minute per project, with 429 responses that carry
retry-afterand written backoff guidance - Short-lived OAuth 2.0 tokens with a
firebase.messagingscope, and IAM permissions per action such ascloudmessaging.messages.create - Public Discovery document (revision 20261006), a docs
llms.txtand a Markdown twin of every docs page - Dated deprecation notice in September 2026 that gives 12 months before the Instance ID server APIs and device groups stop on 29 September 2027
Weaknesses
- Push transport only. No in-app feed, email, SMS, user preferences, digests or templates
- No idempotency key on
messages:send, so a retried request can reach the device twice - One HTTP request per message. Only the Admin SDKs group up to 500 sends in a call
- FCM is absent from Google Cloud's list of services with audit logs, and per-message delivery data needs a BigQuery export
- One incident on 1 September 2026 lowered availability in North America for 3 hours 51 minutes, and no SLA names FCM
Before you call it notes for agents
- Mint an access token from a service account with the scope
https://www.googleapis.com/auth/firebase.messaging, then POST tohttps://fcm.googleapis.com/v1/projects/<project-id>/messages:send - Set
validate_onlyto true to test a message or a registration without sending it - On 429 wait for the
retry-afterheader, or 60 seconds if it is absent. Retry 500 and 503 with exponential backoff and jitter, and never retry 400, 401, 403 or 404 - 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 - Target
fidin new code. Thetokenfield is marked deprecated in the API, and device groups stop working after 29 September 2027
Who's behind it provenance 94/100
- Legal entity namedGoogle LLC20/20
- Domain agegoogle.com, registered 1997-09-15 (29 years)15/15
- Endpoint on the vendor's domainfcm.googleapis.com15/15
- Terms of serviceread, states 6 of the 7 things a reader expects, and has 1 clause that costs points7.1/10
- Privacy policyread, states 7 of the 8 things a reader expects, and has 1 clause that costs points7.3/10
- Status pagestatus.firebase.google.com10/10
- Changelogpublished10/10
- security.txtvalid10/10
Terms and privacy, as read
Terms of service dated 2021-11-09, states 6 of 7, 3 to know
TL;DR Dated 2021-11-09. States 6 of the 7 things a reader expects, and we didn't find a service level. To know before relying on it, limits on automated access, cut-off without notice or for any reason and no update in three years.
Restricts automated accesscosts points
Scrape, build databases, or otherwise create permanent copies of such content, or keep cached copies longer than permitted by the cache header;
A rule against bots, scrapers or automated means can cover an agent, depending on how the vendor reads it.
Says access can be ended without notice or for any reason
Google reserves the right to terminate the Terms with you or discontinue the APIs or any portion or feature or your access thereto for any reason and at any time without liability or other obligation to you.
The vendor can suspend or close an account without warning, which would stop an agent mid-task.
Has not been updated for three years or more
Last modified: November 9, 2021 (see previous version)
The date the document gives for itself is more than three years ago.
Gives the date it was last updated Last updated 2021-11-09
Last modified: November 9, 2021 (see previous version)
Without a date nobody can tell which version they agreed to.
Names the governing law or courts The law of California, with disputes in the courts of Santa Clara County, California
Except as set forth below: (i) the laws of California, U.S.A., excluding California's conflict of laws rules, will apply to any disputes arising out of or related to the Terms or the APIs and (ii) ALL CLAIMS ARISING OUT OF OR RELATING TO THE TERMS OR THE APIS WILL BE LITIGATED EXCLUSIVELY IN THE FEDERAL OR STATE COURT…
Says where a dispute would be heard and under whose law.
States a limit on its liability Capped at the fees paid in the 6 months before the claim
…ITS SUPPLIERS AND DISTRIBUTORS, FOR ANY CLAIM UNDER THE TERMS, INCLUDING FOR ANY IMPLIED WARRANTIES, IS LIMITED TO THE AMOUNT YOU PAID US TO USE THE APPLICABLE APIS (OR, IF WE CHOOSE, TO SUPPLYING YOU THE APIS AGAIN) DURING THE SIX MONTHS PRIOR TO THE EVENT GIVING RISE TO THE LIABILITY.
Says the most the vendor would owe if the service causes a loss.
Says how the agreement or account can be ended
Google may suspend access to the APIs by you or your API Client without notice if we reasonably believe that you are in violation of the Terms.
Says when the vendor can cut off access and what notice it gives.
Says how changes to the terms are announced Says it gives notice of a change
We'll post notice of modifications to the Terms within the documentation of each applicable API, to this website, and/or in the Google developers console.
Says whether a customer hears about a change before it binds them.
Lists what users may not do
You may not use the APIs and may not accept the Terms if (a) you are not of legal age to form a binding contract with Google, or (b) you are a person barred from using or receiving the APIs under the applicable laws of the United States or other countries including the country in which you are resident or from which y…
The acceptable-use rules an agent acting for a user has to stay inside.
Refers to a service level or uptime commitment
Not found in the text.
Says whether availability is promised and where the promise is written.
Content submitted through the APIs is licensed to Google on a perpetual, irrevocable and sublicensable basis, for the stated sole purpose of enabling Google to provide, secure and improve the APIs.
For the sole purpose of enabling Google to provide, secure, and improve the APIs (and the related service(s)) and only in accordance with the applicable Google privacy policies, you give Google a perpetual, irrevocable, worldwide, sublicensable, royalty-free, and non-exclusive license to Use content
Noted by a second reader on 2026-10-08.
A developer may not misrepresent or mask its own identity or the identity of its API client when using the APIs or developer accounts.
You will not misrepresent or mask either your identity or your API Client's identity when using the APIs or developer accounts.
Noted by a second reader on 2026-10-08.
Google may use the developer's company or product name, and screenshots or video of its API client, when promoting or demonstrating the APIs.
In the course of promoting, marketing, or demonstrating the APIs you are using and the associated Google products, Google may produce and distribute incidental depictions, including screenshots, video, or other content from your API Client, and may use your company or product name.
Noted by a second reader on 2026-10-08.
The document · read 2026-10-08 · 3,831 words
Privacy policy dated 2026-10-01, states 7 of 8, 1 to know
TL;DR Dated 2026-10-01. States 7 of the 8 things a reader expects, and we didn't find where data goes. To know before relying on it, model training with no opt-out found.
Says it may use customer content to train or improve models, and no opt-out was foundcosts points
We use your interactions with AI models and technologies like Gemini Apps to develop, train, fine-tune, and improve these models to better handle your requests, and update their classifiers and filters including for safety, language understanding, and factuality.
Content an agent sends could end up in a model. An opt-out, where the document gives one, is shown instead.
Gives the date it was last updated Last updated 2026-10-01
Effective October 1, 2026 | Archived versions | Download PDF
Without a date nobody can tell which version applied when data was collected.
Says what personal data is collected
This Privacy Policy is meant to help you understand what information we collect, why we collect it, and how you can update, manage, export, and delete your information.
The basic statement a privacy policy exists to make.
Says how long data is kept
The types of location data we collect and how long we store it depend in part on your device and account settings.
Says when data sent to the service is deleted.
Says who else receives the data
For example, we use service providers to help operate our data centers, deliver our products and services, improve our internal business processes, and offer additional support to customers and users.
Names the sub-processors or service providers the data is passed to, or where they are listed.
Says whether personal data is sold or shared for advertising
If Google is involved in a merger, acquisition, or sale of assets, we’ll continue to ensure the confidentiality of your personal information and give affected users notice before personal information is transferred or becomes subject to a different privacy policy.
A plain statement either way.
Says what rights people have over their data
If European Union or United Kingdom data protection law applies to the processing of your information, you can review the European requirements section below to learn more about your rights and Google’s compliance with these laws.
Access, correction, deletion and objection, and how to use them.
Gives a privacy contact
And if you have any questions about this Privacy Policy, you can contact us.
An address or officer to send a request to.
Says where data is transferred or stored
Not found in the text.
The countries data goes to and the safeguard used.
Members of organisations using Google Workspace or Google Cloud Platform are referred to the separate Google Cloud Privacy Notice for how those services collect and use personal information.
If you’re a member of an organization that uses Google Workspace or Google Cloud Platform, learn how these services collect and use your personal information in the Google Cloud Privacy Notice.
Noted by a second reader on 2026-10-08.
Google says it uses publicly available information from the web and other public sources to help train machine learning models behind products such as Google Translate, Gemini Apps and Cloud AI.
We use publicly available information online or from other public sources to help train new machine learning models and build foundational technologies that power various Google products such as Google Translate, Gemini Apps, and Cloud AI capabilities.
Noted by a second reader on 2026-10-08.
The document · read 2026-10-08 · 14,332 words
A reading by a fixed set of rules, each answered with the vendor's own sentence. It isn't legal advice, a rule can miss a clause or misread one, and the document itself is what binds. How it's read and scored.
The endpoint is on googleapis.com, Google's API domain. The docs are on firebase.google.com.
firebase.google.com/terms, last modified 24 September 2026, places Cloud Messaging under the Google APIs Terms of Service and the Firebase Data Processing and Security Terms.
The Google APIs Terms of Service were last modified on 9 November 2021, name Google LLC of Mountain View, California, and choose California law.
Google's privacy policy is effective 1 October 2026. Firebase's own privacy and security page, last modified 15 September 2026, gives the per-service data and retention table.
www.google.com/.well-known/security.txt expires on 2030-04-01. firebase.google.com/.well-known/security.txt returns 404.
The registration date of google.com is taken from our earlier Google listings and was not looked up again today.
Checked 2026-10-08 against the vendor's own pages and the domain registry. Provenance is half of Transparency & trust.
Live watched around the clock · updated 2026-10-09 08:59 UTC
Probed every five minutes at https://fcm.googleapis.com. A probe counts as up when the endpoint answers without a server error, including a 401 that asks for credentials.
- Vendor status page unknown, no machine-readable status found · 1 hour ago
Live data comes from our pollers, trackers and scrapers and doesn't change the score until a benchmark run. What we watch · /api/v1/live/firebase-cloud-messaging.json
Notable
- The default quota is 600,000 messages a minute per project. It counts messages, not requests, and client errors other than 429 count against it source
- The Instance ID server APIs and device groups were deprecated in September 2026, close to new users on 1 January 2027 and stop on 29 September 2027 source
- The API's
Messagetype now takes a Firebase installation ID infidand marks the registrationtokenfield as deprecated source - Topic subscriptions have their own v1 resource,
projects.registrations.topicSubscriptions, and Admin SDKs moved to it on 23 and 24 September 2026 source - Undelivered messages are stored for up to four weeks unless
ttlsets a shorter life source - The local Firebase MCP server in
firebase-toolsincludes amessaging_send_messagetool that sends to a registration token or topic source - Firebase lists ISO 27001 and SOC 1, 2 and 3 for Cloud Messaging, and not ISO 27017 or 27018 source
Reviews by the Anchor panel
Every review here is a desk review, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. The outcome says whether the reviewer's questions could be answered from public material. How reviews work.
Where reviews came from
No reviews yet.
No review matches these filters.
The review panel · How third-party agents will submit reviews · All reviews
Score breakdown methodology v0.4 · October 2026 research run
Assessed on 8 October 2026 from public evidence, against the published checklist. Confidence medium. Performance and Task success are pending until our probes and task suites run, so the total is over the 7 assessed categories, each weight divided by 80.
| Category | Weight this run | Score | Points |
|---|---|---|---|
| Reliability | 16%20 | 13.2 | |
Hosted reading. Firebase status dashboard with a page and a JSON incident feed per product (20). The feed lists one Cloud Messaging incident between 10 July and 8 October 2026, low availability and higher latency in North America on 1 September from 08:40 to 12:31 UTC, 3 hours 51 minutes, read as one major incident (10). Limits are published with numbers, 600,000 messages a minute per project, 240 a minute and 5,000 an hour to one Android device, 3,000 topic subscription changes a second and 1,000 concurrent fanouts (15). 429 and 503 handling is documented with retry-after, a 60 second default, exponential backoff with jitter and a 10 second timeout, but messages:send takes no idempotency key and the Admin SDK release notes record timeouts raised to avoid duplicate notifications (11 of 15). The Firebase SLA of 9 April 2020 does not name Cloud Messaging and pays credits as a share of fees, and FCM has no fee, so no SLA (0). The HTTP v1 API is generally available (10). | |||
| Performancenot scored in this run | 10%pending | pending | n/a |
| Schema & documentation | 13%16.2 | 14.0 | |
A public Discovery document at fcm.googleapis.com/$discovery/rest?version=v1, revision 20261006, with 6 methods and 16 schemas (25). firebase.google.com/docs/llms.txt indexes the docs and every page has a .md.txt twin (10). The guides say when topics fit and when to target single devices, when FCM is the wrong tool and how notification and data messages differ. The reference itself is terse (16 of 20). 79 typed properties with 4 enums, but data, the APNs payload and headers and the web push notification are free-form objects, and ttl and condition are strings with their own grammar (9 of 15). The error page gives two sample responses and a cause and fix for each of 8 REST codes, and the send guide carries request samples (13 of 15). Versioned v1 path and dated Firebase release notes, though server API changes appear there mostly through the Admin SDK entries (13 of 15). | |||
| Agent ergonomics | 13%16.2 | 11.4 | |
API reading, graded on the HTTP v1 API. A send returns only the message name, and a message payload is capped at 4,096 bytes (22 of 25). Topic subscriptions and delivery data page with pageSize and pageToken, with no filters, and there is no call to list sent messages or look up one message's state (10 of 20). Errors carry a status, an FCM code and a details array naming the bad field or the exhausted quota, each with a documented fix (18 of 20). No idempotency key on send. validate_only gives a dry run, allowMissing makes topic subscription writes repeatable, and the retry rules are written down (8 of 20). A send needs only a project and one target, and Admin SDKs exist for Node.js, Python, Java, Go and .NET. Plain HTTP callers send one request per message and mint their own OAuth token (12 of 15). | |||
| Security & auth | 14%17.5 | 11.9 | |
OAuth 2.0 access tokens from a service account or Application Default Credentials, a firebase.messaging scope, and IAM permissions per action (30), less 10 because the Discovery document lists access_token and key as query parameters (20). A custom role can hold cloudmessaging.messages.create alone and validate_only tests without sending. The one current predefined role is an admin role, the documented route outside Google's cloud is a downloaded service account key file, and nothing asks for confirmation before a send (12 of 20). Responses carry no third-party content (10). Cloud Messaging is not on Google Cloud's list of services with audit logs. Operators get quota and error graphs, an aggregate Data API for Android in v1beta1 and an optional BigQuery export of per-message events (8 of 15). google.com publishes a security.txt valid to 1 April 2030 that names a vulnerability reward programme, and Firebase lists ISO 27001 and SOC 1, 2 and 3 for Cloud Messaging. firebase.google.com has no security.txt of its own (18 of 20). | |||
| Payments & pricing | 10%12.5 | 5.0 | |
| No x402, MPP or L402 (0). The pricing page lists Cloud Messaging as no-cost on both plans, without a login (20). It is free on the Spark plan, which needs no billing account or card (20). A person signs in with a Google account, accepts the Firebase terms and creates the project and service account in a browser (0). | |||
| Task successnot scored in this run | 10%pending | pending | n/a |
| Maintenance & community | 7%8.8 | 7.3 | |
Read as a closed service with official SDKs. The Admin SDKs for Node.js and Go shipped on 23 September 2026 and for Java and .NET on 24 September, each moving topic subscriptions to the v1 API, and the Discovery document is revision 20261006 (30). Firebase's release notes carry Cloud Messaging entries on 19, 25 and 27 August and 9, 23 and 24 September 2026 (20). Public release notes, Firebase Support and a bug report form. We could not read the SDK issue trackers, so half marks on answers (10 of 15). Current official Admin SDKs in five languages, firebase-admin 14.5.0 on npm and 7.7.0 on PyPI (15). The Node SDK's CI builds and tests on Node 22, 24 and 26, with dependency updates merged on 8 October. We did not see the run results (8 of 10). | |||
| Transparency & trusteditorial 68, provenance 94 | 7%8.8 | 7.1 | |
| Closed service under the Google APIs Terms of Service and the Firebase Data Processing and Security Terms, with Apache-2.0 Admin SDKs (15 of 30). The Firebase privacy page says Cloud Messaging processes Firebase installation IDs, kept until the customer deletes them and then removed within 180 days, which agrees with the data processing terms. The docs say undelivered messages are stored for up to four weeks and that FCM data is encrypted at rest. We found no statement on how long message content or send logs are kept after delivery (22 of 30). The September 2026 notice gives the Instance ID server APIs and device groups 12 months, to 29 September 2027, and closes them to new users on 1 January 2027. No standing deprecation policy for FCM was found (17 of 20). The Firebase sub-processor list, last modified 23 September 2021, names four companies and the terms promise 30 days' notice of new ones. Cloud Messaging is a global service with no data location choice (14 of 20). | |||
| Negative events | ≤15 | None recorded | 0 |
| Total | 69.8 · B | ||
Weight is the published weight, and the figure under it is that category's share of the 100 points in this run. A pending category has no score and adds nothing. What changes when it's scored.
Fix list 16 items, the biggest gain first
Everything this grade says the listing lacks, from the reasons above, the checklist, the provenance checks, the deductions, what we couldn't check and what the review panel asked for. Paste it into a coding agent working on Firebase Cloud Messaging, or have the agent fetch /fixes/firebase-cloud-messaging.md. A fix counts at the next check, once it's public.
Show it
# Fix list: Firebase Cloud Messaging From Anchor Terminal's listing at https://www.anchorterminal.com/tools/firebase-cloud-messaging, the October 2026 research run, assessed 8 October 2026. Grade B, 69.8 out of 100. This is everything the published grade says the listing lacks, the biggest possible gain to the total first. It comes from the reason given for each score, the checklist each category was scored against (https://www.anchorterminal.com/benchmark/#checklist), the provenance checks, the deductions, what we couldn't check and what the review panel asked for. A fix counts at the next check, once it's public. For a coding agent working on Firebase Cloud Messaging: work through the items below in the product, its docs and its public pages. Each category gives the reason for its score, with the points each checklist item earned, and the checklist itself, so the gap is the items that earned less than their points. Change the product, not the wording, and keep a note of what you changed and where it's published. ## 1. Payments & pricing, 40 out of 100, up to 7.5 more on the total Why it scored 40: No x402, MPP or L402 (0). The pricing page lists Cloud Messaging as no-cost on both plans, without a login (20). It is free on the Spark plan, which needs no billing account or card (20). A person signs in with a Google account, accepts the Firebase terms and creates the project and service account in a browser (0). The checklist (https://www.anchorterminal.com/benchmark/#checklist-payments): The published rubric, also on the [x402 page](https://www.anchorterminal.com/x402/). - 40, a machine payment protocol (x402, MPP or L402) on the tool's own endpoints. 10 to 30 when it covers only some endpoints or only goes through a third party, and the note says which. - 20, per-call or per-unit pricing published without a login. 10 for public plan-only pricing, 0 for "contact sales" or prices behind a login. - 20, a free tier or trial that doesn't need a card. - 20, autonomous onboarding, meaning an agent can get access without a person signing up in a browser (keyless use, x402, a programmatic key API). Payment platforms and agent wallets rarely charge for their own API over a machine protocol, so the first line has steps for them, and the highest one that applies counts. 40 when x402, MPP or L402 runs on all their own endpoints, 30 when it runs on part of their own API, 25 when their merchants can accept one, 20 for running a facilitator, 15 for paying as a buyer, and 0 when the only protocol is their own. Merchant acceptance sits above a facilitator because the platform's own customers can charge agents through it, while a facilitator settles for sellers who wire up the protocol themselves. The counter-argument (a facilitator does more for the protocol as a whole) has a point. Each note says which step applied. Open-source software you run yourself is scored on its hosted or paid option if it has one. A free, self-hosted package with nothing to buy gets 20, 20 and 20 for the last three lines, and 0 to 40 for the first only if it ships a payment protocol. ## 2. Reliability, 66 out of 100, up to 6.8 more on the total Why it scored 66: Hosted reading. Firebase status dashboard with a page and a JSON incident feed per product (20). The feed lists one Cloud Messaging incident between 10 July and 8 October 2026, low availability and higher latency in North America on 1 September from 08:40 to 12:31 UTC, 3 hours 51 minutes, read as one major incident (10). Limits are published with numbers, 600,000 messages a minute per project, 240 a minute and 5,000 an hour to one Android device, 3,000 topic subscription changes a second and 1,000 concurrent fanouts (15). 429 and 503 handling is documented with `retry-after`, a 60 second default, exponential backoff with jitter and a 10 second timeout, but `messages:send` takes no idempotency key and the Admin SDK release notes record timeouts raised to avoid duplicate notifications (11 of 15). The Firebase SLA of 9 April 2020 does not name Cloud Messaging and pays credits as a share of fees, and FCM has no fee, so no SLA (0). The HTTP v1 API is generally available (10). The checklist (https://www.anchorterminal.com/benchmark/#checklist-reliability): Hosted APIs, MCP servers, models and platforms. - 20, a public status page with component history (Statuspage, Instatus, BetterStack or the vendor's own). - 0 to 30, the incident record for the last 90 days on that page. 30 for a clean record or trivial incidents only, 20 for minor incidents only, 10 for one major outage (an hour or more of a core API down, or errors across the board), 0 for several. 5 when there's no history we could read, and the note says so. - 15, rate limits documented with numbers. - 15, documented 429 or overload handling (Retry-After, backoff guidance), and idempotency keys or safe-retry guidance where writes are involved. - 10, an SLA published for any paid tier. - 10, the surface agents use is generally available, not beta or preview. Local packages, SDKs, frameworks and stdio MCP servers. - 20, installs from an official package with supported runtimes stated. - 25, a public CI and test suite, passing on the default branch. - 0 to 25, open crash or regression issues relative to activity (25 for few and handled, 0 for many, old and unanswered). - 15, semver discipline and breaking changes called out in a changelog. - 15, version 1.0 or later, or declared stable. Protocols are read from their reference implementations, the public facilitators or servers, spec stability and test vectors. ## 3. Security & auth, 68 out of 100, up to 5.6 more on the total Why it scored 68: OAuth 2.0 access tokens from a service account or Application Default Credentials, a `firebase.messaging` scope, and IAM permissions per action (30), less 10 because the Discovery document lists `access_token` and `key` as query parameters (20). A custom role can hold `cloudmessaging.messages.create` alone and `validate_only` tests without sending. The one current predefined role is an admin role, the documented route outside Google's cloud is a downloaded service account key file, and nothing asks for confirmation before a send (12 of 20). Responses carry no third-party content (10). Cloud Messaging is not on Google Cloud's list of services with audit logs. Operators get quota and error graphs, an aggregate Data API for Android in `v1beta1` and an optional BigQuery export of per-message events (8 of 15). google.com publishes a security.txt valid to 1 April 2030 that names a vulnerability reward programme, and Firebase lists ISO 27001 and SOC 1, 2 and 3 for Cloud Messaging. firebase.google.com has no security.txt of its own (18 of 20). The checklist (https://www.anchorterminal.com/benchmark/#checklist-security): - 0 to 30, the credential model. 30 for OAuth 2.1 with scopes, or scoped and revocable keys with rotation. 20 for plain revocable API keys. 10 for one all-powerful key. 10 off when a secret can travel in a URL query string as a documented option. - 0 to 20, read-only or least-privilege modes, and confirmation or approval for destructive actions. - 0 to 15, prompt-injection posture where the tool returns untrusted content (documented mitigations or guidance). A tool that returns no untrusted content gets 10. - 0 to 15, audit logs or per-call visibility for the operator. - 0 to 20, a security programme. security.txt or a disclosure policy, a bug bounty, SOC 2 or ISO 27001, advisories handled in public. Models are read for retention, whether API data trains models (and whether that's off by default), zero-retention options and certifications. Frameworks for telemetry defaults, approval hooks, guardrails and sandboxing. ## 4. Agent ergonomics, 70 out of 100, up to 4.9 more on the total Why it scored 70: API reading, graded on the HTTP v1 API. A send returns only the message `name`, and a message payload is capped at 4,096 bytes (22 of 25). Topic subscriptions and delivery data page with `pageSize` and `pageToken`, with no filters, and there is no call to list sent messages or look up one message's state (10 of 20). Errors carry a status, an FCM code and a `details` array naming the bad field or the exhausted quota, each with a documented fix (18 of 20). No idempotency key on send. `validate_only` gives a dry run, `allowMissing` makes topic subscription writes repeatable, and the retry rules are written down (8 of 20). A send needs only a project and one target, and Admin SDKs exist for Node.js, Python, Java, Go and .NET. Plain HTTP callers send one request per message and mint their own OAuth token (12 of 15). The checklist (https://www.anchorterminal.com/benchmark/#checklist-ergonomics): - 0 to 25, context cost. For MCP, the number and size of the tool definitions (25 for ten or fewer compact tools, 15 for 11 to 30, 5 for more than 30, plus up to 10 back for toolsets, dynamic loading or read-only subsets). For APIs, whether responses can be sized (field selection, limits, summaries). - 20, pagination, filtering and output-size controls. - 20, actionable, documented error responses, codes and messages an agent can recover from. - 20, idempotency or safe retries, and for MCP the `readOnlyHint` and `destructiveHint` annotations. - 15, sensible defaults, few required parameters, and official SDKs in at least two languages. Models are read for tool use, structured output, prompt caching, context length, batch and SDKs. Frameworks for how much code and how many defaults a tool-calling agent with MCP needs. ## 5. Schema & documentation, 86 out of 100, up to 2.3 more on the total Why it scored 86: A public Discovery document at `fcm.googleapis.com/$discovery/rest?version=v1`, revision 20261006, with 6 methods and 16 schemas (25). `firebase.google.com/docs/llms.txt` indexes the docs and every page has a `.md.txt` twin (10). The guides say when topics fit and when to target single devices, when FCM is the wrong tool and how notification and data messages differ. The reference itself is terse (16 of 20). 79 typed properties with 4 enums, but `data`, the APNs `payload` and `headers` and the web push `notification` are free-form objects, and `ttl` and `condition` are strings with their own grammar (9 of 15). The error page gives two sample responses and a cause and fix for each of 8 REST codes, and the send guide carries request samples (13 of 15). Versioned `v1` path and dated Firebase release notes, though server API changes appear there mostly through the Admin SDK entries (13 of 15). The checklist (https://www.anchorterminal.com/benchmark/#checklist-schema): APIs and MCP servers. - 25, a machine-readable contract (a public OpenAPI file or similar; for MCP, typed JSON Schema inputs on every tool). - 10, llms.txt or Markdown docs served for agents. - 0 to 20, descriptions that say what a tool is for, when to use it and when not to, read from the tool definitions in the source or the API reference. - 0 to 15, typed inputs with enums, constraints and required fields, and no free-form JSON blobs. - 0 to 15, examples and documented error responses. - 15, versioning and a public changelog. Models are read from the API reference, the OpenAPI file, llms.txt, the structured-output and tool-use docs and the model cards. Frameworks from docs a model can follow, typed interfaces, examples and the API reference. ## 6. Transparency & trust, 81 out of 100, up to 1.7 more on the total Made of editorial 68, provenance 94. Why it scored 81: Closed service under the Google APIs Terms of Service and the Firebase Data Processing and Security Terms, with Apache-2.0 Admin SDKs (15 of 30). The Firebase privacy page says Cloud Messaging processes Firebase installation IDs, kept until the customer deletes them and then removed within 180 days, which agrees with the data processing terms. The docs say undelivered messages are stored for up to four weeks and that FCM data is encrypted at rest. We found no statement on how long message content or send logs are kept after delivery (22 of 30). The September 2026 notice gives the Instance ID server APIs and device groups 12 months, to 29 September 2027, and closes them to new users on 1 January 2027. No standing deprecation policy for FCM was found (17 of 20). The Firebase sub-processor list, last modified 23 September 2021, names four companies and the terms promise 30 days' notice of new ones. Cloud Messaging is a global service with no data location choice (14 of 20). The checklist (https://www.anchorterminal.com/benchmark/#checklist-transparency): - 0 to 30, source availability and licence clarity. 30 for open source under an OSI licence, 15 for closed with clear terms, 0 for unclear terms. - 0 to 30, data handling and retention statements that agree with each other (privacy policy, DPA, retention periods, subprocessors). - 0 to 20, a deprecation policy or notices with dates. - 0 to 20, telemetry disclosed with an opt-out (local software), or subprocessors and data locations disclosed (hosted). The other half of Transparency and trust is the provenance score, computed from checked facts (below). The category score is the mean of the two. Provenance checks not met in full (half of this category, computed from checked facts): - Terms of service: read, states 6 of the 7 things a reader expects, and has 1 clause that costs points (7.1 of 10) - Privacy policy: read, states 7 of the 8 things a reader expects, and has 1 clause that costs points (7.3 of 10) ## 7. Maintenance & community, 83 out of 100, up to 1.5 more on the total Why it scored 83: Read as a closed service with official SDKs. The Admin SDKs for Node.js and Go shipped on 23 September 2026 and for Java and .NET on 24 September, each moving topic subscriptions to the v1 API, and the Discovery document is revision 20261006 (30). Firebase's release notes carry Cloud Messaging entries on 19, 25 and 27 August and 9, 23 and 24 September 2026 (20). Public release notes, Firebase Support and a bug report form. We could not read the SDK issue trackers, so half marks on answers (10 of 15). Current official Admin SDKs in five languages, `firebase-admin` 14.5.0 on npm and 7.7.0 on PyPI (15). The Node SDK's CI builds and tests on Node 22, 24 and 26, with dependency updates merged on 8 October. We did not see the run results (8 of 10). The checklist (https://www.anchorterminal.com/benchmark/#checklist-maintenance): - 0 to 30, time since the last release, or the last published model or API change for a closed service. 30 within 30 days, 20 within 90, 10 within 180, 0 older. - 20, at least three releases or dated changelog entries in the last 90 days. - 0 to 25, responsiveness. Issues and pull requests answered on GitHub (the open issues and how recent the replies are). For closed services, a public changelog and a support or community channel that answers, 0 to 15. - 15, presence in the official MCP registry under a verified namespace (MCP servers), or current official SDKs (APIs and models). - 10, package health, current dependencies and CI. Models are read for deprecation notice periods and model churn rather than release counts. ## What we couldn't check What we couldn't read counted as absent. Publishing it on a page a plain HTTP fetch can read (not only in a browser) lets the next check count it. - unchecked: GitHub stars and the open issues of the Admin SDK repositories. api.github.com answered with its rate limit, so `githubStars` is empty and issue handling is scored at half - unchecked: whether CI passes on the default branch of firebase/firebase-admin-node. We read the workflow file from a clone, not the run results - unchecked: the tool definition of `messaging_send_message` in the Firebase MCP server. The listing is graded on the HTTP v1 API - The Discovery document lists `access_token` and `key` as query parameters on every method. We took the checklist's 10 points for it, as the Gmail and Google Sheets dossiers did and the Drive and Calendar dossiers did not - The Firebase SLA text names no services. We read it as not covering Cloud Messaging because credits are a share of fees and FCM has none - No statement was found on how long FCM keeps message content or send logs after delivery - The lead was right on the interface. The docs now also describe a v1 topic subscription API and a `fid` target that replaces registration tokens ## Weaknesses - Push transport only. No in-app feed, email, SMS, user preferences, digests or templates - No idempotency key on `messages:send`, so a retried request can reach the device twice - One HTTP request per message. Only the Admin SDKs group up to 500 sends in a call - FCM is absent from Google Cloud's list of services with audit logs, and per-message delivery data needs a BigQuery export - One incident on 1 September 2026 lowered availability in North America for 3 hours 51 minutes, and no SLA names FCM ## What costs an agent a turn today The notes we give agents before they call it. Each one is a workaround an agent shouldn't need. - 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/<project-id>/messages:send` - Set `validate_only` to true to test a message or a registration without sending it - 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 - 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 - Target `fid` in new code. The `token` field is marked deprecated in the API, and device groups stop working after 29 September 2027 ## When it's done Send what changed and where it's published as a dispute (https://www.anchorterminal.com/builders/#disputes, or `POST https://www.anchorterminal.com/api/v1/contact` with `"kind": "dispute"`). Disputes are answered in public, and the listing is checked again by the same checklist. Paying for an audit or a listing claim changes nothing here.
What we couldn't check
- unchecked: GitHub stars and the open issues of the Admin SDK repositories. api.github.com answered with its rate limit, so
githubStarsis empty and issue handling is scored at half - unchecked: whether CI passes on the default branch of firebase/firebase-admin-node. We read the workflow file from a clone, not the run results
- unchecked: the tool definition of
messaging_send_messagein the Firebase MCP server. The listing is graded on the HTTP v1 API - The Discovery document lists
access_tokenandkeyas query parameters on every method. We took the checklist's 10 points for it, as the Gmail and Google Sheets dossiers did and the Drive and Calendar dossiers did not - The Firebase SLA text names no services. We read it as not covering Cloud Messaging because credits are a share of fees and FCM has none
- No statement was found on how long FCM keeps message content or send logs after delivery
- The lead was right on the interface. The docs now also describe a v1 topic subscription API and a
fidtarget that replaces registration tokens
Sources 35
- product overview firebase.google.com · seen 2026-10-08
- send guide for the HTTP v1 API firebase.google.com · seen 2026-10-08
- send method reference firebase.google.com · seen 2026-10-08
- Discovery document fcm.googleapis.com · seen 2026-10-08
- docs index for agents firebase.google.com · seen 2026-10-08
- throttling and quotas firebase.google.com · seen 2026-10-08
- sending at scale and retries firebase.google.com · seen 2026-10-08
- error codes firebase.google.com · seen 2026-10-08
- topic messaging limits firebase.google.com · seen 2026-10-08
- topic subscription management firebase.google.com · seen 2026-10-08
- deprecation FAQ firebase.google.com · seen 2026-10-08
- device group migration firebase.google.com · seen 2026-10-08
- message lifespan firebase.google.com · seen 2026-10-08
- delivery data and BigQuery export firebase.google.com · seen 2026-10-08
- Data API reference firebase.google.com · seen 2026-10-08
- status incident feed status.firebase.google.com · seen 2026-10-08
- incident of 1 September 2026 status.firebase.google.com · seen 2026-10-08
- pricing firebase.google.com · seen 2026-10-08
- terms by Firebase service firebase.google.com · seen 2026-10-08
- Google APIs Terms of Service developers.google.com · seen 2026-10-08
- Firebase Data Processing and Security Terms firebase.google.com · seen 2026-10-08
- Firebase SLA firebase.google.com · seen 2026-10-08
- Firebase sub-processors firebase.google.com · seen 2026-10-08
- privacy and security in Firebase firebase.google.com · seen 2026-10-08
- Google privacy policy policies.google.com · seen 2026-10-08
- IAM roles firebase.google.com · seen 2026-10-08
- IAM permissions firebase.google.com · seen 2026-10-08
- Google Cloud services with audit logs docs.cloud.google.com · seen 2026-10-08
- Firebase release notes firebase.google.com · seen 2026-10-08
- Admin Node.js SDK release notes firebase.google.com · seen 2026-10-08
- Admin Node.js SDK repository github.com · seen 2026-10-08
- npm registry registry.npmjs.org · seen 2026-10-08
- PyPI pypi.org · seen 2026-10-08
- Firebase MCP server firebase.google.com · seen 2026-10-08
- security.txt google.com · seen 2026-10-08
Probe metrics
Not measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. The live panel above has what the pollers have seen so far, which doesn't change the score.
Pricing & changes
Free Free No charge. The pricing page lists Cloud Messaging as no-cost on the Spark and Blaze plans, and Spark needs no billing account or card, so an agent's owner can start without a contract. The optional BigQuery export of delivery data is billed by BigQuery (https://firebase.google.com/pricing, checked 2026-10-08).
Recent changes
- Latest release
Follow them as a feed at /feeds/tools/firebase-cloud-messaging.xml, or this listing's score history at history.json.
Connect
Install
npm install firebase-admin # or: pip install firebase-admin
First request
curl -X POST "https://fcm.googleapis.com/v1/projects/$FIREBASE_PROJECT_ID/messages:send" \
-H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"message":{"topic":"news","notification":{"title":"Build finished","body":"All tests passed"}}}'
Claude Code
claude mcp add firebase npx -- -y firebase-tools@latest mcp
Through letme picks today, calling later
GET https://letme.dev/firebase-cloud-messaging
letme.dev answers with this listing and how to call it direct, and picks the best tool for a job by capability or in words. Calling through letme (one key, the vendor's own price) comes later. Nothing on letme.dev is for people to look at; this page explains it.
Compare with
Ably BBCustomer.io BBAmazon SNS BBSuprSend BBCourier BBOneSignal B
Head to head Amazon SNS vs Firebase Cloud Messaging · Courier vs Firebase Cloud Messaging · Firebase Cloud Messaging vs Knock · Firebase Cloud Messaging vs MagicBell · Firebase Cloud Messaging vs Novu · Firebase Cloud Messaging vs ntfy · Firebase Cloud Messaging vs OneSignal · Firebase Cloud Messaging vs Pushover · Firebase Cloud Messaging vs SuprSend
Machine-readable
| Similar tool | Grade | Score | Shared capabilities | x402 |
|---|---|---|---|---|
| Ably Ably Realtime Ltd | BB | 75 | notify.push | no |
| Customer.io Peaberry Software, Inc. d/b/a Customer.io | BB | 74.5 | notify.push | no |
| Amazon SNS Amazon Web Services | BB | 72.8 | notify.push | no |
| SuprSend SuprSend | BB | 72.6 | notify.push | no |
| Courier Courier | BB | 70.5 | notify.push | no |
| OneSignal OneSignal | B | 69.3 | notify.push | no |
Machine-readable
- JSON
/api/v1/tools/firebase-cloud-messaging.json· historyhistory.json· badge/badges/firebase-cloud-messaging.svg· changes feed/feeds/tools/firebase-cloud-messaging.xml - Markdown
/tools/firebase-cloud-messaging.md· slim/tools/firebase-cloud-messaging.min.md(or sendAccept: text/markdown) - Fix list
/fixes/firebase-cloud-messaging.md·/fixes/firebase-cloud-messaging.json - From a terminal
anchor tool firebase-cloud-messaging --md(the CLI) · over MCPget_tool {"slug": "firebase-cloud-messaging"}at/mcp, no key - Directory index
/api/v1/tools.json· site index/llms.txt
Verify this listing
For the vendorIs this your product? Link to this page from your own site or README, then tell us where. It shows people and agents that the listing is yours and that you know it's here. It never changes a grade, rank or review.
-
Add the badge or a link
On a light page On a dark page <a href="https://www.anchorterminal.com/tools/firebase-cloud-messaging"><img src="https://www.anchorterminal.com/badges/firebase-cloud-messaging.svg" alt="Firebase Cloud Messaging on Anchor Terminal" height="20"></a>[](https://www.anchorterminal.com/tools/firebase-cloud-messaging)<a href="https://www.anchorterminal.com/tools/firebase-cloud-messaging">Firebase Cloud Messaging on Anchor Terminal</a>It counts on a page on google.com or one of its subdomains, or the README of github.com/firebase/firebase-admin-node.
-
Tell us where it is
We read it once now and again every week. If the link is missing two weeks in a row the listing says so, and a later check puts it back.
Agents send the same to POST /api/v1/verify as {"slug": "firebase-cloud-messaging", "url": "…"}, or call the verify_listing tool at /mcp. Ten checks an hour from one address. What we check. To announce the listing, get sharing assets for social media.


