Brew MCP Server

Widget generated by MCP Showcase

Introduction

Brew is an AI-native Email Service Provider (ESP) that rebuilds the entire email marketing workflow—strategy, copywriting, design, segmentation, delivery, and analysis—around AI. This MCP server exposes the full Brew toolbelt to any MCP client (ChatGPT, Claude, Grok, Cursor, and more), so an agent can generate on-brand emails, send campaigns, build automations, manage contacts, and analyze performance backed by the same brand and data as the Brew app.

The server offers a comprehensive set of tools spanning several categories: email design (AI generation, editing, importing from HTML/MJML/JSX/Figma, cloning, versioning, and exporting to third-party ESPs), quality assurance (accessibility audits, cross-client rendering previews, and inbox-placement/spam testing), and sending (one-off campaigns, test sends, scheduled and gradual/warmup delivery with pause/resume/cancel controls).

It also covers audience and contact management (saved audience filters, contact CRUD, CSV import, email validation, and custom fields), automations (visual workflow graphs with triggers, waits, filters, and splits, plus event triggers and manual-audience runs), domains and deliverability (registering, verifying, and monitoring sending-domain health), and analytics (overview dashboards, per-campaign, per-send, per-automation, and per-recipient event feeds). Rounding it out are brand and creative assets tools—brand identity management, image search/generation, GIF creation, image transformation, and a template gallery.

Use Cases

Email Design & Creation

  • Generate an on-brand email from a prompt — Brew learns your palette, typography, and voice to draft a ready-to-send design.

    • Sample prompt: Create a promotional email for our Black Friday sale — 30% off all annual plans, ending Nov 30, aimed at trial users who haven't upgraded.
  • Build an email from existing web content — ground a design in real URLs like a blog recap or product roundup.

    • Sample prompt: Turn our latest three blog posts into a monthly newsletter — here are the URLs. Keep it skimmable with a CTA to each article.
  • Import a Figma frame as an editable email — convert a designed frame into responsive React Email JSX.

    • Sample prompt: Import this Figma frame into Brew as an email design: https://figma.com/design/abc?node-id=12-345
  • Edit an existing design with natural language — make scoped, in-place changes without a full rewrite.

    • Sample prompt: In my "Spring Launch" email, swap the hero for the garden campaign image and tighten the CTA copy to two words.

QA & Deliverability Testing

  • Audit accessibility before sending — check WCAG 2.1 issues like contrast, alt text, and heading structure.

    • Sample prompt: Run an accessibility audit on my "Welcome Series #1" email and list what I need to fix.
  • Preview across real inboxes and devices — see how a design renders in Gmail, Outlook, Apple Mail, iOS, and dark mode.

    • Sample prompt: Show me how my newsletter renders in Outlook 2021, Gmail dark mode, and Apple Mail on iOS.
  • Run an inbox placement test — check whether a design lands in inbox vs spam across mailbox providers.

    • Sample prompt: Run a spam placement test for my "Q1 Announcement" email from our marketing domain across Gmail, Outlook, and Yahoo.

Sending & Campaigns

  • Send a campaign to a saved audience — with confirmation and scheduling controls.

    • Sample prompt: Schedule my "December Newsletter" to the "Active US Subscribers" audience for Dec 5 at 9am, subject line "Your December Highlights."
  • Warm up a domain with gradual delivery — start small and grow each batch.

    • Sample prompt: Send my re-engagement campaign gradually — start at 10% and increase 10% every 6 hours in America/New_York.
  • Cancel or pause an in-flight send — stop delivery before or during a send.

    • Sample prompt: Pause the gradual send I just started, then cancel it entirely.

Audiences & Contacts

  • Create a segment in plain English — Brew translates intent into a live filter.

    • Sample prompt: Create an audience of contacts active in the last 30 days who opened an email and are in the US or EU.
  • Import and validate contacts — bulk-load a CSV and check deliverability.

    • Sample prompt: Import this CSV of contacts, mapping "Email Address" to email and "First" to firstName, and validate all addresses first.
  • Search and clean up your list — find and batch-remove contacts.

    • Sample prompt: Find all contacts who bounced in the last 60 days and delete them.

