# iPost MCP connector

The iPost connector lets Claude, ChatGPT, Cursor, and the Elaichi Agent add contacts, build lists, adjust journeys, and manage automations in iPost, with each person working inside their own access and every action logged.

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

## Facts

| | |
| --- | --- |
| Application | iPost |
| Category | Marketing Automation |
| AI tools | 38 |
| Authentication | Connects with an API key |
| Needs 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. 38 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once iPost is connected

- Which iPost lists grew most in the last 14 days
- Add these 40 contacts to the iPost onboarding list
- Show iPost contact status for last week's bulk create

## Connect iPost in Elaichi

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

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

## Connect iPost to 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.

## Connect iPost to 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.

## Connect iPost to 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 iPost 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 iPost 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 iPost through Elaichi

### Add a new contact after a signup

Marketing. Create the iPost contact from a form fill or event badge scan, fill in the right columns, and drop them onto the welcome list in one ask.

### Build the list for the next send

Email marketing. Create a fresh iPost list, add the contacts who fit, and remove anyone who should not be on it before the campaign goes out.

### Load a batch of contacts at once

Marketing operations. Paste in the attendee spreadsheet from last week's webinar and have the contacts and their list memberships created in bulk instead of row by row.

### Adjust a journey without opening the builder

Lifecycle. Pull up a journey automation, check how it is set up today, and change the timing or the entry conditions from a plain description.

### Check whether a lead is subscribed

Sales. Ask for a contact's status in iPost before a call so you know if they are active, bounced, or unsubscribed.

### Add a field or data table for a campaign

Data. Create a new column for a loyalty tier or a data table for product catalog content so the next send can personalize on it.

## Frequently asked questions

### How do I connect iPost to Claude?

Connect iPost in Elaichi first by pasting the API key from your iPost account. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. There is no OAuth application to register in iPost and no client ID or secret to generate, so the whole thing takes a few minutes.

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

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

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

An agent can create and update contacts, look up a single contact or a contact's subscription status, and load a batch of contacts or list memberships in one go. It can create, rename, and delete lists, add columns, and create, review, or change journey and process automations and data tables in iPost. Because iPost has a large set of actions, short concrete asks like "add these ten people to the spring list" work better than long paragraphs.

### Does connecting iPost give the AI my whole account?

The AI can only reach what the iPost API key you connected can reach, and every person signs in to Elaichi as themselves so their actions are their own. Elaichi can narrow that access further by team or by action, and it can never widen it beyond what iPost already allows.

### Can my team share one iPost connection?

Yes. One person connects iPost 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 the audit log names the person behind every iPost change, not the shared connection.

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

Yes. Restrictions in Elaichi work per action, so you can allow creating contacts and lists while blocking deleting lists, columns, or process automations in iPost. A blocked action is never advertised to Claude, ChatGPT, or any other client, so no prompt can reach it.

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

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

## All 38 iPost tools

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

