Horizontal

WorksWork and collaboration

SpacePost

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

Addresshttps://api.spacepost.dev/mcp
Claude Codeclaude mcp add --transport http mcp https://api.spacepost.dev/mcp
For Cursor and other clients
{
  "mcpServers": {
    "mcp": {
      "type": "http",
      "url": "https://api.spacepost.dev/mcp"
    }
  }
}

It asks for: Authorization

Watch out

Has tools that change things: 10 of them

The server itself marks these tools as deleting or overwriting data (destructiveHint): have the agent ask you before it calls them.

Test
Works: Handshake succeeded
Tools
46 tools
Handshake
1.3 s
Transport
streamable-http · 2025-06-18
Tested
6 November 2026
Registry name
dev.spacepost/mcp v0.2.2
Listed
4 November 2026
Updated
4 November 2026
Website
docs.spacepost.dev/tools/mcp/
Source
github.com/404-studio/spacepost-mcp
Also as a package
1 package
The last 1 tests
WhenResultTime
2026-11-06 12:23 UTCHandshake succeeded1.3 s

The 46 tools it listed

"Read only" and "Changes data" are the server's own marks. Underlined parameters are required.

  1. cancel_emailChanges data

    Cancel a scheduled email

    Cancel a scheduled email. Requires a `full_access` API key. API: `POST /emails/{id}/cancel` (operationId `cancelEmail`, Emails).

    id

  2. create_api_key

    Create an 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).

    name permission domain_id

  3. create_audience

    Create an audience

    Create an audience. Requires a `full_access` API key. API: `POST /audiences` (operationId `createAudience`, Audiences).

    name

  4. create_broadcast

    Create a 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).

    audience_id from subject reply_to preview_text html text name

  5. create_contact

    Create a 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).

    audience_id email first_name last_name unsubscribed

  6. create_domain

    Create a 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).

    name region custom_return_path tenant_id

  7. create_suppression

    Add a 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).

    email

  8. create_tenant

    Create a 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).

    name external_id daily_limit

  9. create_webhook

    Create a 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).

    endpoint events

  10. delete_api_keyChanges data

    Delete an 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).

    id

  11. delete_audienceChanges data

    Delete an audience

    Delete an audience. Also deletes its contacts. Requires a `full_access` API key. API: `DELETE /audiences/{id}` (operationId `deleteAudience`, Audiences).

    id

  12. delete_broadcastChanges data

    Delete a 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).

    id

  13. delete_contactChanges data

    Delete a contact

    Delete a contact. Requires a `full_access` API key. API: `DELETE /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `deleteContact`, Contacts).

    audience_id id_or_email

  14. delete_domainChanges data

    Delete a domain

    Delete a domain. Requires a `full_access` API key. API: `DELETE /domains/{id}` (operationId `deleteDomain`, Domains).

    id

  15. delete_suppressionChanges data

    Remove a suppression

    Remove a suppression. Requires a `full_access` API key. API: `DELETE /suppressions/{idOrEmail}` (operationId `deleteSuppression`, Suppressions).

    id_or_email

  16. delete_tenantChanges data

    Delete a 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).

    ref

  17. delete_webhookChanges data

    Delete a webhook

    Delete a webhook. Requires a `full_access` API key. API: `DELETE /webhooks/{id}` (operationId `deleteWebhook`, Webhooks).

    id

  18. get_audienceRead only

    Retrieve an audience

    Retrieve an audience. Requires a `full_access` API key. API: `GET /audiences/{id}` (operationId `getAudience`, Audiences).

    id

  19. get_broadcastRead only

    Retrieve a broadcast

    Retrieve a broadcast. Requires a `full_access` API key. API: `GET /broadcasts/{id}` (operationId `getBroadcast`, Broadcasts).

    id

  20. get_broadcast_readinessRead only

    Check a broadcast before sending

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

    id

  21. get_contactRead only

    Retrieve a contact

    Retrieve a contact. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `getContact`, Contacts).

    audience_id id_or_email

  22. get_domainRead only

    Retrieve a domain

    Retrieve a domain. Requires a `full_access` API key. API: `GET /domains/{id}` (operationId `getDomain`, Domains).

    id

  23. get_emailRead only

    Retrieve an email

    Retrieve an email. Requires a `full_access` API key. API: `GET /emails/{id}` (operationId `getEmail`, Emails).

    id

  24. get_tenantRead only

    Retrieve a tenant

    Retrieve a tenant. Requires a `full_access` API key. API: `GET /tenants/{ref}` (operationId `getTenant`, Tenants).

    ref

  25. get_webhookRead only

    Retrieve a webhook

    Retrieve a webhook. Requires a `full_access` API key. API: `GET /webhooks/{id}` (operationId `getWebhook`, Webhooks).

    id

  26. list_api_keysRead only

    List API keys

    List API keys. Requires a `full_access` API key. API: `GET /api-keys` (operationId `listApiKeys`, API Keys).

    limit after before

  27. list_audiencesRead only

    List audiences

    List audiences. Requires a `full_access` API key. API: `GET /audiences` (operationId `listAudiences`, Audiences).

    limit after before

  28. list_broadcastsRead only

    List broadcasts

    List broadcasts. Requires a `full_access` API key. API: `GET /broadcasts` (operationId `listBroadcasts`, Broadcasts).

    limit after before

  29. list_contactsRead only

    List contacts

    List contacts. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts` (operationId `listContacts`, Contacts).

    audience_id limit after before

  30. list_domainsRead only

    List domains

    List domains. Requires a `full_access` API key. API: `GET /domains` (operationId `listDomains`, Domains).

    limit after before

  31. list_emailsRead only

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

    limit after before

  32. list_suppressionsRead only

    List suppressions

    List suppressions. Requires a `full_access` API key. API: `GET /suppressions` (operationId `listSuppressions`, Suppressions).

    limit after before

  33. list_tenantsRead only

    List tenants

    List tenants. Requires a `full_access` API key. API: `GET /tenants` (operationId `listTenants`, Tenants).

    limit after before

  34. list_webhooksRead only

    List webhooks

    List webhooks. Requires a `full_access` API key. API: `GET /webhooks` (operationId `listWebhooks`, Webhooks).

    limit after before

  35. pause_tenantChanges data

    Pause a 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).

    ref reason

  36. send_batch_emails

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

    idempotency_key body

  37. send_broadcast

    Send or schedule a 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).

    id scheduled_at

  38. send_email

    Send an 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

    idempotency_key from to subject cc bcc reply_to html text headers attachments tags scheduled_at tenant_id

  39. unpause_tenant

    Unpause a 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).

    ref

  40. update_broadcast

    Update a 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).

    id audience_id from subject reply_to preview_text html text name

  41. update_contact

    Update a contact

    Update a contact. Requires a `full_access` API key. API: `PATCH /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `updateContact`, Contacts).

    audience_id id_or_email first_name last_name unsubscribed

  42. update_domain

    Update a domain

    Update a domain. Toggles open and click tracking. Requires a `full_access` API key. API: `PATCH /domains/{id}` (operationId `updateDomain`, Domains).

    id open_tracking click_tracking tls

  43. update_email

    Reschedule an 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).

    id scheduled_at

  44. update_tenant

    Update a 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).

    ref name external_id daily_limit

  45. update_webhook

    Update a webhook

    Update a webhook. Requires a `full_access` API key. API: `PATCH /webhooks/{id}` (operationId `updateWebhook`, Webhooks).

    id endpoint events status

  46. verify_domain

    Verify a 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).

    id

Is this yours?

Claim it to hear the moment it breaks, correct this page and add your own ways to use it.

A test is the handshake and the tool list: no tool was called. Names and descriptions are as listed by whoever registered the server; we haven't checked them.

Back to Tested MCP Servers