Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Return the full record for a single component: title, description, narrative body, the primary HTML pattern, list of slots (placeholders the model should fill), VML/responsive flags, and all code examples. Use after list_components to fetch the actual HTML pattern to paste into an email.
Component name. Get the list from list_components first.
Return the full record for a single component: title, description, narrative body, the primary HTML pattern, list of slots (placeholders the model should fill), VML/responsive flags, and all code examples. Use after list_components to fetch the actual HTML pattern to paste into an email.
| Argument | Type | Description |
|---|---|---|
| name* | string | Component name. Get the list from list_components first. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"enum": [
"background-images",
"buttons",
"images",
"inline-icon",
"spacing",
"text"
],
"type": "string",
"description": "Component name. Get the list from list_components first."
}
},
"additionalProperties": false
}Return rule pages. format "checklist": each page as its slug, title, description and a short list of the rules to follow, without the body or code; leave out category to get every page in one call (about 16 KB). format "full" (default, needs a category): each page with title, description, checklist, markdown body and all HTML/CSS code examples. Start with the checklists, then fetch the pages you need with get_rule. Components are not included: use list_components / get_component.
| Argument | Type | Description |
|---|---|---|
| format | string | full (default): whole pages with code. checklist: titles and rules only. |
| category | string | Which rule category to fetch. Required for format "full"; optional for "checklist". |
{
"type": "object",
"properties": {
"format": {
"enum": [
"full",
"checklist"
],
"type": "string",
"description": "full (default): whole pages with code. checklist: titles and rules only."
},
"category": {
"enum": [
"ai-generation",
"compatibility",
"production",
"structure"
],
"type": "string",
"description": "Which rule category to fetch. Required for format \"full\"; optional for \"checklist\"."
}
},
"additionalProperties": false
}Return one rule page: slug, category, title, description, checklist, and the markdown body, which includes the page's HTML/CSS code. Accepts the full slug (e.g. "compatibility/responsive"), just the page name ("responsive"), or a page link from a body ("/email-playbook/compatibility/responsive/"). Get the slugs from list_categories. Much smaller than fetching the whole category with get_playbook_rules.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Page slug, e.g. "compatibility/responsive" or "responsive". |
| include_examples | boolean | Also return the code examples as a separate array (they are already in the body). Default false. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Page slug, e.g. \"compatibility/responsive\" or \"responsive\"."
},
"include_examples": {
"type": "boolean",
"description": "Also return the code examples as a separate array (they are already in the body). Default false."
}
},
"additionalProperties": false
}List all rule categories in the Email Playbook with a one-line description, page count, and the slug and title of each page in it. Categories are: structure (head/body container/header/body/footer), compatibility (Outlook MSO, RTL, responsive), production (Gmail clipping, dark mode, preheader, bulletproof buttons), ai-generation (constraints for AI emitters). Pass a page slug to get_rule to fetch just that page. For reusable components, use list_components instead — they live in a separate dimension and are not returned by get_playbook_rules.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List all reusable email components in the playbook with their metadata: name, subcategory (layout/media/interactive/text), description, whether they require Outlook VML, and whether they are responsive. Use this first to discover what components exist before calling get_component.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}