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.
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
- Click Customize on the left menu panel, then go to Connectors.
- Click + and then Add custom connector.
- Enter Omnisend as the name and
https://mcp.omnisend.com/mcpas the URL, then click Add. - 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.
- 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.
- Go to Settings > Apps > Advanced settings and toggle Developer mode on.
- Go back to Apps and click Create app.
- Enter Omnisend as the name,
https://mcp.omnisend.com/mcpas the MCP server URL, set authentication to OAuth, and click Create. - You will be redirected to the OAuth flow — log in to your Omnisend account and approve the permissions.
- You can now start chatting and ask questions that require Omnisend context.
Cursor
- Open Cursor Settings > MCP > New MCP Server (or the equivalent MCP configuration for your Cursor version).
- Add a server entry using this URL:
{
"mcpServers": {
"omnisend": {
"url": "https://mcp.omnisend.com/mcp"
}
}
}- Save, then complete the OAuth flow when prompted — log in to your Omnisend account and approve the permissions.
- 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.
{
"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.