About postmark
postmark is an MCP server published by git+activecampaign in the Developer Tools category: experimental MCP server for Postmark, built by Postmark Labs. Designed for tinkering, testing, and teleporting transactional email into inboxes with speed and style.
The repository has 58 stars and 0 forks.
Install
npx @activecampaign/postmark-mcpclaude mcp add postmark-mcp -- npx -y @activecampaign/postmark-mcpnpx -y @activecampaign/postmark-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (24)
activateBounceReactivate a deactivated email address so it can receive mail again on Postmark. Only works on bounces where CanActivate is true (typically HardBounce). SpamComplaint bounces cannot be reactivated. Use searchBounces or diagnoseDelivery to find the bounceId.
Parameters not published.
createSuppressionsAdd up to 50 email addresses to the suppression list for a Postmark message stream. Suppressed addresses will not receive mail on that stream. Each address in the response indicates whether suppression was created or failed.
Parameters not published.
createTemplateCreate a new email template on this Postmark server. Requires a name and at least one of htmlBody or textBody. Subject is required for Standard templates and must be omitted for Layout templates. Optionally bind a Standard template to an existing Layout via layoutTemplate.
Parameters not published.
createWebhookRegister a new Postmark webhook that will receive HTTP POST notifications when specified events occur (opens, clicks, bounces, etc.). Requires an HTTPS URL and at least one enabled trigger. Webhooks are persistent — Postmark will keep calling the URL until the webhook is deleted. Only register URLs you control. To secure the receiving endpoint, whitelist Postmark
Parameters not published.
deleteSuppressionsRemove up to 50 addresses from the suppression list on a Postmark message stream, allowing them to receive mail again. SpamComplaint suppressions cannot be deleted via API. Deleting a HardBounce suppression is equivalent to reactivating that bounce.
Parameters not published.
deleteTemplatePermanently delete a Postmark template by numeric ID or string alias. This cannot be undone. Layout templates cannot be deleted while Standard templates are still bound to them.
Parameters not published.
deleteWebhookPermanently delete a Postmark webhook by its numeric ID. Postmark will stop sending event notifications to that URL immediately. Use listWebhooks to find the ID.
Parameters not published.
diagnoseDeliveryDiagnose why an email may not have reached a recipient. Runs message search, suppression lookup, and bounce history checks in parallel and returns a plain-English recommendation. Use this as a first step when a recipient reports a missing, undelivered, or bounced email.
Parameters not published.
editTemplateUpdate an existing Postmark template
Parameters not published.
getBounceDumpRetrieve the raw SMTP conversation transcript for a specific bounce record. Useful for diagnosing exactly how a remote mail server rejected a message. Dumps are only retained for 30 days after the bounce.
Parameters not published.
Show all 24 tools
getDeliveryStatsRetrieve outbound email statistics for this Postmark server. The default
Parameters not published.
getMessageDetailsRetrieve the full delivery details and event timeline (Delivered, Opened, Clicked, Bounced, etc.) for a single outbound message by its Postmark MessageID. Use searchOutboundMessages to find a MessageID first.
Parameters not published.
getServerInfoRetrieve this Postmark server
Parameters not published.
getTemplateRetrieve the full content of a single Postmark template — HTML body, text body, subject, type (Standard/Layout), and layout association — by numeric ID or string alias.
Parameters not published.
listSuppressionsList suppressed email addresses on a Postmark message stream. Optionally filter by suppression reason (HardBounce, SpamComplaint, ManualSuppression), origin (Recipient, Customer, Admin), email address, or date range. Suppressed addresses will not receive mail on that stream.
Parameters not published.
listTemplatesList saved email templates on this Postmark server. Returns up to 100 templates with name, ID, alias, subject, type (Standard or Layout), and layout binding. Use getTemplate to retrieve a template
Parameters not published.
listWebhooksList all webhooks configured on this Postmark server via the Webhooks API. Optionally filter by message stream. Shows each webhook
Parameters not published.
searchBouncesSearch the Postmark bounce log. Filter by bounce type, email address, tag, message ID, message stream, and date range. Returns bounce records with type, description, timestamp, and whether each address can be reactivated. Bounce records are retained for 45 days.
Parameters not published.
searchOutboundMessagesSearch outbound message history on this Postmark server. Filter by recipient, sender, subject, tag, delivery status, message stream, or date range. Returns up to 500 messages per call with basic metadata. Use getMessageDetails to retrieve the full event timeline for a specific message.
Parameters not published.
sendBatchSend up to 500 independent emails in a single synchronous Postmark API call (POST /email/batch). Each message has its own recipient, subject, and body. Returns per-message results — the overall HTTP call succeeds even when individual messages fail. Use sendEmail for a single message.
Parameters not published.
sendBatchWithTemplateSend the same Postmark template to up to 500 recipients in a single call, with per-recipient template models (POST /email/batchWithTemplates). Supply either templateId or templateAlias. Returns per-message results. Use sendEmailWithTemplate for a single recipient.
Parameters not published.
sendEmailSend a single transactional email via Postmark. Accepts one recipient or an array of up to 50. The From address must be a verified sender signature. Open and link tracking are enabled automatically. Use sendBatch to send multiple distinct messages in one call.
Parameters not published.
sendEmailWithTemplateSend a single email rendered from a saved Postmark template. Supply either templateId (numeric) or templateAlias (string) plus a templateModel object that provides the template variables. The From address must be a verified sender signature.
Parameters not published.
validateTemplateValidate Postmark Mustachio template syntax and variable references without saving anything. Checks subject, HTML body, and/or text body for errors and optionally renders them against a test data model. Use this before createTemplate or editTemplate to catch mistakes early.
Parameters not published.
Ask AI
Ask AI about postmark
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
4 checks have not been run yet.
README
Official Postmark MCP Server

