mcp agent

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

by getpoststack·MIT license·★ 1 Stars on the repo·GitHub ↗

Files of mcp

getpoststack/main1 file
README.md
Show the full text293 lines

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

117 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 (Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project). npx @poststack.dev/mcp --print-config cursor prints the whole file.

Environment variables

Variable Required Description
POSTSTACK_API_KEY yes PostStack API key (sk_live_… or sk_test_…)
POSTSTACK_BASE_URL no API origin (default https://api.poststack.dev)
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 (117)
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
  • 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.
  • 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.
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 subject/body/variables/editor blocks, named "Copy of <name>", version 1, unpublished.
  • render_template — Server-side render a template with the provided variables.
broadcasts
  • create_broadcast — Create a draft broadcast targeted at a segment, optionally scoped to a subscription topic.
  • 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.
  • resend_broadcast — Resend a sent broadcast to the subset that didn't open or didn't click — a fresh broadcast is created targeting an auto-built segment of those recipients.
  • 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 a workflow's metadata and its graph (nodes + edges).
  • create_workflow — Create a new workflow (status=draft). Starts with a single trigger node and no other nodes.
  • update_workflow — Update a workflow's name, trigger type, or trigger config.
  • delete_workflow — Permanently delete a workflow, its graph (nodes + edges) and its run history. Only a draft or paused workflow can be deleted — an active one fails with 422 (pause_workflow first). Runs still in progress are deleted with it and take no further steps.
  • add_workflow_node — Add a node to a workflow's graph and (by default) wire it after an existing node.
  • connect_workflow_nodes — Add an edge between two nodes.
  • update_workflow_node — Replace a node's config. Cannot change its type or edges (use connect_workflow_nodes / remove_workflow_node).
  • remove_workflow_node — Remove a node and every edge touching it. Confirm with the user first.
  • 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 — Start a run of a workflow for one contact. Only works on an ACTIVE workflow whose trigger_type is "manual" — any other trigger type, or a draft/paused workflow, fails with 422 (use post_workflow_event for "custom" workflows).
  • post_workflow_event — Post an application-defined event, enrolling a contact into every ACTIVE workflow whose trigger is "custom" with a matching event name.
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
  • get_deliverability_signals — Read ISP deliverability-intelligence signals for a sending domain.
  • 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).
  • rotate_dkim_key — Start a DKIM key rotation for a domain.
  • activate_dkim_rotation — Cut over to the staged DKIM key, once its DNS record is published.
  • cancel_dkim_rotation — Abandon a staged DKIM rotation and remove its DNS record.
  • 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, webhook setting, auto-forwarding, or signature.
  • list_mailbox_filters — List a mailbox's server-side mail filters (Sieve rules), in the order they run.
  • set_mailbox_filters — Replace a mailbox's server-side mail filters. Runs on delivery, for every client.
  • 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 on this team's domains, newest first (one row per delivered-to recipient).
  • 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.
  • test_webhook — Send a test event to a webhook's URL to verify it's reachable and the signature verifies.
  • get_webhook_deliveries — List recent delivery attempts for a webhook (status, response code, timestamps).
  • replay_webhook_delivery — Re-deliver a single past webhook delivery (e.g. one that failed because the endpoint was down).
  • batch_replay_webhook_deliveries — Re-deliver EVERY failed delivery for a webhook, oldest first.
  • rotate_webhook_secret — Rotate a webhook's signing secret, keeping the old one valid for a grace window. The new secret is returned ONCE here.
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 a contact's explicit subscription-topic choices.
  • 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. Values already stored on contacts are left in place (they stay in each contact's properties; only the definition — its label, type and options — is deleted).
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.
  • rotate_api_key — Rotate an API key: issue a new secret and invalidate the old one. The new full key is returned ONCE in this response and cannot be retrieved again.
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.

License

MIT — see LICENSE.

1# @poststack.dev/mcp
2 
3Model Context Protocol server for the
4[PostStack](https://poststack.dev) Email API — an
5[EU-hosted, GDPR-compliant](https://poststack.dev/security)
6[email API for AI agents](https://poststack.dev/docs/mcp). Lets assistants
7like Claude, Cursor, and Windsurf send transactional email, draft replies
8from inbound threads, run deliverability checks, summarise broadcasts, and
9more — through one curated tool surface.
10 
11117 tools, 5 prompts, and 5 resources, all surfaced over either the local
12stdio bin or the hosted HTTP transport at `https://api.poststack.dev/mcp`.
13 
14Full MCP reference: [poststack.dev/docs/mcp](https://poststack.dev/docs/mcp).
15 
16## Quickstart
17 
18### Hosted (Claude.ai connector, hosted agents)
19 
20Point any MCP client at:
21 
22```
23https://api.poststack.dev/mcp
24```
25 
26Authenticate with your PostStack API key as a Bearer token. No local install required.
27 
28### Claude Desktop (stdio)
29 
30```json
31{
32 "mcpServers": {
33 "poststack": {
34 "command": "npx",
35 "args": ["-y", "@poststack.dev/mcp"],
36 "env": {
37 "POSTSTACK_API_KEY": "sk_live_your_api_key_here"
38 }
39 }
40 }
41}
42```
43 
44Config file location:
45 
46- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
47- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
48 
49You can also generate the snippet with:
50 
51```bash
52npx @poststack.dev/mcp --print-config claude-desktop
53```
54 
55### Claude Code
56 
57```bash
58claude mcp add poststack -e POSTSTACK_API_KEY=sk_live_your_api_key_here -- npx -y @poststack.dev/mcp
59```
60 
61### Cursor / VS Code
62 
63Same JSON shape as Claude Desktop, in the editor's MCP settings (Cursor:
64`~/.cursor/mcp.json`, or `.cursor/mcp.json` in a project).
65`npx @poststack.dev/mcp --print-config cursor` prints the whole file.
66 
67## Environment variables
68 
69| Variable | Required | Description |
70| --------------------- | -------- | ----------------------------------------------------------- |
71| `POSTSTACK_API_KEY` | yes | PostStack API key (`sk_live_…` or `sk_test_…`) |
72| `POSTSTACK_BASE_URL` | no | API origin (default `https://api.poststack.dev`) |
73| `POSTSTACK_MCP_TRACE` | no | Set to `1` to emit per-tool-call NDJSON telemetry to stderr |
74 
75## What the agent gets
76 
77The 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.
78 
79### Worked example: welcome email
80 
81The `draft_welcome_email` prompt walks an agent through:
82 
831. `get_contact_by_email` — confirm the contact and capture properties
842. `list_templates` — pick a published welcome template
853. `render_template` — render with the contact's properties; surface any missing variables
864. `suggest_from_address` — pick a verified from-address based on existing mailboxes
875. `preview_email` — render + spam check + deliverability warnings in one round-trip
886. `send_email` — only if preview passed
89 
90Other prompts cover re-engagement, follow-up campaigns to non-clickers, broadcast summaries, and inbound triage.
91 
92## Reference
93 
94<!-- TOOLS:START -->
95 
96### Tools (117)
97 
98#### emails
99 
100- `send_email` — Send a single transactional email immediately, or schedule it for a future time.
101- `send_batch_emails` — Send multiple emails in a single batch request (up to 100 per call).
102- `list_emails` — List previously-sent emails with optional filters and pagination.
103- `get_email` — Get full details and event timeline for a specific email by id.
104- `cancel_email` — Cancel a scheduled email that has not yet entered the sending pipeline.
105- `reschedule_email` — Reschedule a scheduled email to a new send time.
106- `lint_email` — Run a Rspamd-backed spam pre-flight on a draft email and return the score, action, and per-rule symbols.
107- `preview_email` — Render + lint + measure an email in one shot WITHOUT sending it.
108 
109#### email-validations
110 
111- `validate_email` — Check whether an email address is safe to send to BEFORE create_contact or send_email.
112- `validate_email_batch` — Validate up to 100 email addresses in a single call. Same checks as validate_email per address.
113 
114#### contacts
115 
116- `get_contact_activity` — Get a contact's recent email-event timeline grouped by event type (sent / delivered / opened / clicked / bounced / complained / failed).
117- `get_engagement_summary` — Get a single contact's engagement summary: segment + lifetime counts + open / click rates + last open / click + top tags.
118- `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.
119- `create_contact` — Create a new contact (person who can receive emails / broadcasts).
120- `list_contacts` — List contacts with optional search and segment filtering.
121- `get_contact` — Get full details of a contact by id.
122- `update_contact` — Update an existing contact's name, properties, or subscription state.
123- `delete_contact` — Permanently delete a contact (irreversible — use unsubscribe_contact for opt-outs).
124- `unsubscribe_contact` — Mark a contact as unsubscribed from all email (preserves the contact record).
125- `get_contact_by_email` — Look up a contact by their email address.
126 
127#### templates
128 
129- `create_template` — Create a new email template with {{variable}} placeholders.
130- `list_templates` — List email templates.
131- `get_template` — Get a template's full body, subject and variables.
132- `update_template` — Update an existing template's name, subject, body or variable list.
133- `delete_template` — Permanently delete a template (irreversible).
134- `publish_template` — Mark a template as published so it can be referenced by send_email.
135- `unpublish_template` — Mark a template as unpublished so it cannot be sent.
136- `duplicate_template` — Create a copy of an existing template: new id, same subject/body/variables/editor blocks, named "Copy of <name>", version 1, unpublished.
137- `render_template` — Server-side render a template with the provided variables.
138 
139#### broadcasts
140 
141- `create_broadcast` — Create a draft broadcast targeted at a segment, optionally scoped to a subscription topic.
142- `list_broadcasts` — List broadcasts.
143- `get_broadcast` — Get a broadcast's details and aggregate delivery stats.
144- `update_broadcast` — Edit a draft broadcast in place. Only draft broadcasts can be updated.
145- `send_broadcast` — Dispatch a draft broadcast to its segment immediately.
146- `resend_broadcast` — Resend a sent broadcast to the subset that didn't open or didn't click — a fresh broadcast is created targeting an auto-built segment of those recipients.
147- `cancel_broadcast` — Cancel a queued or sending broadcast.
148- `broadcast_performance` — Get broadcast performance — either for one broadcast (variant breakdown if A/B) or for a leaderboard ranked by a chosen metric.
149- `find_non_clickers` — List contacts who received a broadcast but did NOT click any tracked link in it.
150 
151#### segments
152 
153- `create_segment` — Create a static contact segment (manually-managed list).
154- `list_segments` — List contact segments.
155- `get_segment` — Get a segment's details and member count.
156- `update_segment` — Rename an existing segment.
157- `delete_segment` — Delete a segment definition. Contacts in it are NOT deleted.
158- `add_contacts_to_segment` — Add one or more contacts to a segment.
159- `remove_contact_from_segment` — Remove a single contact from a segment.
160 
161#### workflows
162 
163- `list_workflows` — List all workflows (event-triggered automation pipelines) defined for this team.
164- `get_workflow` — Get a workflow's metadata and its graph (nodes + edges).
165- `create_workflow` — Create a new workflow (status=draft). Starts with a single trigger node and no other nodes.
166- `update_workflow` — Update a workflow's name, trigger type, or trigger config.
167- `delete_workflow` — Permanently delete a workflow, its graph (nodes + edges) and its run history. Only a draft or paused workflow can be deleted — an active one fails with 422 (pause_workflow first). Runs still in progress are deleted with it and take no further steps.
168- `add_workflow_node` — Add a node to a workflow's graph and (by default) wire it after an existing node.
169- `connect_workflow_nodes` — Add an edge between two nodes.
170- `update_workflow_node` — Replace a node's config. Cannot change its type or edges (use connect_workflow_nodes / remove_workflow_node).
171- `remove_workflow_node` — Remove a node and every edge touching it. Confirm with the user first.
172- `activate_workflow` — Move a workflow from draft/paused to active so new trigger events start runs.
173- `pause_workflow` — Pause an active workflow so new trigger events DO NOT start runs. In-flight runs continue to completion.
174- `trigger_workflow` — Start a run of a workflow for one contact. Only works on an ACTIVE workflow whose trigger_type is "manual" — any other trigger type, or a draft/paused workflow, fails with 422 (use post_workflow_event for "custom" workflows).
175- `post_workflow_event` — Post an application-defined event, enrolling a contact into every ACTIVE workflow whose trigger is "custom" with a matching event name.
176 
177#### signup-forms
178 
179- `list_signup_forms` — List embeddable signup forms.
180- `get_signup_form` — Get full details of a signup form including its fields, target segment, and submission count.
181- `create_signup_form` — Create an embeddable signup form. Submissions create a contact and optionally add them to a segment / subscription topic.
182- `update_signup_form` — Update a signup form's fields, target segment/topic, messaging, or active state.
183- `delete_signup_form` — Permanently delete a signup form. Embedded copies on existing pages will fail with 404.
184 
185#### domains
186 
187- `get_deliverability_signals` — Read ISP deliverability-intelligence signals for a sending domain.
188- `create_domain` — Add a new sending domain to PostStack.
189- `list_domains` — List sending domains.
190- `get_domain` — Get domain details including DNS records and verification status.
191- `verify_domain` — Trigger DNS verification for a domain.
192- `update_domain` — Update domain settings (tracking, TLS, inbound, BIMI, sending stream).
193- `delete_domain` — Permanently delete a sending domain (irreversible — historical email records remain).
194- `rotate_dkim_key` — Start a DKIM key rotation for a domain.
195- `activate_dkim_rotation` — Cut over to the staged DKIM key, once its DNS record is published.
196- `cancel_dkim_rotation` — Abandon a staged DKIM rotation and remove its DNS record.
197- `check_deliverability` — Check whether a from-address is safe to send from RIGHT NOW.
198 
199#### mailboxes
200 
201- `create_mailbox` — Provision a mailbox (IMAP/SMTP inbox) on a verified domain.
202- `list_mailboxes` — List mailboxes across all domains.
203- `get_mailbox` — Get a mailbox's metadata (status, quota, last login).
204- `update_mailbox` — Update a mailbox's display name, quota, status, webhook setting, auto-forwarding, or signature.
205- `list_mailbox_filters` — List a mailbox's server-side mail filters (Sieve rules), in the order they run.
206- `set_mailbox_filters` — Replace a mailbox's server-side mail filters. Runs on delivery, for every client.
207- `delete_mailbox` — Permanently delete a mailbox and all its stored mail.
208- `change_mailbox_password` — Reset a mailbox's IMAP/SMTP password.
209- `suggest_from_address` — Suggest sensible from-addresses for a given purpose, drawn from the team's verified domains + existing mailboxes.
210 
211#### inbound-emails
212 
213- `list_inbound_emails` — List inbound emails received on this team's domains, newest first (one row per delivered-to recipient).
214- `get_inbound_email` — Get a received inbound email's full headers and body.
215- `list_inbound_email_attachments` — List attachments on an inbound email (filename, size, contentType).
216- `reply_to_inbound_email` — Send a reply to an inbound email (subject and threading headers are set automatically).
217- `forward_inbound_email` — Forward an inbound email to other recipients with an optional cover note.
218- `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.
219 
220#### webhooks
221 
222- `create_webhook` — Subscribe a URL to receive event notifications via signed POST requests.
223- `list_webhooks` — List configured webhook endpoints.
224- `get_webhook` — Get a webhook's details.
225- `update_webhook` — Edit a webhook's URL, event list, or enabled state.
226- `delete_webhook` — Permanently delete a webhook endpoint.
227- `test_webhook` — Send a test event to a webhook's URL to verify it's reachable and the signature verifies.
228- `get_webhook_deliveries` — List recent delivery attempts for a webhook (status, response code, timestamps).
229- `replay_webhook_delivery` — Re-deliver a single past webhook delivery (e.g. one that failed because the endpoint was down).
230- `batch_replay_webhook_deliveries` — Re-deliver EVERY failed delivery for a webhook, oldest first.
231- `rotate_webhook_secret` — Rotate a webhook's signing secret, keeping the old one valid for a grace window. The new secret is returned ONCE here.
232 
233#### subscription-topics
234 
235- `create_subscription_topic` — Create a subscription topic (named opt-in/opt-out preference like "Product Updates").
236- `list_subscription_topics` — List all subscription topics defined for this account.
237- `delete_subscription_topic` — Permanently delete a subscription topic. Subscriptions are removed.
238- `get_contact_subscriptions` — List a contact's explicit subscription-topic choices.
239- `subscribe_contact_to_topic` — Opt a contact in to a subscription topic.
240- `unsubscribe_contact_from_topic` — Opt a contact out of a subscription topic.
241 
242#### contact-properties
243 
244- `create_contact_property` — Define a custom contact property (typed schema for the contact.properties field).
245- `list_contact_properties` — List all custom contact properties defined for this account.
246- `update_contact_property` — Edit a custom contact property's label, options or required flag.
247- `delete_contact_property` — Remove a custom contact property definition. Values already stored on contacts are left in place (they stay in each contact's properties; only the definition — its label, type and options — is deleted).
248 
249#### suppressions
250 
251- `list_suppressions` — List suppressed email addresses (will not receive any emails).
252- `add_suppression` — Block an email address from receiving any future sends.
253- `remove_suppression` — Remove an address from the suppression list (sends will resume).
254 
255#### api-keys
256 
257- `create_api_key` — Generate a new PostStack API key. The full key is returned ONCE in this response and cannot be retrieved again.
258- `list_api_keys` — List API keys (only the prefix is returned, never the full secret).
259- `get_api_key` — Get an API key's metadata (the secret is never returned after creation).
260- `revoke_api_key` — Permanently revoke an API key — all subsequent requests using it will fail.
261- `rotate_api_key` — Rotate an API key: issue a new secret and invalidate the old one. The new full key is returned ONCE in this response and cannot be retrieved again.
262 
263### Prompts (5)
264 
265- `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.
266- `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.
267- `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.
268- `summarize_campaign` — Produce a short performance report for a broadcast: headline metrics, A/B winner if applicable, and a one-line recommendation.
269- `triage_inbound` — Read an inbound email, classify it (support / sales / billing / spam / other), and propose the next action. Drafts a reply skeleton if appropriate.
270 
271### Resources (5)
272 
273- `poststack://templates` — List of all email templates for the authenticated team. Includes id, name, subject, version, published flag.
274- `poststack://templates/{id}` — A single template by publicId — full body, subject, variables.
275- `poststack://domains` — List of sending domains for the authenticated team — name, status, DNS records, tracking flags.
276- `poststack://segments` — List of contact segments for the authenticated team — id, name, contact count.
277- `poststack://brand` — Authenticated team identity + a default sending suggestion. Includes team name, verified domain count, and the recommended from-address derived from existing mailboxes.
278 
279<!-- TOOLS:END -->
280 
281## Links
282 
283- [PostStack — EU email API](https://poststack.dev)
284- [MCP server documentation](https://poststack.dev/docs/mcp) — full tool / prompt / resource reference
285- [Hosted MCP transport](https://api.poststack.dev/mcp) — no local install required
286- [TypeScript SDK](https://poststack.dev/docs/sdk) · [REST API](https://poststack.dev/docs)
287- [Pricing](https://poststack.dev/pricing) — free 3,000 emails/month
288- [Status](https://poststack.dev/status) · [Security](https://poststack.dev/security)
289 
290## License
291 
292MIT — see [LICENSE](./LICENSE).
293 

Discussion

Alternatives