# Postmark MCP connector

Connect Postmark to Elaichi and Claude, ChatGPT, Cursor, or any MCP client can send emails, check bounces and delivery stats, and manage templates and servers as the signed-in person, with every action logged.

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

## Facts

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

## What you can ask once Postmark is connected

- Show me yesterday's Postmark bounces by tag.
- Send the welcome template to this new customer.
- What is our Postmark delivery rate this week?

## Connect Postmark in Elaichi

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

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

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

### Find out why a customer's email bounced

Support. Ask which messages to a customer bounced, read the bounce details, and reactivate the address once the problem is fixed, all from the chat you are already in.

### Send a templated email to a list of accounts

Customer Success. Pick an existing Postmark template, fill in each customer's details, and send the batch in one go instead of copying names into a form one at a time.

### Draft and validate a new notification template

Product. Write a new welcome or password reset template, check that every placeholder renders correctly, and save it to the right Postmark server before anyone ships it.

### Push templates from staging to production

Engineering. Once a template has been reviewed on the staging server, move it to the production server and confirm the copy matches, with the change recorded against your name.

### Check delivery health across servers

Operations. Ask for this week's delivery stats and bounce counts on each Postmark server, then get a plain summary of which streams need attention.

### Send receipts and billing notices on time

Finance. Send invoice reminders and payment receipts through the billing template, and confirm each one was delivered rather than bounced before closing the month.

## Frequently asked questions

### How do I connect Postmark to Claude?

First, connect Postmark in Elaichi by pasting in the API key from your Postmark account. 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 in https://api.elaichi.ai/mcp. Sign in as yourself and Postmark is ready to use in Claude.

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

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

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

With Postmark connected, an agent can send single, bulk, and templated emails, look up bounces and reactivate an address, read delivery stats, and create, update, validate, or push templates between servers. It can also list your Postmark servers and update their settings. Postmark has a lot of capabilities, so short concrete asks such as "show me yesterday's bounces" work better than long paragraphs.

### Does connecting Postmark give the AI access to every server and template?

No. The agent only sees what the Postmark API key you connected can see, so access follows the person who signed in and the servers that key covers. Elaichi can narrow that further, for example to reading bounces and stats without sending mail, but it can never widen it beyond what Postmark itself allows.

### Can my team share one Postmark connection?

Yes. One person connects Postmark in Elaichi and shares it with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every email sent or template changed in Postmark is logged against the person who did it.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading bounces and delivery stats while blocking template deletion, server changes, or sending altogether. A blocked action is never shown to Claude, ChatGPT, or Cursor at all, so no prompt can reach it.

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

When you offboard someone in Elaichi, their access to Postmark through every client ends at once, and their past actions stay in the audit log. A shared Postmark connection keeps working for everyone else on the team. If you disconnect Postmark in Elaichi, it disappears from Claude, ChatGPT, Cursor, and every other client in one step.

## All 84 Postmark tools

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

