# Drip MCP connector

The Drip connector brings Drip subscribers, campaigns, broadcasts, forms, goals and orders to Claude, ChatGPT, Cursor and the Elaichi Agent, so each person can ask about and update them inside their own Drip access, with every call logged.

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

## Facts

| | |
| --- | --- |
| Application | Drip |
| Category | Marketing Automation |
| AI tools | 60 |
| 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 Drip is connected

- Pause the welcome campaign until the new offer copy is approved
- Send me a test of the Black Friday broadcast
- Which Drip campaigns is this subscriber signed up for right now?

## Connect Drip in Elaichi

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

1. Open Connections, choose Add connection, and pick Drip.
2. Optionally set Share with, then press Connect.
3. Paste a Drip API key. One person generates a token in Drip 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 Drip tools are exposed, rename them, or freeze arguments before anyone points a client at it.

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

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

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

### Draft and test a broadcast

Marketing. Write the weekend sale email, create it as a Drip broadcast, send yourself a test, and only schedule it once it reads right.

### Keep subscribers current after a purchase

Ecommerce. Record orders and refunds against the subscriber so their Drip record reflects what they actually bought and returned.

### Pause a campaign before it misfires

Lifecycle. Check which Drip campaigns are active, pause the welcome series while the offer changes, and activate it again when the copy is fixed.

### See what a customer received

Support. Pull a subscriber's campaign subscriptions and recent email metrics to see which Drip emails they got before you reply.

### Compare how last month's emails performed

Analytics. Fetch Drip email metrics across broadcasts and campaigns and get a plain-language summary of how each one did.

### Add signups from other systems

Operations. Create or update Drip subscribers from a list of event attendees, filling in the custom fields your team already uses, and record the event against each one.

## Frequently asked questions

### How do I connect Drip to Claude?

Open Elaichi, choose Drip from the catalog and paste in an API key from your Drip account settings; there is no OAuth application to register and no client ID or secret to generate. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in to Elaichi when Claude asks, and your Drip subscribers, campaigns and broadcasts are available in the conversation.

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

Yes. Drip is connected to Elaichi once, and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. There is nothing extra to set up for each client.

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

With Drip connected, an agent can look up subscribers and their campaign subscriptions, add or update subscribers with custom fields, and record orders, refunds and events against them. It can also list, create, update and test broadcasts, activate or pause campaigns, list forms and goals, and fetch email metrics to summarize how a send performed. Short, concrete asks such as pause the welcome campaign work better than long paragraphs.

### Does connecting Drip give the AI access to my whole Drip account?

No more than the person who connected it already has. A Drip API key belongs to a Drip account, and the AI works within that account only. Elaichi can narrow what is reachable, for example allowing lookups but not deletes, and it can never widen access beyond what the Drip account behind the key allows.

### Can my team share one Drip connection?

Yes. One person connects Drip in Elaichi and shares the connection with a team, and nobody else ever handles the Drip API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who paused a campaign or sent a broadcast, not a shared account.

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

Yes. Restrictions in Elaichi apply per action, so you can allow reading Drip subscribers and metrics while blocking deleting broadcasts, pausing campaigns or updating subscribers. A restricted action is never advertised to Claude, ChatGPT or Cursor, so no prompt, however it is worded, can reach it.

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

Offboarding the person in Elaichi ends their access to Drip through every client at once. If they set up a shared Drip connection, it keeps working for everyone else on the team. Disconnecting Drip once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client.

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

Yes. Drip 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.

## All 60 Drip tools

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

