# MoEngage MCP connector

The MoEngage connector lets Claude, ChatGPT, Cursor, or the Elaichi agent draft campaigns, build segments, and check audience counts in MoEngage, with each person signed in as themselves and every action logged.

Source: https://elaichi.ai/connectors/moengage/

## Facts

| | |
| --- | --- |
| Application | MoEngage |
| Category | Marketing Automation |
| AI tools | 52 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. MoEngage builds and runs this MCP server. Elaichi adds sign-in, access controls and an audit log on top |
| Support for its tools | www.moengage.com/contact-us |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once MoEngage is connected

- Count users who lapsed 30 days after buying twice
- Draft a win-back push for the lapsed buyers segment
- Find approved content blocks for the spring sale email

## Connect MoEngage in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick MoEngage.
2. Optionally set Share with, then press Connect.
3. Approve it in MoEngage. MoEngage's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which MoEngage tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## MoEngage MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## MoEngage MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## MoEngage MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect MoEngage to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a MoEngage tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with MoEngage through Elaichi

### Draft a campaign from a brief

Lifecycle marketing. Describe the win-back push or onboarding email you want, and the agent builds the draft in MoEngage, checks it against the content guide, and leaves it for you to review before anything goes live.

### Size an audience before you commit

Growth. Ask how many users lapsed in the last 30 days but bought twice before, and get a live segment count from MoEngage without opening the segment builder.

### Build a segment in plain language

CRM. Describe who you want to reach, and the agent turns it into a saved MoEngage segment with filters validated against the fields that actually exist.

### Reuse approved blocks instead of rewriting

Content. Search the content blocks your team already approved, drop one into a draft, or edit a block once so every campaign that uses it picks up the change.

### Preview a message as a real customer

Product marketing. Create a personalization preview to see how a message renders with a specific user's attributes, then send an inline test before the campaign is scheduled.

### Pause or resume campaigns on request

Marketing ops. Update a campaign's status in MoEngage when a launch slips or a product issue comes up, with the change recorded against the person who asked for it.

## Elaichi vs Zapier MCP vs Composio for MoEngage

All three can connect MoEngage to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over MoEngage tools | Allow or restrict single MoEngage tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per MoEngage call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect MoEngage to Claude?

Connect MoEngage in Elaichi first, which opens MoEngage's own OAuth sign-in, so you approve access in MoEngage and come straight back. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in with your Elaichi account and MoEngage is available in Claude.

### Does MoEngage work with ChatGPT and Cursor as well as Claude?

Yes. Once MoEngage is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi agent. You connect MoEngage once and every client sees it.

### What can an AI agent actually do with my MoEngage data?

It can draft a campaign in MoEngage, change parts of it, validate it, create a personalization preview, send an inline test, and update its status. It can create and list segments, start a count and wait for the number, check that segment filters are valid, and suggest values for a field. It can also create, edit, and search content blocks and pull up the content guide. Short concrete asks, like 'count users who opened a push this week', work better than long paragraphs.

### Does connecting MoEngage give the AI every campaign and segment in my workspace?

No. Every call runs as the person who signed in to MoEngage, so the agent sees the MoEngage campaigns, segments, and content blocks that person can already see and nothing more. Elaichi can narrow that further with roles and restrictions, and it never widens it.

### Can my team share one MoEngage connection?

Yes. One person connects MoEngage, shares it with a team in Elaichi, and nobody else ever handles a MoEngage credential. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who drafted the campaign or counted the segment, not the account owner.

### Can I stop an agent from changing campaign status or editing content blocks in MoEngage?

Yes. Restrictions in Elaichi apply per action, so you can allow drafting and previewing in MoEngage while blocking status changes or content block edits. A restricted action is never advertised to Claude, ChatGPT, or Cursor, so no prompt can reach it.

### What happens to a MoEngage connection when someone leaves?

Offboarding that person in Elaichi ends their MoEngage access at once, in every client. A MoEngage connection they had shared keeps working for everyone else on the team. Disconnecting MoEngage once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

### Does the MoEngage MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. MoEngage is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for MoEngage?

Yes. Both let Claude, ChatGPT or Cursor use MoEngage. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every MoEngage call.

### How is Elaichi different from Composio for MoEngage?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to MoEngage: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 52 MoEngage tools

