MCP Server URL
Use this URL wherever a client asks for a remote MCP server or custom connector:https://www.moengage.com/docs/mcp.https://mcp.moengage.com is publicly reachable, so no firewall or allowlist changes are needed.Setup
There are two ways to make the connector available:- Organization-wide setup — an admin adds MoEngage once for the whole organization, so every member only has to click Connect. Recommended for teams.
- Personal setup — an individual adds the connector to their own account.
Organization-Wide Setup (Admin, One-Time)
Set this up once so anyone in your organization can connect without pasting the URL themselves.- Claude (Team / Enterprise)
- ChatGPT (Business / Enterprise)
- Go to Settings → Connectors (organization settings).
- Click Add.
- Enter the MCP server URL:
https://mcp.moengage.com. - Leave Advanced settings (OAuth Client ID and Client Secret) blank — MoEngage handles OAuth automatically.
- Click Add.
Personal Setup (Per User)
Use this if you are connecting your own account, or if the connector has not been added organization-wide.- Connect with Claude
- Connect with ChatGPT
- Connect with GitHub Copilot (VS Code)
- Open Claude Desktop or go to claude.ai.
- In the sidebar, click Settings.
- Click Connectors.
- Click Add custom connector.
- Enter the MCP server URL:
https://mcp.moengage.com. - Click Add, then Connect. You are redirected to authenticate with your MoEngage account.
- After authentication, the MoEngage tools appear under Connectors in Settings.
- Configure Tool permissions (Automatic, Ask first, or Disabled) per tool. See Enable the Tools You Need.
Use It in a Conversation
After connecting, turn the MoEngage tools on for a chat:- In a new conversation, open the tools or connectors menu (in Claude, the + icon → Connectors).
- Toggle MoEngage on.
- Ask for what you want in plain language (see Example Prompts).
Authentication
The MoEngage MCP server uses OAuth-based authentication tied to your MoEngage account. Unlike the dashboard, an MCP connection defaults to a workspace list rather than your last-used workspace, since MCP clients switch workspaces more frequently. If you are already signed in, you go directly to the authorization prompt described in the final step below; otherwise, the full flow is:Initiate a connection
Enter your email
Verify your identity
Select a workspace
Complete workspace authentication
- Account — your MoEngage email
- Workspace — the workspace you are currently signed into
- Role — your role in that workspace (for example, Manager, Admin)
- Data Center — your data center environment
- Permissions requested — the scopes the server needs