- **Create a Postmark email** (Create). Send a single transactional email via Postmark. Returns the message ID, submission timestamp, and delivery status. Required: From, To, Subject, and at least one of HtmlBody or TextBody.
- **Postmark emails bulk create** (Create). Send a batch of emails in a single request via Postmark. Returns an array of per-message results, each including the message ID and status. Required: Messages array where each entry requires From, To, Subject, and at least one of HtmlBody or TextBody.
- **Create a Postmark bulk email** (Create). Send a batch of bulk emails through Postmark. Returns details about the submitted bulk send operation. Required: a valid request body containing the messages to be delivered.
- **Get single Postmark bulk email by ID** (Get). Get the status and details of a Postmark bulk email batch by id. Returns information about the bulk send operation identified by the supplied id. Required: id.
- **Create a Postmark templated email** (Create). Send a single Postmark email rendered from a template. Returns the submitted message id and status. Required: `From`, `To`, and either `TemplateId` or `TemplateAlias`, plus `TemplateModel`.
- **Postmark templated emails bulk create** (Create). Send a batch of Postmark templated emails in a single request. Returns an array of per-message results including message id and status. Required: `Messages` (array of template message objects, each requiring `From`, `To`, `TemplateModel`, and either `TemplateId` or `TemplateAlias`).
- **Get single Postmark delivery stat by ID** (Get). Get delivery stats from Postmark, summarizing bounce and delivery activity for the sending account. Returns an overview of delivery outcomes including bounce counts and email counts by category.
- **List all Postmark bounces** (List). List bounces recorded in Postmark. Returns a collection of bounce records from the Bounces response field.
- **Get single Postmark bounce by ID** (Get). Get a single Postmark bounce by id. Returns the full bounce record for the specified bounce. Required: id.
- **Get single Postmark bounce dump by ID** (Get). Get the raw email dump for a specific Postmark bounce by id. Returns the raw SMTP message body associated with the bounce record. Required: id.
- **Create a Postmark bounce activation** (Create). Activate a previously bounced email address in Postmark, reactivating future delivery attempts for that address. Required: bounce_id.
- **List all Postmark templates** (List). List all Postmark templates available in the account. Returns a collection of template objects via the Templates array.
- **Get single Postmark template by ID** (Get). Get a single Postmark template by id. Returns the full template object. Required: id.
- **Create a Postmark template** (Create). Create a new Postmark template. Returns the created template object.
- **Update a Postmark template by ID** (Update). Update an existing Postmark template by id. Returns the updated template object. Required: id.
- **Delete a Postmark template by ID** (Delete). Delete a Postmark template by id. Returns an empty response on success. Required: id.
- **Create a Postmark template validation** (Create). Validate a Postmark template by submitting its content to the validation endpoint. Returns validation results indicating whether the template is well-formed and renderable.
- **Create a Postmark template push** (Create). Push templates from one Postmark server to another. Returns a summary of template changes (additions, updates, deletions) detected between the source and destination servers. Required: SourceServerID, DestinationServerID.
- **Get single Postmark current server by ID** (Get). Get details of the current Postmark server associated with the active API token. Returns the server object including its name, ID, and configuration settings. No parameters required.
- **Update a Postmark current server by ID** (Update). Update settings for the current Postmark server associated with the active API token. Returns the updated server object reflecting the new configuration.
- **List all Postmark servers** (List). List all Postmark servers associated with the account. Returns an array of server objects.
- **Get single Postmark server by ID** (Get). Get a single Postmark server by id. Returns the full server object.
- **Create a Postmark server** (Create). Create a new Postmark server. Returns the created server object including its id and configuration.
- **Update a Postmark server by ID** (Update). Update an existing Postmark server by id. Returns the updated server object. Required: id.
- **Delete a Postmark server by ID** (Delete). Delete a Postmark server by id. Returns an empty response on success. Required: id.
- **List all Postmark message streams** (List). List all Postmark message streams for the current server. Returns an array of message stream objects including their id, name, message type, and description. Optionally filter by message type or include archived streams.
- **Get single Postmark message stream by ID** (Get). Get a single Postmark message stream by id. Returns the full stream object including its id, name, message type, description, and archived status. Requires id.
- **Create a Postmark message stream** (Create). Create a new Postmark message stream on the current server. Returns the created stream object including its id, name, and message type. Requires ID, Name, and MessageType.
- **Postmark message streams partial update** (Update). Update the name or description of an existing Postmark message stream. Returns the updated stream object. Requires id.
- **Create a Postmark message stream archive** (Create). Archive a Postmark message stream, disabling further use of the stream. Required: stream_id.
- **Create a Postmark message stream unarchive** (Create). Unarchive a previously archived Postmark message stream, restoring it to active use. Required: stream_id.
- **List all Postmark outbound messages** (List). List outbound messages in Postmark. Returns a collection of sent message records.
- **Get single Postmark outbound message by ID** (Get). Get full details of a specific Postmark outbound message by id. Returns the complete message detail record. Required: id.
- **Get single Postmark outbound message dump by ID** (Get). Get the raw message dump for a specific Postmark outbound message by id. Returns the raw email source, including headers and body content. Required: id.
- **List all Postmark inbound messages** (List). List inbound messages in Postmark. Returns a collection of inbound message summaries from the InboundMessages array.
- **Get single Postmark inbound message by ID** (Get). Get full details of a specific Postmark inbound message by id. Returns the complete message detail object. Required: id.
- **Create a Postmark inbound message bypass** (Create). Bypass the inbound spam filter for a specific Postmark inbound message. Required: message_id.
- **Create a Postmark inbound message retry** (Create). Retry a failed Postmark inbound message, re-queuing it for processing. Required: message_id.
- **List all Postmark message opens** (List). List open events for outbound messages in Postmark. Returns a collection of open records from the Opens response array.
- **List all Postmark message opens for message** (List). List open events for a specific outbound message in Postmark. Returns open tracking records from the Opens collection. Required: message_id.
- **List all Postmark message clicks** (List). List click tracking records for Postmark outbound messages. Returns an array of click events from the Clicks collection.
- **List all Postmark message clicks for message** (List). List click tracking events for a specific outbound Postmark message. Returns an array of click records from the Clicks field. Required: message_id.
- **List all Postmark domains** (List). List all domains configured in Postmark. Returns a collection of domain objects from the Domains array.
- **Get single Postmark domain by ID** (Get). Get a single Postmark domain by id. Returns the full domain object including its configuration details. Required: id.
- **Create a Postmark domain** (Create). Create a new domain in Postmark. Returns the created domain object.
- **Update a Postmark domain by ID** (Update). Update an existing Postmark domain by id. Returns the updated domain object. Required: id.
- **Delete a Postmark domain by ID** (Delete). Delete a Postmark domain by id. Returns an empty response on success. Required: id.
- **Create a Postmark domain dkim verification** (Create). Trigger DKIM verification for a Postmark domain. Initiates the DKIM key verification process against the domain's DNS records. Required: domain_id.
- **Create a Postmark domain return path verification** (Create). Trigger return path verification for a Postmark domain. Initiates the DNS return-path record verification process for the specified domain. Required: domain_id.
- **Create a Postmark domain spf verification** (Create). Trigger SPF verification for a Postmark domain. Initiates a check of the domain's SPF DNS record. Required: domain_id.
- **Create a Postmark domain dkim rotation** (Create). Rotate the DKIM keys for a Postmark domain, initiating a new DKIM key pair for the specified domain. Required: domain_id.
- **List all Postmark sender signatures** (List). List all Postmark sender signatures for the account. Returns a collection of sender signature objects from the SenderSignatures array.
- **Get single Postmark sender signature by ID** (Get). Get a single Postmark sender signature by id. Returns the full sender signature object for the specified id.
- **Create a Postmark sender signature** (Create). Create a new Postmark sender signature. Returns the created sender signature object.
- **Update a Postmark sender signature by ID** (Update). Update an existing Postmark sender signature by id. Returns the updated sender signature object. Required: id.
- **Delete a Postmark sender signature by ID** (Delete). Delete a Postmark sender signature by id. Returns an empty response on success. Required: id.
- **Create a Postmark sender signature confirmation** (Create). Resend the confirmation email for a Postmark sender signature. Required: signature_id.
- **Create a Postmark sender signature spf verification** (Create). Trigger an SPF verification for a Postmark sender signature. Required: signature_id.
- **Create a Postmark sender signature dkim request** (Create). Request a new DKIM key for a Postmark sender signature. Triggers generation of a fresh DKIM record that can be applied to the sender's DNS configuration. Required: signature_id.
- **List all Postmark webhooks** (List). List all Postmark webhooks configured for the account. Returns an array of webhook objects including id, url, and trigger settings. Optionally filter by message stream using MessageStream.
- **Get single Postmark webhook by ID** (Get). Get a single Postmark webhook by id. Returns the full webhook configuration including id, Url, MessageStream, HttpAuth, HttpHeaders, and Triggers. Required: id.
- **Create a Postmark webhook** (Create). Create a new Postmark webhook. Returns the created webhook object including its id, Url, and Triggers. Required: Url, MessageStream.
- **Update a Postmark webhook by ID** (Update). Update an existing Postmark webhook by id. Returns the updated webhook object including id, Url, and Triggers. Required: id.
- **Delete a Postmark webhook by ID** (Delete). Delete a Postmark webhook by id. Returns an empty response on success. Required: id.
- **List all Postmark inbound rule triggers** (List). List all inbound rule triggers configured in Postmark. Returns the collection of inbound rules from the InboundRules response field.
- **Create a Postmark inbound rule trigger** (Create). Create a new inbound rule trigger in Postmark. Required: Rule.
- **Delete a Postmark inbound rule trigger by ID** (Delete). Delete a Postmark inbound rule trigger by id. Returns an empty response on success. Required: id.
- **List all Postmark suppressions** (List). List all suppressions for a Postmark message stream. Returns a collection of suppressed email addresses and their associated suppression details. Required: stream_id.
- **Create a Postmark suppression** (Create). Create one or more suppressions for a Postmark message stream, preventing future delivery to the specified email addresses. Required: stream_id.
- **Postmark suppressions bulk delete** (Delete). Delete one or more suppressions from a Postmark message stream, re-enabling delivery to the specified email addresses. Required: stream_id.
- **Create a Postmark data removal** (Create). Create a data removal request in Postmark to remove personal data associated with a recipient. Returns the created request object including its id and status.
- **Get single Postmark data removal by ID** (Get). Get a Postmark data removal request by id. Returns the request object including its current status. Required: id.
- **Get single Postmark outbound overview stat by ID** (Get). Get an overview of outbound email statistics from Postmark. Returns aggregated sending metrics for outbound messages. No required parameters.
- **Get single Postmark sent count stat by ID** (Get). Get outbound send count statistics from Postmark. Returns aggregated sent message counts for outbound email activity.
- **Get single Postmark bounce count stat by ID** (Get). Get outbound bounce count statistics from Postmark. Returns aggregated bounce counts for sent messages.
- **Get single Postmark spam complaint stat by ID** (Get). Get outbound spam complaint statistics from Postmark. Returns aggregated spam complaint data for outbound messages sent through the account.
- **Get single Postmark tracked email stat by ID** (Get). Get tracked outbound email statistics in Postmark. Returns aggregate tracking metrics for outbound messages sent through the account.
- **Get single Postmark open count stat by ID** (Get). Get outbound email open count statistics from Postmark. Returns aggregated open tracking metrics for sent messages.
- **Get single Postmark email platform stat by ID** (Get). Get Postmark outbound email open statistics broken down by platform type (e.g., desktop, mobile, webmail). Returns platform-level open counts for the specified date range or tag filter.
- **Get single Postmark email client stat by ID** (Get). Get a breakdown of email clients used to open outbound messages in Postmark. Returns statistics grouped by email client name and usage counts.
- **Get single Postmark click count stat by ID** (Get). Get outbound click count statistics from Postmark. Returns aggregated click counts for tracked links in sent messages.
- **Get single Postmark browser family stat by ID** (Get). Get outbound click statistics grouped by browser family in Postmark. Returns a breakdown of click counts per browser family for tracked outbound messages.
- **Get single Postmark browser platform stat by ID** (Get). Get Postmark outbound click statistics broken down by browser platform. Returns a summary of click counts grouped by platform type (e.g., desktop, mobile, unknown).
- **Get single Postmark click location stat by ID** (Get). Get outbound click location statistics from Postmark, showing where tracked link clicks originated geographically. Returns aggregated click counts broken down by location.
