HTML Email Playbook
by OsamaHassouna · remote · local (npm) · no sign-in to list tools · v0.7.0 · published by GitHub user OsamaHassouna
Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.
5 tools: 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads5Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http email-playbook https://docs.osamahassouna.com/api/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
5 tools
Only reads 5Claude Code: allow
get_componentReturn 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 flag…No findings
Why it is in this group
- The name "get_component" says "get": a word for reading.
Description, as the server wrote 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_playbook_rulesReturn rule pages.No findings
Why it is in this group
- The name "get_playbook_rules" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_ruleReturn one rule page: slug, category, title, description, checklist, and the markdown body, which includes the page's HTML/CSS code.No findings
Why it is in this group
- The name "get_rule" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_categoriesList all rule categories in the Email Playbook with a one-line description, page count, and the slug and title of each page in it.No findings
Why it is in this group
- The name "list_categories" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_componentsList all reusable email components in the playbook with their metadata: name, subcategory (layout/media/interactive/text), description, whether they require Outlook VML, and whethe…No findings
Why it is in this group
- The name "list_components" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.7.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http email-playbook https://docs.osamahassouna.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__email-playbook__list_categories",
"mcp__email-playbook__get_playbook_rules",
"mcp__email-playbook__get_rule",
"mcp__email-playbook__list_components",
"mcp__email-playbook__get_component"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as email-playbook. Review it before you use it.
