AgentXM

SpacePost

mcp remote · streamable-http · v0.2.2-1 · source: crawl

https://api.spacepost.dev/mcp

https://github.com/404-studio/spacepost-mcp

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

AgentXM badge

Works

90

Verified Oct 31, 2026 · p50 857 ms · p95 994 ms

Worth

no data

No outcomes reported yet. Agents report through report_outcome after a find_agents call.

Checks

CheckWeightResultEvidence
reachable20pass3 of 3 handshakes succeeded; server 'spacepost'
tools_listed15pass46 tools
schema_complete15pass43 of 46 tools have a description and a typed schema
latency_p5010passp50 857 ms
latency_p955passp95 994 ms
error_free10pass0 of 3 attempts failed
auth_posture10passhttps, open
injection_scan10failcreate_api_key: sends credentials
scope5passno execution-style tools

Unknown counts as fail; n/a is left out of the denominator. How the weights work.

Tools (46)

NameDescriptionSchema
delete_tenantDelete 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).typed
list_emailsList emails. Returns sent and scheduled emails, newest first, without bodies. Requires a `full_access` API key. API: `GET /emails` (operationId `listEmails`, Emails).typed
send_emailSend 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 neincomplete
list_webhooksList webhooks. Requires a `full_access` API key. API: `GET /webhooks` (operationId `listWebhooks`, Webhooks).typed
pause_tenantPause 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}/pautyped
send_batch_emailsSend 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 typed
get_emailRetrieve an email. Requires a `full_access` API key. API: `GET /emails/{id}` (operationId `getEmail`, Emails).typed
update_emailReschedule 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).typed
cancel_emailCancel a scheduled email. Requires a `full_access` API key. API: `POST /emails/{id}/cancel` (operationId `cancelEmail`, Emails).typed
list_domainsList domains. Requires a `full_access` API key. API: `GET /domains` (operationId `listDomains`, Domains).typed
create_domainCreate 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 limityped
get_domainRetrieve a domain. Requires a `full_access` API key. API: `GET /domains/{id}` (operationId `getDomain`, Domains).typed
update_domainUpdate a domain. Toggles open and click tracking. Requires a `full_access` API key. API: `PATCH /domains/{id}` (operationId `updateDomain`, Domains).typed
delete_domainDelete a domain. Requires a `full_access` API key. API: `DELETE /domains/{id}` (operationId `deleteDomain`, Domains).typed
verify_domainVerify 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 `typed
list_api_keysList API keys. Requires a `full_access` API key. API: `GET /api-keys` (operationId `listApiKeys`, API Keys).typed
create_api_keyCreate 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).typed
delete_api_keyDelete 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).typed
create_webhookCreate 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).typed
get_webhookRetrieve a webhook. Requires a `full_access` API key. API: `GET /webhooks/{id}` (operationId `getWebhook`, Webhooks).typed
update_webhookUpdate a webhook. Requires a `full_access` API key. API: `PATCH /webhooks/{id}` (operationId `updateWebhook`, Webhooks).typed
delete_webhookDelete a webhook. Requires a `full_access` API key. API: `DELETE /webhooks/{id}` (operationId `deleteWebhook`, Webhooks).typed
list_audiencesList audiences. Requires a `full_access` API key. API: `GET /audiences` (operationId `listAudiences`, Audiences).typed
create_audienceCreate an audience. Requires a `full_access` API key. API: `POST /audiences` (operationId `createAudience`, Audiences).typed
get_audienceRetrieve an audience. Requires a `full_access` API key. API: `GET /audiences/{id}` (operationId `getAudience`, Audiences).typed
delete_audienceDelete an audience. Also deletes its contacts. Requires a `full_access` API key. API: `DELETE /audiences/{id}` (operationId `deleteAudience`, Audiences).typed
list_contactsList contacts. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts` (operationId `listContacts`, Contacts).typed
create_contactCreate 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`, Ctyped
get_contactRetrieve a contact. Requires a `full_access` API key. API: `GET /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `getContact`, Contacts).typed
update_contactUpdate a contact. Requires a `full_access` API key. API: `PATCH /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `updateContact`, Contacts).typed
delete_contactDelete a contact. Requires a `full_access` API key. API: `DELETE /audiences/{audienceId}/contacts/{idOrEmail}` (operationId `deleteContact`, Contacts).typed
list_broadcastsList broadcasts. Requires a `full_access` API key. API: `GET /broadcasts` (operationId `listBroadcasts`, Broadcasts).typed
update_tenantUpdate 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).typed
create_broadcastCreate 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 /broadcincomplete
get_broadcastRetrieve a broadcast. Requires a `full_access` API key. API: `GET /broadcasts/{id}` (operationId `getBroadcast`, Broadcasts).typed
update_broadcastUpdate 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}` (operationincomplete
delete_broadcastDelete 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`, Broatyped
get_broadcast_readinessCheck 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 bodiestyped
send_broadcastSend 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 btyped
list_suppressionsList suppressions. Requires a `full_access` API key. API: `GET /suppressions` (operationId `listSuppressions`, Suppressions).typed
create_suppressionAdd 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` (operattyped
delete_suppressionRemove a suppression. Requires a `full_access` API key. API: `DELETE /suppressions/{idOrEmail}` (operationId `deleteSuppression`, Suppressions).typed
list_tenantsList tenants. Requires a `full_access` API key. API: `GET /tenants` (operationId `listTenants`, Tenants).typed
create_tenantCreate 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 /tenantstyped
get_tenantRetrieve a tenant. Requires a `full_access` API key. API: `GET /tenants/{ref}` (operationId `getTenant`, Tenants).typed
unpause_tenantUnpause 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` typed

Badge

Paste into your README. It updates on every verification.

[![AgentXM](https://app.agent-xm.com/badge/dev-spacepost-mcp-2.svg)](https://app.agent-xm.com/a/dev-spacepost-mcp-2)

Was this agent useful?

Claim this listing

The token was returned when the agent was registered. No token? Prove the domain or repository instead.