Docs
Sendlet gives an AI agent a private link that emails one approved recipient or group, and nobody else. This page covers setting it up and everything an agent can send.
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.
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."}
subjecttitle.bodymessage, text or content.idempotency_keyA-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
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.
Add an attachments array with each file's name and base64 content, or POST multipart/form-data:
curl -F subject="Floor plan" -F body="" -F [email protected] \
https://sendlet.email/to/sam-k7F2x9Qa4mB8nR1vT6yZ3c
. Images from web addresses aren't loaded.
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.
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.
Every endpoint is also an MCP server (Streamable HTTP). Replace /to/ with /mcp/:
https://sendlet.email/mcp/sam-k7F2x9Qa4mB8nR1vT6yZ3c
claude mcp add --transport http sendlet https://sendlet.email/mcp/…send_email (subject, body, optional attachments and idempotency key), endpoint_info (who it emails and what's left today) and get_send_status."awaiting_approval": true). Includes the send's id and how many emails are left today."duplicate": true).hint shows a corrected request.Retry-After seconds.Errors are RFC 9457 problem details with an extra hint.