Transactional email service Built by the MailerLite team, launched October 2020; Vercom-owned
MailerSend logo

MailerSend API + MCP (2026): official remote MCP, v1 REST, 6 SDKs

Last verified Aug 27, 2026

MailerSend’s public API is a single-version REST surface at api.mailersend.com/v1 with 6 official SDKs, a Go-based CLI, and, since August 2025, an official first-party MCP server at mcp.mailersend.com/mcp. That MCP coverage is unusual for a mid-market ESP: as of August 2026, MailerSend, Resend, and SendGrid are the shortlist of transactional providers shipping an official remote MCP endpoint, while Postmark, SparkPost and Amazon SES still rely on community wrappers. If you are picking an API-first ESP that AI agents can drive out of the box, MailerSend earns a serious look. If you need a mature bulk-marketing API with campaign automations, keep Brevo or Mailchimp on the shortlist instead.

At a glance

v1
API version
Stable since 2019 spin-off

6
Official SDKs
Node, PHP, Python, Go, Ruby, Java

Official
MCP server
Remote endpoint, 30+ tools

MCP integration in 2026

The Model Context Protocol lets AI clients. Claude Desktop, Claude Code, Cursor, VSCode, Gemini CLI, ChatGPT Developer mode, call MailerSend as a first-class tool with the same auth and observability as any human integration. MailerSend was one of the first transactional ESPs to ship a first-party server; the spin-off from MailerLite in 2019 kept the developer-tooling DNA, and it shows here.

Official MailerSend MCP Server · Beta (GA candidate)

Remote MCP endpoint at mcp.mailersend.com/mcp exposing 30+ tools across email send, domains, SMTP users, templates, webhooks, suppressions, analytics, DMARC monitoring, blocklist monitoring and SMS. Launched August 5, 2025. Auth is a MailerSend API token entered during connector setup, no local install, no npx wrapper.

Available MCP servers

Four MCP entry points are usable in production today. Prefer the official server for anything sensitive; the others are useful when you need agent orchestration layers or GTM-specific workflow packaging.

Why buyers should care. An official MCP endpoint means an agent can verify a domain, rotate an SMTP user, inspect a bounce or send a transactional message using the same OAuth-style token you audit in the MailerSend dashboard. You do not depend on a solo maintainer keeping a wrapper current, and you do not need to ship your own tool schema. Compared with Amazon SES or SparkPost-where MCP coverage is community-only in 2026, that is a meaningful head start for agent-driven ops.

MailerSend API essentials

The REST surface is intentionally small: one base URL, one version prefix, JSON in and JSON out, Bearer-token auth, cursor-and-page pagination. There is no GraphQL variant and no separate marketing/transactional split, every resource lives under /v1/.

Base URLhttps://api.mailersend.com
Current versionv1 (path prefix, no header negotiation)
Response formatJSON only (application/json)
AuthBearer API token in Authorization header
PaginationCursor + page/limit query params; links.first/last/prev/next and meta.current_page in envelope
Bulk send endpointPOST /v1/bulk-email · up to 500 messages per call
Async send responseHTTP 202 Accepted with x-message-id header
Request timeout Not documented; SDKs use HTTP client defaults (typically 30s)

Resources map cleanly to product concepts: domains, templates, webhooks, suppressions, activity, analytics, inbound, sms. If you are used to the SendGrid or Postmark shape, MailerSend feels closer to Postmark: one send endpoint per intent, no verbose personalizations DSL, envelope kept small. Compared with SendGrid’s /v3/mail/send payload, a MailerSend send body is roughly half the JSON for the same outcome.

Authentication methods

MailerSend uses a single auth model: a Bearer API token issued from the dashboard. There is no OAuth 2.0 flow, no legacy Basic Auth on API keys, and no per-domain sub-credentials for the REST surface.

Bearer API token

Create a token under Integrations › API tokens, scope it to a domain if you want to blast-radius it, and pass it as:

Authorization: Bearer <YOUR_API_TOKEN>
Content-Type: application/json
X-Requested-With: XMLHttpRequest