Automations & Triggers

  • Build a lifecycle automation — welcome, abandoned cart, or re-engagement flows on a visual canvas.

    • Sample prompt: Build a 3-email welcome flow: send email 1 immediately, wait 2 days, then send email 2 only to people who opened the first.
  • Create and fire an event trigger — wire product events to automated emails.

    • Sample prompt: Create a "purchase_completed" trigger with fields for email, orderTotal, and productName, then fire it as a test with sample data.
  • Test an automation end-to-end — QA a flow by delivering to your own inbox.

    • Sample prompt: Test my abandoned-cart automation and send the emails to me at test@mycompany.com so I can check them.

Analytics & Reporting

  • Get a performance overview — windowed sends, opens, clicks, and rates.

    • Sample prompt: Show me our email analytics for the last 30 days — sent, delivered, open rate, and click rate.
  • Compare campaign KPIs — lifetime metrics across all campaigns.

    • Sample prompt: Which of my campaigns had the highest click rate this quarter?
  • Trace a recipient's event history — per-recipient sent/opened/clicked feed.

    • Sample prompt: Show me every email event for jane@acme.com over the past 90 days.

Domains & Deliverability Health

  • Add and verify a sending domain — register DNS and confirm auth.

    • Sample prompt: Add newsletter.mycompany.com as a sending domain and tell me which DNS records I need to set up.
  • Check domain health — get a verdict with actionable fixes.

    • Sample prompt: Check the deliverability health of our main sending domain and flag anything at risk.

Creative Assets & Brand

  • Generate on-brand imagery — produce hero images or ad creatives from a prompt.

    • Sample prompt: Generate a 16:9 hero image of a cozy coffee shop at sunrise in our brand colors for the newsletter header.
  • Create an animated GIF — from a prompt, image, or video.

    • Sample prompt: Turn this product screenshot into a subtle looping GIF for my email: [image URL]
  • Export a finished design to your ESP — push to Klaviyo, HubSpot, Mailchimp, and more as a reusable template.

    • Sample prompt: Export my "Holiday Promo" design to Klaviyo as a template called "Holiday Promo 2026."
  • Start from the template gallery — browse and remix on-brand templates.

    • Sample prompt: Show me welcome-email templates in the gallery and remix the "Monk Welcome" one to match my brand.

Details

MCP Server URL:
https://brew.new/api/mcp
Type:
HTTP Stream
Authentication:
API Key (Bearer Token)

Tools

