# Mailtrap MCP connector

The Mailtrap connector lets Claude, ChatGPT, Cursor, or any MCP client read Mailtrap email logs, sending stats, suppressions, domains, and webhooks through one governed endpoint, with every call tied to the person who signed in.

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

## Facts

| | |
| --- | --- |
| Application | Mailtrap |
| Category | Email |
| AI tools | 42 |
| 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. 42 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Mailtrap is connected

- List every Mailtrap domain and its verification status.
- Show sending stats by Mailtrap domain this week.
- Add this bouncing address to Mailtrap suppressions.

## Connect Mailtrap in Elaichi

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

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

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

### Find out why an email never arrived

Support. Ask for the email logs for a customer's address, see whether the message bounced or was rejected, and check whether the address landed on the suppression list, all before replying to the ticket.

### Check deliverability by mailbox provider

Marketing. Pull Mailtrap stats broken down by email service provider and by date to see whether Gmail or Outlook deliveries dipped last week and whether a campaign was affected.

### Set up a new sending domain

Engineering. Add a domain in Mailtrap, generate the setup instructions to hand to whoever manages DNS, and confirm the domain shows as ready once the records are in place.

### Clear an address suppressed by mistake

Operations. Search the suppression list for a customer who says they stopped receiving mail, and remove the entry so the next message goes out.

### Compare performance across email categories

Product. Ask how password resets, receipts, and onboarding emails performed this month, using Mailtrap stats by category, and spot which stream needs attention.

### Review webhooks after an incident

IT. List every Mailtrap webhook, check which endpoint each one points to, and update the ones that moved during a migration so bounce and delivery events keep flowing.

## Frequently asked questions

### How do I connect Mailtrap to Claude?

Two steps. In Elaichi, choose Mailtrap and paste in a Mailtrap API key, then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate, and the whole thing takes a few minutes.

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

Yes. Once Mailtrap 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 Mailtrap once and every client uses it.

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

It can look up Mailtrap email logs for a given message or recipient, pull sending stats by domain, category, mailbox provider, or date, and check or clear entries on the suppression list. It can also add and update sending domains, generate the setup instructions for them, and manage the webhooks that send delivery events to other systems. Mailtrap has a lot of ground to cover, so short concrete asks such as "show bounces for this address since Monday" get better results than long paragraphs.

### Does connecting Mailtrap give the AI access to every account and domain?

No. The AI works inside the access of the Mailtrap API key the person connected with, so it sees the accounts, domains, and logs that key can see and nothing more. Elaichi can narrow that further by hiding actions or resources for a team, and it can never grant anything the key itself does not allow.

### Can my team share one Mailtrap connection?

Yes. One person connects Mailtrap in Elaichi and shares the connection with a team, and nobody else ever sees or handles the API key. Each teammate still signs in to Elaichi as themselves, so the audit log records exactly who looked up a log or removed a suppression.

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

Yes. In Elaichi you can block individual actions for Mailtrap, such as deleting a domain, removing a webhook, or clearing a suppression, while leaving reads on. A blocked action is never shown to Claude, ChatGPT, Cursor, or any other client, so no prompt, however worded, can reach it.

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

Offboarding that person in Elaichi ends their access to Mailtrap through every client at once, and their past actions stay in the audit log. A shared Mailtrap connection keeps working for everyone else on the team. If you ever want Mailtrap gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client.

## All 42 Mailtrap tools

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