Tokens can be paused via PUT /v1/token/{token_id}/settings and revoked via DELETE /v1/token/{token_id}. The free plan allows 1 token, Hobby 3 tokens, Starter and above lift the cap. Tokens are shown once at creation, write them to a secrets manager immediately.

SMTP user credentials (separate)

The SMTP relay uses its own username and password pair, generated per SMTP user under Domains › SMTP users. These are not the API token and cannot be regenerated from the token list, see the SMTP settings tab for the full setup.

Scope caveat. Domain-scoped tokens still see account-wide analytics endpoints, and they can read activity for other domains if the response envelope leaks a shared property. Treat “scoped” as a soft boundary, spin up a separate MailerSend workspace for hard-tenant isolation.

Rate limits

MailerSend publishes per-minute API limits (not per-hour) and plan-tiered daily quotas. Every rate-limited response returns 429 Too Many Requests with a Retry-After header in seconds and x-ratelimit-* response headers to inspect budget mid-flight.

LimitValueNotes
General endpoints60 rpmDomains, templates, webhooks, suppressions, activity, analytics
POST /v1/email120 rpmSame on all paid plans; accounts under review throttled to 10 rpm
POST /v1/bulk-email10-60 rpmFree/Hobby 10, Starter 15, Professional 30, Enterprise 60; under review = 1 rpm
Recipients per message50 to + 10 cc + 10 bccEnterprise raises cc/bcc to 50/50; trial accounts capped at 1 cc + 1 bcc
Max message size25 MB per attachmentHTML body 2 MB, plain-text body 2 MB, subject 998 chars
Concurrent SMTP connections Not publishedUse bulk email endpoint for high-fanout sends

Workaround pattern for the bulk throttle: batch 500 messages into one POST /v1/bulk-email call and poll the returned bulk id via GET /v1/bulk-email/{id}. On Free/Hobby that is 5,000 messages/minute theoretical ceiling (10 bulk calls x 500 messages) versus 12,000 for single-send at 120 rpm, bulk is cheaper on your rate budget once you cross ~4 recipients per call.

Official SDKs

MailerSend maintains six official SDKs directly on GitHub, all released under the mailersend org and covering the same endpoint surface. Compared with Postmark (7 SDKs) or SendGrid (7+), the coverage is competitive; the Go SDK doubles as the source for the official CLI.

LanguagePackageInstallRepo
Node.jsmailersendnpm install mailersendmailersend-nodejs
PHPmailersend/mailersendcomposer require mailersend/mailersendmailersend-php
Pythonmailersendpip install mailersendmailersend-python
Gogithub.com/mailersend/mailersend-gogo get github.com/mailersend/mailersend-gomailersend-go
Rubymailersend-rubygem install mailersend-rubymailersend-ruby
Javacom.mailersend:java-sdkMaven: com.mailersend/java-sdkmailersend-java

SDK notes. The Node SDK ships TypeScript definitions bundled, you do not need a separate @types/mailersend. The PHP SDK is PSR-18 compatible so you can swap the HTTP client (useful behind a corporate proxy). The Go package powers the official mailersend CLI shipped via Homebrew.

Notable community SDKs

Community coverage is thinner than for SendGrid or Mailgun-expect to reach for the framework-native drivers first: the official Laravel driver, the Symfony Mailer transport, the Django Anymail backend, and the official Firebase extension. For .NET, Elixir and Rust there is no first-party or actively maintained community SDK as of August 2026, use the raw HTTP API.

Endpoints reference

Full API reference lives at developers.mailersend.com/api/v1. The 15 resources below cover 95%+ of production traffic; less common surfaces (identities, templates variables, activity exports) are documented in the reference but omitted here for scannability.