Send emails with Postmark using Claude and other MCP-compatible AI assistants.
Features
- Exposes a Model Context Protocol (MCP) server for sending emails via your Postmark account
- Simple configuration via environment variables
- Comprehensive error handling and graceful shutdown
- Secure logging practices (no sensitive data exposure)
- Automatic email tracking configuration
Useful Docs
Feedback
We'd love to hear from you! Please share your feedback and suggestions using our feedback form.
Follow us on X - @postmarkapp
Setup
Requirements
- Node.js (v16 or higher recommended)
- A Postmark account and server token
Installation (Local Development)
Clone the repository:
git clone https://github.com/ActiveCampaign/postmark-mcp
cd postmark-mcp
Install dependencies:
npm install
# or
yarn
# or
bun install
Configuration (Local Development)
Create your own environment file from the example
cp .env.example .env
Edit your .env to contain your Postmark credentials and settings.
Important: This is intended for local development purposes only. Secrets should never be stored in version control and .env type files should be added to .gitignore.
| Variable | Description | Required |
|---|---|---|
| POSTMARK_SERVER_TOKEN | Your Postmark server API token | Yes |
| DEFAULT_SENDER_EMAIL | Default sender email address | Yes |
| DEFAULT_MESSAGE_STREAM | Postmark message stream (e.g., 'outbound') | Yes |
Run the server:
npm start
# or
yarn start
# or
bun start
Cursor Quick Install
After installing the MCP, update your configuration to set:
POSTMARK_SERVER_TOKENDEFAULT_SENDER_EMAILDEFAULT_MESSAGE_STREAM(default:outbound)
Claude and Cursor MCP Configuration Example
{
"mcpServers": {
"postmark": {
"command": "node",
"args": ["path/to/postmark-mcp/index.js"],
"env": {
"POSTMARK_SERVER_TOKEN": "your-postmark-server-token",
"DEFAULT_SENDER_EMAIL": "your-sender-email@example.com",
"DEFAULT_MESSAGE_STREAM": "your-message-stream"
}
}
}
}
Tools
This section provides a complete reference for the Postmark MCP server tools including example prompts and payloads.
Table of Contents
Email Management Tools
1. sendEmail
Sends a single text email.
Example Prompt:
Send an email using Postmark to recipient@example.com with the subject "Meeting Reminder" and the message "Don't forget our team meeting tomorrow at 2 PM. Please bring your quarterly statistics report (and maybe some snacks).""
Expected Payload:
{
"to": "recipient@example.com",
"subject": "Meeting Reminder",
"textBody": "Don't forget our team meeting tomorrow at 2 PM. Please bring your quarterly statistics report (and maybe some snacks).",
"htmlBody": "HTML version of the email body", // Optional
"from": "sender@example.com", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "meetings" // Optional
}
Response Format:
Email sent successfully!
MessageID: message-id-here
To: recipient@example.com
Subject: Meeting Reminder
2. sendEmailWithTemplate
Sends an email using a pre-defined template.
Example Prompt:
Send an email with Postmark template alias "welcome" to customer@example.com with the following template variables:
{
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
}
Expected Payload:
{
"to": "customer@example.com",
"templateId": 12345, // Either templateId or templateAlias must be provided, but not both
"templateAlias": "welcome", // Either templateId or templateAlias must be provided, but not both
"templateModel": {
"name": "John Doe",
"product_name": "MyApp",
"login_url": "https://myapp.com/login"
},
"from": "sender@example.com", // Optional, uses DEFAULT_SENDER_EMAIL if not provided
"tag": "onboarding" // Optional
}
Response Format:
Template email sent successfully!
MessageID: message-id-here
To: recipient@example.com
Template: template-id-or-alias-here
Template Management Tools
3. listTemplates
Lists all available templates.
Example Prompt:
Show me a list of all the email templates available in our Postmark account.
Response Format:
📋 Found 2 templates:
• Basic
- ID: 12345678
- Alias: basic
- Subject: none
• Welcome
- ID: 02345679
- Alias: welcome
- Subject: none
Statistics & Tracking Tools
4. getDeliveryStats
Retrieves email delivery statistics.
Example Prompt:
Show me our Postmark email delivery statistics from 2025-05-01 to 2025-05-15 for the "marketing" tag.
Expected Payload:
{
"tag": "marketing", // Optional
"fromDate": "2025-05-01", // Optional, YYYY-MM-DD format
"toDate": "2025-05-15" // Optional, YYYY-MM-DD format
}
Response Format:
Email Statistics Summary
Sent: 100 emails
Open Rate: 45.5% (45/99 tracked emails)
Click Rate: 15.2% (15/99 tracked links)
Period: 2025-05-01 to 2025-05-15
Tag: marketing
Implementation Details
Automatic Configuration
All emails are automatically configured with:
TrackOpens: trueTrackLinks: "HtmlAndText"- Message stream from
DEFAULT_MESSAGE_STREAMenvironment variable
Error Handling
The server implements comprehensive error handling:
- Validation of all required environment variables
- Graceful shutdown on SIGTERM and SIGINT
- Proper error handling for API calls
- No exposure of sensitive information in logs
- Consistent error message formatting
Logging
- Uses appropriate log levels (
infofor normal operations,errorfor errors) - Excludes sensitive information from logs
- Provides clear operation status and results
For more information about the Postmark API, visit Postmark's Developer Documentation.
License
MIT © ActiveCampaign
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.