You pointed Cascade at a refactor, hit the autonomous run, and walked off to a meeting. Fifteen minutes later the suite either went green and deployed, or it stalled on a flaky migration. You find out when you sit back down. The worse version: Cascade decided the prod migration looked safe and ran it while you were gone.
That gap has one cause. Windsurf's agent can work unattended for twenty minutes, but it has no way to reach you where you actually are, which is your phone. Connecting Windsurf to WhatsApp closes it. Cascade gets a "send a WhatsApp" capability and a "read the reply" one, so it can ping your own number when a run finishes and hold before anything irreversible until you answer.
What connecting Windsurf to WhatsApp actually does, and what it doesn't
Connecting Windsurf to WhatsApp gives Cascade, its agent, a send-and-read tool for messaging your own WhatsApp number. It is not a support chatbot and not the Meta Cloud API. The agent messages you over the number you already own, linked through WhatsApp Web or a hosted gateway, so it can report results and wait for your decisions.
Mapped plainly:
- What it is - a WhatsApp send + read capability Cascade invokes like any other MCP tool.
- What it runs on - your own number over WhatsApp Web or a hosted 24/7 gateway, not a Meta-provisioned number.
- What it is not - a trainable support bot, a broadcast machine, or the Cloud API with templates and per-message billing.
- Who it messages - you, your teammates, people you already talk to. Not a cold list.
One honest note up front: this is not the first WhatsApp MCP. Open-source servers got here first, and they are real. The lharries/whatsapp-mcp project and entries in the official MCP servers registry predate any hosted option and are a fine starting point if you want to run the plumbing yourself. The claim worth making is first hosted, no-code, product-grade, not first ever. If you want the broad "put any agent on WhatsApp to read and triage" version, that is a different job covered in giving your AI agent WhatsApp. This piece is the narrow developer loop: Windsurf, your editor, your CI.
Why route Cascade's notifications to WhatsApp instead of email or Slack
Because you already live in WhatsApp. Long Cascade runs, builds, and deploys finish while you are away from the editor. A WhatsApp ping reaches you in seconds on a channel you check without thinking, where an email waits until tomorrow and a Slack channel you muted last week never surfaces. Your editor reaches your pocket, on the one screen you glance at first.
Line up the channels a coding agent usually has:
| Channel | Where you see it | Reply speed |
|---|---|---|
| Batch-read, hours later | Slow | |
| Slack / Teams | At a desk, often muted | Medium |
| A custom dashboard | Only when you remember to open it | You forget |
| Already open, already pushing | Seconds |
That is the entire case for coding agent WhatsApp notifications, and the point of a Windsurf WhatsApp loop: the result lands where you will actually look. One solo developer I traded notes with put it this way: "I stopped sitting through the last 10% of every deploy. The phone buzzes, I glance, I keep moving." The point is not novelty. It is closing the loop faster than any other channel closes it. For the full argument that a chat connector alone is only half the loop, see why controlling WhatsApp with AI needs the write side too.

How do you add the Blueticks MCP connector to Windsurf
You add it one of two ways, both no-code, and Windsurf's config makes the choice explicit. Point Cascade at the hosted remote connector by URL and approve access with a login, or run the server with a bt_live_ key for key-based auth. Both reach the same WhatsApp send-and-read tools. Windsurf stores Cascade's MCP config in ~/.codeium/windsurf/mcp_config.json, with servers under an mcpServers object.
The steps, Windsurf-specific:
- Link your WhatsApp number to Blueticks so an engine is live. This is the part that actually holds your WhatsApp session. Nothing else works until a number is connected.
- Open Cascade's MCP settings. In the Cascade panel, open the Plugins / MCP area and choose Add custom server +, which opens
~/.codeium/windsurf/mcp_config.jsonfor editing. Windsurf documents both the UI button and the file. - Add the server. A remote connector goes under
mcpServerswith aserverUrlfield pointing athttps://api.blueticks.co/mcpand optionalheaders. A local server instead usescommand,args, andenv(yourbt_live_key lives inenv). Both shapes are in Windsurf's MCP docs. - Enable it and refresh. Press the refresh button in the MCP panel so Cascade picks up the new tools. The remote connector authenticates with a login (OAuth); the key path uses your
bt_live_key. - Verify. Ask Cascade to list your recent WhatsApp chats. If it answers using the tools, your windsurf mcp wiring is live and your Windsurf WhatsApp setup is done.
I am not going to rebuild the whole click path here, because it drifts every time Windsurf ships a settings redesign, and the canonical mechanics belong in Windsurf's MCP documentation. The connector-level walkthrough for the Blueticks side lives in the WhatsApp MCP integration guide. The thing worth stressing: MCP is the open standard Anthropic published in late 2024 for connecting assistants to tools, which is exactly why the same connector you add to Windsurf also works in Cursor, Claude Code, and any other MCP client without a rewrite. And there is no second Node runtime or WhatsApp Web client for you to keep alive. The hosted engine removes that tier.
How do you make Windsurf ping you when a long Cascade run finishes
You tell Cascade to call the WhatsApp send tool at the end of the task, and in Windsurf the durable place for that instruction is a Rule. Windsurf Rules live in .windsurf/rules/ as markdown files with a trigger field in frontmatter that controls when they apply. Write one rule with trigger: always_on, and every Cascade run in that repo knows to message you when it is done. No code, just a tool the agent already has.
Here is the exact sequence for a deploy notification in Windsurf:
- Add the send tool by wiring the MCP connector (previous section).
- Write the rule. Create
.windsurf/rules/notify.md. Settrigger: always_on, or usetrigger: globwith aglobspattern scoped to your deploy scripts. In the body: "After the deploy step completes, send a WhatsApp to my number with the branch, the environment, and pass/fail." - Let Cascade run. Build, test, deploy, whatever the job is.
- Get the ping. "Build green on
release/2.4, deployed to staging" lands on your phone. Keep the body short and outcome-focused: the result, not a wall of log output.
If the notify step is a repeatable multi-step job, put it in a Windsurf Workflow instead. Workflows are markdown files in .windsurf/workflows/, invoked by a /workflow-name slash command, and they are manual-only, so Cascade never fires one on its own.