ResourceMethodsDescription
Email
/v1/email
POSTSend a single transactional email; returns 202 with x-message-id.
Bulk email
/v1/bulk-email
POST, GETQueue up to 500 messages per call; GET /v1/bulk-email/{id} returns status.
Activity
/v1/activity
GETList email events (sent, delivered, opened, clicked, bounced, spam).
Analytics
/v1/analytics
GETTime-series and aggregate metrics by domain, tag, country or user-agent.
Domains
/v1/domains
GET, POST, PUT, DELETEManage sending domains, DNS status and verification.
Messages
/v1/messages
GETRetrieve message metadata and delivery attempts by message_id.
Templates
/v1/templates
GET, DELETEList and delete drag-and-drop or HTML templates.
Webhooks
/v1/webhooks
GET, POST, PUT, DELETEManage v2 webhook subscriptions with lighter payload envelope.
Recipients
/v1/recipients
GET, DELETELook up recipient send history and delete a recipient.
Suppressions
/v1/suppressions/{list}
GET, POST, DELETEManage blocklists, hard-bounces, spam complaints and unsubscribes.
SMTP users
/v1/domains/{domain_id}/smtp-users
GET, POST, PUT, DELETECRUD for SMTP relay credentials, one per domain.
Tokens
/v1/token
POST, PUT, DELETECreate, pause or revoke API tokens.
Email verification
/v1/email-verification
GET, POSTBulk and single email-address verification jobs.
Inbound routes
/v1/inbound
GET, POST, PUT, DELETEConfigure inbound email routing to a URL destination.
SMS
/v1/sms
POST, GETSend SMS (Professional/Enterprise) and inspect delivery.

Code examples

Python · single transactional send

# pip install mailersend
import os
from mailersend import emails

mailer = emails.NewEmail(os.environ['MAILERSEND_API_KEY'])

body = {}
mailer.set_mail_from({'email': 'you@your-verified-domain.com', 'name': 'SMTPedia Bot'}, body)
mailer.set_mail_to([{'email': 'alaa@example.com', 'name': 'Alaa'}], body)
mailer.set_subject('Hello from MailerSend', body)
mailer.set_html_content('<p>Ping from Python SDK.</p>', body)
mailer.set_plaintext_content('Ping from Python SDK.', body)

response = mailer.send(body)
print(response)  # HTTP status + x-message-id header

Node.js · async send with typed payload

// npm install mailersend
import { MailerSend, EmailParams, Sender, Recipient } from 'mailersend';

const mailerSend = new MailerSend({ apiKey: process.env.MAILERSEND_API_KEY });

const sentFrom = new Sender('you@your-verified-domain.com', 'SMTPedia Bot');
const recipients = [new Recipient('alaa@example.com', 'Alaa')];

const emailParams = new EmailParams()
  .setFrom(sentFrom)
  .setTo(recipients)
  .setSubject('Hello from MailerSend')
  .setHtml('<p>Ping from Node SDK.</p>')
  .setText('Ping from Node SDK.');

const response = await mailerSend.email.send(emailParams);
console.log(response.statusCode, response.headers['x-message-id']);

Common gotchas

Trial sandbox blocks unverified recipients

Fresh accounts stay in a trial sandbox capped at 100 emails/day and can only send to email addresses on your verified domain until MailerSend approves the account. Plan for a 24-72h manual approval window and expect to be asked for a sending-use description. Do not book a launch date the same week you sign up.

Two DKIM CNAMEs, not one

Since MailerSend switched to 2048-bit keys you must publish two DKIM CNAME records (plus SPF and Return-Path). Adding only the first one leaves the domain in unverified state and API sends will 422 with domain not verified. Verify both in your DNS host before flipping traffic.

429 storms on new IPs during warm-up

Accounts flagged “under review” are throttled to 10 rpm on POST /v1/email and 1 rpm on POST /v1/bulk-email. Honour the Retry-After header, apply exponential backoff, and prefer the bulk endpoint (500 messages per call) until reputation is healthy.

SMTP credentials are separate from API tokens

The SMTP username/password shown once at SMTP user creation is not the same as the Bearer API token and cannot be regenerated from the token list. Store it in your secrets manager immediately. MailerSend only displays it once. Losing it means creating a new SMTP user and updating every relay client.

TLS 1.0/1.1 rejected on port 587

