Pipedream HTML to Image MCP vs Self-Hosted: What You Actually Pay
Two subscriptions to render HTML as an image inside Claude. Or: zero.
How the Pipedream HTML to Image MCP works
Pipedream has built MCP integrations for hundreds of third-party APIs. Their HTML to Image integration wraps htmlcsstoimage.com (HCTI) — a dedicated SaaS API that renders HTML and CSS to images using headless Chromium.
The flow looks like this:
AI client (Claude Desktop, Cursor)
→ calls Pipedream MCP server
→ authenticates via Pipedream Connect (OAuth)
→ forwards the request to htmlcsstoimage.com API
→ HCTI renders the HTML with headless Chromium
→ returns a PNG URL
→ Pipedream relays the URL back to the MCP client
→ model receives the URL (not inline image bytes)There are two external services involved, each with their own pricing, each adding a network hop, and each holding a copy of your HTML content.
The actual cost breakdown
Pipedream paid tier requirement
Pipedream's MCP server functionality — the ability to use Pipedream as an MCP host that connects AI clients to third-party APIs — requires a paid Pipedream subscription. Pipedream was acquired by Workday in early 2026; check pipedream.com/pricing for current plan details and pricing.
This is not a per-image fee — it is a subscription just to be able to use Pipedream as an MCP intermediary. If HTML to Image is the only capability you need from Pipedream, you are paying for far more than you are using.
htmlcsstoimage.com: subscription-based tiers
HCTI charges through subscription-based volume tiers. The free plan allows a small number of images per month; paid plans unlock higher volumes. Because HCTI and Pipedream are separate companies, you manage and pay two accounts independently.
Total at typical developer usage
| Usage scenario | Pipedream / HCTI | @openkova/mcp |
|---|---|---|
| 1–50 images/mo | Paid tier + HCTI fees | $0 |
| 50–500 images/mo | Paid tier + HCTI subscription | $0 |
| 500+ images/mo | Paid tier + higher HCTI tier | $0 |
| Private / internal URLs | ✗ cannot reach | ✓ local machine |
| HTML snippet rendering | ✓ | ✓ |
| Inline PNG in model context | ✗ URL only | ✓ bytes inline |
What @openkova/mcp does differently
@openkova/mcp runs entirely on your machine. It uses @openkova/core directly and launches a headless Chromium process (your local Chrome or Chromium) on demand. There is no Pipedream account, no HCTI account, and no external network call for the rendering itself.
The rendering engine is the same — headless Chromium. The output format is the same — PNG. The difference is where it runs and what it costs.
What the model actually receives
With the Pipedream / HCTI stack, the model receives a URL pointing to an image hosted on HCTI's servers. The model does not have the image bytes inline — it would need to fetch the URL separately to see the image. Some AI clients handle this automatically; others do not.
With @openkova/mcp, screenshots are returned as inline image/png MCP content — the model receives actual image bytes and can analyze the visual output immediately without an additional fetch step.
Setup: @openkova/mcp
Add one block to your AI client's config file and restart:
// claude_desktop_config.json | .cursor/mcp.json | .windsurf/mcp.json
{
"mcpServers": {
"openkova": {
"command": "npx",
"args": ["-y", "@openkova/mcp"]
}
}
}The npx -yflag downloads and runs the package on first use. After that, it's cached locally. Chrome must be installed on your machine — on macOS with Google Chrome installed, it works with zero additional configuration.
Example: rendering an HTML template in Claude
With @openkova/mcp configured, you can ask Claude to render HTML directly in the conversation:
// Prompt to Claude:
// "Render this HTML as an image and tell me if the layout looks correct:
//
// <div style="font-family:sans-serif;padding:48px;background:#1e293b;color:#f8fafc">
// <h1 style="font-size:48px;margin-bottom:16px">My Open Graph Image</h1>
// <p style="font-size:24px;color:#94a3b8">openkova.dev — self-hosted screenshot API</p>
// </div>"
// Claude will call screenshot_snippet({ html: "..." })
// and receive the PNG inline, then describe what it sees.When the Pipedream / HCTI stack makes sense
If you already pay for a Pipedream subscription for other reasons — automating workflows, connecting SaaS products, building internal tools — the HTML to Image MCP is a convenient addition at no extra marginal cost per request (beyond HCTI fees).
If HTML to Image is the only thing you need from Pipedream, the paid Pipedream subscription is the wrong tool. Self-hosting is a better fit.
Frequently asked questions
How much does Pipedream HTML to Image MCP cost?
A paid Pipedream subscription is required (check pipedream.com/pricing for current rates — Pipedream was acquired by Workday in early 2026), plus htmlcsstoimage subscription fees on top. Two separate bills, two separate accounts.
What is htmlcsstoimage.com?
htmlcsstoimage.com (HCTI) is a SaaS API that converts HTML to images using headless Chromium. It is a separate product from Pipedream — Pipedream provides the MCP wrapper; HCTI does the rendering and charges per image.
Is there a free alternative?
Yes. @openkova/mcp is MIT-licensed, runs on your machine, and costs nothing. It uses your local Chrome to render HTML and returns PNG bytes inline to the model. No Pipedream account, no HCTI account.
Is the rendering quality the same?
Both HCTI and Openkova use headless Chromium — the same rendering engine as Google Chrome. For standard HTML and CSS, the visual output is identical. Differences arise only with fonts not available on the rendering machine; for HCTI that means their server's font set, for Openkova it means your local system fonts.
Full setup guide: Add a Screenshot Tool to Claude Desktop, Cursor, and Windsurf with @openkova/mcp — or see the full MCP server comparison.