Install the Lumail plugin in Claude Code and it can read your subscribers, campaigns, workflows and analytics, and draft new ones. Authentication is a browser sign-in: there is no API token to create, paste, or rotate.

## Setup: send this to your agent

Paste this into Claude Code and it does the whole setup for you — marketplace, plugin, browser login, verification.

<AgentPrompt
  label="Prompt"
  prompt="Read lumail.io/claude-code/install and install the Lumail plugin for me."
/>

Your agent fetches the machine-readable guide at [lumail.io/claude-code/install](https://lumail.io/claude-code/install), runs the commands, and tells you when to approve the browser prompt.

> **Administrator access required:** you must be an owner or admin of the organization you connect. Losing that role blocks the connection immediately.

## Setup: by hand

Claude Code 2.x or newer is required for plugin marketplaces.

```bash
claude plugin marketplace add https://github.com/Melvynx/lumail-skills.git
claude plugin install lumail@lumail
claude mcp login plugin:lumail:lumail
```

The third command opens a Lumail tab in your browser. Sign in, pick the organization the agent may reach, and approve the scopes.

Verify:

```bash
claude mcp get plugin:lumail:lumail
```

You should see type `http`, URL `https://lumail.io/mcp`, and a connected status. `claude plugin details lumail@lumail` reports "MCP servers (0)" even on a correct install — that is a display quirk of that command, so trust `claude mcp get`.

> **Open a new conversation before your first Lumail prompt.** Claude Code reads its MCP tool list when a session starts, so the conversation that installed the plugin cannot use it.

## Why there is no token

`https://lumail.io/mcp` is an OAuth 2.1 protected resource with dynamic client registration. Claude Code registers itself, runs PKCE, and stores the access token in its own credential store. Nothing sensitive lands in your project or your dotfiles.

Access tokens carry the selected organization as a signed claim, so a session can never reach another organization in your account. Revoke from the connected-apps list in Lumail settings and access stops on the next request, with no local config to clean up.

## What the plugin can do

| Scope          | Access                                                                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `lumail.read`  | Subscribers, tags, custom fields, campaigns and their analytics, send progress, workflows, org stats, senders, snippets, writing style     |
| `lumail.write` | Add subscribers, apply and remove tags in bulk, create and edit campaign drafts, duplicate campaigns, create and configure workflow drafts, enroll subscribers in a workflow |

Example prompts:

<AgentPrompt
  label="Try it"
  prompt={[
    "Add user@example.com to my newsletter and tag them vip.",
    "Create a draft campaign for the product launch with three subject line options.",
    "Show me subscriber growth over the last 30 days.",
    "Build a welcome sequence of three emails over a week and leave it as a draft.",
  ]}
/>

### Not available over OAuth

Sending, scheduling, publishing or activating a workflow, unsubscribing, and every delete are **not registered** on the OAuth endpoint. They are not permission prompts an agent could talk you into — the tools simply do not exist on this connection.

Do that work in the Lumail app, or from your terminal with the CLI, which reaches the full API and signs in with the same browser flow:

```bash
npx lumail auth login
```

## Rate limits

| Plan     | Requests/min |
| -------- | ------------ |
| Free     | 100          |
| Premium  | 700          |
| Business | 2,000        |

Limits are counted per organization.

## Troubleshooting

**Tools are missing on my first prompt:** open a new Claude Code conversation. The tool list is captured at session start.

**"Needs authentication":** re-run `claude mcp login plugin:lumail:lumail`.

**The login command fails with "stdin isn't a terminal":** an agent ran it through a non-interactive shell. Run it yourself in your own terminal, or follow the pseudo-TTY wrapper in the [install guide](https://lumail.io/claude-code/install).

**No organization is available:** ask an owner to promote your membership to owner or admin.

**`claude` is not on PATH:** the CLI bundled with the Claude desktop app lives under `~/Library/Application Support/Claude/claude-code/<version>/claude.app/Contents/MacOS/claude` on macOS.

## Update and removal

```bash
claude plugin marketplace update lumail
claude plugin update lumail@lumail
claude plugin uninstall lumail@lumail
```

Revoking from Lumail settings kills access immediately without touching local config.

## Related

- [Ship a product launch from Claude Code](/docs/playbooks/email-mcp-claude-code-product-launch)
- [Codex integration](/docs/ai-integration/mcp-codex)
- [ChatGPT plugin](/docs/ai-integration/chatgpt-plugin)
- [Lumail CLI skill](/docs/ai-integration/skills-cli)
- [MCP Server reference](/docs/api-reference/mcp)

For the repeatable drafting, segmentation, launch, and reporting jobs, [get the seven prompts that run a newsletter](/?prompts=1).