Every tool below is callable through https://api.elaichi.ai/mcp once MoEngage is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Discover schema** (Action). Returns the exact request shape for a campaign type, component, template, or modifier — required/forbidden fields, a proven minimum example, and the rules for that type. Call this before building any payload.
- **Create campaign draft** (Create). Create a campaign draft in one call.
- **Patch campaign components** (Action). Update one or more components of an existing draft.
- **Validate campaign draft** (Validate). Dry-run the full publish validation against a draft without changing it; returns field-level errors if anything is missing.
- **Create personalization preview** (Create). Render personalization for sample users to spot-check content before creating.
- **Test campaign inline** (Test). Send a test message to verify a draft.
- **Test campaign by draft ID** (Test). Send a test message to verify a draft.
- **Update campaign status** (Update). STOP, PAUSE, or RESUME an already-running campaign (not drafts).
- **Get content guide** (Get). Validated authoring guidance for content — how to write Jinja personalization and email HTML well. Request a topic (jinja, email_html, email_deliverability) and an optional section to get just the part you need. This is authoring *quality* guidance, distinct from…
- **Create content block** (Create). Create or update a reusable content block (for example, a shared email footer).
- **Edit content block** (Block). Create or update a reusable content block (for example, a shared email footer).
- **Search content blocks** (Search). Find content blocks by label, or fetch them by ID.
- **Get content blocks by IDS** (Get). Find content blocks by label, or fetch them by ID.
- **Create custom segment** (Create). Creates a filter-based (ELASTIC_SEARCH) custom segment from included_filters / excluded_filters. The segment name must be unique, at most 200 characters, and contain no HTML (All Users is reserved). Names inside filters are only partially validated at create time: a…
- **List segments** (List). Browse existing segments, paginated (page, page_size, optional name filter). Returns Filter and File type segments only, as metadata (id, name, type, source, timestamps); Warehouse, Analytics, and Composite are excluded.
- **Get segment** (Get). Read a single segment's full filter definition by ID, in the same format create_custom_segment accepts. File-based and cohort-import segments return metadata only, with no filter tree.
- **Start segment count** (Start). Kick off an async user count for a segment (with an optional callback_url webhook), then poll for the result — includes channel-level reachability, with per-channel and per-platform breakdowns available. Results are cached for 15 minutes; jobs typically finish in under 30…
- **Poll segment count** (Action). Kick off an async user count for a segment (with an optional callback_url webhook), then poll for the result — includes channel-level reachability, with per-channel and per-platform breakdowns available. Results are cached for 15 minutes; jobs typically finish in under 30…
- **Get value suggestions** (Get). Gets up to 5,000 distinct stored values (string, double, or array/object variants) for a user or event attribute, useful for checking real values before writing an equality filter. For array_object attributes, node_attribute_name / node_data_type resolve values for a child…
- **Describe segment filters** (Describe). Turns a filter set into a plain-English sentence to confirm intent before creating a segment or query. Its filter_operator also accepts difference, unlike create_custom_segment.
- **Deep validate segment filters** (Validate). Semantically validates a filter set (attribute existence, data types, operators) against the workspace's live catalog. Always returns HTTP 200 — check the is_valid field in the response, not the status code; on failure, errors gives the dot-notation path of each problem.
- **Create recent query** (Search). Count an audience without creating a segment: run an ad-hoc audience query (optionally restricted to specific platforms, or linked to an existing segment via cs_id), poll its result, and read back its filters. status is received, running, or retry_wait while the query is in…
- **Get recent query** (Search). Count an audience without creating a segment: run an ad-hoc audience query (optionally restricted to specific platforms, or linked to an existing segment via cs_id), poll its result, and read back its filters. status is received, running, or retry_wait while the query is in…
- **Get recent query filters** (Search). Count an audience without creating a segment: run an ad-hoc audience query (optionally restricted to specific platforms, or linked to an existing segment via cs_id), poll its result, and read back its filters. status is received, running, or retry_wait while the query is in…
- **Is user in segment** (Action). Check in real time whether a specific user is in up to 10 segments. segment_eligibility: false means the segment type doesn't support real-time evaluation (batch-only) — it is not a "no".
- **Search flows** (Search). Find flows by name, status, or other criteria.
- **Get flow** (Get). Read a flow's configuration, or a specific version of it.
- **Get flow version** (Get). Read a flow's configuration, or a specific version of it.
- **Get flow analytics** (Get). The flow-level health view — how the flow is performing overall. Flow Analytics is in beta.
- **Get flow channel analytics** (Get). Channel-scoped analytics for a flow — how Email, Push, SMS, and other channels performed within it. Flow Analytics is in beta.
- **Update flow status** (Update). Pause, resume, stop, retire, archive, or unarchive a flow. Stop and retire are irreversible.
- **List dashboards** (List). List the analytics dashboards available in the workspace.
- **Get dashboard** (Get). Return the full metadata for a single dashboard by ID.
- **Get chart data** (Get). Fetch the analytical data for a specific chart within a dashboard.
- **Search campaigns** (Search). Search campaigns by name, status, ID, channel, delivery type, or date range. Include DRAFT in the status filter to see drafts. The channel filter accepts Push, Email, SMS, and MMS only; search without it to include WhatsApp and Webhook campaigns.
- **Get campaign** (Get). Fetch a single campaign's full configuration and content, or just its metadata.
- **Get campaign meta** (Get). Fetch a single campaign's full configuration and content, or just its metadata.
- **Get campaign stats** (Get). Aggregate performance — delivery rate, opens, clicks, CTR, and channel-specific metrics. Up to 50 campaigns per call.
- **Get detailed campaign stats** (Get). Breakdowns by conversion goal, device/platform, locale, and A/B variation.
- **Get delivery stats** (Get). The delivery funnel — reachable users, frequency-cap removals, send/delivery failures, and per-platform device stats.
- **Get click performance** (Get). Per-URL click breakdown, with total and unique counts.
- **Get device analytics** (Get). Performance by device dimensions — OEM, app version, or dormancy, with multi-dimensional splits.
- **Discover analyze schema** (Action). Returns the request shape for an analysis — call this before running one.
- **Run behavior analysis** (Run). Analyze how users perform a chosen event over time.
- **Run funnel analysis** (Run). Measure conversion across an ordered sequence of events.
- **Run retention analysis** (Run). Measure how users return over time after a starting event.
- **Run user analysis** (Run). Analyze your user base by user properties — for example, how users break down by location, device type, or language.
- **Run session source analysis** (Run). Analyze sessions by source properties — session count, average session duration, conversions, and bounce rate by source, medium, or campaign.
- **Find events** (Action). Discover trackable events matching a natural-language term (for example, "purchase"). Takes query and an optional limit (1–50, default 10); returns the internal name to use as action_name in filters. Events inactive for more than 60 days are excluded.
- **Find event attributes** (Action). Discover the attributes of a specific event. Takes event_name (the exact name from find_events), query, and an optional limit.
- ...and 2 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