This is the Windsurf surface of a generic pattern. The standalone notify-and-approve version that any agent or cron job can reuse is owned end to end by the human-in-the-loop WhatsApp approvals guide, so do not rebuild it from here. And watch the one gotcha that bites everyone, even on the pure-notify path: treat "I called the send tool" as "I attempted a send," never as "you saw it." If the engine was down when Cascade fired, the ping never arrived and the agent has no idea it failed. The sibling pieces, connecting Claude Code to WhatsApp and connecting Cursor to WhatsApp, walk the same wire for different editors if you run more than one. For anything you truly must not miss, have the agent confirm the message reached a delivered state before it moves on.
Stop sitting through the last 10% of every deploy. Connect Windsurf to WhatsApp on the number you already own and let Cascade ping build, deploy, and CI results straight to your phone, then wait for your yes before it does anything irreversible. No Meta Cloud API, no message templates, no per-message fees, no self-hosted WhatsApp Web client to babysit.
How do you make Windsurf ask for approval before an irreversible step
You structure the task as ask-then-check instead of fire-and-forget. Before an irreversible step (a prod deploy, a database migration, a force-push, an rm -rf), Cascade sends a WhatsApp asking permission, reads your reply through the MCP read tool, and gates the action on the answer. This matters more in Windsurf than almost anywhere, because Cascade can run in an autonomous (Turbo) mode that executes terminal commands without pausing for each confirmation.
The loop, using a production migration as the example:
- Cascade reaches the gate. It has the migration ready, and a
.windsurf/rules/*.mdrule marks migrations as approval-required. - It sends the ask. "About to run the prod migration on
orders. Reply YES to proceed or NO to hold." - It waits. The migration does not run. The agent's next step is "read the reply," not "execute."
- You reply. From your phone, "yes" or "no," in seconds, from wherever you are.
- It acts or aborts. On yes it runs and confirms. On no, or on silence past a timeout you set, it holds and logs that it held.
The one rule that makes this safe: silence must map to "hold," never to "assume yes." An agent that reads no reply and proceeds anyway is worse than no gate at all, because now you trust it. The mechanics of the wait (how to poll, how to parse a fuzzy reply, how to time out) are identical across every agent, so I will point rather than repeat: the human-in-the-loop approvals guide is the mandatory read for the pattern. What this article adds is the context. It is Windsurf's autonomous Cascade, in your editor or your pipeline, gating a command it was about to run itself.
Can you wire this into headless or CI runs, not just the Windsurf editor
Yes. The same capability works headless, with no editor window open. A long-running job or a CI step posts the result to WhatsApp when it finishes, and a manual-approval gate can block on your reply before promoting to prod. Same hosted MCP connector, or the same authenticated POST to the /v1 REST API, fired from the pipeline instead of your machine.

Two shapes cover almost everything:
- Headless notification. A GitHub Actions step or a cron job calls the send tool (or the
/v1API) at the end of the run. On the Blueticks/v1path the recipient sits in the URL,POST /v1/scheduled-messages/{chatId}, not in atobody field, andsendAt(camelCase, ISO 8601) is optional for an immediate send. Any language that can make an HTTP request can fire it. The call returns awaMessageKeyand a status that moves throughpending → confirmed → received → read, so your pipeline can check delivery rather than assume it. Verify the request and response shapes against the live reference at dev.blueticks.co/docs before you wire a pipeline to them. - Manual-approval gate. A promote-to-prod job messages you, then blocks on your reply before it continues. Your pipeline enforces the pause; WhatsApp just carries the ask and the answer.
One number to plan around so a chatty pipeline does not surprise you: the free plan allows 5 requests per 6-hour window, shared across the REST API and MCP surfaces. Any active subscription lifts it. That is a guardrail, not a throttle a normal build cadence hits, but a job that pings on every push can burn through it, so gate the notification to the events that matter. The full request-and-response walkthrough for the REST path belongs in the developer guide for giving an agent a send-and-read tool, not here. The point for this piece: your local windsurf mcp setup and your CI both reach the same hosted endpoint, with nothing for you to host.
Is this safe? Bans, consent, and what Blueticks is (and isn't)
It is low-risk by nature, but nobody honest promises a no-ban guarantee. You are messaging your own number and your own team, not cold-blasting strangers, which is about as safe as WhatsApp automation gets. You still send under WhatsApp's Business Messaging Policy whatever software is behind the send, and consent to message anyone else is yours to collect.
The boundaries, stated plainly so nobody feels misled later:
- It is your own number, not the Cloud API. The link is your existing WhatsApp over WhatsApp Web or a managed gateway, not a Meta-provisioned Cloud API number. No templates, no Business verification, no per-message billing. Meta moved to per-message pricing on 1 July 2025, retiring the old conversation-based model; the own-number path has none of that.
- The generally available surfaces are two. The
/v1REST API and the hosted MCP connector. A self-serve, trainable in-app support bot is not generally available, so do not plan around it. - It is not the first WhatsApp MCP. Open-source servers like
lharries/whatsapp-mcpand the MCP registry got here first. The honest claim is first hosted, no-code, product-grade, not first ever. - No guaranteed no-ban. A self-notification loop where Cascade messages you is genuinely low-risk. The risk climbs the moment the same capability points at unsolicited outbound to people who never asked to hear from you.
Every platform fact above links its primary source on purpose. Hold any tool in this space to the same bar: a Meta claim should link Meta, an MCP claim should link the protocol spec, and a Windsurf claim should link Windsurf's docs. A vendor sourcing a WhatsApp-pricing claim to its own blog post is a yellow flag. The same honesty applies to the sibling Cursor WhatsApp writeup: same loop, different editor.
When to use Windsurf + WhatsApp on your own number vs a full chatbot or the Cloud API
Use the own-number MCP or /v1 path when you are a developer or agent-operator who wants your tools to reach you on a number you already use: build, deploy, and CI notifications and approvals, with nothing to self-host. Reach for the Meta Cloud API plus a Business Solution Provider instead when you need approved marketing templates at broadcast scale or an Official Business Account badge.
Pick by the job:
- Notify yourself and gate Cascade's actions. Own-number, hosted MCP or
/v1. This article. No Meta approval, no templates, no per-message fees. - Blast approved templates to thousands of strangers from a brand number. Cloud API plus a BSP. Different product, different pricing model, not a substitute for the above, and vice versa.
Here is the product bridge, and it is the honest reason the hosted route exists. The maintained open-source WhatsApp Web clients are Node projects. Self-hosting one means supervising a browser profile, reconnect logic, and session drops forever, on top of the work you actually wanted to do. A hosted /v1 plus MCP endpoint removes that whole tier: connect a number once, add the connector to Windsurf, and Cascade can reach your phone from the editor and from CI without you ever running a WhatsApp session yourself. That is the real difference between a whatsapp mcp you babysit and one you don't. If you run more than one agent, the Claude Code version of this setup uses the identical connector.
FAQ
Can Windsurf send me a WhatsApp when my build or deploy finishes?
Yes. Connect the Blueticks MCP connector (or the /v1 API) to Windsurf, then add a rule in .windsurf/rules/notify.md telling Cascade to call the send tool when the task ends. Windsurf applies .windsurf/rules/ markdown rules by their trigger setting, so every run in that repo knows to message your own number. The result lands on the phone in your hand, in seconds.
Do I need the Meta Cloud API to connect Windsurf to WhatsApp?
No. This runs on your own WhatsApp number, linked over WhatsApp Web or a managed 24/7 gateway. Meta's Cloud API is a separate provisioned number with template approval, Business verification, and per-message billing since 1 July 2025. The own-number path has none of those.
Where does Windsurf store the MCP config for this?
In ~/.codeium/windsurf/mcp_config.json, with servers under an mcpServers object. A remote connector uses a serverUrl field (point it at https://api.blueticks.co/mcp); a local server uses command, args, and env, with your bt_live_ key in env. You can open the file from the Cascade MCP panel with Add custom server +.
How does Windsurf wait for my WhatsApp approval before deploying?
You structure the task as ask-then-check. Cascade sends a WhatsApp asking to proceed, then reads your reply through the MCP read tool before the gated step runs. This matters because Cascade can auto-run commands in its autonomous mode. Silence must map to "hold," never to "assume yes." The generic pattern, including timeouts and reply parsing, is in the human-in-the-loop approvals guide.
Can I trigger the notification from CI or a headless job, not just the Windsurf editor?
Yes. A GitHub Actions step or a cron job calls the send tool or the /v1 REST API, and a manual-approval gate can block on your reply before promoting to prod. Note the free plan's 5 requests per 6-hour window, shared across REST and MCP, so gate the ping to events that matter; any active subscription lifts the ceiling.
Will sending WhatsApp messages from Windsurf get my number banned?
Nobody can guarantee it will not. That said, a coding agent messaging your own number and team is about as low-risk as WhatsApp automation gets. You send under WhatsApp's Business Messaging Policy whatever triggered the send, and consent to message anyone beyond yourself is your responsibility.