- **List all Drip campaign subscriptions** (List). List all of a subscriber's Email Series Campaign subscriptions in Drip. Returns: id, campaign_id, status, is_complete, lap, last_sent_email_index, last_sent_email_at, links. Required: subscriber_id_or_email.
- **List all Drip accounts** (List). List all Drip accounts the authenticated user has access to. Returns the collection of account records, each including its id.
- **Get single Drip account by ID** (Get). Get a specific Drip account by id. Returns the account object including its id. Required: id.
- **List all Drip broadcasts** (List). List all Single-Email Campaigns (broadcasts) in a Drip account. Returns each broadcast's id, name, subject, and status, ordered by created_at ascending by default. Optional filters: status (draft, active, or paused; defaults to all), sort (created_at or name), and direction (asc or desc).
- **Create a Drip broadcast** (Create). Create a Single-Email Campaign (broadcast) in Drip. Returns the created broadcast record including its id, name, subject, status, send_at, and created_at. Required: name, subject, content (with an html key at minimum). New broadcasts start in draft status; scheduling and sending are managed through the Drip UI.
- **Get single Drip broadcast by ID** (Get). Fetch a single Single-Email Campaign (broadcast) in a Drip account by id. Returns: id, status, name, from_name, from_email, postal_address, localize_sending_time, send_at, bcc, created_at, href, preview_url, subject, html_body, text_body, links. Required: id.
- **Update a Drip broadcast by ID** (Update). Update a draft Single-Email Campaign (broadcast) in Drip. Updates are partial: only the fields you include are changed. Returns the updated broadcast object including id, status, name, subject, and created_at. Only broadcasts in the draft status can be updated via the API; scheduling and recipient segmentation are managed in the Drip UI. Required: id.
- **Delete a Drip broadcast by ID** (Delete). Delete a Single-Email Campaign (broadcast) in Drip. This is a soft delete: the broadcast transitions to the deleted status and is hidden from default listings while historical data is preserved. Returns the deleted broadcast object including id, status, name, subject, and created_at. Broadcasts currently in the sending status cannot be deleted. Required: id.
- **Drip broadcasts send test** (Send). Send a test email for a Single-Email Campaign (broadcast) in Drip to preview how it appears to recipients. Returns an empty 204 response on success; test emails carry a [TEST] prefix in the from name. Required: broadcast_id, to_emails.
- **List all Drip campaigns** (List). List all Email Series Campaigns in a Drip account. Returns campaign records including id, name, status, and created_at, filterable by status and sortable by name or created_at.
- **Get single Drip campaign by ID** (Get). Fetch a single Email Series Campaign in Drip by id. Returns the campaign record including id, name, status, and created_at. Required: and id.
- **Drip campaigns activate** (Activate). Activate an Email Series Campaign in Drip so it starts sending to subscribers. Returns an empty 204 response on success. Required: and campaign_id.
- **Drip campaigns pause** (Pause). Pause an Email Series Campaign in Drip to stop it from sending to subscribers. Returns an empty 204 response on success. Required: and campaign_id.
- **List all Drip custom field identifiers** (List). List all custom field identifiers used in a Drip account. Returns an array of identifier strings such as first_name and last_name.
- **List all Drip goals** (List). List all conversion goals in a Drip account. Returns an array of goal objects with id, status, name, url, default_value, counting_method, and created_at.
- **Get single Drip goal by ID** (Get). Fetch a single conversion (goal) by id in Drip. Returns the goal object with its id, name, status, url, default_value, counting_method, and created_at. Required: id.
- **Drip events record** (Action). Record an event in Drip for a subscriber, such as 'Logged in', optionally with custom properties and a back-dated timestamp. Returns an empty 204 response on success. Required: and events. Use the Batch API instead for collections of events.
- **List all Drip event actions** (List). List all custom event actions used in a Drip account. Returns the account's event action names as plain strings (e.g. "Ate a sandwich", "Started a trial").
- **List all Drip forms** (List). List all forms in a Drip account. Returns form objects including id, headline, description, orientation, is_widget_enabled, and created_at.
- **Get single Drip form by ID** (Get). Fetch a specific form in Drip by id. Returns the form object including id, headline, description, button_text, orientation, and created_at. Required: id and account_id.
- **Drip metrics fetch email** (Action). Fetch email performance metrics for a Drip account. Returns: summary, emails, fields[email], fields[first_name], form_id, page_title, submit, time_zone, url, visitor_uuid. Date range capped at 366 days; not paginated.
- **Drip orders create or update** (Create). Create or update a legacy Drip order for a subscriber. Returns an empty JSON response on success (202 Accepted). Requires account_id. To update an existing order, include provider and upstream_id in the payload; a matching subscriber record must already exist, and creating an order increments the subscriber's lifetime_value by the order total.
- **Drip refunds create or update** (Create). Create or update a refund for a Drip order via the legacy orders API. Returns an empty JSON response on success (202 Accepted). Requires provider, order_upstream_id, and amount; include upstream_id to update an existing refund. Creating a refund automatically decrements the subscriber's lifetime_value by the refund amount.
- **Drip subscribers create or update** (Create). Create or update a Drip subscriber, matched by email, id, or visitor_uuid. Returns the subscriber record including id, email, status, custom_fields, and tags. Required: subscribers.
- **List all Drip subscribers** (List). List all subscribers in a Drip account, filterable by status, tags, and subscribed dates. Returns subscriber records including id, email, status, custom_fields, and tags.
- **Get single Drip subscriber by ID** (Get). Fetch a single Drip subscriber by id (the upstream API also accepts an email address or visitor UUID in its place). Returns the subscriber record including id, email, status, custom_fields, and tags. Required: id.
- **Drip subscribers remove from campaigns** (Delete). Remove a Drip subscriber from one or all Email Series Campaigns. Returns the updated subscriber record including id, email, status, custom_fields, and tags. Required: subscriber_id.
- **Drip subscribers unsubscribe all** (Action). Unsubscribe a Drip subscriber from all mailings. Returns the updated subscriber record including id, email, status, custom_fields, and tags. Required: subscriber_id.
- **Delete a Drip subscriber by ID** (Delete). Delete a subscriber in Drip by their id (the subscriber's ID or email). Returns an empty 204 response on success. Required: id.
- **List all Drip tags** (List). List all tags used in a Drip account. Returns an array of tag name strings (e.g. Customer, SEO).
- **Drip tags apply** (Action). Apply a tag to a subscriber in Drip. Responds with a 201 Created and an empty JSON body on success. Required: and tags.
- **Drip tags remove** (Delete). Remove a tag from a subscriber in Drip, identified by subscriber id or email. Returns an empty 204 response on success. Required: subscriber_id and tag.
- **List all Drip users** (List). Fetch the authenticated Drip user associated with the API credentials. Returns: email, name, time_zone. Takes no parameters.
- **List all Drip workflows** (List). List all workflows in a Drip account, optionally filtered by status. Returns each workflow's id, href, name, status, description, created_at, and node_count.
- **Get single Drip workflow by ID** (Get). Fetch a single Drip workflow by id. Returns: id, href, name, description, status, created_at, updated_at, node_count, details, links. Required: id and account_id.
- **Drip workflows get details** (Get). Fetch a Drip workflow's full node structure — its entry triggers, ordered steps, and everything nested beneath decisions, goals, forks, and split tests — read-only. Returns: id, href, name, description, status, created_at, updated_at, node_count, details, links. Required: workflow_id and account_id.
- **Drip workflows activate** (Activate). Activate a Drip workflow so it starts sending to new subscribers. Returns an empty 204 response on success. Required: workflow_id and account_id.
- **Drip workflows pause** (Pause). Pause an active Drip workflow so it stops sending to new subscribers. Returns an empty 204 response on success. Required: workflow_id and account_id.
- **Create a Drip workflow trigger** (Create). Create a workflow trigger on a Drip workflow, such as a Leadpages landing-page submission trigger. Returns: id, trigger_type, provider, actions_required. Required: workflow_id.
- **List all Drip workflow triggers** (List). List all workflow triggers on a Drip workflow. Returns trigger objects with id, type, trigger_type, provider, properties, and actions_required. Required: workflow_id.
- **Update a Drip workflow trigger by ID** (Update). Update a workflow trigger on a Drip workflow, e.g. change its provider, trigger_type, or properties. Returns: id, trigger_type, provider, actions_required. Required: workflow_id, id.
- **List all Drip webhooks** (List). List all webhooks in a Drip account. Returns webhook records including id, post_url, events, include_received_email, version, and created_at.
- **Get single Drip webhook by ID** (Get). Fetch a single Drip webhook by id. Returns the webhook record including id, post_url, events, include_received_email, version, and created_at. Required: id.
- **Create a Drip webhook** (Create). Create a new webhook in a Drip account. Returns the created webhook including id, post_url, events, include_received_email, version, and created_at. Required: post_url; events defaults to all events except subscriber.received_email.
- **Delete a Drip webhook by ID** (Delete). Destroy a Drip webhook by id. Returns an empty 204 response on success. Required: id.
- **Drip subscriber batches batch upsert** (Upsert). Create or update a batch of 1–1,000 Drip subscribers in a single request, with tags, time zones, and custom fields. Processes asynchronously in the background, so data may not appear immediately. Returns an empty 201 response on success. Required: and a batches payload containing a subscribers array (1–1,000 objects, each with email).
- **Drip subscriber batches batch unsubscribe** (Action). Globally unsubscribe a batch of 1–1,000 Drip subscribers by email in a single request, processed in the background. Returns an empty 204 response on success. Required: and a batches payload containing a subscribers array (1–1,000 objects, each with email).
- **Drip event batches batch record** (Action). Record a batch of up to 1,000 events in Drip. Queues them for background processing and returns an array of unique request id strings for checking the request status later; data may take a moment to appear in the UI. Required: and batches (an events array of 1-1000 event objects, each with email and action).
- **Drip order batches batch upsert** (Upsert). Create or update a batch of orders in Drip via the legacy v2 batch endpoint. Returns the queued batch's request_ids (UUID strings) for later status checks. Required: orders (an array of 1-1000 objects containing order data). Batch requests are processed in the background, so data may take a moment to appear.
- **Drip order batches batch upsert shopper activity** (Upsert). Create or update a batch of orders in Drip via the v3 Shopper Activity API. Returns the queued batch's request_ids (UUID strings) for later status checks. Required: orders (an array of 1-1000 objects containing order activity, with an action such as placed or updated). Batch requests are processed in the background, so data may take a moment to appear.
- ...and 10 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
