llms.txt
# Lumail.io
> The AI-native email platform for newsletters, automations, and transactional email.
Prefer MCP, the CLI, or the TypeScript SDK for live organization operations. Fetch only the markdown pages you need; /llms-full.txt concatenates every page.
## Agents
- [Migration to V2](https://lumail.io/docs/api-reference/v2/migration.md): Rewrite a v1 REST or SDK integration to API v2.
- [Claude Code (Plugin)](https://lumail.io/docs/ai-integration/mcp-claude.md): Install the Lumail plugin in Claude Code.
- [Codex (Plugin)](https://lumail.io/docs/ai-integration/mcp-codex.md): Connect the Codex CLI and app over OAuth.
- [ChatGPT Plugin](https://lumail.io/docs/ai-integration/chatgpt-plugin.md): Connect Lumail as a ChatGPT OAuth app.
- [Cursor (MCP)](https://lumail.io/docs/ai-integration/mcp-cursor.md): Connect Cursor over MCP.
- [Skills (CLI)](https://lumail.io/docs/ai-integration/skills-cli.md): Use the CLI and reusable agent skills.
- [SDK Introduction](https://lumail.io/docs/sdk/introduction.md): Use the typed TypeScript SDK.
- [API Reference](https://lumail.io/docs/api-reference.md): Browse the REST API reference.
- [OpenAPI 3.1 specification](https://lumail.io/openapi.json): Machine-readable Lumail integration endpoint.
- [MCP server manifest](https://lumail.io/.well-known/mcp.json): Machine-readable Lumail integration endpoint.
- [MCP server](https://lumail.io/mcp): Machine-readable Lumail integration endpoint.
- [MCP OAuth metadata](https://lumail.io/.well-known/oauth-protected-resource/mcp): Machine-readable Lumail integration endpoint.
- [Claude Code install](https://lumail.io/claude-code/install): Machine-readable Lumail integration endpoint.
- [Codex install](https://lumail.io/codex/install): Machine-readable Lumail integration endpoint.
- [CLI install](https://lumail.io/cli/install): Machine-readable Lumail integration endpoint.
## Docs
- [Documentation](https://lumail.io/docs.md): Learn how Lumail email marketing works. Start with features, workflows, deliverability, and integrations, then follow a guide or open the API reference.
- [SMTP](https://lumail.io/docs/smtp.md): Send transactional email like OTP codes, magic links, and password resets through smtp.lumail.io on port 587 with STARTTLS and an API token as password.
- [Survey Block Formats](https://lumail.io/docs/survey.md): One-click polls inside an email — buttons, yes/no, emoji, and NPS, each stacked the same way the recipient sees them.
## Privacy & GDPR
- [GDPR in Lumail](https://lumail.io/docs/legal/gdpr-in-lumail.md): Current GDPR readiness, data locations, tracking, double opt-in, and steps for EU customers
- [Data Processing Agreement (DPA)](https://lumail.io/docs/legal/dpa.md): Review, accept and download your organization agreement with Codelynx, LLC
- [Subprocessors](https://lumail.io/docs/legal/subprocessors.md): Current Lumail infrastructure providers, roles, locations, and change process
- [Security and incident contact](https://lumail.io/docs/legal/security.md): How to report vulnerabilities and privacy incidents to Codelynx for Lumail
- [Customer compliance guide](https://lumail.io/docs/legal/customer-compliance.md): How to assess Lumail for GDPR, tracking, consent, export, and erasure
## Ship with Email
- [Choose an Email MCP for Claude Code, Then Ship the Launch](https://lumail.io/docs/playbooks/email-mcp-claude-code-product-launch.md): Compare email MCPs by real launch work, connect Claude Code, and turn verified release evidence into a campaign your owned list can act on.
- [Send a Newsletter from Cursor, Then Ship the Launch](https://lumail.io/docs/playbooks/send-newsletter-from-cursor.md): Connect Cursor to your email stack, turn release evidence into a saved campaign, review the audience and render, and approve delivery deliberately.
- [Move a Launch List from Kit Without Paying for Dormant Subscribers](https://lumail.io/docs/playbooks/move-launch-list-from-kit.md): Test a send-volume-priced Kit alternative with one real launch before moving your audience, automations, and suppression history.
- [Ship with Email](https://lumail.io/docs/playbooks.md): Launch a product release or offer to your owned email list with Lumail. Follow playbooks for Claude Code, Cursor, and moving a launch list from Kit.
## Guides
- [Guides](https://lumail.io/docs/guides.md): Practical Lumail guides to create an API token, send transactional email over SMTP, use React Email, connect Claude or Cursor, and migrate to API v2.
## Tutorials
- [Migration to high deliverability emails](https://lumail.io/docs/tutorials/migration-to-high-deliverability-emails.md): Bring campaigns, OTP, and transactional mail up to current inbox hygiene — visible branding, a why-you-receive line, native double opt-in, and workflows that wait for confirmation.
- [Clear Branding](https://lumail.io/docs/tutorials/clear-branding.md): Make every email instantly recognizable with a consistent company name, domain, or logo.
- [Reason for Sending](https://lumail.io/docs/tutorials/reason-for-sending.md): Explain the specific action that caused someone to receive your email and name the brand they recognize.
- [Enable Double Opt-In](https://lumail.io/docs/tutorials/enable-double-opt-in.md): Turn on native confirmation so new subscribers must click a link before they receive campaigns.
- [Automatic list cleanup](https://lumail.io/docs/tutorials/automatic-list-cleanup.md): Unsubscribe people who have not opened or clicked for 30, 90, or 180 days. Off by default. Preview before you enable.
- [Create an API Token](https://lumail.io/docs/tutorials/create-api-token.md): Step-by-step guide to generating API tokens for authenticating your Lumail API requests.
- [Send Transactional Email with SMTP](https://lumail.io/docs/tutorials/smtp-transactional-emails.md): Set up SMTP transactional email with Lumail step by step. Verify a sending domain, create an API token, and configure Supabase Auth or Nodemailer.
- [Send React Email Templates with Lumail](https://lumail.io/docs/tutorials/react-email.md): Build transactional email templates as React components, render them to HTML, and send them through the Lumail transactional email API.
- [Dynamic Promo Codes with Webhooks](https://lumail.io/docs/tutorials/dynamic-promo-codes.md): Create unique, time-limited promo codes for each subscriber using workflow webhooks and custom fields.
- [Tutorials](https://lumail.io/docs/tutorials.md): Step-by-step Lumail tutorials for double opt-in, clear branding, list cleanup, API tokens, React Email templates, and dynamic promo codes with webhooks.
## AI Integration
- [Prepare Your Account for Lumail 2.0](https://lumail.io/docs/ai-integration/prepare-account-2-0.md): An operational guide for AI agents migrating marketing email to Lumail Workflows with clear branding and a reason for sending.
- [Claude Code (Plugin)](https://lumail.io/docs/ai-integration/mcp-claude.md): Install the Lumail MCP plugin in Claude Code with one prompt and a browser OAuth sign-in. Covers scopes, rate limits, troubleshooting, and removal.
- [Codex (Plugin)](https://lumail.io/docs/ai-integration/mcp-codex.md): Connect the Codex CLI and Codex app to Lumail over OAuth—no API token in config.toml.
- [ChatGPT Plugin](https://lumail.io/docs/ai-integration/chatgpt-plugin.md): Add Lumail to ChatGPT as a custom MCP plugin with OAuth. Manage subscribers, campaigns, and workflows without creating or storing an API token.
- [Hermes](https://lumail.io/docs/ai-integration/hermes.md): Paste one prompt in Hermes Agent and it installs the Lumail CLI and skill, authenticates, and verifies the connection for you.
- [Skills (CLI)](https://lumail.io/docs/ai-integration/skills-cli.md): Install Lumail as a Claude Code skill with the CLI for terminal-based AI workflows - manage subscribers, campaigns, and emails from natural language.
- [OpenClaw](https://lumail.io/docs/ai-integration/openclaw.md): Install the Lumail skill and CLI via ClawHub for OpenClaw.
- [Cursor (MCP)](https://lumail.io/docs/ai-integration/mcp-cursor.md): Connect Cursor to the Lumail MCP server with OAuth or an API token, scope one organization per project, and manage email marketing from your editor.
- [TypeScript SDK Integrations](https://lumail.io/docs/ai-integration/sdk-agents.md): Use the Lumail TypeScript SDK in web apps, backend services, scripts, and product automations.
- [Tools API for AI Agents](https://lumail.io/docs/ai-integration/tools-api.md): Run any Lumail tool through one REST endpoint, POST /api/v2/tools. Includes OpenAI function calling and LangChain examples, tool categories, and limits.
- [Tools reference](https://lumail.io/docs/ai-integration/tools-reference.md): All 139 Lumail tools with their parameters, permissions and availability.
- [Examples & Recipes](https://lumail.io/docs/ai-integration/examples.md): Copy working Lumail TypeScript SDK and CLI recipes for signup onboarding, bulk imports with rate limit retries, purchase tracking, and scheduled sends.
- [AI Integration](https://lumail.io/docs/ai-integration.md): Connect ChatGPT, Claude Code, Codex, Cursor, Hermes, or OpenClaw to Lumail over MCP, or build AI agents with the CLI, TypeScript SDK, and Tools API.
## SDK
- [SDK Introduction](https://lumail.io/docs/sdk/introduction.md): Understand what the Lumail TypeScript SDK is for and when to use it in your application.
- [SDK 2.1.0](https://lumail.io/docs/sdk/v2/introduction.md): Get started with the Lumail TypeScript SDK 2.1.0 for API v2. Install it, send your first email, and handle data and error results without try/catch.
- [SDK Configuration](https://lumail.io/docs/sdk/configuration.md): Set up the Lumail TypeScript SDK client with your API key, an optional base URL, and server-side placement so your API token never reaches browser code.
- [SDK Resources](https://lumail.io/docs/sdk/resources.md): Use the Lumail TypeScript SDK to manage subscribers, campaigns, tags, and events, send transactional email, and verify addresses, with code for each.
- [SDK Tools](https://lumail.io/docs/sdk/tools.md): List, inspect, and run Lumail tools from server-side TypeScript with the SDK. Learn when a generic tool runner fits your backend and when to use MCP.
- [lumail.tools](https://lumail.io/docs/sdk/v2/tools.md): SDK 2.1.0 · API v2 · lumail.tools.*
- [Errors and Retries](https://lumail.io/docs/sdk/errors-retries.md): Catch typed Lumail TypeScript SDK errors, handle 429 rate limits with retryAfter, and learn which requests retry automatically with exponential backoff.
- [lumail.emails](https://lumail.io/docs/sdk/v2/emails.md): Send, batch, list, fetch, and verify transactional emails from TypeScript with lumail.emails in the Lumail SDK 2.1.0, using html, tiptap, or markdown.
- [lumail.verify](https://lumail.io/docs/sdk/v2/verify.md): SDK 2.2.0 · API v2 · POST /api/v2/verify
- [lumail.emails.send](https://lumail.io/docs/sdk/v2/emails-send.md): SDK 2.1.0 · API v2 · POST /api/v2/emails
- [lumail.emails.batch](https://lumail.io/docs/sdk/v2/emails-batch.md): Send up to 100 transactional emails in one request with lumail.emails.batch in the Lumail TypeScript SDK, with idempotency keys and recipient rate guards.
- [lumail.emails.get](https://lumail.io/docs/sdk/v2/emails-get.md): Fetch one transactional email by id with lumail.emails.get in the Lumail TypeScript SDK and read its HTML, recipients, and latest delivery event.
- [lumail.emails.list](https://lumail.io/docs/sdk/v2/emails-list.md): List sent transactional emails newest first with lumail.emails.list in the Lumail TypeScript SDK, using cursor pagination with limit, after, and before.
- [lumail.subscribers](https://lumail.io/docs/sdk/v2/subscribers.md): Create, update, list, tag, and unsubscribe contacts from TypeScript with lumail.subscribers in the Lumail SDK 2.1.0, by subscriber id or email.
- [lumail.subscribers.list](https://lumail.io/docs/sdk/v2/subscribers-list.md): SDK 2.1.0 · API v2 · GET /api/v2/subscribers
- [lumail.subscribers.create](https://lumail.io/docs/sdk/v2/subscribers-create.md): SDK 2.1.0 · API v2 · POST /api/v2/subscribers
- [lumail.subscribers.get](https://lumail.io/docs/sdk/v2/subscribers-get.md): SDK 2.1.0 · API v2 · GET /api/v2/subscribers/:subscriber
- [lumail.subscribers.update](https://lumail.io/docs/sdk/v2/subscribers-update.md): SDK 2.1.0 · API v2 · PATCH /api/v2/subscribers/:subscriber
- [lumail.subscribers.delete](https://lumail.io/docs/sdk/v2/subscribers-delete.md): Why lumail.subscribers.delete in the Lumail TypeScript SDK returns a 422 error, and how to unsubscribe a contact by id or email instead of deleting it.
- [lumail.subscribers.unsubscribe](https://lumail.io/docs/sdk/v2/subscribers-unsubscribe.md): SDK 2.1.0 · API v2 · POST /api/v2/subscribers/:subscriber/unsubscribe
- [lumail.subscribers.addTags](https://lumail.io/docs/sdk/v2/subscribers-add-tags.md): Add tags to a subscriber by id or email with lumail.subscribers.addTags in the Lumail TypeScript SDK, without replacing the tags already on the contact.
- [lumail.subscribers.removeTags](https://lumail.io/docs/sdk/v2/subscribers-remove-tags.md): SDK 2.1.0 · API v2 · DELETE /api/v2/subscribers/:subscriber/tags
- [lumail.subscribers.listEvents](https://lumail.io/docs/sdk/v2/subscribers-list-events.md): SDK 2.1.0 · API v2 · GET /api/v2/subscribers/:subscriber/events
- [lumail.domains](https://lumail.io/docs/sdk/v2/domains.md): Add, list, fetch, and verify sending domains from TypeScript with lumail.domains in the Lumail SDK 2.1.0, looking up each domain by id or hostname.
- [lumail.domains.list](https://lumail.io/docs/sdk/v2/domains-list.md): SDK 2.1.0 · API v2 · GET /api/v2/domains
- [lumail.domains.create](https://lumail.io/docs/sdk/v2/domains-create.md): SDK 2.1.0 · API v2 · POST /api/v2/domains
- [lumail.domains.get](https://lumail.io/docs/sdk/v2/domains-get.md): SDK 2.1.0 · API v2 · GET /api/v2/domains/:domain
- [lumail.domains.verify](https://lumail.io/docs/sdk/v2/domains-verify.md): SDK 2.1.0 · API v2 · POST /api/v2/domains/:domain/verify
- [lumail.campaigns](https://lumail.io/docs/sdk/v2/campaigns.md): Create, list, update, send, schedule, and delete broadcast campaigns from TypeScript with lumail.campaigns in the Lumail SDK 2.1.0, backed by API v2.
- [lumail.campaigns.list](https://lumail.io/docs/sdk/v2/campaigns-list.md): SDK 2.1.0 · API v2 · GET /api/v2/campaigns
- [lumail.campaigns.create](https://lumail.io/docs/sdk/v2/campaigns-create.md): SDK 2.1.0 · API v2 · POST /api/v2/campaigns
- [lumail.campaigns.get](https://lumail.io/docs/sdk/v2/campaigns-get.md): SDK 2.1.0 · API v2 · GET /api/v2/campaigns/:campaignId
- [lumail.campaigns.update](https://lumail.io/docs/sdk/v2/campaigns-update.md): SDK 2.1.0 · API v2 · PATCH /api/v2/campaigns/:campaignId
- [lumail.campaigns.delete](https://lumail.io/docs/sdk/v2/campaigns-delete.md): SDK 2.1.0 · API v2 · DELETE /api/v2/campaigns/:campaignId
- [lumail.campaigns.send](https://lumail.io/docs/sdk/v2/campaigns-send.md): SDK 2.1.0 · API v2 · POST /api/v2/campaigns/:campaignId/send
- [lumail.tags](https://lumail.io/docs/sdk/v2/tags.md): SDK 2.1.0 · API v2 · lumail.tags.*
- [lumail.tags.list](https://lumail.io/docs/sdk/v2/tags-list.md): SDK 2.1.0 · API v2 · GET /api/v2/tags
- [lumail.tags.create](https://lumail.io/docs/sdk/v2/tags-create.md): SDK 2.1.0 · API v2 · POST /api/v2/tags
- [lumail.tags.get](https://lumail.io/docs/sdk/v2/tags-get.md): SDK 2.1.0 · API v2 · GET /api/v2/tags/:tag
- [lumail.tags.update](https://lumail.io/docs/sdk/v2/tags-update.md): SDK 2.1.0 · API v2 · PATCH /api/v2/tags/:tag
- [lumail.events](https://lumail.io/docs/sdk/v2/events.md): Record SUBSCRIBER_PAYMENT and SUBSCRIBER_REFUND events on a subscriber by email or id from TypeScript with lumail.events in the Lumail SDK 2.1.0.
- [lumail.events.create](https://lumail.io/docs/sdk/v2/events-create.md): SDK 2.1.0 · API v2 · POST /api/v2/events
- [lumail.tokens](https://lumail.io/docs/sdk/v2/tokens.md): SDK 2.1.0 · API v2 · lumail.tokens.*
- [lumail.tokens.list](https://lumail.io/docs/sdk/v2/tokens-list.md): SDK 2.1.0 · API v2 · GET /api/v2/tokens
- [lumail.tokens.create](https://lumail.io/docs/sdk/v2/tokens-create.md): SDK 2.1.0 · API v2 · POST /api/v2/tokens
- [lumail.tools.list](https://lumail.io/docs/sdk/v2/tools-list.md): SDK 2.1.0 · API v2 · GET /api/v2/tools
- [lumail.tools.get](https://lumail.io/docs/sdk/v2/tools-get.md): SDK 2.1.0 · API v2 · GET /api/v2/tools/:toolName
- [lumail.tools.run](https://lumail.io/docs/sdk/v2/tools-run.md): SDK 2.1.0 · API v2 · POST /api/v2/tools/:toolName
- [Errors](https://lumail.io/docs/sdk/v2/errors.md): SDK 2.1.0 · API v2 · { data, error } results.
- [lumail.emails.verify](https://lumail.io/docs/sdk/v2/emails-verify.md): Legacy SDK method. Prefer lumail.verify().
## API Reference
- [API Tokens](https://lumail.io/docs/api-reference/api-tokens.md): Learn how to create and use API tokens to authenticate your API requests
- [TypeScript SDK](https://lumail.io/docs/api-reference/sdk.md): Official TypeScript SDK for the Lumail API - type-safe client with full autocompletion for subscribers, campaigns, emails, tags, events, and tools.
- [CLI](https://lumail.io/docs/api-reference/cli.md): Lumail command-line interface for managing subscribers, campaigns, emails, tags, events, and tools from your terminal.
- [MCP Server](https://lumail.io/docs/api-reference/mcp.md): Connect Claude, Cursor, ChatGPT, Codex, or another MCP client to Lumail's canonical email marketing tools.
- [Tools API (v2)](https://lumail.io/docs/api-reference/v2-tools.md): Execute any Lumail tool via REST API - unified endpoint for all operations
- [Admin Tools API](https://lumail.io/docs/api-reference/admin-tools.md): Internal automation API for Lumail administrators - execute admin tools across all organizations with a single endpoint
- [Rate Limits](https://lumail.io/docs/api-reference/api-limits.md): Learn the Lumail API rate limits per plan, from 100 to 2,000 requests per minute, the RateLimit headers, 429 responses, and exponential backoff patterns.
- [Versioning and Deprecation Policy](https://lumail.io/docs/api-reference/versioning.md): How Lumail versions its REST API, what can change inside a version, and how deprecation and sunset are announced.
- [SMTP Endpoint](https://lumail.io/docs/api-reference/smtp.md): Send transactional email through Lumail from SMTP-only tools
- [Test-mode recipients](https://lumail.io/docs/api-reference/test-mode.md): Send to fixture addresses like user@example.com or any .test domain to test Lumail campaigns, workflows, the API, and SMTP without delivering real email.
- [Send Transactional Email](https://lumail.io/docs/api-reference/api-emails-send.md): Send individual transactional emails without requiring a campaign
- [Email Verification API](https://lumail.io/docs/api-reference/api-email-verify-post.md): Verify an address with POST /api/v2/verify or lumail.verify().
- [Create Subscriber](https://lumail.io/docs/api-reference/api-subscribers-post.md): Add a new subscriber to your Lumail account
- [Get Subscriber](https://lumail.io/docs/api-reference/api-subscribers-get.md): Retrieve a specific subscriber from your Lumail account
- [Update Subscriber](https://lumail.io/docs/api-reference/api-subscribers-patch.md): Update an existing subscriber in your Lumail account
- [Unsubscribe Subscriber](https://lumail.io/docs/api-reference/api-subscribers-unsubscribe.md): Unsubscribe a subscriber without deleting their history
- [Add Tags to Subscriber](https://lumail.io/docs/api-reference/api-subscriber-tags-post.md): Add one or more tags to an existing subscriber
- [Remove Tags from Subscriber](https://lumail.io/docs/api-reference/api-subscriber-tags-delete.md): Remove one or more tags from an existing subscriber
- [Track Event](https://lumail.io/docs/api-reference/api-events-post.md): Record a new subscriber event in your Lumail account
- [Get Subscriber Events](https://lumail.io/docs/api-reference/api-subscriber-events-get.md): Retrieve the event history for a specific subscriber
- [Get All