Skip to content

getpoststack/mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@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.

84 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 -- npx -y @poststack.dev/mcp -e POSTSTACK_API_KEY=sk_live_your_api_key_here

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:

  1. get_contact_by_email — confirm the contact and capture properties
  2. list_templates — pick a published welcome template
  3. render_template — render with the contact's properties; surface any missing variables
  4. suggest_from_address — pick a verified from-address based on existing mailboxes
  5. preview_email — render + spam check + deliverability warnings in one round-trip
  6. send_email — only if preview passed

Other prompts cover re-engagement, follow-up campaigns to non-clickers, broadcast summaries, and inbound triage.

Reference

Tools (84)

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.

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.

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 (open/click tracking, TLS mode).
  • 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

License

MIT — see LICENSE.

About

MCP server for the PostStack Email API — 84 tools, 5 prompts, 5 resources for AI agents.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

No contributors