# How to connect WhatsApp Business to Hermes Agent (no API keys)

> Connect WhatsApp Business to Hermes with ClawLink in one click — 17 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Web version: https://claw-link.dev/hermes/whatsapp

Most guides for giving Hermes Agent WhatsApp Business access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical WhatsApp Business setup: pair once in the browser and your always-on Hermes agent can act on WhatsApp Business for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to WhatsApp Business.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect WhatsApp Business** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect whatsapp  # connect WhatsApp Business (browser OAuth)
npx -y @useclawlink/cli actions whatsapp  # list available actions
npx -y @useclawlink/cli run whatsapp <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect WhatsApp Business in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

> Run whatsapp_get_phone_numbers to confirm my business numbers, then use whatsapp_send_message to reply to the customer number I paste. If the recipient has not messaged us in the last 24 hours, say so and use a template instead.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once WhatsApp Business is connected in the dashboard, that agent calls the same 17 WhatsApp Business tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## WhatsApp Business MCP for Hermes

Looking for a WhatsApp Business MCP server for Hermes Agent? ClawLink connects WhatsApp Business to Hermes Agent and exposes 17 WhatsApp Business tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw WhatsApp Business integration](https://claw-link.dev/openclaw/whatsapp) works the same way.

The AI Overview's answer for a WhatsApp Business AI agent is a Meta Cloud API walkthrough: create a developer account, create an app, enable WhatsApp, copy the token, the Phone Number ID, and the WABA ID, and host a public HTTPS endpoint. On the connect-to-Hermes queries it teaches the same runtime's manual path: `hermes whatsapp` QR pairing with a Meta business account, or an unofficial Baileys bridge. The runtime is Nous Research's hermes-agent, which is the Hermes this page connects. ClawLink pairs that runtime over hosted Meta OAuth: you sign in with your Meta account and enter your WhatsApp Business Account ID once. There is no developer account to create, no app to build, no token to copy, and no HTTPS endpoint to host.

## The other ways Hermes Agent gets WhatsApp Business

Every route below pairs the same hermes-agent runtime; what differs is who owns the Meta app and the WABA plumbing.

- **The Meta Cloud API route the AI Overview teaches**: a Meta developer account, an app, WhatsApp enabled on it, and a token plus Phone Number ID and WABA ID copied into your config, with a public HTTPS endpoint to receive webhooks.
- **Embedded signup and shared-WABA providers**: a Meta Business Solutions partner's app handles the app and token side; you still connect through the partner's account and consent flow.
- **Unofficial bridges**: Baileys QR-code libraries that pair a phone number directly. These are the wrappers the safety answers warn about, and they do not use the official API.
- **Meta's own in-app Business Agent**: Meta's native AI agent in the WhatsApp app itself. Free, no API at all, and not scriptable by Hermes; it is the head answer on the without-API-key query.
- **ClawLink (this page)**: all 17 tools over hosted Meta OAuth with your WABA ID, no developer app, no token management, nothing to host.

Using OpenClaw as well? The [OpenClaw WhatsApp Business integration](https://claw-link.dev/openclaw/whatsapp) is the same Meta OAuth connection and the same tools, with OpenClaw's skill flow instead of Hermes pairing.

## What the Hermes Agent WhatsApp Business integration can do

17 WhatsApp Business tools are ready for Hermes Agent once the account is connected. The 16 below are the ones people reach for most; your agent can call all 17.

### 16 of 17 WhatsApp Business tools for Hermes

| Tool | What it does |
|---|---|
| **Create message template** `whatsapp_create_message_template` | Create a new message template for the WhatsApp Business Account. Templates must be approved by WhatsApp before they can be used. |
| **Get business profile** `whatsapp_get_business_profile` | Get the business profile information for a WhatsApp Business phone number. This includes business details like description, address, website, and contact info. |
| **Get media info** `whatsapp_get_media_info` | Get metadata and download URL for uploaded WhatsApp media. Returns media ID, download URL (valid for 5 minutes), MIME type, SHA256 hash, and file size. |
| **Get message templates** `whatsapp_get_message_templates` | Get all message templates for the WhatsApp Business Account. Templates are required for sending messages outside the 24-hour window and for marketing/utility messages. |
| **Get phone number** `whatsapp_get_phone_number` | Retrieve detailed information about a specific WhatsApp Business phone number. |
| **Get phone numbers** `whatsapp_get_phone_numbers` | Retrieve all phone numbers registered to your WhatsApp Business Account. Returns phone number IDs, display numbers, verification status, quality ratings, and messaging throughput limits. |
| **Get template status** `whatsapp_get_template_status` | Get the status and details of a specific message template. This is useful for checking if a template has been approved, rejected, or is still pending review. |
| **Send contacts** `whatsapp_send_contacts` | Send contacts WhatsApp number. Note: The message will be delivered to the recipient only if they have initiated a conversation first. |
| **Send interactive buttons** `whatsapp_send_interactive_buttons` | Send an interactive button message with up to 3 reply buttons to a WhatsApp user. Interactive button messages allow recipients to quickly respond by tapping predefined buttons. |
| **Send interactive list** `whatsapp_send_interactive_list` | Send an interactive list message to a WhatsApp number. List messages display a menu of options organized into sections. Users tap a button to view the list and select one option. |
| **Send location** `whatsapp_send_location` | Send a location message with coordinates, name, and address to a WhatsApp user. This action allows you to share location information through WhatsApp Business API. |
| **Send media** `whatsapp_send_media` | Send a media message to a WhatsApp number |
| **Send media by ID** `whatsapp_send_media_by_id` | Send media using a media ID from previously uploaded media |
| **Send message** `whatsapp_send_message` | Send a text message to a WhatsApp user |
| **Send template message** `whatsapp_send_template_message` | Send a template message to a WhatsApp number |
| **Upload media** `whatsapp_upload_media` | Upload media files (images, videos, audio, documents, stickers) to WhatsApp servers |

## Example prompts

**Reply to a customer**

> Run whatsapp_get_phone_numbers to confirm my business numbers, then use whatsapp_send_message to reply to the customer number I paste. If the recipient has not messaged us in the last 24 hours, say so and use a template instead.

**Template campaign**

> Create a shipping-update template with whatsapp_create_message_template using the body I paste, then check it with whatsapp_get_template_status until it is approved or rejected.

**Business profile check**

> Use whatsapp_get_business_profile and whatsapp_get_phone_numbers, and tell me what the numbers show: verification status, quality rating, and throughput limits.

**Media upload and send**

> Upload the image I attach with whatsapp_upload_media, then send it with whatsapp_send_media_by_id to the number I paste, confirming the 24-hour window first.

## WhatsApp Business rules the tools enforce

The schemas of these tools encode WhatsApp's own rules; the ones that surprise people are below.

- **The 24-hour window governs free-form sends.** whatsapp_send_message, whatsapp_send_media, whatsapp_send_location, whatsapp_send_contacts, whatsapp_send_interactive_buttons, and whatsapp_send_interactive_list all require the recipient to have messaged the business first within 24 hours, or the call fails. Outside the window, whatsapp_send_template_message is the only route.
- **Templates must be approved before first use.** whatsapp_create_message_template's schema says so explicitly; whatsapp_get_template_status reports pending, approved, or rejected.
- **Media links expire.** whatsapp_get_media_info returns a download URL valid for 5 minutes, so a delayed read of the response finds a dead link.
- **Phone numbers carry their own limits.** whatsapp_get_phone_numbers returns verification status, quality rating, and messaging throughput limits per number; the limits are per number, not per account.
- **The WABA ID is part of the connection.** The hosted flow asks for your WhatsApp Business Account ID at connect time, a 15-16 digit number from Meta Business Suite. It identifies the business; it is not an API key.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want WhatsApp Business working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a WhatsApp Business app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect WhatsApp Business through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for WhatsApp Business. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right WhatsApp Business actions to the runtime in a format your agent can reliably use. | 17 tools for WhatsApp Business are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes WhatsApp Business to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect WhatsApp Business in the browser, and the 17 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use WhatsApp Business
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect WhatsApp Business from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling WhatsApp Business tools
WhatsApp Business tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every WhatsApp Business call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### WhatsApp Business returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### whatsapp business api 403 insufficient permissions
The fixes search results teach assume a self-built setup: update token scopes, assign assets in Business Manager, check account status, decode Meta error codes like 131005. A hosted OAuth connection handles scopes server-side and they are fixed at consent, so there is no token scope list to edit. The causes that remain: the connected Meta business does not own the WABA or phone number in the request, or the agent sent a placeholder id instead of a real WABA, phone number, or template name. Run whatsapp_get_phone_numbers first, confirm the numbers the account can actually reach, then retry with real values.

Ask the agent to diagnose it:

```text
Run whatsapp_get_phone_numbers and whatsapp_get_business_profile, tell me which business and numbers are connected, and identify what the failing call tried to use. Do not retry until both have returned.
```

### whatsapp business api rate limit
WhatsApp throttles per phone number, and the limits are tied to the number's verification status and quality rating. whatsapp_get_phone_numbers returns exactly those fields (verification status, quality rating, messaging throughput limits), so the agent can read the actual limit for the number it sends on rather than guessing. A 429 response carries the retry interval; honoring it and pacing sends is the fix. Reconnecting does not change the limits.

Ask the agent to diagnose it:

```text
Report the exact status and any retry-after value from the failed WhatsApp call, then run whatsapp_get_phone_numbers and tell me the throughput limits for the number in question. Do not retry until the interval has passed.
```

### whatsapp mcp tool not found
The answers for this phrase debug a local MCP server: claude_desktop_config.json path separators, a Go bridge process, uvx --directory flags. A hosted connection has no local server and no config file. A tool-not-found response here means the tool name was wrong or the schema catalog had not loaded; schemas load on demand, so one retry clears the second case, and the error message names the nearest real tools for the first.

Ask the agent to diagnose it:

```text
List the WhatsApp Business tools you have access to and use the exact name for what I asked.
```

### OAuth finished in the browser but the account is still missing
Try reconnecting WhatsApp Business and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a Hermes Agent WhatsApp Business integration?
Yes. ClawLink is the fastest way to connect Hermes to WhatsApp Business: link your WhatsApp Business account once in the browser and Hermes Agent can call the WhatsApp Business API through 17 ready-made tools — no custom code or token handling.

### How do I connect WhatsApp Business to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect WhatsApp Business in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

### How long does it take to connect WhatsApp Business to Hermes Agent?
About two minutes. Sign in, click Connect next to WhatsApp Business in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring WhatsApp Business up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want WhatsApp Business working from chat.

### Do I need a Meta developer app to connect WhatsApp Business to Hermes?
No, and that is the point of the hosted flow. The AI Overview's "you must create a Meta developer account, create an app, enable WhatsApp, and copy your token, Phone Number ID, and WABA ID" describes building the Cloud API integration yourself. ClawLink's connection runs under its own Meta app: you sign in with your Meta account and enter your WhatsApp Business Account ID, the 15-16 digit WABA ID found in Meta Business Suite under Settings, Accounts, WhatsApp accounts. That ID identifies your business; it is not an API key. No app to create, no token to copy, no Phone Number ID to track.

### Is it safe to connect WhatsApp Business to an AI agent?
Two separate questions hide here. On access: this connection is official Meta OAuth with the whatsapp_business_management, whatsapp_business_messaging, and business_management scopes, which is the official-channel route the safety answers recommend over unofficial wrappers like Baileys. On policy: Meta's WhatsApp Business Solution Terms are reported to restrict providers from running standalone, open-ended AI assistants on the platform, with an effective date of 2026-01-15, while task-specific agents are permitted. Keep the agent scoped to defined tasks, such as order status, appointment handling, or template-driven replies, and read Meta's current terms for your business before running an open-ended assistant. (Policy detail reported by search engines and ChatGPT on 2026-08-02; verify against Meta's published terms before relying on it.)

### Why do messages fail even though the connection works?
WhatsApp enforces the 24-hour customer service window. A free-form message (send_message, send_media, send_location, send_contacts, interactive buttons, or interactive lists) is delivered only if the recipient messaged your business first within the last 24 hours. Outside the window you must use an approved template via send_template_message. This is Meta's rule, not a connection fault; the tool schemas state it explicitly, and templates must be approved by WhatsApp before they can be used at all.

### How does WhatsApp template approval work?
Message templates must be approved by WhatsApp before they can be sent outside the 24-hour window. whatsapp_create_message_template submits one, whatsapp_get_template_status reports pending, approved, or rejected, and whatsapp_get_message_templates lists what exists on the account. No approval-time number is claimed here because it varies and is not published; plan templates ahead of a campaign and check status with the status tool rather than assuming.

### Hermes paired but still can't use WhatsApp Business
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Hermes SendGrid integration](https://claw-link.dev/hermes/sendgrid) — Deliver transactional and marketing emails
- [Dialpad](https://claw-link.dev/hermes/dialpad) — Business phone, messaging, and video conferencing
- [Discord Bot](https://claw-link.dev/hermes/discord-bot) — Automate Discord server actions with bot-specific permissions
