mcpbeat Sign in

SpacePost MCP Server

by spacepost Your server? Claim it
answering

SpacePost is answering right now. Last checked 3 min ago. 445 installs a week from npm. It exposes 46 tools. Last commit 30 Oct 2026.

Send email and manage domains, contacts and webhooks on SpacePost, the Resend-compatible email API.

Installs per day peak 445 · avg 14
a month agotoday
Uptime history 69 hours of history
69 hours agonow
100.0%
Uptime 24h
91 of 91 checks
46
Tools
read from the server
232 ms
Response time
average over 24h
445
Installs / week
npm and PyPI

Nothing serious here today

Today is the operative word: we check SpacePost every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 3 min ago.

run in your terminal
claude mcp add mcp --transport http https://api.spacepost.dev/mcp
Settings → Connectors → Add custom connector, then paste this address
https://api.spacepost.dev/mcp
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://api.spacepost.dev/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.spacepost.dev/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp": {
      "type": "http",
      "url": "https://api.spacepost.dev/mcp"
    }
  }
}

Available tools 46

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

broadcast
create_broadcast
Create a broadcast. Creates a draft. The `from` address must belong to a verified domain of your team and `audience_id` to one of your audiences. Requires a `full_access` API key. API: `POST /broadcasts` (operationId `createBroadcast`, Broadcasts).
delete_broadcast
Delete a broadcast. Only drafts and broadcasts that are scheduled for the future can be deleted. Requires a `full_access` API key. API: `DELETE /broadcasts/{id}` (operationId `deleteBroadcast`, Broadcasts).
get_broadcast
Retrieve a broadcast. Requires a `full_access` API key. API: `GET /broadcasts/{id}` (operationId `getBroadcast`, Broadcasts).
get_broadcast_readiness
Check a broadcast before sending. SpacePost extension (not part of Resend). Returns a deliverability checklist: sender domain and DMARC, subject, Gmail clipping (HTML over 102 KB), image-heavy bodies, link shorteners, spam phrases, unsubscribe link and audience quality. `ready` is false when any check has level `error`; `POST /broadcasts/{id}/send` is then refused with `validation_error`. Warnings never block a send. Requires a `full_access` API key. API: `GET /broadcasts/{id}/readiness` (operationId `getBroadcastReadiness`, Broadcasts).
update_broadcast
Update a broadcast. Only drafts can be updated. Request body: Any field of the create request; only drafts can be updated. Requires a `full_access` API key. API: `PATCH /broadcasts/{id}` (operationId `updateBroadcast`, Broadcasts).
contact
create_contact
Create a contact. Emails are lower-cased. An address can only appear once per audience. Requires a `full_access` API key. API: `POST /audiences/{audienceId}/contacts` (operationId `createContact`, Contacts).
delete_contact
Delete a contact. Requires a `full_access` API key. API: `DELETE /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `deleteContact`, Contacts).
get_contact
Retrieve a contact. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `getContact`, Contacts).
update_contact
Update a contact. Requires a `full_access` API key. API: `PATCH /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `updateContact`, Contacts).
domain
create_domain
Create a domain. Registers a domain and returns the DNS records to add (three DKIM CNAMEs, plus MX and SPF on the MAIL FROM subdomain). Domain names are globally unique. The number of domains is limited by your plan (Free 3, Pro 10, Scale 1,000). The response lists the DNS records (DKIM CNAMEs, MAIL FROM MX and SPF TXT) the user must add at their DNS provider; afterwards call verify_domain and then get_domain to see the new status. DNS changes can take minutes to hours. Requires a `full_access` API key. API: `POST /domains` (operationId `createDomain`, Domains).
delete_domain
Delete a domain. Requires a `full_access` API key. API: `DELETE /domains/{id}` (operationId `deleteDomain`, Domains).
get_domain
Retrieve a domain. Requires a `full_access` API key. API: `GET /domains/{id}` (operationId `getDomain`, Domains).
update_domain
Update a domain. Toggles open and click tracking. Requires a `full_access` API key. API: `PATCH /domains/{id}` (operationId `updateDomain`, Domains).
tenant
create_tenant
Create a tenant. Creates one of your customers, with its own SES tenant (isolated reputation). `external_id` must be unique within your account. Requires a `full_access` API key. API: `POST /tenants` (operationId `createTenant`, Tenants).
delete_tenant
Delete a tenant. Fails with `422` while the tenant still has domains; delete those first. Requires a `full_access` API key. API: `DELETE /tenants/{ref}` (operationId `deleteTenant`, Tenants).
get_tenant
Retrieve a tenant. Requires a `full_access` API key. API: `GET /tenants/{ref}` (operationId `getTenant`, Tenants).
update_tenant
Update a tenant. Changes the name, `external_id` or `daily_limit` (`null` removes the cap). Requires a `full_access` API key. API: `PATCH /tenants/{ref}` (operationId `updateTenant`, Tenants).
webhook
create_webhook
Create a webhook. In production the endpoint must use https and resolve to a public address. Requires a `full_access` API key. API: `POST /webhooks` (operationId `createWebhook`, Webhooks).
delete_webhook
Delete a webhook. Requires a `full_access` API key. API: `DELETE /webhooks/{id}` (operationId `deleteWebhook`, Webhooks).
get_webhook
Retrieve a webhook. Requires a `full_access` API key. API: `GET /webhooks/{id}` (operationId `getWebhook`, Webhooks).
update_webhook
Update a webhook. Requires a `full_access` API key. API: `PATCH /webhooks/{id}` (operationId `updateWebhook`, Webhooks).
api
create_api_key
Create an API key. The `token` is returned only in this response. Requires a `full_access` API key. API: `POST /api-keys` (operationId `createApiKey`, API Keys).
delete_api_key
Delete an API key. The key stops working immediately. The response body is an empty object. Requires a `full_access` API key. API: `DELETE /api-keys/{id}` (operationId `deleteApiKey`, API Keys).
list_api_keys
List API keys. Requires a `full_access` API key. API: `GET /api-keys` (operationId `listApiKeys`, API Keys).
audience
create_audience
Create an audience. Requires a `full_access` API key. API: `POST /audiences` (operationId `createAudience`, Audiences).
delete_audience
Delete an audience. Also deletes its contacts. Requires a `full_access` API key. API: `DELETE /audiences/{id}` (operationId `deleteAudience`, Audiences).
get_audience
Retrieve an audience. Requires a `full_access` API key. API: `GET /audiences/{id}` (operationId `getAudience`, Audiences).
send
send_batch_emails
Send batch emails. Sends up to 100 emails in one call. All-or-nothing, if any email is invalid none are sent. Attachments, `scheduled_at` and a per-email `tenant_id` are supported; the paused-tenant and tenant-cap errors apply to the whole batch. Put the emails in `body` as an array. Prefer send_email for a single message. Works with a `sending_access` or `full_access` API key. API: `POST /emails/batch` (operationId `sendBatchEmails`, Emails).
send_broadcast
Send or schedule a broadcast. Queues a draft for delivery to every subscribed contact of its audience. The broadcast needs `html` or `text`. Without `scheduled_at` it starts immediately; the status becomes `queued`, then `sending` and `sent`. Sends to every subscribed contact in the audience. Run get_broadcast_readiness first and confirm with the user. Requires a `full_access` API key. API: `POST /broadcasts/{id}/send` (operationId `sendBroadcast`, Broadcasts).
send_email
Send an email. Validates and queues one email. Each recipient counts towards your quota. Use `scheduled_at` to send later (up to 30 days ahead). Pass `tenant_id` to send on behalf of a tenant (not needed when the `from` domain belongs to one). Fails with `422` if `tenant_id` conflicts with the domain's tenant, `403 sending_paused` if the tenant is paused and `429 daily_quota_exceeded` if it reached its daily cap. `from` must be on a verified domain (e.g. "Acme <[email protected]>"); call list_domains to find one. Provide `html`, `text` or both. Send to [email protected] (or bounced@ / complained@) to test without sending real mail. Delivered email cannot be recalled: confirm recipients and content with the user when unsure. Pass `idempotency_key` when retrying so the email is not sent twice. Request body: Either `html` or `text` is required. `reply_to` is also accepted as `replyTo` and `scheduled_at` as `scheduledAt`. Works with a `sending_access` or `full_access` API key. API: `POST /emails` (operationId `sendEmail`, Emails).
email
get_email
Retrieve an email. Requires a `full_access` API key. API: `GET /emails/{id}` (operationId `getEmail`, Emails).
update_email
Reschedule an email. Changes `scheduled_at` of an email that is still `scheduled`. Requires a `full_access` API key. API: `PATCH /emails/{id}` (operationId `updateEmail`, Emails).
suppression
create_suppression
Add a suppression. Adds the address with reason `manual`. Adding an address that is already suppressed returns the existing entry. Requires a `full_access` API key. API: `POST /suppressions` (operationId `createSuppression`, Suppressions).
delete_suppression
Remove a suppression. Requires a `full_access` API key. API: `DELETE /suppressions/{idOrEmail}` (operationId `deleteSuppression`, Suppressions).
audiences
list_audiences
List audiences. Requires a `full_access` API key. API: `GET /audiences` (operationId `listAudiences`, Audiences).
broadcasts
list_broadcasts
List broadcasts. Requires a `full_access` API key. API: `GET /broadcasts` (operationId `listBroadcasts`, Broadcasts).
cancel
cancel_email
Cancel a scheduled email. Requires a `full_access` API key. API: `POST /emails/{id}/cancel` (operationId `cancelEmail`, Emails).
contacts
list_contacts
List contacts. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts` (operationId `listContacts`, Contacts).
domains
list_domains
List domains. Requires a `full_access` API key. API: `GET /domains` (operationId `listDomains`, Domains).
emails
list_emails
List emails. Returns sent and scheduled emails, newest first, without bodies. Requires a `full_access` API key. API: `GET /emails` (operationId `listEmails`, Emails).
pause
pause_tenant
Pause a tenant. Stops all sending for the tenant. Sends return `403 sending_paused`; emails already queued fail. The body is optional. Requires a `full_access` API key. API: `POST /tenants/{ref}/pause` (operationId `pauseTenant`, Tenants).
suppressions
list_suppressions
List suppressions. Requires a `full_access` API key. API: `GET /suppressions` (operationId `listSuppressions`, Suppressions).
tenants
list_tenants
List tenants. Requires a `full_access` API key. API: `GET /tenants` (operationId `listTenants`, Tenants).
unpause
unpause_tenant
Unpause a tenant. Resumes sending. A tenant that was paused by the reputation guard (bounce or complaint rate) can only be unpaused by a `trusted` or `internal` team; others get `403 invalid_access` and should contact support. Requires a `full_access` API key. API: `POST /tenants/{ref}/unpause` (operationId `unpauseTenant`, Tenants).
verify
verify_domain
Verify a domain. Re-checks DNS now. Retrieve the domain afterwards to read the new `status` and per-record statuses. Requires a `full_access` API key. API: `POST /domains/{id}/verify` (operationId `verifyDomain`, Domains).
webhooks
list_webhooks
List webhooks. Requires a `full_access` API key. API: `GET /webhooks` (operationId `listWebhooks`, Webhooks).

Endpoints

URLTransportStateLatencyChecked
https://api.spacepost.dev/mcp streamable-http answering 319 ms 3 min ago

Alternatives to SpacePost

same job, measured the same way
Qmailing
by qmailing

AI agents read & send email, manage mailboxes, domains and webhooks via the QMailing API.

81 installs/wk answering
Sendhustle MCP
by achlesha

Send and manage email via the SendHustle API — emails, domains, contacts, audiences, campaigns.

34 installs/wk local only
Mailsend
by cloudcorprecords

Send and manage email, domains, audiences, and API keys through the Resend API.

local only
Send16 MCP
by spruikco

Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.

42 installs/wk 87 tools answering
Mailkite
by mailkite

Send email, manage domains, DNS, webhooks, templates, and inbound routing on MailKite

105 installs/wk answering
Unitpost
by unitpost

Email and SMS infrastructure, run by your agent: send, campaigns, contacts, domains, webhooks.

answering
Emailit
by emailit

Send email, run campaigns and automations, manage contacts and domains, fix deliverability.

answering
Groundmail
by groundmail

Send transactional email and manage domains, templates, webhooks and suppressions with Groundmail.

1 920 installs/wk answering

SpacePost — questions

Answers built from our own checks of this server.

What can SpacePost do?
It exposes 46 tools, read directly from the server on our last check. Among them: cancel_email, create_api_key, create_audience, create_broadcast, create_contact, create_domain and 40 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is SpacePost mostly used for?
Its tools cluster around broadcast, tenant and webhook. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is SpacePost working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 232 ms. The bar chart above shows every period we have measured.
How do I connect SpacePost?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does SpacePost need an API key?
No. SpacePost completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 46 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is SpacePost?
It answers our handshake in 232 ms on average, which is faster than 61% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use SpacePost?
The npm package @spacepost/mcp was installed 445 times in the last week. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is SpacePost open source?
The code is open source: it is published under the MIT licence, written in TypeScript and 0 stars on GitHub. The licence covers the code in the repository, not the hosted service at api.spacepost.dev, which runs on its operator's own terms.