# ManyMoney Messaging MCP server

<Aside type="tip" title="Beta feature notice">
The ManyMoney Messaging MCP server is in beta. The endpoint and authentication options may change.
</Aside>

## Overview

The ManyMoney Messaging MCP server is the sending counterpart to the [ManyMoney AI MCP server](/product/pushwoosh-ai/manymoney-mcp-server/). Where the ManyMoney AI MCP server helps you plan and build campaigns, the Messaging MCP server gives your AI agent the power to **actually deliver messages** — push notifications, email, SMS, WhatsApp, Telegram, LINE, Kakao, and more — on demand, from natural-language instructions.

Connect it to any [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) client and your agent can fire a push to a segment or send a personalized email to a specific user, all from a single natural-language request.

### Supported channels

| Channel | Message types |
| --- | --- |
| **Push — iOS** | Standard, silent, and critical notifications, VoIP pushes, and Live Activities |
| **Push — Android** | Standard pushes, plus Huawei, Baidu, and Amazon Fire |
| **Push — Web** | Web push in Chrome, Firefox, Safari, and Edge (Windows) |
| **Email** | HTML body, templates, attachments, custom From/Reply-To |
| **SMS** | Text messages through the SMS platform configured on your account |
| **WhatsApp** | Meta-approved templates for outbound sends; free-form text only within the 24-hour window after a user messages you first |
| **Telegram** | Text messages with content variables |
| **LINE** | Content and template messages |
| **Kakao** | Content and template messages |

### How it works

