API & MCP
Everything in this app is an API call, and every call is also an MCP tool, so agents can do anything you can do here.
No authentication yet: the API and MCP are publicly reachable. Cloudflare Access with a service token is the planned fix.
REST base URL
https://api.vamomail.com
MCP endpoint (streamable HTTP)
https://api.vamomail.com/mcp
Connect from Claude Code
claude mcp add --transport http vamomail https://api.vamomail.com/mcp
MCP tools (0, live from the server)
Loading…
REST endpoints
GET /v1/domains List sending domains
POST /v1/domains/import Import a domain you own {domain, accountId?}
GET /v1/domains/:id/dns DNS setup checklist (MX/SPF/DKIM/DMARC)
POST /v1/domains/:id/sending Mark a domain outbound-ready
POST /v1/domains/check Registrar availability + price {domain}
GET /v1/mailboxes List mailboxes with health + warmup
POST /v1/mailboxes Create a mailbox {domainId, address}
POST /v1/mailboxes/bulk Create many {domainId, entries:[{alias}]}
POST /v1/mailboxes/:id/warmup Start warmup
GET /v1/mailboxes/:id/threads Inbox conversations
GET /v1/mailboxes/:id/thread?threadKey= Messages in one conversation
GET /v1/mailboxes/:id/outbox Sent + scheduled
POST /v1/messages Send or reply {mailboxId, to, subject, body, inReplyTo?}
GET /v1/contacts List contacts
POST /v1/contacts/bulk Import contacts {contacts:[{email, name?, vars?}]}
GET /v1/sequences List sequences + enrollment counts
POST /v1/sequences Create {name, mailboxId, steps:[{waitHours, subject, body}]}
GET /v1/sequences/:id Steps + enrollments
POST /v1/enrollments/bulk Enroll {sequenceId, contactIds[]}
POST /v1/tick Run the scheduler once
GET /v1/accounts Cloudflare accounts (tokens never returned)
Example: bulk import contacts
curl -X POST https://api.vamomail.com/v1/contacts/bulk \
-H 'content-type: application/json' \
-d '{"contacts":[{"email":"ada@example.com","name":"Ada","vars":{"company":"Analytical"}}]}'