- **List all Mailtrap domains** (List). List Mailtrap sending domains and their verification status. Returns each domain with id, domain_name, compliance_status, dns_verified, dns_records, tracking settings, alert settings, and permissions.
- **Create a Mailtrap domain** (Create). Create a Mailtrap domain for email authentication. After creation, verify the domain by adding the returned DNS records (SPF, DKIM, DMARC). Returns the created domain with id, domain_name, compliance_status, and dns_records. Required: domain (containing domain_name).
- **Get single Mailtrap domain by ID** (Get). Get a Mailtrap sending domain by id. Returns id, domain_name, compliance_status, dns_verified, dns_records, tracking settings, alert settings, and permissions. Required: id.
- **Update a Mailtrap domain by ID** (Update). Update configuration settings (open/click tracking, auto-unsubscribe link) for a Mailtrap domain by id. Returns the updated domain record. Required: id, domain.
- **Delete a Mailtrap domain by ID** (Delete). Delete a Mailtrap domain by id. Returns an empty 204 response on success. Required: id.
- **Create a Mailtrap domain send setup instruction** (Create). Send Mailtrap DNS setup instructions for a domain. Returns an empty 204 response on success. Required: domain_id, email.
- **List all Mailtrap domain company infos** (List). Get company information associated with a Mailtrap domain / account. Company info is required for domain compliance verification. Returns: name, address, city, country, phone, zip_code, privacy_policy_url, terms_of_service_url, website_url, info_level. Required: domain_id.
- **Create a Mailtrap domain company info** (Create). Create company information for a Mailtrap domain / account. Company info is required for domain compliance verification. Returns the created company info record. Required: domain_id, company_info (with name, address, city, country, zip_code, website_url).
- **Update a Mailtrap domain company info by ID** (Update). Update company information for a Mailtrap domain / account. All fields are optional; only provided fields are updated. Returns the updated company info record. Required: domain_id, company_info.
- **List all Mailtrap suppressions** (List). List and search suppressed email addresses in Mailtrap. Returns an array of suppression objects (up to 1000 per request). Use last_id for cursor-based pagination. Suppressed addresses will not receive any emails from the account. Rate limit: 10 requests per minute per account.
- **Create a Mailtrap suppression** (Create). Add an email address to the Mailtrap suppression list. Suppressed addresses will not receive any emails from the account. Requires admin-level access. Rate limit: 10 requests per minute per account. Returns the created suppression. Required: email, domain_id, sending_stream.
- **Delete a Mailtrap suppression by ID** (Delete). Remove an email from the Mailtrap suppression list to allow sending again. Requires admin-level access. Returns the deleted suppression record. Required: id (the suppression UUID).
- **List all Mailtrap stats** (List). Get Mailtrap account sending stats (the same aggregates shown in the Stats dashboard). Returns delivery, bounce, open, click, and spam counts and rates. Required: start_date, end_date. Supports domain, sending stream, category, and ESP filters.
- **List all Mailtrap stats domains** (List). Get Mailtrap account sending stats grouped by domain. Returns an array of entries with domain_id and stats (delivery, bounce, open, click, spam counts and rates). Required: start_date, end_date. Supports domain, sending stream, category, and ESP filters.
- **List all Mailtrap stats categories** (List). List Mailtrap account sending stats grouped by category. Returns: category, stats. Supports optional filters.
- **List all Mailtrap stats email service providers** (List). List Mailtrap sending stats grouped by email service provider. Returns: email_service_provider, stats. Supports optional date, domain, stream, category, and ESP filters.
- **List all Mailtrap stats dates** (List). List Mailtrap account sending stats by date. Returns an array of daily entries, each containing date and stats.
- **List all Mailtrap email logs** (List). List email logs (messages) for a Mailtrap account. Returns each log with id, message_id, sent_at, created_at, and updated_at. Invalid or unknown filter values are ignored.
- **Get single Mailtrap email log by ID** (Get). Get a single Mailtrap email log by its message id. Returns the message including id, message_id, sent_at, created_at, and updated_at. Required: id.
- **List all Mailtrap webhooks** (List). List Mailtrap webhooks associated with the account. Returns: id, url, active, webhook_type, payload_format, sending_stream, domain_id, event_types.
- **Create a Mailtrap webhook** (Create). Create a Mailtrap webhook for the account. Returns the new webhook including id, url, webhook_type, payload_format, active, and signing_secret. Required: webhook (must include url and webhook_type).
- **Get single Mailtrap webhook by ID** (Get). Get a Mailtrap webhook by id. Returns: id, url, active, webhook_type, payload_format, sending_stream, domain_id, event_types. Required: id.
- **Update a Mailtrap webhook by ID** (Update). Update an existing Mailtrap webhook by id. Returns the updated webhook object including id, url, webhook_type, payload_format, active, and event_types. Required: id, webhook.
- **Delete a Mailtrap webhook by ID** (Delete). Delete a Mailtrap webhook by id. Returns the deleted webhook object including id, url, webhook_type, payload_format, and active. Required: id.
- **Create a Mailtrap contact** (Create). Create a new Mailtrap contact. Returns the created contact with id, email, status, fields, list_ids, created_at, and updated_at. Required: email.
- **Update a Mailtrap contact by ID** (Update). Update an existing Mailtrap contact by UUID or URL-encoded email. Returns: action, data. Required: contact_identifier.
- **Delete a Mailtrap contact by ID** (Delete). Delete a Mailtrap contact by UUID or URL-encoded email. Returns an empty 204 response on success. Required: contact_identifier.
- **Create a Mailtrap contacts export** (Create). Create a new contact export in Mailtrap. Returns the export record including id, status, created_at, updated_at, and url.
- **Get single Mailtrap contacts export by ID** (Get). Get a single contact export in Mailtrap by id. Returns the export record including id, status, created_at, updated_at, and url. Required: id.
- **Create a Mailtrap contacts import** (Create). Import contacts in bulk to mailtrap, with automatic updates for matching emails and support for custom fields and list management. Returns the import object including id, status, created_contacts_count, updated_contacts_count, and contacts_over_limit_count. Supports up to 50,000 contacts per request; imports run asynchronously, so poll by id to track completion.
- **Get single Mailtrap contacts import by ID** (Get). Get a mailtrap contact import by id. Returns the import object, including id, status, created_contacts_count, updated_contacts_count, and contacts_over_limit_count. Required: id.
- **List all Mailtrap contacts lists** (List). List all Mailtrap contact lists in your account. Returns each list's id and name.
- **Create a Mailtrap contacts list** (Create). Create a new Mailtrap contact list. Returns the created list including id and name. Required: name.
- **Get single Mailtrap contacts list by ID** (Get). Get a single Mailtrap contact list by id. Returns the list's id and name. Required: id.
- **Update a Mailtrap contacts list by ID** (Update). Update an existing contact list in Mailtrap. Returns: id, name. Required: id. Request body accepts name, up to 255 characters.
- **Delete a Mailtrap contacts list by ID** (Delete). Delete a contact list in Mailtrap. Returns an empty 204 response on success. Required: id.
- **List all Mailtrap contacts fields** (List). List all contact fields in your Mailtrap account. Returns: id, name, data_type, merge_tag.
- **Create a Mailtrap contacts field** (Create). Create a new contact field in Mailtrap. Returns: id, name, data_type, merge_tag. Account limit of 40 fields.
- **Get single Mailtrap contacts field by ID** (Get). Get a single Mailtrap contact field by id. Returns: id, name, data_type, merge_tag. Required: id.
- **Update a Mailtrap contacts field by ID** (Update). Update an existing Mailtrap contact field by id. Returns the updated field's id, name, data_type, and merge_tag. Required: id. You cannot change the field's data_type.
- **Delete a Mailtrap contacts field by ID** (Delete). Delete an existing Mailtrap contact field by id. Returns an empty 204 response on success. Required: id. Cannot delete a field used in active automations, started or scheduled campaigns, or segment conditions.
- **Create a Mailtrap contacts event** (Create). Create an event for a Mailtrap contact. Returns an empty 204 response on success. Required: contact_identifier.