Since June 3, 2024 the smtp.mailersend.net relay only accepts TLS 1.2 and 1.3. Legacy libraries (old PHPMailer, .NET Framework 4.5 without SchUseStrongCrypto) will fail with connection reset. Upgrade the TLS stack before switching production traffic.

Deprecations and changelog

MailerSend publishes release notes at mailersend.com/changelog. Highlights that affect API and MCP integrators (most recent first):

  • June 30, 2026-Template Translations released: one-click translate drag-and-drop templates into 9 languages without duplicating template IDs.
  • March 9, 2026-Blocklist Monitoring shipped: automated periodic checks of your sending IPs and domains against major blocklists, exposed via the API and MCP server.
  • February 26, 2026-MailerSend CLI GA: Go-based command-line tool to send emails and manage domains/tokens from the terminal (Homebrew tap available).
  • December 9, 2025-DMARC Monitoring released: ingests aggregate DMARC reports and visualizes authentication results per source.
  • September 22, 2025-Webhooks 2.0: new lighter payload envelope and versioned webhook subscriptions.
  • August 5, 2025-MailerSend MCP Server (Beta) launched at mcp.mailersend.com/mcp with 30+ tools across email, domains, suppressions, SMS and analytics.

Frequently asked questions

What is the MailerSend API base URL and current version?

The base URL is https://api.mailersend.com with a single version prefix, v1. Every resource lives under /v1/ and there is no header-based version negotiation. The API has been stable since the 2019 spin-off from MailerLite, no v2 has been announced as of August 2026.

How do I authenticate to the MailerSend API?

Create an API token under Integrations › API tokens and pass it as a Bearer token: Authorization: Bearer <YOUR_API_TOKEN>. There is no OAuth 2.0 flow. Tokens can be scoped to a specific domain, paused via PUT /v1/token/{id}/settings, and revoked via DELETE /v1/token/{id}.

What are the MailerSend API rate limits per minute?

60 rpm on general endpoints, 120 rpm on POST /v1/email, and 10-60 rpm on POST /v1/bulk-email depending on plan (Free/Hobby 10, Starter 15, Professional 30, Enterprise 60). Accounts under review are throttled to 10 rpm on single-send and 1 rpm on bulk. Every 429 response returns a Retry-After header.

Which official SDKs does MailerSend maintain?

Six: mailersend (Node.js), mailersend/mailersend (PHP), mailersend (Python), github.com/mailersend/mailersend-go (Go), mailersend-ruby (Ruby) and com.mailersend:java-sdk (Java). All are actively maintained on GitHub under the mailersend org. The Node SDK ships TypeScript types bundled; the Go SDK also powers the official CLI.

How do I send a bulk transactional email with the MailerSend API?

POST an array of up to 500 message objects to /v1/bulk-email. The response is a 202 Accepted with a bulk_email_id-poll GET /v1/bulk-email/{bulk_email_id} to inspect per-message status. Bulk send has its own rate budget (10-60 rpm by plan) so batching 500 recipients per call is far cheaper than 500 single-send calls.

Does MailerSend expose an MCP server for AI agents?

Yes. MailerSend runs an official remote MCP server at mcp.mailersend.com/mcp, launched August 5, 2025, with 30+ tools across email, domains, SMTP users, templates, webhooks, suppressions, analytics, DMARC monitoring and SMS. It works with Claude Desktop, Claude Code, Cursor, VSCode, Gemini CLI and ChatGPT Developer mode. Auth is a MailerSend API token entered during connector setup, no local install required.

Changelog (recent)

  • 2026-06-30 Template Translations released - one-click translate drag-and-drop templates into 9 languages without duplicating template IDs.
  • 2026-03-09 Blocklist Monitoring shipped - automated periodic checks of sending IPs and domains against major blocklists, exposed via API and MCP.
  • 2026-02-26 MailerSend CLI GA - Go-based command line tool to send emails and manage domains/tokens from the terminal (Homebrew tap available).
AAlaa Touil RRabeb How we test →

This review follows our email infrastructure testing methodology. We disclose affiliate relationships in our editorial independence policy.