# How to build and schedule an email campaign from Claude using MCP

Canonical: https://brew.new/blog/how-to-build-and-schedule-an-email-campaign-from-claude-using-mcp
Author: Brew Team
Published: 2026-09-24
Updated: 2026-09-29

You already use Claude to draft the campaign plan and the copy for the monthly update. Then you paste it into the email editor and rebuild the layout around it. Every time a line needs rewriting, you switch back to the chat.

With Brew connected over MCP, you can plan and schedule the campaign in the same Claude chat without opening an email editor. Claude has Brew design the email from your brand, sends you a test, picks the audience and schedules the send. On an OAuth connection, Brew requires confirmation before a live send. Review the final audience, content, and schedule before approving.

This walkthrough uses Claude Desktop or claude.ai. Claude Code works the same way after a one-line setup, shown in step 1.

## Key takeaways

- Add `https://brew.new/api/mcp` as a custom connector in Claude, sign in, and choose a brand.
- Claude calls Brew tools in a set order: `create_email`, `edit_email`, `send_email` with `test: true`, then `send_email` with `scheduledAt`.
- The scheduled send pauses for your confirmation. Treat that confirmation as your final review.
- Live sends need a verified sending domain in Brew. Test sends do not.

## Before you start

You need a Brew account with your brand set up, a verified sending domain for the live send, and an audience of contacts who opted in. If you do not have an audience yet, Claude can build one from filters in step 6.

## Step 1: Connect Brew to Claude

In Claude Desktop or claude.ai, open Settings, then Connectors, and choose Add custom connector. Enter:

```
https://brew.new/api/mcp
```

Select Connect, sign in to Brew, and choose the brand Claude should work in. The connection is scoped to that brand, so Claude cannot see other brands' data unless you connect at the organization level. Steps for other clients are in [Connect your client](https://docs.brew.new/api-reference/mcp/connect-your-client).

In Claude Code, the same connection is one command:

```bash
claude mcp add --transport http brew "https://brew.new/api/mcp"
```

## Step 2: Check the connection

Start a new chat and ask "What can you do with Brew?" Claude calls `get_brew_capabilities` and lists the tools available on your connection. If you see the email, audience and send tools, you are ready.

## Step 3: Brief the campaign

Give Claude a specific brief. For example:

```text
Create this month's product update for our customers.
Three sections: the new CSV import, faster search, and the pricing page redesign.
Use only the details in the changelog I'm pasting below. No statistics or quotes.
One CTA to example.com/changelog. Keep it under 200 words.
[paste changelog]
```

Claude calls `create_email`. Brew generates the design from your brand's [email-design.md](/blog/email-design-md), and Claude shows a preview image with an Open in Brew link. Generation takes a moment, and Claude checks progress with `get_email`.

## Step 4: Revise in chat

Ask for changes as you would with a designer:

- "Shorten the intro to two sentences."
- "Make the CTA say Read the changelog."
- "Swap the order of the second and third sections."

Each change is an `edit_email` call, which creates a new version you can go back to. To change only the subject line or the email's name, Claude uses `update_email_metadata`, which is free and does not create a version.

## Step 5: Test before you target anyone

Ask Claude to run the checks:

1. "Send me a test." Claude calls `send_email` with `test: true` to your address.
2. "Check rendering in Gmail, Outlook and iOS dark mode." Claude calls `test_email_rendering`. Review the current [credit costs](https://docs.brew.new/api-reference/api/credits) before running paid checks.
3. "Audit the email." Claude calls `audit_email` and summarizes the findings. Resolve actionable findings before scheduling.

Open the test in your own inbox. Click every link and read the footer.

## Step 6: Choose the audience

Ask "Which audiences do I have?" and Claude calls `list_audiences`. To build a new one, describe it:

> "Create an audience of contacts on the Pro plan who signed up before July 1."

Claude checks your contact fields with `list_contact_fields`, then calls `create_audience` with filters and reports how many people match. If the count looks wrong, fix the filter before going further.

## Step 7: Schedule the send

Now ask for the schedule:

> "Schedule it to the Pro customers audience for Tuesday at 9:00 America/New_York, from our marketing domain."

Claude calls `list_domains` to find a verified domain with a marketing sending purpose. It then prepares `send_email` with the email, subject, audience, domain, an idempotency key and `scheduledAt`. Always state the time zone in your request.

Brew treats a send as irreversible, so on OAuth and organization connections the call stops for your confirmation. Claude shows what will be sent, to whom and when. Approve only after checking all three.

## Step 8: Adjust or monitor

After scheduling:

- "Pause the send" or "Cancel the send" uses `control_email_send`.
- "How did the product update do?" calls `get_email_analytics` with a sends report, which covers delivered, opens, clicks and bounces.

## Common problems

| Problem | Likely cause | Fix |
| --- | --- | --- |
| Claude cannot find a sendable domain | The domain is not verified, or its purpose is transactional | Verify the domain, or add a marketing-purpose domain |
| The audience count is zero | The filter does not match your field values | Ask Claude to list the field's values, then rebuild the filter |
| The send reports no eligible recipients | Everyone in the audience is unsubscribed, suppressed or undeliverable | Check the audience's eligible count, and import subscription status with your contacts |
| The brand looks wrong | The brand document is thin | Upload your brand guide and regenerate |

## Frequently asked questions

### Can Claude send without my approval?

On OAuth and organization connections, `send_email` returns a confirmation step before a live send. Your Claude client may also ask before each tool call. Brand API-key connections need their own client approval policy. Keep review enabled for live sends.

### Does this work with ChatGPT or Cursor?

Yes. The same server URL works in ChatGPT through Developer mode, and in Cursor, VS Code, Codex and other MCP clients. The [Brew MCP post](/blog/brew-mcp) explains the connection and links to current setup instructions.

### Does an agent-scheduled campaign follow the same rules as any other?

Yes. It goes out from your domain under your sender reputation, and [CAN-SPAM](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business) and [Gmail's sender requirements](https://support.google.com/mail/answer/81126) apply. [What still applies when an agent sends](/blog/agent-email-deliverability) covers the details.

### Can Claude build automations too?

Yes. `save_trigger`, `save_automation` and `test_automation` create and test event-triggered flows, and publishing is a separate, explicit step.

## Next step

To try it, add the connector, then ask Claude to send you a test of your next campaign before you schedule anything.
