Connector guide13-minute read49 MCP tools7 languages

How to Connect Postmark to Microsoft Copilot via MCP

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.

HCBy HelpCode teamUpdated 13 min read Open-source on GitHub

No credit card · 7-day trial · Self-host alternative available

Postmark

Postmark

Postmark transactional and broadcast email: send single, batch and templated emails, manage templates, search sent and inbound messages with opens, clicks and bounces, sending statistics, suppressions, message streams and webhooks; with an account token also servers, domains and sender signatures.

tools

49

Region

INTL

Category

Email

Authentication

API Key

Required env vars

POSTMARK_SERVER_TOKEN
Install in one click on Cloud

7-day free trial · No credit card

  • 7-day free trial
    No credit card required
  • GDPR & SOC 2 ready
    EU data residency, audit logs
  • Open-source on GitHub
    Open source · AGPL-3.0
  • Works with ChatGPT, Claude, Gemini
    Any MCP-compatible client

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.

Start free trial

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.

Postmark · live via MCP
Share
Opus 4.7

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 + Microsoft Copilot

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.

  1. In Postmark open the server, then API Tokens, and copy a Server API token into POSTMARK_SERVER_TOKEN. It is sent as the X-Postmark-Server-Token header and reaches that one server only.
  2. 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 into POSTMARK_ACCOUNT_TOKEN. It is sent as X-Postmark-Account-Token on those tools only. Without it they answer 401; all other tools work.
  3. 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_messages by recipient, sender, tag, subject, status, stream, date or one metadata field, and received mail with postmark_search_inbound_messages. postmark_retry_inbound_message posts a failed inbound message to the inbound webhook again.
  • postmark_get_outbound_message or postmark_get_inbound_message shows the details, and for sent mail the MessageEvents timeline (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_bounce and postmark_get_bounce_dump (the raw SMTP answer, kept for 30 days). postmark_activate_bounce reactivates an address when CanActivate is true.
  • Suppressions per stream: postmark_list_suppressions and postmark_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 Microsoft Copilot

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 shows YOUR_SERVER_ID.

Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.

  1. In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
  2. Enter a Server name (for example AnythingMCP), a Server description that says what the connector does, and the Server URL https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server.
  3. Under authentication, choose API key, set Type to Header and the header name to X-API-Key, then select Create.
  4. In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
  5. Try it in the agent's Test pane: ask for something that needs the Postmark tools.
  6. Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.

Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.

Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.

Available tools

ToolWhat it does
postmark_send_emailSend 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_batchSend up to 500 different emails in one call; each message takes the same fields as postmark_send_email
postmark_send_email_with_templateSend one email built from a stored template: pass TemplateId or TemplateAlias and the TemplateModel with the variables
postmark_send_batch_with_templatesSend up to 500 templated emails in one call, each with its own template, recipient and model
postmark_list_templatesList the templates of the server with id, alias, name, type (Standard or Layout), active flag and layout
postmark_get_templateGet one template by id or alias: name, subject, HTML and text body with their Mustachio variables, type and layout
postmark_create_templateCreate a template (Standard, or Layout to wrap other templates) with name, alias, subject and HTML/text bodies using Mustachio variables
postmark_update_templateEdit a template by id or alias: name, alias, subject, bodies or layout
postmark_delete_templateDelete a template for good by id or alias
postmark_validate_templateCheck template content without saving: Mustachio syntax errors, the variables it uses and a rendered preview with a test model
postmark_search_outbound_messagesSearch sent messages (last 45 days by default retention) by recipient, sender, tag, subject, status, stream, date range or one metadata…
postmark_get_outbound_messageDetails of one sent message by MessageID: recipients, subject, bodies, tag, metadata and the MessageEvents timeline (delivered, bounced…
postmark_search_inbound_messagesSearch inbound messages received by the server by recipient, sender, subject, mailbox hash, tag, status or date range
postmark_get_inbound_messageDetails of one inbound message: sender, recipients, subject, text and HTML body, headers, attachments list, status and the webhook…
postmark_retry_inbound_messageRetry posting a failed inbound message to the server's inbound webhook, e.g. after fixing the endpoint
postmark_list_message_opensList open events across messages with recipient, time, email client, OS, platform and location
postmark_get_message_opensList the open events of one message: each open with time, client, OS, platform and location
postmark_list_message_clicksList link click events across messages with recipient, clicked URL, time, browser, OS, platform and location
postmark_get_message_clicksList the link click events of one message: each click with the original link, time, browser, OS and location
postmark_get_delivery_statsBounce summary of the server: number of inactive (deactivated) addresses and the count of bounces per bounce type
postmark_list_bouncesList bounces with type, recipient, description, details, whether the address is now inactive and whether it can be activated
postmark_get_bounceGet one bounce by id: type, recipient, description, SMTP details, the related MessageID, Inactive and CanActivate flags
postmark_get_bounce_dumpGet the raw SMTP source of a bounce message (kept for 30 days), to read the receiving server's exact answer
postmark_activate_bounceReactivate an address deactivated by a bounce so it can receive email again
postmark_get_outbound_overviewSending overview for a period: sent, bounced, spam complaints, bounce and spam rates, opens, unique opens, tracked emails and link clicks
postmark_get_outbound_statsDaily counts of one metric for a period: sends, bounces (by type), spam, tracked, opens, opens by platform or email client, clicks, clicks…
postmark_list_suppressionsList suppressed addresses of a message stream (no email is sent to them) with the reason (HardBounce, SpamComplaint, ManualSuppression)…
postmark_create_suppressionsSuppress up to 50 addresses in a message stream so nothing is sent to them any more (ManualSuppression)
postmark_delete_suppressionsRemove up to 50 addresses from the suppression list of a stream so they can receive email again
postmark_list_message_streamsList the message streams of the server (Transactional, Broadcasts, Inbound) with id, name, description, unsubscribe handling and archive…
postmark_get_message_streamGet one message stream by id: name, type, description, unsubscribe handling, created, updated and archived dates
postmark_create_message_streamCreate 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_streamEdit a message stream: name, description or unsubscribe handling
postmark_archive_message_streamArchive 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_streamRestore an archived message stream within 45 days of archiving so it can send again
postmark_list_webhooksList the webhooks of the server with URL, stream, HTTP auth and headers, and which events trigger them (Open, Click, Delivery, Bounce…
postmark_get_webhookGet one webhook by id: URL, message stream, HTTP auth user, custom headers and enabled triggers
postmark_create_webhookCreate a webhook for a message stream: the URL and which events (opens, clicks, deliveries, bounces, spam complaints, subscription changes)…
postmark_update_webhookEdit a webhook: URL, HTTP auth, headers or triggers
postmark_delete_webhookDelete a webhook; Postmark stops posting those events to its URL
postmark_get_serverSettings of the server the token belongs to: id, name, color, inbound address and domain, tracking defaults, hook URLs and SMTP API state
postmark_list_serversList all servers of the account with id, name, color, API tokens and settings
postmark_get_server_by_idGet one server of the account by id with its settings and API tokens
postmark_list_domainsList the sending domains of the account with DKIM, Return-Path and SPF verification state
postmark_get_domainGet one domain with the DNS records to set (DKIM host and value, pending DKIM, Return-Path CNAME) and their verification state
postmark_verify_domain_dkimAsk Postmark to check the DKIM DNS record of a domain now, after the user has added it
postmark_verify_domain_return_pathAsk Postmark to check the Return-Path CNAME of a domain now
postmark_list_sender_signaturesList the sender signatures (single confirmed From addresses) of the account with confirmation and DKIM state
postmark_get_sender_signatureGet 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

Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.

What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.

The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.

Next steps

Was this guide helpful?

Your Postmark agent is one click away.

Install the connector, paste the key, prompt Microsoft Copilot. Free for 7 days, no credit card.

Related guides

Connectors

How to Connect Postmark to ChatGPT via MCP

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.

Connectors

How to Connect Postmark to Claude via MCP

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.

Connectors

How to Connect Postmark to Cursor via MCP

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.

Connectors

How to Connect Postmark to Gemini via MCP

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.

Connectors

How to Connect Postmark to Meta Muse via MCP

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.

Connectors

Postmark to MCP: Send Email, Templates, Message Search, Bounces and Delivery Stats in any AI Agent

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.