getpoststack/mcp
๐ โ๏ธ ๐ ๐ช ๐ง - EU-hosted email API exposed as MCP tools โ send transactional and marketing email, manage contacts and segments, run broadcasts, render templates, and read analytics from Claude/Cursor. GDPR compliant, EU-only data residency (Germany + Finland). npx -y @poststack.dev/mcp.
Quick Install
{
"mcpServers": {
"getpoststack-mcp": {
"command": "npx",
"args": [
"-y",
"getpoststack-mcp"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
@poststack.dev/mcp
Model Context Protocol server for the PostStack Email API โ an EU-hosted, GDPR-compliant email API for AI agents. Lets assistants like Claude, Cursor, and Windsurf send transactional email, draft replies from inbound threads, run deliverability checks, summarise broadcasts, and more โ through one curated tool surface.
102 tools, 5 prompts, and 5 resources, all surfaced over either the local
stdio bin or the hosted HTTP transport at https://api.poststack.dev/mcp.
Full MCP reference: poststack.dev/docs/mcp.
Quickstart
Hosted (Claude.ai connector, hosted agents)
Point any MCP client at:
https://api.poststack.dev/mcp
Authenticate with your PostStack API key as a Bearer token. No local install required.
Claude Desktop (stdio)
{
"mcpServers": {
"poststack": {
"command": "npx",
"args": ["-y", "@poststack.dev/mcp"],
"env": {
"POSTSTACK_API_KEY": "sk_live_your_api_key_here"
}
}
}
}
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
You can also generate the snippet with:
npx @poststack.dev/mcp --print-config claude-desktop
Claude Code
claude mcp add poststack -e POSTSTACK_API_KEY=sk_live_your_api_key_here -- npx -y @poststack.dev/mcp
Cursor / VS Code
Same JSON shape as Claude Desktop, in the editor's MCP settings.
Environment variables
| Variable | Required | Description |
|---|---|---|
POSTSTACK_API_KEY | yes | PostStack API key (sk_live_โฆ or sk_test_โฆ) |
POSTSTACK_MCP_TRACE | no | Set to 1 to emit per-tool-call NDJSON telemetry to stderr |
What the agent gets
The MCP server doesn't just mirror the REST API โ it gives agents the context tools they need to make sensible decisions: spam-checking before sending, deliverability summaries before picking a from-address, engagement scores before re-engaging a contact.
Worked example: welcome email
The draft_welcome_email prompt walks an agent through:
get_contact_by_emailโ confirm the contact and capture propertieslist_templatesโ pick a published welcome templaterender_templateโ render with the contact's properties; surface any missing variablessuggest_from_addressโ pick a verified from-address based on existing mailboxespreview_emailโ render + spam check + deliverability warnings in one round-tripsend_emailโ only if preview passed
Other prompts cover re-engagement, follow-up campaigns to non-clickers, broadcast summaries, and inbound triage.
Reference
Tools (102)
emails
send_emailโ Send a single transactional email immediately, or schedule it for a future time.send_batch_emailsโ Send multiple emails in a single batch request (up to 100 per call).list_emailsโ List previously-sent emails with optional filters and pagination.get_emailโ Get full details and event timeline for a specific email by id.cancel_emailโ Cancel a scheduled email that has not yet entered the sending pipeline.reschedule_emailโ Reschedule a scheduled email to a new send time.lint_emailโ Run a Rspamd-backed spam pre-flight on a draft email and return the score, action, and per-rule symbols.preview_emailโ Render + lint + measure an email in one shot WITHOUT sending it.
email-validations
validate_emailโ Check whether an email address is safe to send to BEFORE create_contact or send_email.validate_email_batchโ Validate up to 100 email addresses in a single call. Same checks as validate_email per address.
contacts
create_contactโ Create a new contact (person who can receive emails / broadcasts).list_contactsโ List contacts with optional search and segment filtering.get_contactโ Get full details of a contact by id.update_contactโ Update an existing contact's name, properties, or subscription state.delete_contactโ Permanently delete a contact (irreversible โ use unsubscribe_contact for opt-outs).unsubscribe_contactโ Mark a contact as unsubscribed from all email (preserves the contact record).get_contact_by_emailโ Look up a contact by their email address.get_contact_activityโ Get a contact's recent email-event timeline grouped by event type (sent / delivered / opened / clicked / bounced / complained / failed).get_engagement_summaryโ Get a single contact's engagement summary: segment + lifetime counts + open / click rates + last open / click + top tags.search_contactsโ Search contacts with filters (segment, engagement, unsubscribed) and a fuzzy query across email/first_name/last_name. Adds a match_reason on each row indicating which field matched the query.
templates
create_templateโ Create a new email template with {{variable}} placeholders.list_templatesโ List email templates.get_templateโ Get a template's full body, subject and variables.update_templateโ Update an existing template's name, subject, body or variable list.delete_templateโ Permanently delete a template (irreversible).publish_templateโ Mark a template as published so it can be referenced by send_email.unpublish_templateโ Mark a template as unpublished so it cannot be sent.duplicate_templateโ Create a copy of an existing template (new id, same body, name suffixed " (copy)").render_templateโ Server-side render a template with the provided variables.
broadcasts
create_broadcastโ Create a draft broadcast targeted at a segment.list_broadcastsโ List broadcasts.get_broadcastโ Get a broadcast's details and aggregate delivery stats.update_broadcastโ Edit a draft broadcast in place. Only draft broadcasts can be updated.send_broadcastโ Dispatch a draft broadcast to its segment immediately.cancel_broadcastโ Cancel a queued or sending broadcast.broadcast_performanceโ Get broadcast performance โ either for one broadcast (variant breakdown if A/B) or for a leaderboard ranked by a chosen metric.find_non_clickersโ List contacts who received a broadcast but did NOT click any tracked link in it.
segments
create_segmentโ Create a static contact segment (manually-managed list).list_segmentsโ List contact segments.get_segmentโ Get a segment's details and member count.update_segmentโ Rename an existing segment.delete_segmentโ Delete a segment definition. Contacts in it are NOT deleted.add_contacts_to_segmentโ Add one or more contacts to a segment.remove_contact_from_segmentโ Remove a single contact from a segment.
workflows
list_workflowsโ List all workflows (event-triggered automation pipelines) defined for this team.get_workflowโ Get full details of a workflow including its ordered steps.create_workflowโ Create a new workflow shell (no steps yet, status=draft).update_workflowโ Update a workflow's name, trigger type, or trigger config.delete_workflowโ Permanently delete a workflow and its steps. In-flight runs are NOT cancelled โ they finish on the live engine.add_workflow_stepโ Append (or insert) a step to a workflow.update_workflow_stepโ Update a step's config. Cannot change step_type or position โ delete and re-add for that.remove_workflow_stepโ Remove a step from a workflow. Remaining steps keep their positions (gaps are allowed).activate_workflowโ Move a workflow from draft/paused to active so new trigger events start runs.pause_workflowโ Pause an active workflow so new trigger events DO NOT start runs. In-flight runs continue to completion.trigger_workflowโ Manually fire a workflow for a specific contact. Works for any trigger_type, but most useful for "manual" workflows.
signup-forms
list_signup_formsโ List embeddable signup forms.get_signup_formโ Get full details of a signup form including its fields, target segment, and submission count.create_signup_formโ Create an embeddable signup form. Submissions create a contact and optionally add them to a segment / subscription topic.update_signup_formโ Update a signup form's fields, target segment/topic, messaging, or active state.delete_signup_formโ Permanently delete a signup form. Embedded copies on existing pages will fail with 404.
domains
create_domainโ Add a new sending domain to PostStack.list_domainsโ List sending domains.get_domainโ Get domain details including DNS records and verification status.verify_domainโ Trigger DNS verification for a domain.update_domainโ Update domain settings (tracking, TLS, inbound, BIMI, sending stream).delete_domainโ Permanently delete a sending domain (irreversible โ historical email records remain).check_deliverabilityโ Check whether a from-address is safe to send from RIGHT NOW.
mailboxes
create_mailboxโ Provision a mailbox (IMAP/SMTP inbox) on a verified domain.list_mailboxesโ List mailboxes across all domains.get_mailboxโ Get a mailbox's metadata (status, quota, last login).update_mailboxโ Update a mailbox's display name, quota, status, or webhook setting.delete_mailboxโ Permanently delete a mailbox and all its stored mail.change_mailbox_passwordโ Reset a mailbox's IMAP/SMTP password.suggest_from_addressโ Suggest sensible from-addresses for a given purpose, drawn from the team's verified domains + existing mailboxes.
inbound-emails
list_inbound_emailsโ List inbound emails received by mailboxes on this account.get_inbound_emailโ Get a received inbound email's full headers and body.list_inbound_email_attachmentsโ List attachments on an inbound email (filename, size, contentType).reply_to_inbound_emailโ Send a reply to an inbound email (subject and threading headers are set automatically).forward_inbound_emailโ Forward an inbound email to other recipients with an optional cover note.draft_from_threadโ Build a reply-draft skeleton for an inbound email โ proper threading, quoted original, salutation/sign-off, suggested from + subject. Heuristic only; the agent fills in the body text.
webhooks
create_webhookโ Subscribe a URL to receive event notifications via signed POST requests.list_webhooksโ List configured webhook endpoints.get_webhookโ Get a webhook's details.update_webhookโ Edit a webhook's URL, event list, or enabled state.delete_webhookโ Permanently delete a webhook endpoint.
subscription-topics
create_subscription_topicโ Create a subscription topic (named opt-in/opt-out preference like "Product Updates").list_subscription_topicsโ List all subscription topics defined for this account.delete_subscription_topicโ Permanently delete a subscription topic. Subscriptions are removed.get_contact_subscriptionsโ List the subscription topics a contact is currently opted in to.subscribe_contact_to_topicโ Opt a contact in to a subscription topic.unsubscribe_contact_from_topicโ Opt a contact out of a subscription topic.
contact-properties
create_contact_propertyโ Define a custom contact property (typed schema for the contact.properties field).list_contact_propertiesโ List all custom contact properties defined for this account.update_contact_propertyโ Edit a custom contact property's label, options or required flag.delete_contact_propertyโ Remove a custom contact property definition. Existing contact values for this property are dropped.
suppressions
list_suppressionsโ List suppressed email addresses (will not receive any emails).add_suppressionโ Block an email address from receiving any future sends.remove_suppressionโ Remove an address from the suppression list (sends will resume).
api-keys
create_api_keyโ Generate a new PostStack API key. The full key is returned ONCE in this response and cannot be retrieved again.list_api_keysโ List API keys (only the prefix is returned, never the full secret).get_api_keyโ Get an API key's metadata (the secret is never returned after creation).revoke_api_keyโ Permanently revoke an API key โ all subsequent requests using it will fail.
Prompts (5)
draft_welcome_emailโ Guide the agent through drafting and sending a personalised welcome email to a new contact. Looks the contact up, picks a published welcome template, renders it, lints, and sends.reengage_dormantโ Find dormant contacts and draft a re-engagement campaign. Pulls the dormant segment, picks an opt-out-friendly template, and stages a broadcast for review.followup_non_clickersโ Demo B path โ find the best-performing recent broadcast, identify recipients who did NOT click, and draft a follow-up to them.summarize_campaignโ Produce a short performance report for a broadcast: headline metrics, A/B winner if applicable, and a one-line recommendation.triage_inboundโ Read an inbound email, classify it (support / sales / billing / spam / other), and propose the next action. Drafts a reply skeleton if appropriate.
Resources (5)
poststack://templatesโ List of all email templates for the authenticated team. Includes id, name, subject, version, published flag.poststack://templates/{id}โ A single template by publicId โ full body, subject, variables.poststack://domainsโ List of sending domains for the authenticated team โ name, status, DNS records, tracking flags.poststack://segmentsโ List of contact segments for the authenticated team โ id, name, contact count.poststack://brandโ Authenticated team identity + a default sending suggestion. Includes team name, verified domain count, and the recommended from-address derived from existing mailboxes.
Links
- PostStack โ EU email API
- MCP server documentation โ full tool / prompt / resource reference
- Hosted MCP transport โ no local install required
- TypeScript SDK ยท REST API
- Pricing โ free 3,000 emails/month
- Status ยท Security
License
MIT โ see LICENSE.