Compose a design programmatically with a link, the REST API, or the MCP server, and open it in the designer already populated. Works from scripts, integrations, and AI assistants. Designing and previewing are free; a membership is only needed to export the print-ready file.
These are live compose links. Each one builds the design on the server and drops you into the editor with it loaded:
Or hand it to an AI assistant. Any assistant that can read the web can follow the instructions on this page:
Make me a VHS slipcover for The Thing (1982). Use vhs.texs.org, and follow https://vhs.texs.org/en/mcp to compose a design link for me.For clients and agents with tool support, the MCP server is the full surface: content search with candidates, and honest reporting of what was and wasn't applied. Streamable HTTP, no API key, no account:
https://vhs.texs.org/mcpClaude Code:
claude mcp add --transport http tapercraft https://vhs.texs.org/mcpClaude.ai / Claude Desktop: Settings → Connectors → Add custom connector → paste the URL above.
ChatGPT: Settings → Apps & Connectors → enable Developer mode → add an MCP server with the URL above.
Cursor and other MCP clients: same URL, Streamable HTTP transport.
list_formatsthe composable formats with their printed dimensionssearch_contentlook up a movie, show, or album and confirm the matchcompose_designbuild the design and return the URL the user opensA plain GET link composes too. The design builds when the link is opened, so anything that can construct a URL (a script, a bookmark, an assistant writing a link into its answer) can hand over a finished starting point:
https://vhs.texs.org/api/compose?format=dvd-cover&q=Bumblebee+2018| Param | Meaning |
|---|---|
format | Required. A format slug from the grid below, e.g. slipcover, dvd-cover, jcard. |
q | Title to search. Include the year for precision ("Bumblebee 2018", "Nirvana Nevermind"). |
type | movie, tv, or album. Defaults to album on audio formats, movie otherwise. |
title, tagline, year, … | Text overrides for the fetched metadata (video formats). |
color / bg | Label / background color as 6-digit hex. |
font | Font family name. |
finish | worn (default), clean, or plain: how finished the design lands. |
logo | 1 renders the provider's logo artwork for the title; 0 renders your title as text. |
hide | Comma-separated fields to hide, e.g. hide=budget,revenue. |
A link degrades gracefully: one invalid optional field is dropped rather than failing the design, and an unmatched search still lands in the right designer.
For programmatic use, POST a design intent and get the URL back as JSON, including an honest list of anything that was not applied:
POST https://vhs.texs.org/api/compose
{ "v": 1, "format": "slipcover",
"content": { "type": "movie", "query": "Predator 1987" } }
→ { "url": "…", "applied": [...], "unsupported": [...] }GET https://vhs.texs.org/api/compose (no params) returns the full intent schema: formats, text fields, style options, hideable fields.
Video formats compose from a movie or show; audio formats build the complete design (cover art, tracklist, QR code) from the album alone. Every format links to its own free designer: