Overview
Perfect for generating social media previews, email images, report snapshots, and converting web content into shareable image formats.
Live Test HTML to Image Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as HTMLtoImageSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "HTMLtoImageSkill",
"arguments": {
"html": "<html><body><h1>Hello</h1></body></html>"
}
}You do not name the tool yourself; the model picks it. Asking about <html><body><h1>Hello</h1></body></html> in the terms this skill covers is enough for it to reach for HTMLtoImageSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
htmlRequired | string | HTML code to convert length 0–500000 |
widthOptionalPremium | integer | Image width in pixels default 1280 · range 100–3840 |
heightOptionalPremium | integer | Image height in pixels default 800 · range 100–2160 |
formatOptionalPremium | string | Output image formatpngjpegjpgwebpdefault png |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"width": 800,
"height": 600,
"format": "png",
"imageName": "bf3d3d67-bc6e-477b-a916-560b895f8091.png",
"expires": 1789676439207,
"downloadURL": "https://storage.googleapis.com/apiverve/APIData/htmltoimage/bf3d3d67-bc6e-477b-a916-560b895f8091.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1789676439&Signature=Uw7imp8TVuygEgWhdLAmK8%2Byk0NoZmtdLEX9MrDHjlWDYyB28y7zbCxVuD%2BF%2F6Iij5zi%2FhvDoJnuhNT6a2Yl85gw5nWGt750Ai4gup46dQQt0vrsUpD99IPTfTh21DWd4WqE7VCWlIlou7WwNUn620WgWM3ScGi13dCB81Qyb4WuxrdcNal8WrUYX9nZ12h%2B7BZs65Tyw0V4StbvsYxXKqySkF4aQ8J1QbdhUny9WyptE3qNT%2FyM4m2%2F%2FJAOq32bQsSWj8%2BycWEhtifIgpJe4LTBBeqtHBePrIQSrYNRdOwhjaTzj%2BShSeox5wPztiaoRyi1DGIx4FIIstS2dAdQ6Q%3D%3D",
"htmlLength": 197
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
width | number | 800 | Generated image width in pixels |
height | number | 600 | Generated image height in pixels |
format | string | png | Output image format with file extension included |
imageName | string | bf3d3d67-bc6e-477b-a916-560b895f8091.png | Unique identifier for generated image file |
expires | number | 1789676439207 | Unix timestamp when download link expires |
downloadURL | string | https://storage.googleapis.com/apiverve/APIData/htmltoimage/bf3d3d67-bc6e-477b-a916-560b895f8091.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1789676439&Signature=Uw7imp8TVuygEgWhdLAmK8%2Byk0NoZmtdLEX9MrDHjlWDYyB28y7zbCxVuD%2BF%2F6Iij5zi%2FhvDoJnuhNT6a2Yl85gw5nWGt750Ai4gup46dQQt0vrsUpD99IPTfTh21DWd4WqE7VCWlIlou7WwNUn620WgWM3ScGi13dCB81Qyb4WuxrdcNal8WrUYX9nZ12h%2B7BZs65Tyw0V4StbvsYxXKqySkF4aQ8J1QbdhUny9WyptE3qNT%2FyM4m2%2F%2FJAOq32bQsSWj8%2BycWEhtifIgpJe4LTBBeqtHBePrIQSrYNRdOwhjaTzj%2BShSeox5wPztiaoRyi1DGIx4FIIstS2dAdQ6Q%3D%3D | Direct URL to download generated image file |
htmlLength | number | 197 | Character count of input HTML content |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 20 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Social Media
- Generate Open Graph images and social media previews from HTML templates
- Email Marketing
- Convert HTML content to images for email compatibility across clients
- Report Generation
- Create visual snapshots of HTML reports and dashboards
- Documentation
- Generate images from HTML documentation for offline use
Other ways to use HTML to Image Skill
Set up HTML to Image Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Data Conversion: