inbox-preview
Render HTML/.eml emails in real Gmail, Outlook & Yahoo web clients and screenshot them
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"inbox-preview": {
"url": "https://api.powerline.ai/v1/mcp"
}
}
}Remote endpoints
https://api.powerline.ai/v1/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢list_clients
List the email clients this deployment can render right now, with their rendering tier, engine, and capabilities
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡submit_preview(html, eml, subject, include_previews, include_full_page, ...)
Submit an email for rendering across email clients — full HTML, or a complete raw .eml (base64). Provide exactly one of html/eml. Returns a job ID to poll for results.
Input Schema
{
"type": "object",
"properties": {
"html": {
"description": "The full email HTML to preview. Provide exactly one of html or eml.",
"type": "string"
},
"eml": {
"description": "A complete raw RFC 822 message (.eml), base64-encoded — inserted verbatim (real headers, multipart, attachments). Max 10MB decoded. Provide exactly one of html or eml.",
"type": "string"
},
"subject": {
"description": "Email subject line",
"type": "string"
},
"include_previews": {
"description": "Also capture the inbox-list row (how the message looks unread in the list) and the subject heading, returned as inbox_preview / subject_preview on each render. Default false: they cost more than the body render itself, so ask only when you need them.",
"type": "boolean"
},
"include_full_page": {
"description": "Also screenshot the whole client window around the opened email (the mailbox UI as well as the message), returned as full_page on each render next to the usual email-only screenshot. Default false. Best-effort: the render mailbox identity and any other mail are masked, and the capture is omitted when that cannot be verified.",
"type": "boolean"
},
"renders": {
"description": "Exactly the renders you want, one entry each (e.g. outlook light + outlook dark are two entries). Omit for the server default: every live client at its default width, light.",
"type": "array",
"items": {
"type": "object",
"properties": {
"client": {
"type": "string",
"enum": [
"gmail",
"outlook",
"yahoo"
],
"description": "Client ID"
},
"viewport_width": {
"description": "Viewport width in pixels (200-2560). Defaults to the client default (1280).",
"type": "number"
},
"color_scheme": {
"description": "Render in the client's light or dark mode (default light). Dark must be supported by the client — check color_schemes in list_clients.",
"type": "string",
"enum": [
"light",
"dark"
]
},
"images_disabled": {
"description": "Render with remote images blocked (default false)",
"type": "boolean"
}
},
"required": [
"client"
]
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job(job_id)
Get the status and screenshots for a preview job. Poll until status is "completed".
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "The job ID returned by submit_preview"
}
},
"required": [
"job_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_screenshot(job_id, client, viewport_width, color_scheme, images_disabled)
Fetch a rendered screenshot. Returns the image URL for the given job, client, width, and environment (color scheme / images).
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "The job ID"
},
"client": {
"type": "string",
"enum": [
"gmail",
"outlook",
"yahoo"
],
"description": "Client ID"
},
"viewport_width": {
"type": "number",
"description": "Viewport width of the render, matching the job (1280 when the job used client defaults)"
},
"color_scheme": {
"default": "light",
"description": "The render's color scheme",
"type": "string",
"enum": [
"light",
"dark"
]
},
"images_disabled": {
"default": false,
"description": "Whether the render had images blocked",
"type": "boolean"
}
},
"required": [
"job_id",
"client",
"viewport_width"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence