slideshot-mcp
slideshot-mcp is an MCP server that converts HTML carousel slides into high-resolution images, PDFs, and presentations. Key capabilities:
Discover themes (
discover_themes): Starting point for the guided workflow — returns available themes, orientation presets, token-usage modes, and output formats.Create slides (
create_slides): Generate a full HTML slide deck from AI-written HTML (defaultmode) or structured JSON (token_savermode), supporting 11 themes (generic, branded, instagram-carousel, infographic, pitch-deck, dark-modern, editorial, browser-shell, academic-poster, clinical-medical, sketch-handdrawn) and slide types like cover, content, stats, comparison, timeline, and more.Render slides (
render_slides): Export to PNG, WebP, PDF, and/or PPTX with configurable scale, dimensions, orientation, quality, and slide range.Edit slides (
edit_slides): Make token-efficient partial edits — replace individual slides, patch CSS rules, swap CSS variable values, or add/remove classes without regenerating the whole deck.List themes (
list_themes): Retrieve the full theme catalog at any time without starting a new workflow.Health check (
health_check): Verify that Puppeteer/Chromium is available and functional for rendering.
slideshot
Convert AI-generated HTML carousels into high-res PNG, WebP, PDF, and PPTX — via CLI, Web App, MCP Server (Cursor MCP, Claude MCP, OpenCode MCP), or REST API.
Web App · npm CLI · npm MCP · API Spec
Wrong install?
The MCP package name is slideshot-mcp on npm (canonical Glama listing). Use npx -y slideshot-mcp — not unrelated html-to-slides or third-party scoped copies from generic searches.
Works with (MCP)
Discovery-oriented table — verify each host’s current MCP docs before upgrading.
Open source–oriented hosts
Host | Documentation | Typical wire-up |
OpenCode | See OpenCode below | |
Continue | Add stdio MCP pointing at | |
Zed | Stdio MCP per Zed | |
Cline | Extension MCP docs | |
Goose | MCP extensions per Goose |
Large commercial stacks
Host | Documentation | Typical wire-up |
Cursor |
| |
Claude (Desktop / Code) | Claude Desktop JSON or | |
GitHub Copilot | MCP in VS Code where enabled | |
ChatGPT | Prefer REST ( | |
Google Gemini | Gemini IDE / CLI MCP when supported — else REST |
Related MCP server: HTML to PDF MCP Server
Architecture
slideshot/
packages/
cli/ ← Core Puppeteer rendering engine + CLI
mcp-server/ ← MCP stdio server for AI tools
webapp/ ← Next.js web app with live preview
prompts/
generic.md ← Clean minimal
branded.md ← Ketan Slides design system
instagram-carousel.md ← Bold vibrant IG style
infographic.md ← Data-heavy charts
pitch-deck.md ← Professional presentations
dark-modern.md ← Neon glassmorphism
editorial.md ← Magazine serifQuick Start
CLI
npx slideshot ./my-carousel.html --formats png,webp,pdf --scale 4Options:
Flag | Default | Description |
|
| CSS selector for slide elements |
|
| Slide width (CSS px) |
|
| Slide height (CSS px) |
|
| Device scale (4x = 2160x2700) |
|
| Output formats (png, webp, pdf, pptx) |
|
| WebP quality (0-100) |
|
| Output directory |
Web App
Live: slideshot.vercel.app
Or run locally:
cd packages/webapp && npm install && npm run devOpen http://localhost:3000 — paste HTML, preview, export.
MCP Server
Add to Cursor, Claude Desktop, Claude Code, or any stdio MCP host. Published as slideshot-mcp on npm.
Cursor / Claude Desktop (mcpServers):
{
"mcpServers": {
"slideshot": {
"command": "npx",
"args": ["-y", "slideshot-mcp"]
}
}
}Optional pin: "args": ["-y", "slideshot-mcp@4.4.0"] (replace with current npm version).
OpenCode
~/.config/opencode/opencode.json:
{
"mcp": {
"slideshot": {
"type": "local",
"command": ["npx", "-y", "slideshot-mcp"],
"enabled": true
}
}
}Tools:
create_slides— guided creation workflow with 7 themes and output presetsrender_html_to_images— render HTML to PNG/WebP/PDF/PPTXget_slide_prompt— get AI prompt template for any theme varianthealth_check— verify Puppeteer/Chromium availability
Prompts (7 themes):
generic-slides— clean minimalbranded-slides— Ketan Slides design systeminstagram-carousel-slides— bold vibrant IG styleinfographic-slides— data-heavy charts and statspitch-deck-slides— professional presentationsdark-modern-slides— neon glassmorphismeditorial-slides— magazine serif with gold accents
REST API (ChatGPT Actions / OpenWebUI)
The web app exposes an OpenAPI-compatible REST API at https://slideshot.vercel.app.
Endpoints:
Method | Path | Description |
|
| Render HTML slides to PNG/WebP/PDF (returns ZIP) |
|
| Get AI prompt template |
|
| OpenAPI 3.1.0 spec |
Platform support:
Platform | Method | Setup |
Cursor | MCP |
|
Claude Desktop | MCP |
|
OpenCode | MCP |
|
Continue | MCP | stdio → |
ChatGPT | OpenAPI Action | Import |
OpenWebUI | OpenAPI Tool | Import |
AI Prompt Templates
7 prompt variants in prompts/ — copy-paste or use via get_slide_prompt tool:
Variant | File | Style |
Generic |
| Clean minimal, Inter font |
Branded |
| Space Mono, teal/coral accents |
| Bold gradients, Poppins | |
Infographic |
| DM Sans, stat cards |
Pitch Deck |
| Professional, KPI cards |
Dark Modern |
| Neon, glassmorphism |
Editorial |
| Playfair Display, gold |
Build All
npm install # from root — installs all workspaces
npm run build # builds cli → mcp-server
cd packages/webapp && npm run build # builds webapp separatelyLinks
Surface | URL |
Web App | |
npm CLI | |
npm MCP | |
GitHub | |
API Spec |
Related MCPs
medium-ops — Medium CLI + MCP (PyPI).
substack-ops — Substack CLI + MCP (PyPI).
License
Available Tools
6 toolscreate_slidesAIdempotent
Create slides. IMPORTANT: Use mode=default unless the user explicitly chose token_saver. mode=default = AI writes full HTML (best quality). mode=token_saver = AI sends JSON, server uses basic templates. REQUIRES discover_themes first AND user must have confirmed the data outline. After this tool saves the HTML, you MUST show the htmlPath as a code preview artifact. Then STOP and ask the user to confirm. DO NOT call render_slides until the user explicitly confirms.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | default = AI writes full HTML (more tokens, full control). token_saver = AI sends JSON, server assembles HTML (fewer tokens). | |
| theme | Yes | Theme from discover_themes | |
| orientation | No | Preset or custom. Default: portrait | |
| width | No | Custom width px (only with orientation=custom) | |
| height | No | Custom height px (only with orientation=custom) | |
| html | No | Full HTML document (mode=default only) | |
| slides | No | Structured slide data (mode=token_saver only) | |
| brandName | No | Brand name for branded themes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false. The description adds crucial behavioral details: the mode behavior (full HTML vs JSON), the requirement for prior steps, and the post-call action (show htmlPath, stop, ask confirmation). It also warns against prematurely calling render_slides. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with important information front-loaded and emphasized (IMPORTANT, REQUIRES, MUST, STOP, DO NOT). However, it is slightly verbose, repeating some points (e.g., mode guidance appears twice). A more concise version could remove redundancy while retaining clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multiple prerequisites, conditional modes), the description covers workflow, mode selection, and post-call actions. It lacks an explicit statement of the return value (htmlPath is mentioned but not as a return field). Error conditions and responses are not addressed. Still, it provides sufficient context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds some meaning beyond schema for mode (explaining quality trade-off) and implies conditions for html and slides. However, themes, orientation, width, height, and brandName are not elaborated beyond the schema. The description does not significantly increase understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Create slides,' clearly indicating the action and resource. It further details mode options and prerequisites, distinguishing it from siblings like discover_themes and render_slides. However, it could be more explicit about what 'create slides' entails (generating HTML slides) and differentiate from edit_slides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent usage guidance: it specifies when to use each mode (default vs token_saver), mandates that discover_themes must be called first and the user must confirm the data outline, and strictly instructs not to call render_slides until user confirmation. This clearly separates this tool from its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_themesARead-onlyIdempotent
MANDATORY first step — all other tools REJECT until this is called. Returns themes, orientation presets, token-usage modes, and output formats. Use ONLY the native selector prompts from the "ask" array — DO NOT render themes as a separate markdown list. DO NOT ask how many slides (you decide based on topic). After user picks options, show a data outline of proposed slides and WAIT for confirmation before calling create_slides.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds workflow context: returns themes, orientation, etc., and is mandatory first step. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with most critical info (mandatory first step). Every sentence adds distinct value with specific do's and don'ts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description lists return types (themes, modes, formats) but lacks exact structure. However, given the interactive workflow, description sufficiently supports agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters with 100% coverage. Description adds no parameter info but none needed. Baseline score of 4 for zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies tool as mandatory first step that returns themes and other options. Distinguishes from sibling tools by stating all other tools reject until this is called.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (first step), provides specific instructions on using native selector prompts, forbids certain actions (asking slide count), and outlines post-call workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_slidesA
Token-efficient partial edits on a previously-generated HTML deck. Use this INSTEAD of regenerating the whole deck for small changes — it saves 60-90% tokens vs a full rewrite. Operations: replace_slide (swap one slide block by 1-indexed slideIndex), patch_css (append CSS rules to ), swap_token (replace a CSS variable's value, e.g. {"--coral": "#FF0000"}), patch_class (add/remove a class on a specific slide, e.g. {"add": "dark"}). Reads from cache or htmlPath; saves the updated HTML and returns the new htmlPath. After editing, show the htmlPath as a preview artifact and STOP — do NOT call render_slides until the user confirms.
| Name | Required | Description | Default |
|---|---|---|---|
| htmlPath | No | Path to HTML to edit. Falls back to cached HTML from last create_slides call. | |
| operation | Yes | Edit operation: replace_slide swaps one slide block; patch_css appends CSS rules to <style>; swap_token replaces a CSS variable's value; patch_class adds/removes a class on a slide. | |
| slideIndex | No | 1-indexed slide position. Required for replace_slide and patch_class. Omit for global ops (patch_css, swap_token). | |
| payload | Yes | For replace_slide: the new <div class="slide">...</div> HTML string. For patch_css: a CSS rules string. For swap_token: an object {tokenName: newValue}, e.g. {"--coral": "#FF0000"}. For patch_class: an object {add?: string, remove?: string}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but description adds context: reads from cache or htmlPath, saves updated HTML, returns new htmlPath, and estimates token savings. It transparently describes behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: starts with purpose and efficiency claim, then lists operations in bullet format, and ends with clear behavioral instructions. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description covers return value (new htmlPath) and behavior (caching, fallback). It provides enough context for correct invocation across all operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description further clarifies payload formats for each operation and slideIndex requirements, adding utility beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for 'Token-efficient partial edits on a previously-generated HTML deck', distinguishing it from sibling tools like create_slides and render_slides. It lists specific operations, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use this instead of regenerating the whole deck for small changes and provides a clear stop condition after editing: 'show the htmlPath as a preview artifact and STOP — do NOT call render_slides until the user confirms.' No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkARead-onlyIdempotent
Verify Puppeteer/Chromium can launch. Use when render fails.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and not destructive. The description adds specific behavioral context (launch verification) beyond what annotations provide, without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences that each carry essential information: what the tool does and when to use it. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers the tool's purpose and usage context. Annotations provide safety guarantees. Complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the baseline is 4. The description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Verify' and identifies the resource 'Puppeteer/Chromium can launch'. It clearly distinguishes this diagnostic tool from the slide and theme tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use when render fails', providing clear context for when to invoke this tool. Could mention when not to use, but the guidance is sufficient for a simple diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_themesARead-onlyIdempotent
Idempotent read-only listing of all available themes (8+). Unlike discover_themes, this does NOT start a slide-creation workflow — call it any time the user asks "what themes are there?" mid-conversation. Returns the same tiered theme catalog (primary/secondary). Models MUST present every theme returned, never truncate.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds that it returns tiered catalog (primary/secondary) and instructs models not to truncate. This adds value beyond annotations, though annotations cover core behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each essential: purpose, usage guidance with sibling differentiation, and a behavioral constraint. Front-loaded with key info. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with good annotations and no output schema, the description provides enough context: what it lists, when to use, output structure (tiered catalog), and behavior (no truncation). Complete enough for effective agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema; baseline is 4. Description does not need to add param information. No additional details about parameters are necessary and none are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists themes (8+), is idempotent and read-only, and distinguishes from sibling discover_themes which starts a workflow. Uses specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call ('any time user asks what themes are there? mid-conversation') and that unlike discover_themes it does not start a slide-creation workflow, naming the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_slidesAIdempotent
Final render to PDF/WebP/PNG/PPTX. Accepts html string OR htmlPath. Supports width, height, selector, scale, webpQuality, orientation, pptxMode, pptxFilename, slideRange. NEVER call render_slides in the same turn as create_slides. When the user provides an existing HTML file path, pass it as htmlPath and call this tool directly — no discover_themes or create_slides needed. For the full slide-creation workflow, REQUIRES both discover_themes AND create_slides first, and ONLY call AFTER user confirms the preview. Returns file paths on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| htmlPath | No | Path to saved HTML file (from create_slides). Falls back to cached HTML. | |
| html | No | HTML string (prefer htmlPath to save tokens) | |
| selector | No | Slide selector (default: .slide) | |
| width | No | Width px (default: 540) | |
| height | No | Height px (default: 675) | |
| scale | No | Device scale 1-6 (default: 4) | |
| formats | No | Output formats (default: [pdf]) | |
| webpQuality | No | WebP quality 0-100 (default: 95) | |
| outDir | No | Output directory override | |
| pdfFilename | No | Custom PDF filename | |
| pptxFilename | No | Custom PPTX filename | |
| slideRange | No | Render slides N-M, 1-indexed | |
| orientation | No | portrait=540x675, landscape=1920x1080 | |
| pptxMode | No | Default: image (pixel-perfect, preserves design, NOT editable). 'native' is opt-in for text-only export (selectable text but design is NOT preserved — looks broken). For true editable PPTX with shapes/colors, use a different tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true. Description adds that it accepts html or htmlPath, falls back to cached HTML, and returns file paths on disk. Warns about pptxMode 'native' not preserving design, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with core purpose. Each sentence adds value (formats, parameters, workflow rules). Could be slightly more concise but is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Good usage guidelines and behavioral context for a 14-param tool. However, missing details on return value structure (e.g., array of paths) since no output schema exists. Workflow dependencies are well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of 14 parameters with descriptions. The description lists many parameters but adds little extra meaning beyond their names; workflow context is provided but not parameter-specific. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'render' with specific output formats (PDF, WebP, PNG, PPTX). It distinguishes from siblings by being the 'Final' step, contrasting with create_slides and discover_themes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly forbids calling render_slides in the same turn as create_slides. Provides clear workflow: for existing HTML file, call directly; for full workflow, require discover_themes and create_slides first, and only after user confirmation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
create_slides - First observed
discover_themes - First observed
edit_slides - First observed
health_check - First observed
list_themes - First observed
render_slides
TDQS
Scored across 6 tools
All tools have distinct responsibilities, but discover_themes and list_themes both surface the theme catalog and could be confused if an agent only glances at names; the descriptions do clarify that one is a mandatory workflow bootstrap and the other is a read-only listing. create_slides, edit_slides, and render_slides are otherwise cleanly separated by operation.
Most names follow the verb_noun snake_case pattern consistently: discover_themes, create_slides, render_slides, list_themes, edit_slides. health_check breaks the pattern slightly by being a noun phrase rather than a verb-first command, though it remains simple and readable.
Six tools is a well-scoped count for a slide-generation and rendering server: health check, theme discovery, theme listing, create, render, and edit. Each tool has a clear role, and none feels like unnecessary surface area.
The core lifecycle is covered: discover themes, create slides, render to output formats, and apply token-efficient partial edits. Minor gaps exist, like no explicit slide deletion or no tool to inspect a previously generated deck's structure, but most workflows can be completed without them.
Maintenance
Related MCP Connectors
Generate images and PDFs from HTML/CSS, live websites, and reusable templates.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Create, edit, export and publish social carousels from your Slidefast account.
- CanvoraOAuthai.canvora
Turn any idea, URL, doc, or PDF into on-brand visuals: 100+ formats, native in 150+ languages
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides screenshot and OCR capabilities for macOS.115 npm23MIT
- FlicenseNot gradedqualityDmaintenanceConverts HTML files or HTML content to PDF using Puppeteer's browser rendering engine with support for CSS, JavaScript, custom page formats, margins, and header/footer templates.6-
- FlicenseNot gradedqualityDmaintenanceConverts Markdown files and standalone Mermaid diagrams into high-quality PDF or PNG documents using Puppeteer and SVG rendering. It supports custom CSS styling and provides tools for professional document generation from markdown-based content.4-
- FlicenseAqualityDmaintenanceConverts subtitles or text into a single 1080×1620 infographic card (HTML+PNG) using LLM to generate content and Puppeteer for rendering.3-