- **Create a iPost contact** (Create). Add a contact to the iPost account. GlobalEmailStatus and GlobalMobileStatus are assumed true when their corresponding Email or Mobile fields are present, and ignored when those fields are absent. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus.
- **Update a iPost contact by ID** (Update). Update an iPost contact's information by ContactID. GlobalEmailStatus and GlobalMobileStatus are assumed true when their corresponding Email or Mobile fields are present, and ignored when those fields are absent. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: id.
- **Get single iPost contact by ID** (Get). Retrieve an iPost contact using the blob — an encrypted tracking token optionally appended to tracked links in iPost mailings. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: id (blob value).
- **List all iPost contacts** (List). List contacts on a specific iPost list by list ID. Returns up to 10,000 contact records per call. Returns: Contact_ID, Email, Mobile, GlobalEmailStatus, GlobalMobileStatus. Required: list_id.
- **IPost contacts bulk create** (Create). Add multiple contacts to an iPost journey automation. Each recipient can be identified by an existing Contact_ID or by Email (which may create a new contact if no match is found). An optional Properties object supplies iTL template variable values for journey email assembly, overriding matching contact profile fields. Returns an opaque confirmation response from the journey automation endpoint. Required: journey_id, Recipients.
- **Get single iPost contact status by ID** (Get). Get the opt-in/opt-out status of a contact across all static lists and topics in ipost. Returns: lists, topics — each keyed by identifier with a value of true if the contact is opted in or false if opted out. Required: id.
- **Create a iPost list** (Create). Create a new list in ipost. Returns: id.
- **Update a iPost list by ID** (Update). Update an existing list in ipost by id. Returns: id. Required: id.
- **Delete a iPost list by ID** (Delete). Empty an ipost list by removing all contacts from it. Returns an empty 204 response on success. Required: id.
- **Create a iPost md 5 list contact** (Create). Add one or more contacts to an ipost MD5 Suppression List. Uploaded email addresses are hashed to MD5 format upon ingestion; matching is case-sensitive, so the case of each address must match exactly for suppression to apply. Returns an empty 204 response on success. Required: list_id.
- **IPost contact lists bulk create** (Create). Add a contact in ipost to one or more lists. Returns an empty 204 response on success. Required: contact_id. Note: GlobalEmailStatus and GlobalMobileStatus are assumed true when absent if the corresponding Email or Mobile fields are present, and are ignored when the corresponding fields are absent.
- **Delete a iPost list contact by ID** (Delete). Remove one or more contacts from an iPost list. Required: list_id. Returns an empty 204 response on success.
- **IPost list contacts bulk create** (List). Add or update one or more contacts in an iPost list using encrypted blob tokens. Blobs encode contact identity information and can be sourced from iPost email tracking parameters appended to tracked URLs. Required: list_id. Returns an empty 204 response on success.
- **Create a iPost column** (Create). Create a new contact column in ipost. Returns: id, name.
- **Delete a iPost column by ID** (Delete). Delete an existing contact column in ipost by id. Returns an empty 204 response on success. Required: id.
- **List all iPost columns** (List). List all existing contact columns in ipost. Returns: id, name.
- **Create a iPost process automation** (Create). Create a new Process Automation in ipost, specifying automation activities and schedule configuration. Returns: id, status. Supports special automation_schedule.schedule_time_zone values: same_time_sending (Recipient Local Time) and send_time_optimisation (Send Time Optimization), in addition to standard timezone identifiers.
- **Update a iPost process automation by ID** (Update). Update the status of an existing Process Automation in ipost. Returns: id, status. Required: id, status.
- **Delete a iPost process automation by ID** (Delete). Delete a Process Automation from your ipost account by id. Returns an empty 204 response on success. Required: id.
- **Create a iPost journey automation** (Create). Create a Journey Automation in ipost. Supply recipients via the Recipients array (using Contact_ID for existing contacts or Email for new ones, plus optional Properties for iTL variable substitution) and define automation steps via Automation_Activities (use the children array for multi-step flows). Returns: id.
- **Get single iPost journey automation by ID** (Get). Search for Journey Automations in ipost. Returns matching journey automation records from the data envelope. Returns: id.
- **Update a iPost journey automation by ID** (Update). Update a Journey Automation in ipost by id. Update enrolled recipients via the Recipients array (Contact_ID, Email, Properties) and redefine automation steps via Automation_Activities (use the children array for multi-step flows). Returns: id. Required: id.
- **Create a iPost journey automation** (Create). Add contacts to an ipost journey automation to enroll them in the journey sequence. Each recipient can be an existing contact identified by Contact_ID, or a new contact identified by Email; an optional Properties object supplies iTL variable substitutions for email content used by the journey. Returns an empty 204 response on success. Required: journey_id.
- **Create a iPost datatable** (Create). Create a new DataTable in ipost. Returns the id of the newly created DataTable.
- **Update a iPost datatable by ID** (Update). Modify an existing DataTable in ipost by id. Returns the id of the updated DataTable. Required: id.
- **List all iPost datatable records** (List). List records from an ipost DataTable. Returns records including id and attributes (user-defined DataTable column values). Maximum 100 records per call; use the `start` body parameter to set the pagination offset. Required: datatable_id.
- **IPost datatable records bulk update** (Update). Add or update records in an ipost DataTable. Accepts a JSON body with record data whose fields correspond to the user-defined columns of the specified DataTable. Required: datatable_id.
- **Get single iPost data table attribute by ID** (Get). Retrieve all attributes of a specific ipost Data Table by its id. Returns: status, and a data array where each attribute includes data_type, label, key, and required. Required: id.
- **Delete a iPost asset by ID** (Delete). Delete an asset in ipost by id. Returns an empty 204 response on success. Required: id.
- **Get single iPost bulk import by ID** (Get). Get the status of a bulk import in ipost by id. Returns: id, status (one of: 'new', 'inprogress', 'completed', 'error'). Required: id.
- **Create a iPost auth session** (Create). Create an ipost authentication session by submitting credentials. Returns: data (containing token, valid_for, and expires) and status. The token has a fixed validity window and must be re-issued after expiry. Required: client_id, client_secret.
- **Create a iPost contacts upsert** (Create). Add or update a contact record in ipost using the addUpdate endpoint. Returns: contact_id, email, properties. Required: client_token, email.
- **Get single iPost contacts blob by ID** (Get). Retrieve an iPost contact using the blob, an encrypted token that encodes contact identity and is optionally appended to tracked email links. Returns the contact's email, contact_id, and properties. Required: id.
- **Update a iPost contacts blob by ID** (Update). Add or update one or more iPost contacts on a list using the blob, an encrypted token that identifies the contact via tracked email links. Returns the contact's email, contact_id, and properties. Required: id.
- **Get single iPost contact statuses blob by ID** (Get). Retrieve iPost contact status information for a subscriber identified by their encrypted blob token — an optional URL parameter appended to tracked links that encodes the contact's identity. Returns the contact's identification and subscription status including ContactID, Email, GlobalEmailStatus, and GlobalMobileStatus. Required: client_token, blob.
- **Delete a iPost lists empty by ID** (Delete). Empty an ipost list by removing all contacts from it. Returns an empty 204 response on success. Required: id.
- **Create a iPost process automations start** (Create). Start a process automation in ipost for the specified automation_id. Initiates the automation only when its status is active; the call returns an error if the automation's status is stopped, draft, or paused. Returns an empty 204 response on success. Required: automation_id.
- **IPost contact lists blob bulk create** (Create). Bulk add a contact to one or more iPost lists using the blob token mechanism. Submits a JSON body against the contact identified by id to associate them with lists via blob. Returns an empty 204 response on success. Required: id.