1. Connect the Messaging MCP server to your AI client once (see [Connect the MCP server](#connect-the-mcp-server) below).
2. In your AI client, open a new chat and describe the send in plain language. Include the application, the audience (segment or specific users), the message text, and when to send if it is not immediate. See [what to include in your request](#what-to-include-in-your-request) below. You do not need to build API requests or JSON yourself.
3. When the agent is ready to send, review the details and approve the action in your client.
4. After you approve, Pushwoosh sends the message and returns a [message code](/developer/api-reference/api-identifiers/#message-code). Use it in [Message history](/product/statistics-and-analytics/message-history/) to find the send and track delivery and statistics.

### What your agent can do

After setup, the agent can:

- **Send on any supported channel:** push (iOS, Android, Web), email, SMS, WhatsApp, Telegram, LINE, or Kakao.
- **Reach a segment:** broadcast to everyone in a [segment](/product/audience-data-and-segmentation/segmentation/).
- **Reach specific users:** send to one or more [user IDs](/developer/api-reference/api-identifiers/#user-id) after an event (order update, password reset, and similar).
- **Schedule delivery:** send now, at a set time, after a delay, or in each user's local timezone.
- **Personalize content:** fill template placeholders such as `{{first_name}}` or `{{promo_code}}` per recipient.
- **Count sends toward a campaign:** tell the agent which [campaign code](/developer/api-reference/api-identifiers/#campaign-code) to use. Delivery and engagement for that send show up under that campaign in the Control Panel.

See [example chat requests](#example-prompts) in [Send messages from your AI client](#send-messages-from-your-ai-client) below.

### Compatible AI clients

The Messaging MCP server works with any MCP-compatible client, including:

- **Claude Desktop** by Anthropic
- **Cursor** and **Windsurf**
- **Cline** and **Continue**
- **Custom agents** built on the MCP specification

## Connect the MCP server

<Aside type="caution" icon="setting" title="Developer assistance needed">
You might need help from your development team to connect the Messaging MCP server to your AI client. Please share this guide with them.
</Aside>

### Step 1. Make sure you have a Pushwoosh account and an API token

The Messaging MCP server authenticates with a [Pushwoosh Server API token](/developer/api-reference/api-access-token/#server-api-token). 

In the Pushwoosh Control Panel, go to **Settings → API Access**, click **Generate New Token**, select **Server**, and save the token. You will add it to the client config in the next step.

The token inherits your account permissions. [Limit it to the applications](/developer/api-reference/api-access-token/#edit-token) you want the agent to send through.

### Step 2. Add the server to your AI client

Use the following endpoint:

```
https://messaging-api.svc-nue.pushwoosh.com/mcp
```

<Tabs>
  <TabItem label="Claude Desktop">
Add the server to your Claude Desktop config file (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "pushwoosh-messaging": {
      "url": "https://messaging-api.svc-nue.pushwoosh.com/mcp",
      "headers": {
        "Authorization": "Token YOUR_API_TOKEN"
      }
    }
  }
}
```

Restart Claude Desktop after saving.
  </TabItem>
  <TabItem label="Cursor / Windsurf">
Add the server to your `.cursor/mcp.json` (or the equivalent file in Windsurf):

```json
{
  "mcpServers": {
    "pushwoosh-messaging": {
      "url": "https://messaging-api.svc-nue.pushwoosh.com/mcp",
      "headers": {
        "Authorization": "Token YOUR_API_TOKEN"
      }
    }
  }
}
```

Reload the editor after saving.
  </TabItem>
  <TabItem label="Other clients">
Point your client at `https://messaging-api.svc-nue.pushwoosh.com/mcp` and set the `Authorization: Token YOUR_API_TOKEN` request header. Refer to your client's documentation for adding a remote MCP server with custom headers.
  </TabItem>
</Tabs>

### Step 3. Try it out

Open a new chat in your AI client and ask something concrete:

> *"In application `XXXXX-XXXXX`, send a push to my test devices with the title 'Hello from the agent' and body 'This is a test message.'"*


Before you approve the agent's action, confirm the audience and message content. 

If the connection works, the agent sends the message and returns a Pushwoosh message code such as `PW-12345-67890`.


## Send messages from your AI client

The agent sends one message per request.

<Aside type="caution" title="Review before you approve">
Messages sent through the Messaging MCP server are real deliveries. They go out as soon as you approve a send-now action, or at the schedule you set. Before you approve an action in your AI client, check the application, audience, channel, message text, and schedule. Be especially careful when the target is a segment. The agent cannot cancel a send once you approve it. Scheduled messages can be cancelled from [Message History](/product/statistics-and-analytics/message-history/) in the Pushwoosh Control Panel, but only before sending starts.
</Aside>

### What to include in your request

Describe the details below in your chat so the agent knows what to send, who should receive it, and when. Use plain language (for example, "app XXXXX-XXXXX", "segment cart-abandonment").

| What to include | Description |
| --- | --- |
| `application` | [Application code](/developer/api-reference/api-identifiers/#application-code) (`XXXXX-XXXXX`) |
| `platforms` | [Channel IDs](/developer/api-reference/messaging-api-v2/notify/#platform-enum) to send through (push, email, SMS, etc.) |
| `target` | [Segment code](/developer/api-reference/api-identifiers/#segment--filter-code), [segment expression](/developer/api-reference/segmentation-filters-api/segmentation-language/), or an explicit [user](/developer/pushwoosh-knowledge-hub/users-userids/), [hwid](/developer/pushwoosh-knowledge-hub/device-identifiers/#hwid), or [push token](/developer/pushwoosh-knowledge-hub/device-identifiers/#push-token) list ([transactional targeting](/developer/api-reference/messaging-api-v2/notify/#notifytransactional)) |
| `message_payload` | **Push:** title and body, or a [push preset](/product/content/push-presets/), with optional sound, badge, and open action<br /><br />**Email:** subject, body or [template](/product/content/email-content/), attachments<br /><br />**SMS and messengers:** text or approved template |
| `schedule` | Send at a specific time, after a delay, or follow user timezones |
| `dynamic_content_placeholders` | Values for placeholders such as `{{first_name}}` or `{{promo_code}}` |
| `campaign` | [Campaign code](/developer/api-reference/api-identifiers/#campaign-code) to attribute the message to |
| `frequency_capping` | [Frequency capping](/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping) limits how often each user receives a message within a time window |

### How the agent sends a message

The agent uses the [`Notify`](/developer/api-reference/messaging-api-v2/notify/) tool to create and send one message. Supports two targeting modes:

| Mode | When to use |
| --- | --- |
| **Segment** | Broadcast to all users matching a [segment](/product/audience-data-and-segmentation/segmentation/) or [segment expression](/developer/api-reference/segmentation-filters-api/segmentation-language/). Supports [scheduling](/product/how-to-guides/how-to-create-campaigns-in-pushwoosh/how-to-schedule-a-message/), [frequency capping](/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping), [send rate](/product/messaging-channels/global-frequency-capping/#set-send-rate-limits), and [control groups](/product/audience-data-and-segmentation/global-control-group/). |
| **Transactional** | Send to a specific list of [users](/developer/pushwoosh-knowledge-hub/users-userids/), [hwids](/developer/pushwoosh-knowledge-hub/device-identifiers/#hwid), or [push tokens](/developer/pushwoosh-knowledge-hub/device-identifiers/#push-token). Ideal for triggered or personalized messages. |


#### Example prompts

**Push to a segment:**

> In application `XXXXX-XXXXX`, send a push to the `cart-abandonment` segment on iOS and Android. 
> 
> Title: "Still thinking it over?" Body: "Your cart is waiting, here's 10% off." 
>
>Schedule for 3 PM in each user's local timezone. Use campaign code `spring-promo`.

**Email to one user:**

> In application `XXXXX-XXXXX`, send an email to user `uid-123` using email template `welcome-flow-v2` with the placeholder `{{first_name}}` set to Alex.

**SMS to a segment:**

> In application `XXXXX-XXXXX`, send an SMS to segment `vip-users` with body "Your exclusive offer ends tonight." Send now.

**Telegram to a segment:**

> In application `XXXXX-XXXXX`, send a Telegram message to segment `subscribers-monthly` with body "Hi `{{first_name}}`, your May invoice is ready — download it from your account." Schedule it for tomorrow at 10:00 AM UTC.

## Authentication

The Messaging MCP server supports two authentication methods:

| Method | How to use |
| --- | --- |
| **API token** | Add `Authorization: Token YOUR_API_TOKEN` to every request. Recommended for agents and automated pipelines. |
| **Session token (SSO)** | Add `Authorization: Bearer YOUR_SSO_TOKEN`. For programmatic integrations that use Pushwoosh OAuth2 SSO to act under a specific user session. Not needed for typical agent setups — use a Server API token instead. |

Requests with a missing or invalid token are rejected with HTTP 401.

## Tips and best practices

- **Always review each send carefully before you approve it.** These are real deliveries, and they go out when you approve or at the scheduled time. Make sure the app, audience, channel, and message text in the client match what you intended.
- **Use a dedicated Server API token for the agent.** Create a separate [Server API token](/developer/api-reference/api-access-token/#server-api-token) in **Settings → API Access** and [limit it to the applications](/developer/api-reference/api-access-token/#edit-token) the agent should send from. That way the agent's access stays scoped to just those apps.
- **Use transactional targeting for triggered messages.** When you send to a known user ID after an event (order shipped, password reset), use `transactional` mode with `users: [userId]`. Do not build a one-person segment for the same send. See [NotifyTransactional](/developer/api-reference/messaging-api-v2/notify/#notifytransactional).
- **Test on test devices before a big send.** Before sending to a real segment, ask the agent to send to your [registered test devices](/product/first-steps/start-with-your-project/test-your-integration/test-devices/) first. For example: *"In application `XXXXX-XXXXX`, send a push to my test devices with title 'Test' and body 'Check text here.'"* This routes the message only to devices you added in **Settings → Test Devices**. When the preview looks right, ask for the real segment or audience.
- **Name a campaign in your request.** Include a [campaign code](/developer/api-reference/api-identifiers/#campaign-code) in chat (for example, `spring-promo`) so results appear under the right campaign in the Pushwoosh Control Panel.
- **Confirm before broadcasting.** Configure your AI client to ask for explicit confirmation before approving any tool call that targets a segment. A broadcast to a large audience is irreversible.
- **Use placeholders for personalization.** Pass values for placeholders like `{{first_name}}` or `{{promo_code}}` in your chat request rather than building separate messages for each user.


## Related

<LinkCard title="ManyMoney AI MCP server: plan and build campaigns" href="/product/pushwoosh-ai/manymoney-mcp-server/" />
<LinkCard title="ManyMoney AI inside the Control Panel" href="/product/pushwoosh-ai/ai-assistant/" />
<LinkCard title="AI tools overview" href="/product/pushwoosh-ai/" />