> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.omnisend.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Omnisend MCP Server

Connect Omnisend to MCP clients such as Claude, ChatGPT, or Cursor using the Model Context Protocol (MCP).

## Omnisend MCP Server

**MCP** (Model Context Protocol) is an open protocol that helps AI models securely interface with different data sources and tools. You connect Omnisend's MCP server to an MCP client — such as Claude, ChatGPT, or Cursor — to get assistance with your Omnisend data. Your MCP client can help with a **variety of tasks** from campaign analytics to contact management and reporting. Here are some examples of prompts you can give:

* "Give me the performance of my email campaigns for last month. Show revenue, orders, conversion rate, click rate, open rate, and unsubscribes. Exclude SMS and push."
* "Show me the top-performing flows in the last 30 days with revenue, conversion, and message-level performance."
* "30-day subscriber trend: daily new subscriptions vs unsubscribes broken down by each channel."

**Note:** A newer MCP server with action-specific tools is available at `https://mcp.omnisend.com/v2/mcp`. See [Omnisend MCP Server v2](https://api-docs.omnisend.com/v2026-03-15/reference/mcp-server-v2).

### Before you connect

**Important:** You must have the **"Owner"**, **"Admin"**, **"Manager"**, or **"Partner"** role in Omnisend to connect your account to the Omnisend MCP server.

You will also need an MCP-compatible client such as Claude, ChatGPT, or Cursor.

### Setup

The Omnisend MCP server URL is:

`https://mcp.omnisend.com/mcp`

#### Claude

1. Click **Customize** on the left menu panel, then go to **Connectors**.
2. Click **+** and then **Add custom connector**.
3. Enter **Omnisend** as the name and `https://mcp.omnisend.com/mcp` as the URL, then click **Add**.
4. Select the Omnisend connector and click **Connect**. You will be redirected to the OAuth flow — log in to your Omnisend account and approve the permissions.
5. Start a conversation and ask something that requires Omnisend context to verify the connection works.

#### ChatGPT

**Note:** Developer Mode is available for ChatGPT Pro, Team, Enterprise, and Edu users.

1. Go to **Settings > Apps > Advanced settings** and toggle **Developer mode** on.
2. Go back to **Apps** and click **Create app**.
3. Enter **Omnisend** as the name, `https://mcp.omnisend.com/mcp` as the MCP server URL, set authentication to **OAuth**, and click **Create**.
4. You will be redirected to the OAuth flow — log in to your Omnisend account and approve the permissions.
5. You can now start chatting and ask questions that require Omnisend context.

#### Cursor

1. Open **Cursor Settings > MCP > New MCP Server** (or the equivalent MCP configuration for your Cursor version).
2. Add a server entry using this URL:

```json
{
  "mcpServers": {
    "omnisend": {
      "url": "https://mcp.omnisend.com/mcp"
    }
  }
}
```

3. Save, then complete the OAuth flow when prompted — log in to your Omnisend account and approve the permissions.
4. Start a chat and verify tools appear by asking a simple question that requires Omnisend context.

#### Multiple Omnisend accounts

Define separate server entries with distinct names (for example `omnisend-brand-a` and `omnisend-brand-b`) and different credentials. Enable only the server that matches the account you intend to use in each conversation.

```json
{
  "mcpServers": {
    "omnisend-mcp-brand-a": {
      "url": "https://mcp.omnisend.com/mcp?brand=a"
    },
    "omnisend-mcp-brand-b": {
      "url": "https://mcp.omnisend.com/mcp?brand=b"
    },
    "omnisend-mcp-brand-c": {
      "url": "https://mcp.omnisend.com/mcp?brand=c"
    },
    "omnisend-mcp-brand-d": {
      "url": "https://mcp.omnisend.com/mcp?brand=d"
    }
  }
}
```

### How the Omnisend MCP server works

Omnisend's API surface is large — covering campaigns, contacts, segments, templates, products, analytics, and more. Exposing every API operation as a separate MCP tool would overwhelm the MCP client's context window and degrade performance.

To solve this, Omnisend follows a **compact tool design** (similar to the approach described by Cloudflare for their MCP server): a small number of generic tools that give the AI agent access to the entire API. When you connect to the Omnisend MCP server, your MCP client will see 4 **tools**:

| Tool                 | Purpose                                                                                                                                                                                  |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `search`             | Lists all available Omnisend API operations with short descriptions. The AI agent calls this first to discover what it can do.                                                           |
| `tool_schema`        | Retrieves the full JSON Schema (input parameters, required fields, enums) for a specific API operation, so the AI agent knows exactly what to pass before calling it.                    |
| `tool_documentation` | Retrieves curated documentation and usage notes for a specific API operation — including payload examples and behavioral hints beyond what the raw schema provides.                      |
| `execute`            | Executes an Omnisend API call by operation name. The AI agent passes the operation name and a matching payload, and the server makes the authenticated HTTP request to the Omnisend API. |

The typical workflow is: the AI agent calls `search` to discover available operations, uses `tool_schema` and `tool_documentation` to understand how to call a specific one, then calls `execute` to perform it. This keeps the context window footprint small and fixed — no matter how many API endpoints Omnisend adds in the future.

### Available API operations

Through the 4 tools above, the MCP server exposes the following Omnisend API operations:

| Category                | Operation                            | Description                                              | Method | Path                                   |
| ----------------------- | ------------------------------------ | -------------------------------------------------------- | ------ | -------------------------------------- |
| Analytics               | `post_analytics_reports`             | Generate campaign analytics report grouped by send date  | POST   | `/api/analytics/reports`               |
| Analytics               | `post_analytics_statistics`          | Generate campaign analytics report grouped by event date | POST   | `/api/analytics/statistics`            |
| Automations             | `get_automations`                    | List automations                                         | GET    | `/v5/automations`                      |
| Batches                 | `get_batch_id`                       | Get batch information                                    | GET    | `/api/batches/{batchID}`               |
| Batches                 | `get_batches`                        | Get batches                                              | GET    | `/api/batches`                         |
| Batches                 | `get_batches_batch_id_items`         | Get batch items                                          | GET    | `/api/batches/{batchID}/items`         |
| Batches                 | `post_batches`                       | Create batch                                             | POST   | `/api/batches`                         |
| Brands                  | `get_brands_current`                 | Get information about brand                              | GET    | `/api/brands/current`                  |
| Brands                  | `post_brands_current`                | Connect brand                                            | POST   | `/api/brands/current`                  |
| Campaigns               | `delete_campaigns_id`                | Delete campaign                                          | DELETE | `/api/campaigns/{id}`                  |
| Campaigns               | `get_campaigns`                      | List campaigns                                           | GET    | `/api/campaigns`                       |
| Campaigns               | `get_campaigns_id`                   | Get campaign                                             | GET    | `/api/campaigns/{id}`                  |
| Campaigns               | `patch_campaigns_id`                 | Update campaign                                          | PATCH  | `/api/campaigns/{id}`                  |
| Campaigns               | `post_campaigns`                     | Create campaign                                          | POST   | `/api/campaigns`                       |
| Campaigns               | `post_campaigns_id_cancel`           | Cancel campaign                                          | POST   | `/api/campaigns/{id}/cancel`           |
| Campaigns               | `post_campaigns_id_copy`             | Copy campaign                                            | POST   | `/api/campaigns/{id}/copy`             |
| Campaigns               | `post_campaigns_id_send`             | Send campaign                                            | POST   | `/api/campaigns/{id}/send`             |
| Contacts                | `delete_contacts_tags`               | Batch remove tags                                        | DELETE | `/api/contacts/tags`                   |
| Contacts                | `get_contacts`                       | List contacts                                            | GET    | `/api/contacts`                        |
| Contacts                | `get_contacts_id`                    | Get contact                                              | GET    | `/api/contacts/{id}`                   |
| Contacts                | `patch_contacts`                     | Update contact by email                                  | PATCH  | `/api/contacts`                        |
| Contacts                | `patch_contacts_id`                  | Update contact by ID                                     | PATCH  | `/api/contacts/{id}`                   |
| Contacts                | `post_contacts`                      | Create or update existing contact                        | POST   | `/api/contacts`                        |
| Contacts                | `post_contacts_tags`                 | Batch add tags                                           | POST   | `/api/contacts/tags`                   |
| Email Content           | `get_email_content_id`               | Get email content                                        | GET    | `/api/email-content/{id}`              |
| Email Content           | `put_email_content_id`               | Update email content                                     | PUT    | `/api/email-content/{id}`              |
| Email Content           | `post_email_content_id_render`       | Render email content                                     | POST   | `/api/email-content/{id}/render`       |
| Email Templates         | `delete_email_templates_id`          | Delete email template                                    | DELETE | `/api/email-templates/{id}`            |
| Email Templates         | `get_email_templates`                | Get email templates                                      | GET    | `/api/email-templates`                 |
| Email Templates         | `get_email_templates_id`             | Get email template                                       | GET    | `/api/email-templates/{id}`            |
| Email Templates         | `post_email_templates`               | Create email template                                    | POST   | `/api/email-templates`                 |
| Email Templates         | `post_email_templates_id_render`     | Render email template                                    | POST   | `/api/email-templates/{id}/render`     |
| Email Templates         | `post_email_templates_import`        | Import email template from HTML                          | POST   | `/api/email-templates/import`          |
| Email Templates         | `put_email_templates_id`             | Update email template                                    | PUT    | `/api/email-templates/{id}`            |
| Email Universal Layouts | `delete_email_universal_layouts_id`  | Delete universal layout                                  | DELETE | `/api/email-universal-layouts/{id}`    |
| Email Universal Layouts | `get_email_universal_layouts`        | Get universal layouts                                    | GET    | `/api/email-universal-layouts`         |
| Email Universal Layouts | `get_email_universal_layouts_id`     | Get universal layout                                     | GET    | `/api/email-universal-layouts/{id}`    |
| Email Universal Layouts | `post_email_universal_layouts`       | Create universal layout                                  | POST   | `/api/email-universal-layouts`         |
| Email Universal Layouts | `put_email_universal_layouts_id`     | Update universal layout                                  | PUT    | `/api/email-universal-layouts/{id}`    |
| Images                  | `delete_images_id`                   | Delete image                                             | DELETE | `/api/images/{id}`                     |
| Images                  | `get_images`                         | List images                                              | GET    | `/api/images`                          |
| Images                  | `get_images_id`                      | Get image                                                | GET    | `/api/images/{id}`                     |
| Images                  | `post_images`                        | Upload image by URL                                      | POST   | `/api/images`                          |
| Images                  | `post_images_upload`                 | Upload image file                                        | POST   | `/api/images/upload`                   |
| Product Categories      | `delete_category_id`                 | Delete product category                                  | DELETE | `/api/product-categories/{categoryID}` |
| Product Categories      | `get_category_id`                    | Get product category                                     | GET    | `/api/product-categories/{categoryID}` |
| Product Categories      | `get_product_categories`             | List product categories                                  | GET    | `/api/product-categories`              |
| Product Categories      | `patch_category_id`                  | Update product category                                  | PATCH  | `/api/product-categories/{categoryID}` |
| Product Categories      | `post_product_categories`            | Create product category                                  | POST   | `/api/product-categories`              |
| Products                | `delete_product_id`                  | Delete product                                           | DELETE | `/api/products/{productID}`            |
| Products                | `get_product_id`                     | Get product                                              | GET    | `/api/products/{productID}`            |
| Products                | `get_products`                       | List products                                            | GET    | `/api/products`                        |
| Products                | `post_products`                      | Create product                                           | POST   | `/api/products`                        |
| Products                | `put_product_id`                     | Replace product                                          | PUT    | `/api/products/{productID}`            |
| Segments                | `delete_segment_id`                  | Delete segment                                           | DELETE | `/api/segments/{segmentID}`            |
| Segments                | `get_segment_id`                     | Get segment                                              | GET    | `/api/segments/{segmentID}`            |
| Segments                | `get_segments`                       | List segments                                            | GET    | `/api/segments`                        |
| Segments                | `get_segments_segment_id_statistics` | Get segment statistics                                   | GET    | `/api/segments/{segmentID}/statistics` |
| Segments                | `post_segments`                      | Create segment                                           | POST   | `/api/segments`                        |
| Segments                | `put_segment_id`                     | Update segment                                           | PUT    | `/api/segments/{segmentID}`            |
| Reference               | `get_reference_topics`               | List reference documentation topics                      | GET    | `/_reference/topics`                   |
| Reference               | `get_reference_documentation`        | Get reference documentation by topic                     | GET    | `/_reference/documentation`            |

### Troubleshooting

* **Cannot connect** — Confirm the URL is exactly `https://mcp.omnisend.com/mcp` (no trailing slash unless your MCP client documentation says otherwise). Verify network and firewall rules.
* **Authentication fails** — Make sure your Omnisend account has the "Owner", "Admin", "Manager", or "Partner" role and that the OAuth flow completes successfully.
* **Tools missing** — Restart your MCP client and check that the correct server entry is enabled for the chat or workspace. Your MCP client should show 4 tools (`search`, `tool_schema`, `tool_documentation`, `execute`).
* **Operation errors** — If an API call returns an error, the AI agent will typically explain the issue. Common causes include insufficient permissions, invalid parameters, or rate limiting.

For product issues, contact [Omnisend support](https://omnisend.com/contact-us/support).