# Attentive MCP connector

The Attentive connector brings subscribers, segments, custom attributes and purchase events into Elaichi, so Claude, ChatGPT, Cursor or the Elaichi Agent can look them up and update them inside each person's own Attentive access.

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

## Facts

| | |
| --- | --- |
| Application | Attentive |
| Category | Marketing Automation |
| AI tools | 50 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| 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 Attentive is connected

- Create a segment of subscribers tagged VIP who bought this month
- Add loyalty tier gold to these 200 subscribers as a custom attribute
- Did last night's bulk attribute upload finish, and how many subscribers?

## Connect Attentive in Elaichi

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

1. Open Connections, choose Add connection, and pick Attentive.
2. Optionally set Share with, then press Connect.
3. Paste an Attentive API key. One person generates a token in Attentive and pastes it once. Everyone else works through Share with, and never sees it.

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

## Attentive 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.

## Attentive 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.

## Attentive 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 Attentive 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 Attentive 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 Attentive through Elaichi

### Build a segment before the next send

Marketing. Describe the audience you want in plain words. A new Attentive segment is created and the right subscribers are added to it, ready for the campaign.

### Record a purchase against a subscriber

Ecommerce. When an order comes in through a channel Attentive does not see, log the purchase so post-purchase flows and segments stay accurate.

### Tag subscribers with what you know

Retention. Add a custom attribute such as loyalty tier or preferred store to one subscriber, or to thousands at once in a single batch.

### Clean up stale segments

Operations. List every Attentive segment, pick out the ones left over from last season, and delete them in bulk with the log showing who did it.

### Check a bulk job before launch

Data. Ask whether last night's attribute upload or segment bulk operation finished, and confirm it is done before the campaign goes out.

### Keep webhooks pointed at the right place

IT. List the Attentive webhooks that notify your other systems, update an address after a migration, or remove one that has gone quiet.

## Elaichi vs Zapier MCP vs Composio for Attentive

All three can connect Attentive 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 Attentive tools | Allow or restrict single Attentive 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 Attentive 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 Attentive to Claude?

Two steps. In Elaichi, choose Attentive and paste your Attentive API key when asked; there is no OAuth app 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. Claude signs you in and Attentive is available in your next chat.

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

Yes. Once Attentive 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 Attentive once and every client picks it up.

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

It can look up Attentive subscribers and the custom attributes on them, list and create segments, add subscribers to a segment, record a purchase, and set attributes on many subscribers in one batch. It can also list, add, update and remove the webhooks that notify your other systems, and check whether a bulk job has finished. Short, concrete asks like "add these subscribers to the VIP segment" work better than long paragraphs.

### Does connecting Attentive give the AI everything in my account?

No. Every call to Attentive runs as the person who signed in, so the AI sees exactly the subscribers, segments and settings that person can already see in Attentive, and nothing more. Elaichi can narrow that access further with restrictions, but it can never widen it beyond what Attentive itself allows.

### Can my team share one Attentive connection?

Yes. One person connects Attentive in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every change to a segment or subscriber in the audit log carries the name of the person who made it.

### Can I stop an agent from deleting or changing things in Attentive?

Yes. Restrictions in Elaichi work per action, so you can allow looking up subscribers and building segments while blocking segment deletion, webhook changes or attribute writes. A restricted action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt, however worded, can reach it in Attentive.

### What happens to an Attentive connection when someone leaves?

Offboarding that person in Elaichi ends their access to Attentive at once, across every client they used. If they had shared the Attentive connection with a team, it keeps working for everyone else. Disconnecting Attentive once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

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

Yes. Attentive 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 Attentive?

Yes. Both let Claude, ChatGPT or Cursor use Attentive. 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 Attentive call.

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

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 Attentive: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 50 Attentive tools

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