Key Authentication Behaviors
- The connection uses the environment, workspace, and role you selected when you authorized it — not your current dashboard session.
- Authentication tokens are issued by the MCP authorization flow and are scoped to that workspace and environment.
- To use a different workspace or environment, re-authenticate the connection from your MCP client and select it there. If the connection is interrupted, re-initiate it the same way.
- All actions respect your existing MoEngage role-based permissions — including which tools your role can use. Reading data requires read access; building or editing requires the matching create/manage permission.
- Session duration: 30 days, with a 7-day idle timeout.
- Independent from the dashboard: the MCP session is separate from your dashboard session. Logging in or out of one does not affect the other, and signing in to a different workspace on the dashboard does not switch the workspace your MCP connection uses.
Built for Agents
The server is designed so that any AI assistant — not just one vendor’s — can act correctly on the first try. Two capabilities make that possible:discover_schemareturns the exact, current request shape for whatever you’re building (required fields, allowed values, a working example) — so the assistant doesn’t guess.get_content_guideserves validated, on-demand guidance for writing content (Jinja personalization, email HTML) — so the content is correct, not trial-and-error.
update_flow_status.What You Can Do
Build campaigns
Author content
Manage segments
Work with flows
Search & review
Analyze performance
Analyze product data
Available Tools
Create, edit, and test-send are supported for Push and Email. Campaigns on every other channel, including SMS, Webhook, and WhatsApp, are read-only: you can search and read them, but not create or edit them. Thechannel filter on search_campaigns is narrower still — see Other limitations.
Which tools you can use depends on your MoEngage role. If a tool you expect is missing, refresh the tools list.
Build a Campaign
Author Content
Content Blocks
Segments
- Segment filters must use the exact internal (platform) names of events and attributes, not the dashboard display name (for example,
moe_city, not “City”). A display name used as an event or event-attribute name is accepted at create time, and a user-attribute display name gets through too whenever the catalog check cannot resolve it — in both cases the count later fails with no error reason. Resolve names first withfind_events,find_user_attributes, andfind_event_attributes(see Catalog Discovery), and always use the returnednamefield. - Equality depends on the attribute’s data type.
equalsis never a valid operator. Forstring,double,array_string, andarray_doubleattributes, equality is"operator": "in"with a list value (for example,"value": ["Mumbai"]). For the scalar types, “is not” is the same operator with"negate": true. To negate an array attribute, remove the filter’sarray_filter_typekey — keeping it alongsidenegateinvalidates the filter.isis the equality operator forboolattributes and for date parts ondatetimeattributes — on astringattribute it is reserved for the is-empty check ("value": ""), so don’t use it for text equality.geopointattributes take no operator at all. Get the exact set for a data type fromdiscover_schema(kind="component", id="segment_filters"). - To target users who did not perform an event, set
executed: falseon theactionsfilter and pair it with"execution": {"type": "exactly", "count": 0}— that combination is required, andaggregation_attributesmust be omitted. Alternatively, place a positiveactionsfilter inexcluded_filters, which excludes matching users outright. - Common create-time errors:
409(name already taken),400(malformed filter, or an operator the API does not accept),413(filter too large or too deeply nested). The400names no field, so re-check the filter shape rather than retrying variations — or pre-flight withdeep_validate_segment_filters, which answers200withis_valid: falseand the path of each problem.
- PII-marked attributes are not exposed through the MCP.
- Email (Standard) and Mobile Number (Standard) are masked even when they are not marked as PII.
get_user_events, get_recent_query, get_recent_query_users, and get_value_suggestions.Flows
Dashboards
Search & Read
ACTIVE, DRAFT, EXPIRED, NOT_SENT, PAUSED, SCHEDULED, SENDING, SENT, STOPPED, UNDER_REVIEW, REJECTED.
Campaign Analytics
run_user_analysis is more restricted than the rest, and retention caps hourly analyses at 24 hours.Analyze
- PII-marked attributes are not exposed through the MCP.
- Email (Standard) and Mobile Number (Standard) are masked even when they are not marked as PII.
Catalog Discovery
Use these to find the right events and attributes before building a segment or running a behavior analysis. All three return top-ranked matches with confidence scores, never the full catalog; event and attribute names vary per workspace, so the assistant should never guess them.Feedback
Building a Campaign, Step by Step
Discover the Shape
discover_schema for your channel and delivery type to get the exact payload structure.Find the Audience
find_events / find_user_attributes and create_custom_segment (with start_segment_count to confirm reach) to target the right users.Author the Content
get_content_guide for validated patterns.Create the Draft
create_campaign_draft (or patch_campaign_components to refine an existing draft).Preview Personalization
create_personalization_preview confirms the content renders correctly for sample users.Validate
validate_campaign_draft runs the full publish check and reports any field-level issues.Publish
Example Prompts
Known Behaviors and Limitations
We document known quirks so you and your assistant can work around them instead of hitting them unexpectedly.Enable the Tools You Need
Write tools (for example, creating campaigns, editing content blocks, creating segments) may be off by default in your client. If the assistant says it lacks access to do something, enable that tool in your client’s connector settings — in Claude, under Settings → Connectors → MoEngage → Tool permissions. Which tools you can enable is still bounded by your MoEngage role.Refresh the Tools List
New tools are added to the connector over time. If a newly shipped tool doesn’t appear, refresh the connector’s tools list in your client. If the refresh option isn’t available, disconnect and reconnect (re-authenticate) the MoEngage connector to pick up the latest tools.Segmentation Behaviors
Segmentation Limits
The segmentation tools do not enforce rate limits of their own; the limits below come from the MoEngage APIs they call. There is no published quota on how many segments or queries you can create in a period, no enforced minimum interval between polls, and no documented cap on concurrent count jobs.429 (Too Many Requests) error under heavy traffic. There is no published request quota; when a 429 occurs, retry after about 60 seconds. All tool calls also pass through the MoEngage API gateway, which can apply its own traffic controls.Other Limitations
- Publishing a campaign is not available through the MCP — drafts are published from the MoEngage dashboard.
- Campaign creation is Push and Email only. SMS, Webhook, and WhatsApp campaigns are searchable and analyzable, but must be created and edited in the MoEngage dashboard.
- The campaign
channelfilter accepts Push, Email, SMS, and MMS only. WhatsApp and Webhook campaigns cannot be filtered by channel — omit the filter to include them in results. WhatsApp is supported elsewhere: flow analytics covers WhatsApp, and WhatsApp appears in segment reachability counts. - Date range for campaign analytics is limited to 30 days per query; flow analytics allows up to 90 days.
- Batch size:
get_campaign_statsaccepts up to 50 campaign IDs per request. - Content size: email HTML can be large (10–50 KB); fetch full content deliberately.
- Campaign-name date format: campaign names often encode dates as DDMMYY (for example,
230326= 23 March 2026). If analytics return all zeros, check your date range first. - PII and contact attributes are not available to the analyze tools. In
run_behavior_analysis,run_funnel_analysis,run_retention_analysis,run_session_source_analysis, andrun_user_analysis, these attributes cannot be used to group by user property or to split by:- PII-marked attributes are not exposed through the MCP.
- Email (Standard) and Mobile Number (Standard) are masked even when they are not marked as PII.
- Analytics response shape: stats are returned as a single cross-channel structure — metrics that don’t apply to a campaign’s channel come back as
0, not absent. Don’t infer a campaign’s channel from which fields are non-zero.
Security and Permissions
- The MCP server can build and validate drafts, create segments, and read and analyze campaigns, flows, and dashboards. It does not publish campaigns — publishing is a human action in the dashboard.
- Every action is scoped to the workspace and role of the authenticated user. Tools your role lacks permission for are not available to you.
- Data shared with AI assistants is subject to the respective AI provider’s data-handling policies. MoEngage lists its AI sub-processors (including Anthropic and OpenAI) on its website.
- Review MoEngage’s Privacy Policy and Terms of Use for more information.
Troubleshooting
Cannot access the MCP server or your data
Cannot access the MCP server or your data
- Verify the connection was authorized against the workspace you expect. Changing workspaces on the dashboard does not change it.
- To point the connection at a different workspace, re-authenticate it from your MCP client and select that workspace.
A tool you expected isn't available
A tool you expected isn't available
A newly announced tool doesn't show up
A newly announced tool doesn't show up
Re-authentication fails when switching workspace or data center
Re-authentication fails when switching workspace or data center
A segment count fails with no error reason
A segment count fails with no error reason
deep_validate_segment_filters before creating the segment again.A segment or query is not created
A segment or query is not created
409 means the name is already taken, 400 means the filter structure or one of its operators is invalid, and 413 means the filter is too large or deeply nested. The 400 carries no field-level detail. A 400 on a filter that otherwise appears correct is usually the operator, and the right one depends on the attribute’s data type: for a text (string) attribute, equality is "operator": "in" with a list value — not equals, and not is (is is for bool attributes and for the is-empty check). Run deep_validate_segment_filters first: it answers 200 with is_valid: false and the path of each problem, instead of a flat 400. See the common-errors note under Segments.is_user_in_segment returned segment_eligibility: false
is_user_in_segment returned segment_eligibility: false
start_segment_count.A segmentation tool is not available to the assistant
A segmentation tool is not available to the assistant