list_email_designs
Use this when you need to list email designs. List the brand's email designs, newest first — or fetch ONE by passing `emailId`.
create_email_design
Use this when you need to create an email design (AI). Generate a NEW on-brand email design from a natural-language `prompt` (optionally `contentUrls` to ground it, or `referenceEmailId` to match a design).
import_email_design
Use this when you need to import an email design. Import existing HTML, MJML, or React-Email JSX (as a string) into an editable Brew design.
import_figma_design
Use this when you need to import a Figma frame as an email. Deterministically convert a selected Figma frame into an editable Brew email design and return React Email JSX or rendered HTML.
export_email_design
Use this when you need to export an email design to an ESP. Export a finished email DESIGN (by `emailId`) to a CONNECTED third-party ESP as a reusable template.
edit_email_with_ai
Use this when you need to edit an email design (AI). Apply a natural-language `prompt` edit to an existing design, producing a new latest version (the old versions are preserved).
clone_email_design
Use this when you need to clone an email design exactly. Create a NEW design as an exact, LLM-free clone of an existing Brew design.
restore_email_version
Use this when you need to restore an email version. Restore a previous `version` of a design as a new latest version (non-destructive).
delete_email_design
Use this when you need to delete an email design. Permanently delete a design and all its versions.
audit_email_accessibility
Use this when you need to audit email accessibility. Audit a design's latest version for accessibility issues against WCAG 2.1 — colour contrast, image alt text, link text, heading structure, font size, language — so you can fix them before sending.
preview_email_across_clients
Use this when you need to preview email across clients & devices. See how a design's latest version actually renders in real inboxes & devices — Gmail, Outlook, Apple Mail, iOS (with dark-mode variants), plus Yahoo.
create_inbox_placement_test
Use this when you need to run an inbox placement test. Test where a design's latest version lands — inbox vs spam vs missing — across real mailbox providers (Gmail, Outlook, Yahoo, Apple, …).
get_inbox_placement_results
Use this when you need to get inbox placement results. Fetch inbox-placement test results (from `create_inbox_placement_test`).
send_email
Use this when you need to send an email. Send a design as a one-off CAMPAIGN to a saved `audienceId`, `audienceId: "all"` (EVERY contact in the brand), or an inline `to` list (≤50) via a verified `domainId` → `202 { sendId }`.
cancel_send
Use this when you need to cancel a send. Cancel a scheduled or queued campaign send before it goes out (`sendId` from `send_email`), or STOP any in-flight campaign send — a campaign in `sending`/`paused` is canceled and drops its remainder; already-sent recipients stay sent.
pause_send
Use this when you need to pause a gradual send. Manually pause an in-flight GRADUAL (domain-warmup) send.
resume_send
Use this when you need to resume a paused gradual send. Resume a manually paused gradual send.
list_audiences
Use this when you need to list audiences. List the brand's saved audiences (each is a saved FILTER over contacts), or fetch one by `audienceId`.
create_audience
Use this when you need to create an audience. Create an audience — a SAVED FILTER over your contacts.
update_audience
Use this when you need to update an audience. Update a saved audience (e.g.
delete_audience
Use this when you need to delete an audience. Delete a saved audience.
list_domains
Use this when you need to list sending domains. List the brand's sending domains, or fetch one by `domainId`.
get_domain_health
Use this when you need to get domain health. The domain's deliverability health in one FREE read: a `verdict` (healthy / at_risk / critical) with actionable `signals` (each names the fix + the tool for it), DNS/auth state incl.
create_domain
Use this when you need to add a sending domain. Register a sending domain.
update_domain
Use this when you need to update a domain. Update a domain (e.g.
verify_domain
Use this when you need to verify a domain. Trigger DNS verification for a domain after adding its records.
delete_domain
Use this when you need to delete a domain. Remove a sending domain.
get_brand
Use this when you need to get the brand. Get the brand this connection is scoped to — name, colors, voice, logos, and `ready` status.
update_brand
Use this when you need to update the brand. Update the brand's identity fields (name, colors, voice, etc.).
search_brand_images
Use this when you need to search brand images. Browse or semantically SEARCH the brand image library.
list_brands
Use this when you need to list brands. List brands visible to this connection, with extraction status.
get_brand_status
Use this when you need to get brand extraction status. Check whether a brand has finished extracting.
get_analytics_overview
Use this when you need to get analytics overview. The brand analytics OVERVIEW — the exact read behind the in-app /analytics dashboard (identical numbers): windowed totals (sent/delivered/unique opens/unique human clicks/bounced/complained/…), rates, and a zero-filled timeseries.
get_send_analytics
Use this when you need to get send analytics. The unified send read.
get_campaign_analytics
Use this when you need to get campaign analytics. Lifetime per-campaign KPIs (sent, delivered, opened, clicked, bounced, etc.) across the brand.
get_automation_analytics
Use this when you need to get automation analytics. Windowed automation performance (per-automation send + engagement metrics over a time range).
get_event_analytics
Use this when you need to get event analytics. The unified per-recipient event feed (sent/delivered/opened/clicked/bounced/complained/unsubscribed) across the brand.
list_trigger_instances
Use this when you need to list trigger instances. The fired-trigger audit log — each time a trigger fired, with its payload + the runs it started.
list_automations
Use this when you need to list automations. List automations, or fetch one by `automationId`.
create_automation
Use this when you need to create an automation. Create an automation graph (`nodes` + `connections`).
update_automation
Use this when you need to update / publish an automation. Update an automation graph, or change its runtime state.
delete_automation
Use this when you need to delete an automation. Delete an automation.
test_automation
Use this when you need to test an automation. Test-run an automation END-TO-END through the real workflow — the canonical way to QA a flow.
list_automation_runs
Use this when you need to list automation runs. List automation runs (each execution), or fetch one by `automationRunId`.
list_triggers
Use this when you need to list triggers. List event triggers, or fetch one by `triggerEventId`.
create_trigger
Use this when you need to create a trigger. Create a named event trigger that automations can listen for.
update_trigger
Use this when you need to update a trigger. Update an event trigger (e.g.
delete_trigger
Use this when you need to delete a trigger. Delete an event trigger.
fire_trigger_event
Use this when you need to fire a trigger event. Fire a published trigger (by `triggerEventId`) with an event `payload` to start its automation(s) — the payload's fields must match the trigger's schema.
run_automation
Use this when you need to run a manual-audience automation. Launch a MANUAL-AUDIENCE automation against its bound audience.
list_audience_runs
Use this when you need to list manual-audience runs. List manual-audience automation runs (each "Run" of a manual-audience automation), or fetch one by `audienceRunId`.
control_audience_run
Use this when you need to pause, resume, or cancel a manual-audience run. Control an in-flight manual-audience run (from `run_automation` / `list_audience_runs`).
search_contacts
Use this when you need to search contacts. The canonical contacts READ.
create_contact
Use this when you need to create or upsert a contact. Create or upsert a contact by email (standard fields + a custom `fields` map).
update_contact
Use this when you need to update a contact. Update a contact by email — standard fields and/or custom `fields`.
delete_contact
Use this when you need to delete a contact. Delete a single contact by email.
batch_delete_contacts
Use this when you need to batch-delete contacts. Delete many contacts at once by an `emails` list.
validate_contacts
Use this when you need to validate contact emails. Check whether email addresses are deliverable before importing or sending — up to 100 at once.
import_contacts_csv
Use this when you need to import contacts from CSV. Bulk-import contacts from CSV content with a column→field mapping.
list_custom_fields
Use this when you need to list custom fields. List the brand's custom contact-field definitions (name, type).
create_custom_field
Use this when you need to create a custom field. Define a new custom contact field (name + type).
delete_custom_field
Use this when you need to delete a custom field. Delete a custom field definition by `fieldName`.
generate_image
Use this when you need to generate an image (AI). Generate an on-brand image from a prompt, returning a hosted URL to use in a design.
create_gif
Use this when you need to create a GIF. Create an animated GIF from a `prompt` (20 credits), an `imageUrl` (10), or a `videoUrl` (10).
transform_image
Use this when you need to transform an image. Transform a hosted image: `optimize` (compress, 1 credit) or `resize` to width×height (2 credits).
html_to_png
Use this when you need to render HTML to PNG. Render an HTML string to a hosted PNG image (e.g.
add_image
Use this when you need to add an image to the brand library. Host external image URL(s) into the brand image library (optimized) so they can be reused in designs.
get_chat_context
Use this when you need to get chat context. Load a Brew chat to resume it here.
get_usage
Use this when you need to get usage. Get the org billing + quota surface: current `plan`, remaining `credits`, and the `emailSends` allowance/usage for the period.
list_templates
Use this when you need to list templates. List the public Brew template gallery (org-wide, not brand-specific) to start a design from.
get_brew_capabilities
Use this when you need to discover Brew tools, limits, costs, and recommended workflows. Call it before an unfamiliar multi-step Brew task.

Want to create a similar playground for your MCP?