HTML Email Playbook
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.
| Author | io.github.OsamaHassouna |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2403 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"HTML Email Playbook": {
"url": "https://docs.osamahassouna.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (5)
list_categoriesread-onlyList 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.
Hints: read-only yes · destructive not declared · idempotent yes · open-world no
get_playbook_rulesread-onlyReturn 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.
Parameters:
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".
Hints: read-only yes · destructive not declared · idempotent yes · open-world no
get_ruleread-onlyReturn 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.
Parameters:
slug(required) — 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.
Hints: read-only yes · destructive not declared · idempotent yes · open-world no
list_componentsread-onlyList 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.
Hints: read-only yes · destructive not declared · idempotent yes · open-world no
get_componentread-onlyReturn 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.
Parameters:
name(required) — string — Component name. Get the list from list_components first.
Hints: read-only yes · destructive not declared · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.