1. Conduid
  2. Developer Tools
  3. postmark
MCP server · Developer Tools

postmark

Experimental MCP server for Postmark, built by Postmark Labs. Designed for tinkering, testing, and teleporting transactional email into inboxes with speed and style.

Unclaimed devtools
44Fair

Scored 14 days ago · breakdown

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

Install
npx @activecampaign/postmark-mcp
Claude Code
claude mcp add postmark-mcp -- npx -y @activecampaign/postmark-mcp
npx
npx -y @activecampaign/postmark-mcp

This 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

I know everything about postmark. Ask me about installation, configuration, usage, or troubleshooting.

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   NPM Version  MIT licensed

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

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_TOKEN
  • DEFAULT_SENDER_EMAIL
  • DEFAULT_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: true
  • TrackLinks: "HtmlAndText"
  • Message stream from DEFAULT_MESSAGE_STREAM environment 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 (info for normal operations, error for 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.

Questions

About postmark

How do I install postmark?

Run npx @activecampaign/postmark-mcp, then add the server to your MCP client's configuration.

Is postmark safe to use with an AI agent?

Its trust score is 44 out of 100 (fair). It passes 1 of the 2 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is postmark still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.