Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Postmark in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Postmark transactional and broadcast email for one server: send single, batch and templated emails, manage templates, search sent and inbound messages with opens, clicks and bounces, read sending statistics, and manage suppressions, message streams and webhooks. With an optional account token it also reads servers, domains and sender signatures.
Try asking
Example prompts for Postmark
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Postmark, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Postmark + Meta Muse
Postmark transactional and broadcast email for one server: send single, batch and templated emails, manage templates, search sent and inbound messages with opens, clicks and bounces, read sending statistics, and manage suppressions, message streams and webhooks. With an optional account token it also reads servers, domains and sender signatures.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
POSTMARK_SERVER_TOKEN (optional: POSTMARK_ACCOUNT_TOKEN)
Step 1 — Get credentials
Setting up takes about 2 minutes. You need a Postmark account with a server.
- In Postmark open the server, then API Tokens, and copy a Server API token into
POSTMARK_SERVER_TOKEN. It is sent as theX-Postmark-Server-Tokenheader and reaches that one server only. - Optional: for the account tools (
postmark_list_servers,postmark_get_server_by_id,postmark_list_domains,postmark_get_domain,postmark_verify_domain_dkim,postmark_verify_domain_return_path,postmark_list_sender_signatures,postmark_get_sender_signature) an account owner or admin copies the Account API token from Account, API Tokens intoPOSTMARK_ACCOUNT_TOKEN. It is sent asX-Postmark-Account-Tokenon those tools only. Without it they answer 401; all other tools work. - Install the connector and run
postmark_get_server: it shows the server's settings and confirms the token.
Both tokens look like a UUID (8-4-4-4-12 hexadecimal characters).
Sending: postmark_send_email sends one email to up to 50 recipients with subject, HTML and/or text body, tag, metadata, tracking and attachments. postmark_send_batch sends up to 500 different emails in one call. postmark_send_email_with_template and postmark_send_batch_with_templates use a stored template (TemplateId or TemplateAlias) with a TemplateModel of variables. From must be a confirmed sender signature or an address on a verified domain. New accounts stay in test mode until Postmark approves them and can only send to addresses on their own domain. Transactional email goes through the outbound stream (the default); bulk or marketing email must use a Broadcasts stream (MessageStream), which adds unsubscribe handling. Every send reaches real inboxes, so the AI shows you recipients, subject and content and waits for your yes. Batch calls answer 200 even when single messages fail: the AI checks ErrorCode (0 = accepted) and Message of each result.
Templates: postmark_list_templates, postmark_get_template, postmark_validate_template (checks the syntax and renders a preview with a test model, without saving), postmark_create_template and postmark_update_template. Variables use Mustachio, for example {{name}}; a Layout wraps standard templates with {{{@content}}}.
Finding out what happened to an email:
- Search sent mail with
postmark_search_outbound_messagesby recipient, sender, tag, subject, status, stream, date or one metadata field, and received mail withpostmark_search_inbound_messages.postmark_retry_inbound_messageposts a failed inbound message to the inbound webhook again. postmark_get_outbound_messageorpostmark_get_inbound_messageshows the details, and for sent mail theMessageEventstimeline (Delivered, Bounced, Opened, LinkClicked, SubscriptionChanged).- Opens and clicks:
postmark_list_message_opens,postmark_get_message_opens,postmark_list_message_clicks,postmark_get_message_clicks, with email client, browser, OS, platform and location. - Bounces:
postmark_get_delivery_stats,postmark_list_bounces,postmark_get_bounceandpostmark_get_bounce_dump(the raw SMTP answer, kept for 30 days).postmark_activate_bouncereactivates an address whenCanActivateis true. - Suppressions per stream:
postmark_list_suppressionsandpostmark_create_suppressions(up to 50 addresses per call).
Statistics: postmark_get_outbound_overview gives totals and rates for a period (sent, bounces, spam complaints, opens, unique opens, tracked emails, link clicks). postmark_get_outbound_stats with metric gives daily counts of sends, bounces, spam, tracked, opens, clicks, platforms, email clients, browsers or locations.
Server setup: postmark_get_server; message streams with postmark_list_message_streams, postmark_get_message_stream, postmark_create_message_stream (at most 10 streams per server, one of them Inbound), postmark_update_message_stream and postmark_unarchive_message_stream; webhooks with postmark_list_webhooks, postmark_get_webhook, postmark_create_webhook and postmark_update_webhook. With the account token, the AI also lists servers, domains and sender signatures, shows the DNS records a domain needs and asks Postmark to check DKIM and Return-Path after you have added them.
Switched off at install: postmark_delete_template, postmark_delete_suppressions (which lets suppressed addresses receive email again), postmark_delete_webhook and postmark_archive_message_stream (an archived stream stops sending and is deleted with its data after 45 days unless restored). A workspace admin turns them on when the team needs them.
Data formats: field names are PascalCase (MessageID, SubmittedAt, TotalCount). Search dates (fromdate, todate) are US Eastern Time; returned timestamps carry their offset. Statistics dates are YYYY-MM-DD. Messages and their events are kept for the server's retention period, 45 days by default.
Paging: list and search tools take count (default 50, at most 500) and offset; count plus offset may not exceed 10,000. To go further back, the AI narrows the date range. Comparing TotalCount with the rows received shows whether more pages exist.
Common errors: 401 means a missing or wrong token, or the server token on an account tool. 422 means an invalid request; ErrorCode and Message say why: 300 send validation (for example an invalid address or a missing body), 406 an inactive or suppressed recipient, 410 more than 500 messages in a batch, 412 recipients outside the From domain while the account awaits approval, 1101 template not found, 1235 unknown message stream. 429 means too many requests; 500 is a Postmark problem, retry later.
The connector does not create servers, domains or sender signatures, does not remove spam complaint suppressions and does not delete sent messages.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Muse
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Muse adds remote MCP servers as custom connectors and signs in to them with OAuth.
- In Muse, open Settings → Connectors and choose Add custom connector.
- Paste the MCP server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. - Muse opens the AnythingMCP sign-in page: sign in and approve access.
- In a chat, ask Muse for something that needs the
Postmarktools.
You can also set it up from a chat, on the web, in the iOS and Android apps or in WhatsApp. Send Muse this message:
Create a Custom Connector for a new remote MCP server, then connect to it:
Name: AnythingMCP
Transport: remote streamable HTTP
URL: https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID
Auth: OAuth
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Muse connects from Meta's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
postmark_send_email | Send one email through the server: from a confirmed sender, to up to 50 recipients, with subject, HTML and/or text body, tag, metadata… |
postmark_send_batch | Send up to 500 different emails in one call; each message takes the same fields as postmark_send_email |
postmark_send_email_with_template | Send one email built from a stored template: pass TemplateId or TemplateAlias and the TemplateModel with the variables |
postmark_send_batch_with_templates | Send up to 500 templated emails in one call, each with its own template, recipient and model |
postmark_list_templates | List the templates of the server with id, alias, name, type (Standard or Layout), active flag and layout |
postmark_get_template | Get one template by id or alias: name, subject, HTML and text body with their Mustachio variables, type and layout |
postmark_create_template | Create a template (Standard, or Layout to wrap other templates) with name, alias, subject and HTML/text bodies using Mustachio variables |
postmark_update_template | Edit a template by id or alias: name, alias, subject, bodies or layout |
postmark_delete_template | Delete a template for good by id or alias |
postmark_validate_template | Check template content without saving: Mustachio syntax errors, the variables it uses and a rendered preview with a test model |
postmark_search_outbound_messages | Search sent messages (last 45 days by default retention) by recipient, sender, tag, subject, status, stream, date range or one metadata… |
postmark_get_outbound_message | Details of one sent message by MessageID: recipients, subject, bodies, tag, metadata and the MessageEvents timeline (delivered, bounced… |
postmark_search_inbound_messages | Search inbound messages received by the server by recipient, sender, subject, mailbox hash, tag, status or date range |
postmark_get_inbound_message | Details of one inbound message: sender, recipients, subject, text and HTML body, headers, attachments list, status and the webhook… |
postmark_retry_inbound_message | Retry posting a failed inbound message to the server's inbound webhook, e.g. after fixing the endpoint |
postmark_list_message_opens | List open events across messages with recipient, time, email client, OS, platform and location |
postmark_get_message_opens | List the open events of one message: each open with time, client, OS, platform and location |
postmark_list_message_clicks | List link click events across messages with recipient, clicked URL, time, browser, OS, platform and location |
postmark_get_message_clicks | List the link click events of one message: each click with the original link, time, browser, OS and location |
postmark_get_delivery_stats | Bounce summary of the server: number of inactive (deactivated) addresses and the count of bounces per bounce type |
postmark_list_bounces | List bounces with type, recipient, description, details, whether the address is now inactive and whether it can be activated |
postmark_get_bounce | Get one bounce by id: type, recipient, description, SMTP details, the related MessageID, Inactive and CanActivate flags |
postmark_get_bounce_dump | Get the raw SMTP source of a bounce message (kept for 30 days), to read the receiving server's exact answer |
postmark_activate_bounce | Reactivate an address deactivated by a bounce so it can receive email again |
postmark_get_outbound_overview | Sending overview for a period: sent, bounced, spam complaints, bounce and spam rates, opens, unique opens, tracked emails and link clicks |
postmark_get_outbound_stats | Daily counts of one metric for a period: sends, bounces (by type), spam, tracked, opens, opens by platform or email client, clicks, clicks… |
postmark_list_suppressions | List suppressed addresses of a message stream (no email is sent to them) with the reason (HardBounce, SpamComplaint, ManualSuppression)… |
postmark_create_suppressions | Suppress up to 50 addresses in a message stream so nothing is sent to them any more (ManualSuppression) |
postmark_delete_suppressions | Remove up to 50 addresses from the suppression list of a stream so they can receive email again |
postmark_list_message_streams | List the message streams of the server (Transactional, Broadcasts, Inbound) with id, name, description, unsubscribe handling and archive… |
postmark_get_message_stream | Get one message stream by id: name, type, description, unsubscribe handling, created, updated and archived dates |
postmark_create_message_stream | Create a message stream: Transactional for app email or Broadcasts for bulk and marketing mail (at most 10 streams per server, one Inbound) |
postmark_update_message_stream | Edit a message stream: name, description or unsubscribe handling |
postmark_archive_message_stream | Archive a message stream: it stops sending and is deleted with its data after 45 days unless restored with postmark_unarchive_message_stream |
postmark_unarchive_message_stream | Restore an archived message stream within 45 days of archiving so it can send again |
postmark_list_webhooks | List the webhooks of the server with URL, stream, HTTP auth and headers, and which events trigger them (Open, Click, Delivery, Bounce… |
postmark_get_webhook | Get one webhook by id: URL, message stream, HTTP auth user, custom headers and enabled triggers |
postmark_create_webhook | Create a webhook for a message stream: the URL and which events (opens, clicks, deliveries, bounces, spam complaints, subscription changes)… |
postmark_update_webhook | Edit a webhook: URL, HTTP auth, headers or triggers |
postmark_delete_webhook | Delete a webhook; Postmark stops posting those events to its URL |
postmark_get_server | Settings of the server the token belongs to: id, name, color, inbound address and domain, tracking defaults, hook URLs and SMTP API state |
postmark_list_servers | List all servers of the account with id, name, color, API tokens and settings |
postmark_get_server_by_id | Get one server of the account by id with its settings and API tokens |
postmark_list_domains | List the sending domains of the account with DKIM, Return-Path and SPF verification state |
postmark_get_domain | Get one domain with the DNS records to set (DKIM host and value, pending DKIM, Return-Path CNAME) and their verification state |
postmark_verify_domain_dkim | Ask Postmark to check the DKIM DNS record of a domain now, after the user has added it |
postmark_verify_domain_return_path | Ask Postmark to check the Return-Path CNAME of a domain now |
postmark_list_sender_signatures | List the sender signatures (single confirmed From addresses) of the account with confirmation and DKIM state |
postmark_get_sender_signature | Get one sender signature: From address, name, reply-to, confirmed flag, domain and DNS verification details |
Example prompts
- "Did our password reset email to [email protected] arrive yesterday? Show me its delivery events."
- "How many emails did we send last week, and what were the bounce and spam complaint rates?"
- "List the hard bounces of the last 7 days with recipient and the receiving server's answer."
- "Send the welcome template to [email protected] with his first name Tom. Show me the rendered email before sending."
- "Is the DKIM record of our sending domain verified yet? If not, show me the DNS record I need to add."
FAQ
Where is Muse available? Meta currently offers Muse in the US and Canada, on the web, in the iOS and Android apps and in WhatsApp.
Does Meta review this connector? No. Meta doesn't review custom connectors. Muse sees only the tools you switched on for this MCP server in AnythingMCP, and you can disconnect it anytime under Settings → Connectors.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Microsoft Copilot
Was this guide helpful?