---
name: whatsable
description: Connect to WhatsAble, the WhatsApp Business platform (formerly Notifyer System), through its MCP server, and work with a business's WhatsApp numbers - read and answer conversations, send messages and templates, manage contacts, labels, broadcasts, scheduled messages and AI agents. Use when the person asks to do anything with their WhatsAble account or their WhatsApp Business messages.
license: Proprietary
metadata:
  author: whatsable
  version: "1.0.0"
  homepage: https://docs.whatsable.app/mcp/agent-skill
---

# WhatsAble

WhatsAble runs a business's WhatsApp numbers: a team inbox, templates, broadcasts, labels and AI
agents that answer customers. You work with it through one surface: the **WhatsAble MCP server**.
This skill tells you how to connect, and what to know about WhatsApp before you act. It holds no
scripts and no tool list, on purpose: the server describes itself.

## 1. Connect the MCP server

| Setting | Value |
| --- | --- |
| Server URL | `https://api.whatsable.app/mcp` |
| Transport | Streamable HTTP (often called **HTTP**). Not SSE. |
| Authentication | OAuth, or an API key in a header |

**OAuth (preferred).** Add the URL as a remote MCP server in your app. The app opens WhatsAble in
the browser; the person signs in, chooses the organization, the access (Full access, Send and
read, or Read only) and the numbers you may use, then approves. There is no client ID or secret
to enter: the app registers itself. The token renews itself; after 30 days without use the
person signs in again.

**API key.** Where no browser can open (a server, SSH, CI), the person creates a key in WhatsAble
under **Settings > API keys** and you send it on every request:

```text
Authorization: Bearer nfy_live_...
```

Keep the key in an environment variable or the app's secret store, never in a file that is
committed or shared.

Examples:

```bash
# Claude Code (OAuth: then run /mcp and authenticate)
claude mcp add --transport http whatsable https://api.whatsable.app/mcp
# Claude Code with a key
claude mcp add --transport http whatsable https://api.whatsable.app/mcp \
  --header "Authorization: Bearer $WHATSABLE_API_KEY"
```

```json
{ "mcpServers": { "whatsable": { "url": "https://api.whatsable.app/mcp" } } }
```

That is Cursor's `mcp.json`. To send a key there, add
`"headers": { "Authorization": "Bearer ${env:WHATSABLE_API_KEY}" }`. An app that only runs
local servers can bridge with `npx -y mcp-remote https://api.whatsable.app/mcp`.
Step-by-step guides for Claude, ChatGPT, Gemini, Cursor, VS Code and others:
https://docs.whatsable.app/mcp

**Who can connect.** An owner or an admin of the organization, on a Pro or Agency plan (the Bulk
Message plan does not include the API), with at least one connected WhatsApp number. If the
sign-in refuses, tell the person why it said so; do not retry.

## 2. Call `get_guide` first

Before your first real action, and whenever the person asks what you can do, call `get_guide`.
It is the source of truth: it answers from what **this** connection may do, lists the tools it
holds, the workflows to follow step by step, and the WhatsApp rules. Do not rely on a tool list
from memory or from this file; tools are added over time, and a tool your access does not allow
is hidden from you.

The areas the server covers: the account and its numbers; messages; conversations and the AI in
each one; templates; contacts and labels; scheduled messages; broadcasts; AI agents. Its
workflows include replying to customers, daily and weekly reports, and taking over from the AI.

## 3. What to know about WhatsApp

- **The 24-hour window.** A free-form message (text, buttons, media) reaches a person only within
  24 hours of that person's last message to the same number. Outside the window, or to someone who
  has never written, only an approved **template** can be sent. Check the conversation's window
  before you send; a scheduled text sends only if the window is still open at that moment, so
  schedule a template for anything later.
- **Templates need Meta's approval.** A new template starts as pending; Meta approves or rejects
  it later, and can pause or disable one it approved. Only an approved template sends. Read the
  template before sending it, and fill every variable it lists.
- **"Not sent" means nothing went out.** Never tell the person a message was sent unless the send
  succeeded. Success means WhatsApp accepted it, not that it was delivered; check the message
  later for delivered, read or failed. "Not sent, or not confirmed" means it may still arrive: do
  not send it again until you know it did not.
- **The AI agent or a person.** An AI agent may be answering a conversation. When a person from the
  team replies, the agent pauses in that chat (its settings decide when it answers again); the
  agent can also hand a chat to a person. To take over, switch the AI off in that one
  conversation, and switch it back on when you are done. Stopping follow-ups alone is a separate
  switch, per contact. Ask before you change an AI agent's prompt.
- **Number-bound access.** A connection or key can use only the numbers it was given, and sends
  from its default number unless told otherwise. With several numbers, name the number for a new
  send, or reply inside the conversation, which fixes it. If the person has not said which
  number, ask. "Number not allowed" means the connection must be reconnected with that number.
- **Each call acts once.** A send sends one real WhatsApp message to a real person; a broadcast
  launches once. Calling again does it again. Confirm the recipient and the text before a send
  the person did not spell out.

## 4. What the MCP does not do, on purpose

Send the person to the WhatsAble app (https://console.whatsable.app) for these, and say why:

| Not through the MCP | Why | Where instead |
| --- | --- | --- |
| Create an account, or log in for the person | Every connection belongs to a person who signed in and approved it; an agent never holds a password. | Sign up at https://console.whatsable.app/sign-up |
| Show or create an API key | A key is a secret; it is shown once, to a person. | **Settings > API keys** |
| Connect or refresh a number's Meta connection | It needs Meta's own sign-in in a browser. | **Settings > Business Numbers** |
| Buy or change a plan | A person pays, in the app's checkout. | **Settings > Billing** |
| Invite, change the role of, or remove a team member | Access to customer conversations is the owner's decision. | **Settings > Team** |
| Webhooks | Planned, not available yet. | **Settings > Webhooks** |

## 5. Migrating from the old skills

The earlier WhatsAble skills (`setup-notifyer`, `automate-notifyer`, `chat-notifyer`, up to
version 0.4.0) were Node scripts that logged in with an email and password and called the legacy
Notifyer system. Accounts that moved to the new WhatsAble app are no longer served by that system,
so those scripts read and write the wrong place, or fail. Remove them, remove the
`NOTIFYER_API_BASE_URL`, `NOTIFYER_API_TOKEN` and `NOTIFYER_CHAT_ORIGIN` variables, connect the
MCP server as above, and call `get_guide`.

For your own code (a backend, a Zap, a scheduled job) rather than a conversation, use the
WhatsAble API v1 at `https://api.whatsable.app/v1` with an API key:
https://docs.whatsable.app/api-reference/v1