- **List all Attentive authorizations** (List). Exchange an OAuth2 Authorization Code for an Attentive access token. Returns: token_type, access_token, refresh_token, scope, expires_in. Required: code.
- **Create a Attentive oauth access token** (Create). Exchange Attentive OAuth2 client credentials for an access token. Returns: token_type, access_token, scope, expires_in. Required: client_id and client_secret.
- **Create a Attentive add purchase** (Create). Post purchase events to Attentive. Sends a JSON array of purchase objects, each identifying the visitor by phone (E.164 format), email, or clientId, with the order amount in cents and its item states. Returns an empty 201 Accepted response on success. Each itemStates array must contain at least 1 item.
- **List all Attentive webhooks** (List). List all webhooks configured in Attentive. Returns each webhook's id, url, subscribed topics, optedOut flag, and companyIds.
- **Create a Attentive webhook** (Create). Create a webhook in Attentive to subscribe a URL to event notifications. Returns the created webhook's id, url, subscribed events, optedOut flag, and disabledAt. Required: url. Events are case sensitive (e.g. sms.subscribed, email.opened).
- **Delete a Attentive webhook by ID** (Delete). Delete a webhook in Attentive by id. Returns an empty 204 response on success. Required: id.
- **Update a Attentive webhook by ID** (Update). Update an existing webhook in Attentive by id. Returns the updated webhook's id, url, subscribed events, optedOut flag, and disabledAt. Required: id, url. Set disabled to true to disable the webhook endpoint.
- **List all Attentive custom attributes** (List). List all custom attributes configured in Attentive. Returns the customAttributes collection where each attribute includes its name, displayName, and description. No required parameters.
- **List all Attentive signature keys** (List). Get your Attentive webhook signature keys, the signing secrets Attentive generates for your webhooks so you can verify that payloads were actually sent from Attentive. Returns: signatureKeys. No required parameters.
- **List all Attentive hellos** (List). Test authentication with Attentive to verify your Authorization header is configured correctly; the response includes information specific to your company. Returns: company, platform.
- **List all Attentive users** (List). Verify your Attentive authentication credentials and get details about the authenticated company. Returns: id, company, platform, scopes, webhooks, userProperties, segments, timestamp, subscriber, creative, subscription.
- **Get single Attentive user property by ID** (Get). Get a user property in Attentive by id. Returns: id, name, displayName, description, createdAt. Required: id.
- **Create a Attentive user property** (Create). Set a user property for a subscriber in Attentive. Returns an empty 201 Created response on success. Accepts userPropertyId, externalId, phone, email, and values (array of strings) in the JSON body.
- **Create a Attentive user properties batch** (Create). Bulk set user properties for a user in Attentive. Accepts the user's externalId, the target userPropertyIds, and the operations to apply, and returns an empty 200 response on success.
- **List all Attentive segments** (List). List segments in Attentive. Returns segment records including id, name, and description.
- **Attentive segments bulk delete** (Delete). Remove members from an Attentive segment in bulk. Requires segment_id and users. Returns an empty response on success.
- **Delete a Attentive segment by ID** (Delete). Clear all members from an Attentive segment by id. Requires id. Returns an empty 202 response on success.
- **Create a Attentive segment** (Create). Create a new empty segment in Attentive. Returns the created segment's id and description. Requires name.
- **Delete a Attentive segments external ID by ID** (Delete). Delete a segment in Attentive by its external ID. Returns an empty 204 response on success. Required: id.
- **Get single Attentive segments bulk operation by ID** (Get). Get the status of a bulk job in Attentive for segment member add or remove operations, using the job status endpoint linked from the bulk operation responses. Returns: id, status, errors, startedAt, completedAt. Required: id (the bulk job ID returned when the bulk operation was submitted).
- **Create a Attentive user attribute** (Create). Create or update a single Attentive user with attributes, subscriptions, and identifiers — an existing user matching the provided identifiers is updated, otherwise a new user is created. Requires a JSON body carrying the user's identifiers, subscriptions, and custom-attribute keys (max 100 attributes; arrays or maps of attribute values are rejected). Returns a 202 Accepted acknowledgement body;…
- **Attentive user attributes bulk create** (Create). Bulk submit Attentive user attribute updates — accepts up to 256 records per request, validated and processed asynchronously. Requires a JSON array of user-attribute records. Returns: timestamp, company, subscriber, creative, subscription.
- **Get single Attentive bulk job by ID** (Get). Get the status of a bulk ingestion job in Attentive by id. Returns: id. Once the job is COMPLETED, the per-request results are downloadable as a .jsonl file for up to 2 weeks. Required: id.
- **Create a Attentive segments member** (Create). Add members to an Attentive segment in bulk, identified by email, phone, and/or clientUserId. The request is queued for asynchronous processing. Returns: message, batchJobId. Required: members. Accepts 1 to 10,000 members per request, with at least one identifier per member.
- **Attentive segments members bulk delete** (Delete). Remove members from an Attentive segment in bulk, identified by email, phone, and/or clientUserId. The request is queued for asynchronous processing. Returns: message, batchJobId. Required: members. Accepts 1 to 10,000 members per request, with at least one identifier per member.
- **Get single Attentive segments external by ID** (Get). Get segment details in Attentive by external ID. Returns the segment record: id plus attributes (upstream-defined segment fields). Required: id (the segment's external ID, 1-255 characters).
- **Update a Attentive segments external by ID** (Update). Partially update an existing Attentive segment by external ID; only the fields you provide are changed. Returns the updated segment record: id plus attributes (upstream-defined segment fields). Required: id (the segment's external ID, 1-255 characters).
- **Delete a Attentive segments external by ID** (Delete). Archive (soft-delete) an Attentive segment by external ID; the segment is hidden from list operations but can be restored. Returns an empty 204 response on success. Required: id (the segment's external ID, 1-255 characters).
- **List all Attentive test authentications** (List). Test that the Attentive API token is valid by getting information about the authenticated caller. Returns: id, company, platform, scopes, webhooks, userProperties, segments. Takes no request parameters.
- **Create a Attentive authorization codes token** (Create). Exchange a temporary Attentive authorization code for an access token, which does not expire. Returns: access_token, token_type, scope, expires_in, and optionally refresh_token. Supply grant_type (authorization_code), code, redirect_uri, client_id, and client_secret. The authorization code expires two minutes after it is issued if not used.
- **Create a Attentive ecommerce product view** (Create). Create a product view event in Attentive when a user views a product. Requires a JSON body matching the ProductViewRequest schema. Returns a 200 OK response with no response body on success.
- **Create a Attentive ecommerce add to cart** (Create). Report an add-to-cart event to Attentive when a shopper adds a product to their shopping cart. Requires a JSON request body (AddToCartRequest). Returns an empty 200 Ok response on success.
- **Create a Attentive ecommerce purchase** (Create). Create a purchase event in Attentive when a user generates an order or purchase. Returns a 200 Ok success acknowledgment; no response body fields are documented. Requires a JSON request body (upstream PurchaseRequest schema).
- **Create a Attentive events custom** (Create). Send an event-based record of a user action to Attentive as a custom event, for use in Segment Builder and Journey Builder. Returns an "Ok" success status without a documented response body. Required: a JSON request body matching the CustomEventsRequest schema, including the event type and the user associated with the action. Note that event type names are case sensitive.
- **List all Attentive attributes customs** (List). Get all custom attribute data associated with a user in Attentive. Returns the user's attribute data (properties) and the associated user record (email, phone, externalIdentifiers). Requires exactly one of phone or email — passing both returns a 400 error.
- **Create a Attentive attributes custom** (Create). Create custom attribute data for a user in Attentive. Returns the stored attributes (properties) and the associated user (email, phone, externalIdentifiers). Requires properties and user. Attribute names are limited to 200 characters, arrays are rejected, and new values cannot be added to an existing property created in the Attentive platform.
- **List all Attentive subscriptions** (List). Get subscription eligibility for a user in Attentive, listing all subscription types and channels the user is subscribed to so you can check SMS or email eligibility before messaging. Returns a subscription-eligibility response; Attentive does not enumerate its fields in the API reference. Required: phone or email — one lookup parameter must be provided.
- **Create a Attentive subscription** (Create). Opt a user in to a subscription in Attentive. Requests are accepted asynchronously and the response reports which subscriptions already exist and which will be created; Attentive does not enumerate the response's fields in the API reference. Required: user (phone and/or email), plus either signUpSourceId or both locale and subscriptionType. Phone numbers must be in e164 format.
- **List all Attentive product catalog uploads** (List). List recent Attentive product catalog uploads with their ingestion statuses, in order of creation. Returns: uploadId, status, Expires (how long you can wait before uploading the file, after which the upload is no longer processed).
- **Create a Attentive product catalog upload** (Create). Start an Attentive product catalog upload and receive a pre-signed AWS S3 URL to upload your full or partial catalog file to. Returns: uploadId, status, Expires. Processing is asynchronous: the status moves through validating, validated, and completed.
- **Get single Attentive product catalog upload by ID** (Get). Look up an Attentive product catalog upload by id to check its ingestion status. Returns: uploadId, status, Expires. Required: id (the upload ID returned from a previous call).
- **Create a Attentive privacy delete request** (Create). Create a new privacy delete request in Attentive to remove a subscriber within thirty days. Returns: id. The request must specify either subscriberPhone or subscriberEmail (the API rejects calls that include neither). Use the returned id with the GET endpoint to confirm deletion.
- **Get single Attentive privacy delete request by ID** (Get). Get a CCPA privacy delete request by id in Attentive to check its processing status. Returns: id, processed, type, subjectPhone, subjectEmail, requestMsg, requestDateTime, processingStartDateTime, processingEndDateTime. Required: id (the alphanumeric request id returned when the delete request was created).
- **Create a Attentive identity resolution user identifier** (Create). Associate a client user identifier or custom identifiers with a user's other identifiers in Attentive. At least one of phone, email, shopifyId, klaviyoId, clientUserId, or customIdentifiers is required, and a clientUserId or customIdentifiers value must be accompanied by at least one other identifier. Returns an empty 202 Accepted response with no body on success.
- **Create a Attentive coupon** (Create). Add new discount codes to an existing Attentive offer (coupon pool). The upload is processed asynchronously — returns an empty 202 Accepted response with no body; check the offer's sync status in the Attentive Offers page. Required: coupon_pool_id. Max 200,000 codes per request; distributionStart must precede distributionStop.
- **Create a Attentive custom event** (Create). Create a custom event in Attentive to send user actions for use in the Segment Builder and Journey Builder. Returns the created event with type, externalEventId, occurredAt, properties, and user. Required: type, properties, user. Event type names are case sensitive, and an occurredAt older than 12 hours will not trigger Journeys.
- **Get single Attentive clear status by ID** (Get). Get the status of an asynchronous clear-members request for a segment in Attentive. Returns: status, clearId, clearStartedAt, clearCompletedAt. Required: id (the segment id).
- **Create a Attentive clear segment** (Create). Clear all members from an Attentive segment identified by its external ID; the removal runs asynchronously after the request is accepted for processing. Returns the acceptance response with its id and schema-defined attributes. Only segments created via the Public API can be cleared. Required: external_id.
- **Get single Attentive clear segment status by ID** (Get). Get the status of the most recent clear-segment operation for an Attentive segment identified by its external ID. Returns: status, clearId, clearStartedAt, clearCompletedAt. Required: id (the segment's external ID, 1-255 characters). Only segments created via the Public API can be queried.
- **Create a Attentive subscriptions unsubscribe** (Create). Unsubscribe an Attentive user from a subscription type or channel — or from all subscriptions when none are specified. Returns unsubscribeResults covering subscriptions already unsubscribed and those being unsubscribed asynchronously, each with its type, channel, created timestamp, and destination address. Required: user (email and/or phone; email matches only email subscriptions, phone only text…
