Sendlet

official

Let AI agents email only people you've approved. Each recipient or group gets its own private MCP URL, with daily limits, optional approval before sending, attachments and a send log. Free to start.

What can you do with Sendlet MCP?

  • Send an email — Ask your assistant to send a subject and Markdown body to a recipient through the endpoint URL, with optional attachments and an idempotency key.
  • Check the endpoint — Ask what the endpoint emails, how many sends are left today, and what formats it accepts before sending anything.
  • Track a send — Look up a snd_ id to see whether a message is queued, sent, bounced, or awaiting approval, per recipient label.
  • Add to Claude — Paste the endpoint's MCP URL (https://sendlet.email/mcp/sam-k7F2x9Qa4mB8nR1vT6yZ3c) as a custom connector so Claude can send on your behalf.

Hosted MCP Server

npx add-mcp 'https://sendlet.email/mcp/{endpoint}'

Installs into Claude Code, Codex, Cursor and more

Documentation

Get started

  1. Sign in at sendlet.email with your email address. A new account comes with one recipient already accepted: you.
  2. Add the people your agents may email. Each gets an invitation and must accept before anything reaches them.
  3. Create an endpoint on a recipient or group: a private URL for one agent, with its own daily limit. Copy it when it's shown; for safety it's shown only once.
  4. Give the URL to your agent, or add its MCP address to Claude. Every send appears in your send log.

Endpoint URLs look like https://sendlet.email/to/sam-k7F2x9Qa4mB8nR1vT6yZ3c. Anyone with the URL can send to that recipient, within its limits, so treat it like a password: you can pause, rotate or revoke it at any time.

Sending over HTTP

POST JSON to the endpoint URL:

POST https://sendlet.email/to/sam-k7F2x9Qa4mB8nR1vT6yZ3c
Content-Type: application/json

{"subject": "Short summary", "body": "Message text. **Markdown** is supported."}

subject

Required. One line, up to 200 characters. Also accepted as title.

body

Required. Plain text or Markdown, up to 50,000 characters. Also accepted as message, text or content.

idempotency_key

Optional. Up to 100 of A-Z a-z 0-9 _ . : -. The same key within 10 minutes sends only once, so retries are safe. Also accepted as an Idempotency-Key header.

attachments

Optional, if your plan includes attachments. See below.

Form posts (application/x-www-form-urlencoded) take the same fields. With text/plain or text/markdown, the first line is the subject and the rest is the body.

Files and images

Add an attachments array with each file's name and base64 content, or POST multipart/form-data:

curl -F subject="Floor plan" -F body="![Floor plan](plan.png)" -F [email protected] \
     https://sendlet.email/to/sam-k7F2x9Qa4mB8nR1vT6yZ3c
  • Up to 10 files per email. The size allowance depends on your plan; the endpoint's GET description says what's available.
  • Allowed types: png, jpg, jpeg, gif, webp, pdf, txt, csv, md, json, ics, docx, xlsx, pptx, odt and ods. The content must match the extension.
  • To show an attached image inside the message, reference it as a Markdown image: ![Description](plan.png). Images from web addresses aren't loaded.

Before sending

GET the endpoint URL to see who it emails, how many emails are left today and what it accepts: Markdown by default, or JSON with Accept: application/json. A GET never sends.

After sending

GET …/to/{address}/sends/{id} with the snd_ id from the response to see what happened: queued, sent, bounced, awaiting approval and so on, per recipient by label. Addresses are never shown.

MCP and Claude

Every endpoint is also an MCP server (Streamable HTTP). Replace /to/ with /mcp/:

https://sendlet.email/mcp/sam-k7F2x9Qa4mB8nR1vT6yZ3c
  • Claude: Settings, Connectors, add a custom connector, and paste the MCP URL. Each endpoint page has a Copy MCP URL button.
  • Claude Code: claude mcp add --transport http sendlet https://sendlet.email/mcp/…
  • Tools: send_email (subject, body, optional attachments and idempotency key), endpoint_info (who it emails and what's left today) and get_send_status.

Staying in control

  • Daily limits on each endpoint and on your account. A group send needs room for every member's copy.
  • Approval: an endpoint can hold every email until you approve it. You're emailed straight away; anything undecided for 3 days is rejected.
  • Groups: one endpoint can email several recipients, each getting their own copy. Only members who've accepted receive it.
  • Alerts: you're emailed when a send fails, a recipient bounces or complains, or an endpoint reaches its daily limit.
  • Recipients stay in charge: every email has a one-click unsubscribe, and a hard bounce or complaint unsubscribes automatically.

For agents and tools

  • llms.txt: these instructions in a form written for language models.
  • openapi.json: the OpenAPI description of the send API.