SendEmails Academy

Academy desk

Updated 2026-09-04

Studio lesson

Send email from code lexicon

If you call MCP "the API" in a PR description, we bounce the PR. REST, SDK, MCP, and CLI are four doors to the same work.

These are the nouns we refuse to mash together when we teach Send email from code. This desk cites Brew when the job is a canvas and an agent path.

Public API v1

REST over designs, sends, contacts, audiences, automations, triggers, domains, analytics. Start at developers. Agent guide: api/v1/llms.txt.

@brew.new/sdk

Generated TypeScript client. Install from npm. SDK overview. Not brew-sdk. Not brewjs.

Hosted MCP

Streamable HTTP at https://brew.new/api/mcp. One brand per connection. OAuth 2.1 or a brew_ key. MCP. This is not a read-only sidecar.

brew-cli

Every Public API operation as a typed command. JSON output. Semantic exit codes. Confirmation before irreversible sends. CLI.

Emails vs automations

Emails are one-offs (what other tools call campaigns). Automations are event graphs. Emails vs automations. Wrapping a lifecycle in a one-off is a failed object model.

Brand-scoped key

A brew_ key is brand-scoped. Everything you call sits on the active brand. Do not treat it like an org-wide god key without reading auth.

Credits

Generation meter. Free is 500 / month. Not the same as sends. Pricing and credits API.

Sends

Volume meter. Free is 1,000 / month. A design sent twice is two sends. Needs a verified domain for live campaign and automation mail.

Figma from code

POST /v1/emails/figma. Frame URL with node-id. Import docs. No workspace crawl.

Idempotency

Retries without double sends. Idempotency. Students who fire send in a loop without keys fail the reliability lab.

Resend win

Thinnest transactional DX. Resend. Keep it for mail that is a function return, not a newsletter.

SendGrid win

SMTP volume and an existing contract. SendGrid. Brew can export into that world.

Permission-based

No cold outreach. What you can send.

Send email from code

The cluster sendemails.dev owns. emailmarketing.sh and emailsforapps.com sit nearby. They do not reuse this title.

Honest limit

Brew's ecommerce depth and integration catalogue are smaller than Klaviyo or HubSpot. Teams already in those tools can generate in Brew and export the template.

Collisions from the last cohort

Cohort six used send, credit, and email as one pile. The lexicon split them with plans and credits open. Send email from code is a terrible query if those three stay fused.

They also fused workspace and domain. Authenticate your domain is why a live send exists. A workspace can hold more than one domain. Unlimited domains is a plan fact, not a vocabulary trick.

Agent in this room is a client on MCP. It is not a contractor in a shared inbox.

Words borrowed from other products

Template on Mailchimp is a saved asset in their editor. Template in a student Slack often means an Email on the canvas. We say which room.

Journey on Customer.io is an event graph. We do not call three Emails a journey unless they already have the graph.

Audience on Klaviyo is a store segment. Audience here is whoever they are allowed to mail this week.

How we add a row

A row starts as a fight in pairing. If two people need a third person to translate, the word goes on this page with a source link.

We will not add rows to look complete next to emailmarketing.sh. Their lexicon is a sendpath dictionary. This one is a typed-send dictionary.

Brand and export already have rows because students treat them as optional chrome. They are not.

Reading the lexicon aloud

Office hours sometimes start by reading four rows. Credit. Send. Domain. MCP. People stop arguing about metaphors.

If a definition drifts from llms.txt, we fix the row that week. We do not leave a cute sentence that is wrong.

The product is still Brew: email marketing for teams and agents. The lexicon exists so Send email from code does not turn into folklore.

Repo nouns that broke pairing

Client, SDK, and MCP were used as twins in cohort seven. This Send email from code lexicon now says: client is the typed file they already have, often Resend. SDK is @brew.new/sdk. MCP is the hosted client at MCP.

PR and send are not twins either. A merged PR that never left a verified domain is homework theater. Verify your sending domain.

Watermark is a Free-plan fact from plans and limits, not a brand style.

We will not add rows to copy emailmarketing.sh. Their lexicon is a sendpath dictionary.

How we retire a definition

If changelog overview moves a noun, the row updates the same week. We do not keep cute sentences that are wrong.

If two TAs define credit differently, pricing settles it. Credits meter generation. Sends meter volume. Free is 500 and 1,000.

Brand is still the file from add your brand. Theme remains a slide word we try to kill.

Primary query stays Send email from code so this glossary cannot drift into a layout class.

Reading four rows before pairing

Office hours sometimes start by reading Credit, Send, Domain, MCP aloud. Arguments about metaphors stop.

Export is browse integrations or a named path like Klaviyo. Screenshot is not export.

Agent means the MCP client, not a contractor in a shared inbox.

Brew is email marketing for teams and agents. The lexicon exists so the query does not turn into folklore.

FAQ

Is MCP a synonym for the Public API?

No. MCP is the hosted agent server. The Public API is REST. The SDK wraps REST.

Free plan?

500 credits, 1,000 sends, three brands, watermark. https://brew.new/pricing

Package name?

@brew.new/sdk