postmark-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| POSTMARK_TIMEOUT | No | Per-request timeout, in seconds | 30 |
| POSTMARK_BASE_URL | No | API base URL for testing | https://api.postmarkapp.com |
| POSTMARK_READ_ONLY | No | When truthy (1/true/yes/on), hide and block all write tools | false |
| POSTMARK_SERVER_TOKEN | Yes | Postmark server token (sent as X-Postmark-Server-Token) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| send_emailA | Send a single email with content supplied directly. Requires html_body and/or text_body. BLOCKED in read-only mode. |
| send_email_with_templateA | Send a single email rendered from a stored template. Provide exactly one of template_id or template_alias. The subject comes from the template. BLOCKED in read-only mode. |
| send_email_batchA | Send up to 500 individually-composed emails in one request. Returns one result per message; Postmark returns HTTP 200 even when individual messages fail, so inspect each element's ErrorCode/Message. BLOCKED in read-only mode. |
| send_email_batch_with_templatesA | Send up to 500 template-rendered emails in one request. Returns one result per message (inspect each element's ErrorCode/Message). BLOCKED in read-only mode. |
| list_templatesA | List templates and layouts on the server (paginated). |
| get_templateA | Fetch a single template's full details by ID or alias. |
| validate_templateA | Validate and render-preview template content. Persists nothing (safe to run). Provide at least one of subject, html_body, or text_body. |
| create_templateA | Create a new template or layout. BLOCKED in read-only mode. Provide at least one of html_body or text_body. |
| edit_templateA | Update an existing template. Only provided fields change. BLOCKED in read-only mode. |
| delete_templateA | Permanently delete a template by ID or alias. BLOCKED in read-only mode. |
| get_delivery_statsA | Get aggregate delivery statistics, including a per-type bounce breakdown. |
| list_bouncesA | Search bounces with optional filters (paginated; up to 10,000 results). |
| get_bounceA | Get the full detail record for a single bounce. |
| get_bounce_dumpA | Get the raw SMTP source/dump of a single bounce. |
| activate_bounceA | Reactivate a deactivated address tied to a bounce. BLOCKED in read-only mode. |
| search_outbound_messagesA | Search outbound messages with optional filters (paginated; up to 10,000 results). |
| get_outbound_message_detailsA | Get full detail for one outbound message, including body and message events. |
| search_message_opensA | Search email open events across outbound messages (requires open tracking). |
| search_message_clicksA | Search link click events across outbound messages (requires link tracking). |
| get_outbound_overviewB | Get a brief overview of statistics for all outbound email. |
| get_sent_countsA | Get the total count of sent emails, optionally bucketed over time. |
| get_bounce_countsB | Get counts of bounced emails, broken down by bounce type. |
| get_spam_countsB | Get the count of recipients who marked email as spam. |
| get_open_countsA | Get counts of recipients who opened emails (requires open tracking). |
| get_click_countsA | Get counts of unique link clicks (requires link tracking). |
| list_suppressionsA | List suppressions for a message stream, with optional filters. |
| create_suppressionsA | Add up to 50 addresses to a stream's suppression list. BLOCKED in read-only mode. |
| delete_suppressionsA | Remove up to 50 addresses from a stream's suppression list (reactivate them). SpamComplaint suppressions cannot be deleted. BLOCKED in read-only mode. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 28 tools
Most tools have clear, distinct purposes. The main ambiguity is among statistics tools: get_delivery_stats and get_outbound_overview both provide aggregate overviews, and get_bounce_counts overlaps with the bounce breakdown in get_delivery_stats.
All tool names follow a consistent verb_noun pattern in snake_case. Retrieval operations consistently use get_ for single items and list_ for collections, while action verbs like send, create, edit, delete, activate, validate, and search are used appropriately throughout.
At 28 tools, this server exceeds the recommended range, feeling heavy and somewhat redundant. The statistics surface alone accounts for 7 tools with overlapping functionalities, which could be consolidated.
The tool set provides comprehensive coverage of Postmark's email capabilities, including sending, templates, suppressions, bounces, and outbound message tracking. CRUD operations are present where applicable, and the inclusion of search and validation tools ensures agents can fully manage the email lifecycle.