Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://vhs.texs.org
Authorization not required, issuer https://vhs.texs.org
Changed the definition of "compose_design" and "save_design"
⟨116 unchanged words⟩ free text blocks, `style.productionLogos` picks the studio marks (`style.productionLogoColorize: 'off'` keeps their own colours), and `layout.hide: ["poster"]` clears ⟨31 unchanged words⟩
⟨800 unchanged words⟩ e.g. #e8dcc0","type":"string"},"productionLogoColor":{"description":"6-digit hex the studio logos are painted with ('tint' / 'solid'); absent = the label colour.","type":"string"},"productionLogoColorize":{"description":"Video formats: how the studio logos (style.productionLogos or the title's own) are painted. 'solid' (the default) fills them flat in the label colour — a full-colour mark like RCA/Columbia becomes a plain shape; 'off' keeps their original colours; 'tint' recolours while keeping shading.","enum":["off","tint","solid"],"type":"string"},"productionLogos":{"description":"Video formats: Classic ⟨351 unchanged words⟩
⟨813 unchanged words⟩ e.g. #e8dcc0","type":"string"},"productionLogoColor":{"description":"6-digit hex the studio logos are painted with ('tint' / 'solid'); absent = the label colour.","type":"string"},"productionLogoColorize":{"description":"Video formats: how the studio logos (style.productionLogos or the title's own) are painted. 'solid' (the default) fills them flat in the label colour — a full-colour mark like RCA/Columbia becomes a plain shape; 'off' keeps their original colours; 'tint' recolours while keeping shading.","enum":["off","tint","solid"],"type":"string"},"productionLogos":{"description":"Video formats: Classic ⟨351 unchanged words⟩
Changed the definition of "list_designs"
The user's saved designs, newest first, with their links. `total` is how many designs match (the user may have hundreds); page on with `offset` = `nextOffset` until it is null. Filter by `format` (a list_formats slug, e.g. 'slipcover', 'vhslabels') or `query` (matches the design name or the movie/album title). Needs an API key with read.
{"additionalProperties":false,"properties":{"format":{"description":"Only designs of this format slug (list_formats)","type":"string"},"limit":{"description":"Default 25","maximum":100,"minimum":1,"type":"integer"},"offset":{"description":"Skip this many (newest first). Use nextOffset from the previous page.","minimum":0,"type":"integer"},"query":{"description":"Case-insensitive match on the design name or content title","type":"string"}},"type":"object"}
Authorization not required, issuer https://vhs.texs.org
Authorization not required, issuer https://vhs.texs.org
Changed the definition of "compose_design", "delete_design", "delete_upload" and 13 more
before
—after
Compose a designbefore
—after
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Compose a design"}before
—Delete a saved design
Changed the definition of "compose_design", "export_design", "get_export" and 1 more
⟨613 unchanged words⟩ type":"string"},"type":"array"},"spine2":{"additionalProperties":false,"properties":{"title":{"description":"Turns on Dual Spine and gives the second spine its own title: 'text' prints the title as text there, 'logo' paints the provider's wordmark. The first spine keeps style.useLogo / text.title. Formats with a second spine only (slipcover, doublevhs, betamax, compact-tape, bluray-slipcover, cardbox); elsewhere reported unsupported.","enum":["text","logo"],"type":"string"}},"required":["title"],"type":"object"}},"type":"object"},"style":{ ⟨478 unchanged words⟩
Render a saveddesigndesign.to
Added "get_content" and "list_decals"; changed the definition of "compose_design" and "save_design" (14 tools before, 16 now)
⟨87 unchanged words⟩ from describe_format), `images.logo` a custom studio logo. `decals` places catalog stickers / shapes / retro marks (ids from list_decals) or the user's uploads anywhere on the sheet, `texts` adds free text blocks, `style.productionLogos` picks the studio marks, and `layout.hide: ["poster"]` clears the cover art — enough to rebuild a specific vintage cover. Without a key, compose from format + content ⟨12 unchanged words⟩
before
{"additionalProperties":false,"properties":{"content":{"additionalProperties":false,"description":"What the design is of. Provide a query, or an id from search_content. Video formats take movie/tv; audio formats (cassette, jcard, cd*, vinyl*, minidisc*) take album. For audio, the album alone builds the complete design — cover art, tracklist sides, QR code — and style.font / labelColor / background restyle it.","properties":{"id":{"description":"TMDB id (movie/tv) or iTunes collection id (album), if already known","type":"string"},"query":{"type":"string"},"type":{"enum":["movie","tv","album"],"type":"string"}},"required":["type"],"type":"object"},"format":{"description":"Which packaging format","enum":["slipcover","side-load-vhs","doublevhs","betamax","compact-tape","bluray-cover","bluray-slipcover","dvd-cover","steelcase","clamshell","polycase","cardbox","disc","cassette","cassingle","jcard","cd","cd-tray","cd-insert","vinyl-label","vinyl-jacket","vinyl-sleeve","minidisc-label","minidisc-full-labels","minidisc-jcard","minidisc-cover","minidisc-tray"],"type":"string"},"images":{"additionalProperties":false,"description":"The user's own artwork by upload ref (from upload_image). Needs the API key that owns the uploads. Single-surface formats only (describe_format → singleSurface). Each value is a ref string or { ref, fit, opacity }.","properties":{"background":{"description":"One image over the whole sheet (all panels).","oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"logo":{"description":"A custom studio / production logo (video formats). It replaces the title's own studio logos on the spine and back panel. Upload a transparent PNG.","pattern":"^upload:","type":"string"},"panels":{"additionalProperties":{"oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"description":"Per-panel images keyed by the panel key describe_format reports (e.g. front, back, spine1). Unknown keys come back as unsupported.","type":"object"}},"type":"object"},"layout":{"additionalProperties":false,"properties":{"hide":{"description":"Fields to hide on the design","items":{"enum":["rating","texsOrg","overview","labelOverview","fbiWarning","rules","pullquote","pullquoteCredit","spineMeta","barcode","qrCode","spineLogo","title","tagline","year","origin","runtime","starring","director","budget","revenue","movieId","seasonEpisode","writers","composer","producer","productionLogos"],"type":"string"},"type":"array"}},"type":"object"},"style":{"additionalProperties":false,"properties":{"background":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex","type":"string"}},"type":"object"},"finish":{"description":"'worn' (default) fills the back panel with the title's stills and adds a worn-paper texture; 'clean' is stills without the texture; 'plain' skips both. Video formats and jcard only (on jcard 'worn' is the texture alone); other audio formats report it as unsupported.","enum":["worn","clean","plain"],"type":"string"},"font":{"description":"Font family for the whole design (on audio formats, every text section). Curated: Futura, Arial, Times New Roman, Impact, Courier New, Roboto Flex, Bebas Neue, League Gothic, Sofia Sans Extra Condensed, Nunito Sans, Stint Ultra Condensed, EB Garamond…","type":"string"},"labelColor":{"description":"Label / text color, 6-digit hex, e.g. #e8dcc0","type":"string"},"useLogo":{"description":"true paints the provider's logo artwork for the title; false renders your title as text. Defaults to false when you set text.title, so a title you set is visible.","type":"boolean"}},"type":"object"},"text":{"additionalProperties":false,"description":"Overrides for the fetched metadata (video formats only — on audio formats these come back as unsupported). Omit a field to keep the provider value.","properties":{"budget":{"type":"string"},"composer":{"type":"string"},"director":{"type":"string"},"origin":{"type":"string"},"overview":{"type":"string"},"producer":{"type":"string"},"rating":{"type":"string"},"revenue":{"type":"string"},"runtime":{"type":"string"},"seasonEpisode":{"type":"string"},"starring":{"type":"string"},"tagline":{"type":"string"},"texsOrg":{"type":"string"},"title":{"type":"string"},"writers":{"type":"string"},"year":{"type":"string"}},"type":"object"}},"required":["format"],"type":"object"}Added "delete_upload" and "list_uploads"; changed the definition of "upload_image" (12 tools before, 14 now)
⟨12 unchanged words⟩ picker) and get back a ref forcompose_design'sthe images.*fields.fields of compose_design / save_design. Needs an API key with design:write. Send the file as base64 (JPEG/PNG/WebPpreferred, at the panel size describe_formatreports;reports). SIZE: the request body may not exceed 4.5 MB, so keepitthe base64 under 3 MB—(~2.2biggerMB
Added "delete_design", "describe_format", "export_design" and 6 more; changed the definition of "compose_design" (3 tools before, 12 now)
⟨55 unchanged words⟩ than reporting them as done. The user's ownimageartworkfilesgoescannotinbethroughattached`images`through(uploadthisittool:firstuploadswith
Changed the definition of "compose_design"
⟨98 unchanged words⟩ compact-tape","bluray-cover","bluray-slipcover","dvd-cover","steelcase","clamshell","polycase","cardbox","disc"," ⟨306 unchanged words⟩
Certificate recorded, valid to 2026-11-08
Authorization not required
First tool surface recorded: 3 tools (server version 1.0.0)
Showing the latest 15 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
before
—after
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete a saved design"}before
—after
Delete an uploadbefore
—after
{"destructiveHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Delete an upload"}before
—after
Describe a formatbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Describe a format"}before
—after
Export a print filebefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Export a print file"}before
—after
Get accountbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Get account"}before
—after
Get title artworkbefore
—after
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Get title artwork"}before
—after
Get a saved designbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Get a saved design"}before
—after
Check an exportbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"Check an export"}before
—after
List decalsbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List decals"}before
—after
List saved designsbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List saved designs"}before
—after
List formatsbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List formats"}before
—after
List uploadsbefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":true,"title":"List uploads"}before
—after
Save a designbefore
—after
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Save a design"}before
—after
Search movies, shows and albumsbefore
—after
{"destructiveHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Search movies, shows and albums"}before
—after
Upload an imagebefore
—after
{"destructiveHint":false,"openWorldHint":false,"readOnlyHint":false,"title":"Upload an image"}⟨10 unchanged words⟩ :"string"},"output":{"description":"'preview' to see the design, 'png' (default) or 'pdf' for the print file","enum":["png","pdf","preview"],"type":"string"}},"required" ⟨3 unchanged words⟩
⟨11 unchanged words⟩ `file.url` is a download link valid for anhour.hour; a preview job also returns the image itself. Files are kept for a day, then the job reads `expired`.
⟨613 unchanged words⟩ type":"string"},"type":"array"},"spine2":{"additionalProperties":false,"properties":{"title":{"description":"Turns on Dual Spine and gives the second spine its own title: 'text' prints the title as text there, 'logo' paints the provider's wordmark. The first spine keeps style.useLogo / text.title. Formats with a second spine only (slipcover, doublevhs, betamax, compact-tape, bluray-slipcover, cardbox); elsewhere reported unsupported.","enum":["text","logo"],"type":"string"}},"required":["title"],"type":"object"}},"type":"object"},"name":{ ⟨491 unchanged words⟩
after
{"additionalProperties":false,"properties":{"content":{"additionalProperties":false,"description":"What the design is of. Provide a query, or an id from search_content. Video formats take movie/tv; audio formats (cassette, jcard, cd*, vinyl*, minidisc*) take album. For audio, the album alone builds the complete design — cover art, tracklist sides, QR code — and style.font / labelColor / background restyle it.","properties":{"id":{"description":"TMDB id (movie/tv) or iTunes collection id (album), if already known","type":"string"},"query":{"type":"string"},"type":{"enum":["movie","tv","album"],"type":"string"}},"required":["type"],"type":"object"},"decals":{"description":"Stickers, graphics, shapes and the user's own images placed on the label. Each entry names a catalog decal by id (list_decals) OR an upload by ref (upload_image; needs the API key). x/y are percent of the sheet (center-anchored; see describe_format → placement for the coordinate space and the size units). Size with `width` (percent of the sheet width) where describe_format accepts it, else `scale`.","items":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex for colorize (default: the label colour)","type":"string"},"colorize":{"description":"Paint the decal one colour: 'tint' keeps its shading, 'solid' flattens it","enum":["tint","solid"],"type":"string"},"id":{"description":"A decal id from list_decals (e.g. \"rcacolumbia!\", \"04-rounded-rectangle\")","type":"string"},"layer":{"description":"'over' (default), 'under' the label's text and pictures, or 'background'","enum":["over","under","background"],"type":"string"},"ref":{"description":"An upload ref, instead of id","pattern":"^upload:","type":"string"},"rotation":{"maximum":360,"minimum":-360,"type":"integer"},"scale":{"description":"The designer's size unit (100 = natural width ÷ 4 layout units); use instead of width","maximum":900,"minimum":10,"type":"integer"},"side":{"description":"Two-sided formats only","enum":["front","back"],"type":"string"},"stretch":{"description":"Horizontal stretch, percent of the natural aspect","maximum":1000,"minimum":10,"type":"integer"},"width":{"description":"Rendered width as percent of the sheet width (formats with placement.decals.layoutWidthUnits)","maximum":200,"minimum":1,"type":"number"},"x":{"description":"Center, percent of the sheet width (default 50)","maximum":100,"minimum":0,"type":"number"},"y":{"description":"Center, percent of the sheet height (default 50)","maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":24,"type":"array"},"format":{"description":"Which packaging format","enum":["slipcover","side-load-vhs","doublevhs","betamax","compact-tape","bluray-cover","bluray-slipcover","dvd-cover","steelcase","clamshell","polycase","cardbox","disc","cassette","cassingle","jcard","cd","cd-tray","cd-insert","vinyl-label","vinyl-jacket","vinyl-sleeve","minidisc-label","minidisc-full-labels","minidisc-jcard","minidisc-cover","minidisc-tray"],"type":"string"},"images":{"additionalProperties":false,"description":"The user's own artwork by upload ref (from upload_image). Needs the API key that owns the uploads. Single-surface formats only (describe_format → singleSurface). Each value is a ref string or { ref, fit, opacity }.","properties":{"background":{"description":"One image over the whole sheet (all panels).","oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"logo":{"description":"A custom studio / production logo (video formats). It replaces the title's own studio logos on the spine and back panel. Upload a transparent PNG.","pattern":"^upload:","type":"string"},"panels":{"additionalProperties":{"oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"description":"Per-panel images keyed by the panel key describe_format reports (e.g. front, back, spine1). Unknown keys come back as unsupported.","type":"object"}},"type":"object"},"layout":{"additionalProperties":false,"properties":{"hide":{"description":"Fields to hide on the design (video formats). 'poster' removes the cover art so a panel image or decal can carry the front.","items":{"enum":["poster","rating","texsOrg","overview","labelOverview","fbiWarning","rules","pullquote","pullquoteCredit","spineMeta","barcode","qrCode","spineLogo","title","tagline","year","origin","runtime","starring","director","budget","revenue","movieId","seasonEpisode","writers","composer","producer","productionLogos"],"type":"string"},"type":"array"}},"type":"object"},"style":{"additionalProperties":false,"properties":{"background":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex","type":"string"}},"type":"object"},"finish":{"description":"'worn' (default) fills the back panel with the title's stills and adds a worn-paper texture; 'clean' is stills without the texture; 'plain' skips both. Video formats and jcard only (on jcard 'worn' is the texture alone); other audio formats report it as unsupported.","enum":["worn","clean","plain"],"type":"string"},"font":{"description":"Font family for the whole design (on audio formats, every text section). Curated: Futura, Arial, Times New Roman, Impact, Courier New, Roboto Flex, Bebas Neue, League Gothic, Sofia Sans Extra Condensed, Nunito Sans, Stint Ultra Condensed, EB Garamond…","type":"string"},"labelColor":{"description":"Label / text color, 6-digit hex, e.g. #e8dcc0","type":"string"},"productionLogos":{"description":"Video formats: Classic Logo ids (list_decals → classicLogos, e.g. \"rcacolumbia!\") for the spine and studio slot, in order (#1 is the spine). As the whole selection they REPLACE the title's own studio logos; [] removes the studio slot.","items":{"type":"string"},"maxItems":4,"type":"array"},"useLogo":{"description":"true paints the provider's logo artwork for the title; false renders your title as text. Defaults to false when you set text.title, so a title you set is visible.","type":"boolean"}},"type":"object"},"text":{"additionalProperties":false,"description":"Overrides for the fetched metadata (video formats only — on audio formats these come back as unsupported). Omit a field to keep the provider value.","properties":{"budget":{"type":"string"},"composer":{"type":"string"},"director":{"type":"string"},"origin":{"type":"string"},"overview":{"type":"string"},"producer":{"type":"string"},"rating":{"type":"string"},"revenue":{"type":"string"},"runtime":{"type":"string"},"seasonEpisode":{"type":"string"},"starring":{"type":"string"},"tagline":{"type":"string"},"texsOrg":{"type":"string"},"title":{"type":"string"},"writers":{"type":"string"},"year":{"type":"string"}},"type":"object"},"texts":{"description":"Free text blocks placed on the label (the designer's Text tab). x/y are the block's center in percent of the sheet; width is the percent of the sheet width the block spans (text wraps); size is the font size as percent of the sheet height.","items":{"additionalProperties":false,"properties":{"align":{"enum":["left","center","right"],"type":"string"},"allCaps":{"type":"boolean"},"color":{"description":"6-digit hex (default: the label colour)","type":"string"},"font":{"description":"Family name — a curated family or any Google font","type":"string"},"italic":{"type":"boolean"},"letterSpacing":{"description":"px","maximum":50,"minimum":-20,"type":"number"},"lineHeight":{"maximum":4,"minimum":0.5,"type":"number"},"rotation":{"maximum":360,"minimum":-360,"type":"integer"},"side":{"enum":["front","back"],"type":"string"},"size":{"description":"Font size, percent of the sheet height (default 9)","maximum":60,"minimum":0.5,"type":"number"},"text":{"description":"The text; newlines allowed","type":"string"},"weight":{"maximum":900,"minimum":100,"type":"integer"},"width":{"description":"Percent of the sheet width (default 50)","maximum":100,"minimum":10,"type":"integer"},"x":{"maximum":100,"minimum":0,"type":"number"},"y":{"maximum":100,"minimum":0,"type":"number"}},"required":["text"],"type":"object"},"maxItems":24,"type":"array"}},"required":["format"],"type":"object"}before
{"additionalProperties":false,"properties":{"content":{"additionalProperties":false,"description":"What the design is of. Provide a query, or an id from search_content. Video formats take movie/tv; audio formats (cassette, jcard, cd*, vinyl*, minidisc*) take album. For audio, the album alone builds the complete design — cover art, tracklist sides, QR code — and style.font / labelColor / background restyle it.","properties":{"id":{"description":"TMDB id (movie/tv) or iTunes collection id (album), if already known","type":"string"},"query":{"type":"string"},"type":{"enum":["movie","tv","album"],"type":"string"}},"required":["type"],"type":"object"},"format":{"description":"Which packaging format","enum":["slipcover","side-load-vhs","doublevhs","betamax","compact-tape","bluray-cover","bluray-slipcover","dvd-cover","steelcase","clamshell","polycase","cardbox","disc","cassette","cassingle","jcard","cd","cd-tray","cd-insert","vinyl-label","vinyl-jacket","vinyl-sleeve","minidisc-label","minidisc-full-labels","minidisc-jcard","minidisc-cover","minidisc-tray"],"type":"string"},"images":{"additionalProperties":false,"description":"The user's own artwork by upload ref (from upload_image). Needs the API key that owns the uploads. Single-surface formats only (describe_format → singleSurface). Each value is a ref string or { ref, fit, opacity }.","properties":{"background":{"description":"One image over the whole sheet (all panels).","oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"logo":{"description":"A custom studio / production logo (video formats). It replaces the title's own studio logos on the spine and back panel. Upload a transparent PNG.","pattern":"^upload:","type":"string"},"panels":{"additionalProperties":{"oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"description":"Per-panel images keyed by the panel key describe_format reports (e.g. front, back, spine1). Unknown keys come back as unsupported.","type":"object"}},"type":"object"},"layout":{"additionalProperties":false,"properties":{"hide":{"description":"Fields to hide on the design","items":{"enum":["rating","texsOrg","overview","labelOverview","fbiWarning","rules","pullquote","pullquoteCredit","spineMeta","barcode","qrCode","spineLogo","title","tagline","year","origin","runtime","starring","director","budget","revenue","movieId","seasonEpisode","writers","composer","producer","productionLogos"],"type":"string"},"type":"array"}},"type":"object"},"name":{"description":"Design name shown on the dashboard (max 120 chars)","type":"string"},"style":{"additionalProperties":false,"properties":{"background":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex","type":"string"}},"type":"object"},"finish":{"description":"'worn' (default) fills the back panel with the title's stills and adds a worn-paper texture; 'clean' is stills without the texture; 'plain' skips both. Video formats and jcard only (on jcard 'worn' is the texture alone); other audio formats report it as unsupported.","enum":["worn","clean","plain"],"type":"string"},"font":{"description":"Font family for the whole design (on audio formats, every text section). Curated: Futura, Arial, Times New Roman, Impact, Courier New, Roboto Flex, Bebas Neue, League Gothic, Sofia Sans Extra Condensed, Nunito Sans, Stint Ultra Condensed, EB Garamond…","type":"string"},"labelColor":{"description":"Label / text color, 6-digit hex, e.g. #e8dcc0","type":"string"},"useLogo":{"description":"true paints the provider's logo artwork for the title; false renders your title as text. Defaults to false when you set text.title, so a title you set is visible.","type":"boolean"}},"type":"object"},"text":{"additionalProperties":false,"description":"Overrides for the fetched metadata (video formats only — on audio formats these come back as unsupported). Omit a field to keep the provider value.","properties":{"budget":{"type":"string"},"composer":{"type":"string"},"director":{"type":"string"},"origin":{"type":"string"},"overview":{"type":"string"},"producer":{"type":"string"},"rating":{"type":"string"},"revenue":{"type":"string"},"runtime":{"type":"string"},"seasonEpisode":{"type":"string"},"starring":{"type":"string"},"tagline":{"type":"string"},"texsOrg":{"type":"string"},"title":{"type":"string"},"writers":{"type":"string"},"year":{"type":"string"}},"type":"object"}},"required":["format"],"type":"object"}after
{"additionalProperties":false,"properties":{"content":{"additionalProperties":false,"description":"What the design is of. Provide a query, or an id from search_content. Video formats take movie/tv; audio formats (cassette, jcard, cd*, vinyl*, minidisc*) take album. For audio, the album alone builds the complete design — cover art, tracklist sides, QR code — and style.font / labelColor / background restyle it.","properties":{"id":{"description":"TMDB id (movie/tv) or iTunes collection id (album), if already known","type":"string"},"query":{"type":"string"},"type":{"enum":["movie","tv","album"],"type":"string"}},"required":["type"],"type":"object"},"decals":{"description":"Stickers, graphics, shapes and the user's own images placed on the label. Each entry names a catalog decal by id (list_decals) OR an upload by ref (upload_image; needs the API key). x/y are percent of the sheet (center-anchored; see describe_format → placement for the coordinate space and the size units). Size with `width` (percent of the sheet width) where describe_format accepts it, else `scale`.","items":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex for colorize (default: the label colour)","type":"string"},"colorize":{"description":"Paint the decal one colour: 'tint' keeps its shading, 'solid' flattens it","enum":["tint","solid"],"type":"string"},"id":{"description":"A decal id from list_decals (e.g. \"rcacolumbia!\", \"04-rounded-rectangle\")","type":"string"},"layer":{"description":"'over' (default), 'under' the label's text and pictures, or 'background'","enum":["over","under","background"],"type":"string"},"ref":{"description":"An upload ref, instead of id","pattern":"^upload:","type":"string"},"rotation":{"maximum":360,"minimum":-360,"type":"integer"},"scale":{"description":"The designer's size unit (100 = natural width ÷ 4 layout units); use instead of width","maximum":900,"minimum":10,"type":"integer"},"side":{"description":"Two-sided formats only","enum":["front","back"],"type":"string"},"stretch":{"description":"Horizontal stretch, percent of the natural aspect","maximum":1000,"minimum":10,"type":"integer"},"width":{"description":"Rendered width as percent of the sheet width (formats with placement.decals.layoutWidthUnits)","maximum":200,"minimum":1,"type":"number"},"x":{"description":"Center, percent of the sheet width (default 50)","maximum":100,"minimum":0,"type":"number"},"y":{"description":"Center, percent of the sheet height (default 50)","maximum":100,"minimum":0,"type":"number"}},"type":"object"},"maxItems":24,"type":"array"},"format":{"description":"Which packaging format","enum":["slipcover","side-load-vhs","doublevhs","betamax","compact-tape","bluray-cover","bluray-slipcover","dvd-cover","steelcase","clamshell","polycase","cardbox","disc","cassette","cassingle","jcard","cd","cd-tray","cd-insert","vinyl-label","vinyl-jacket","vinyl-sleeve","minidisc-label","minidisc-full-labels","minidisc-jcard","minidisc-cover","minidisc-tray"],"type":"string"},"images":{"additionalProperties":false,"description":"The user's own artwork by upload ref (from upload_image). Needs the API key that owns the uploads. Single-surface formats only (describe_format → singleSurface). Each value is a ref string or { ref, fit, opacity }.","properties":{"background":{"description":"One image over the whole sheet (all panels).","oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"logo":{"description":"A custom studio / production logo (video formats). It replaces the title's own studio logos on the spine and back panel. Upload a transparent PNG.","pattern":"^upload:","type":"string"},"panels":{"additionalProperties":{"oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"description":"Per-panel images keyed by the panel key describe_format reports (e.g. front, back, spine1). Unknown keys come back as unsupported.","type":"object"}},"type":"object"},"layout":{"additionalProperties":false,"properties":{"hide":{"description":"Fields to hide on the design (video formats). 'poster' removes the cover art so a panel image or decal can carry the front.","items":{"enum":["poster","rating","texsOrg","overview","labelOverview","fbiWarning","rules","pullquote","pullquoteCredit","spineMeta","barcode","qrCode","spineLogo","title","tagline","year","origin","runtime","starring","director","budget","revenue","movieId","seasonEpisode","writers","composer","producer","productionLogos"],"type":"string"},"type":"array"}},"type":"object"},"name":{"description":"Design name shown on the dashboard (max 120 chars)","type":"string"},"style":{"additionalProperties":false,"properties":{"background":{"additionalProperties":false,"properties":{"color":{"description":"6-digit hex","type":"string"}},"type":"object"},"finish":{"description":"'worn' (default) fills the back panel with the title's stills and adds a worn-paper texture; 'clean' is stills without the texture; 'plain' skips both. Video formats and jcard only (on jcard 'worn' is the texture alone); other audio formats report it as unsupported.","enum":["worn","clean","plain"],"type":"string"},"font":{"description":"Font family for the whole design (on audio formats, every text section). Curated: Futura, Arial, Times New Roman, Impact, Courier New, Roboto Flex, Bebas Neue, League Gothic, Sofia Sans Extra Condensed, Nunito Sans, Stint Ultra Condensed, EB Garamond…","type":"string"},"labelColor":{"description":"Label / text color, 6-digit hex, e.g. #e8dcc0","type":"string"},"productionLogos":{"description":"Video formats: Classic Logo ids (list_decals → classicLogos, e.g. \"rcacolumbia!\") for the spine and studio slot, in order (#1 is the spine). As the whole selection they REPLACE the title's own studio logos; [] removes the studio slot.","items":{"type":"string"},"maxItems":4,"type":"array"},"useLogo":{"description":"true paints the provider's logo artwork for the title; false renders your title as text. Defaults to false when you set text.title, so a title you set is visible.","type":"boolean"}},"type":"object"},"text":{"additionalProperties":false,"description":"Overrides for the fetched metadata (video formats only — on audio formats these come back as unsupported). Omit a field to keep the provider value.","properties":{"budget":{"type":"string"},"composer":{"type":"string"},"director":{"type":"string"},"origin":{"type":"string"},"overview":{"type":"string"},"producer":{"type":"string"},"rating":{"type":"string"},"revenue":{"type":"string"},"runtime":{"type":"string"},"seasonEpisode":{"type":"string"},"starring":{"type":"string"},"tagline":{"type":"string"},"texsOrg":{"type":"string"},"title":{"type":"string"},"writers":{"type":"string"},"year":{"type":"string"}},"type":"object"},"texts":{"description":"Free text blocks placed on the label (the designer's Text tab). x/y are the block's center in percent of the sheet; width is the percent of the sheet width the block spans (text wraps); size is the font size as percent of the sheet height.","items":{"additionalProperties":false,"properties":{"align":{"enum":["left","center","right"],"type":"string"},"allCaps":{"type":"boolean"},"color":{"description":"6-digit hex (default: the label colour)","type":"string"},"font":{"description":"Family name — a curated family or any Google font","type":"string"},"italic":{"type":"boolean"},"letterSpacing":{"description":"px","maximum":50,"minimum":-20,"type":"number"},"lineHeight":{"maximum":4,"minimum":0.5,"type":"number"},"rotation":{"maximum":360,"minimum":-360,"type":"integer"},"side":{"enum":["front","back"],"type":"string"},"size":{"description":"Font size, percent of the sheet height (default 9)","maximum":60,"minimum":0.5,"type":"number"},"text":{"description":"The text; newlines allowed","type":"string"},"weight":{"maximum":900,"minimum":100,"type":"integer"},"width":{"description":"Percent of the sheet width (default 50)","maximum":100,"minimum":10,"type":"integer"},"x":{"maximum":100,"minimum":0,"type":"number"},"y":{"maximum":100,"minimum":0,"type":"number"}},"required":["text"],"type":"object"},"maxItems":24,"type":"array"}},"required":["format"],"type":"object"}A movie or TV title's own artwork: every TMDB poster, logo (the wordmark / title art) and backdrop (stills) as a decal id with pixel size and preview URLs, plus title, year, tagline and overview. Place one with decals[].id in the same intent as the content (e.g. the real wordmark under the cover art, a still on the back) — sized by width like any decal. Ids come from search_content.
The decal catalog: every sticker, graphic, shape and retro distributor mark the designer offers (a title's own posters / logos / stills come from get_content instead), grouped by category, each with its id (what decals[].id takes), natural pixel size and preview URLs — plus the Classic Logo ids style.productionLogos takes. Call it before placing decals; ids are exact strings, never guessed. Pass a category id to get one category, or a query to search names.
Remove one image from the user's Uploads library by id (from upload_image or list_uploads). Needs an API key with design:write. Saved designs keep their own copies, so this never breaks a design; it only frees a library slot. Prefer deleting images this session uploaded over ones the user added themselves.
The user's Uploads library, newest first: id, upload:<id> ref, name, pixel size, bytes and an hour-long preview url. Needs an API key with read. Use it to reuse an image already uploaded (identical bytes dedupe anyway) or to pick what to delete_upload when upload_image answers LIBRARY_IMAGE_LIMIT.
⟨120 unchanged words⟩ ,"minidisc-tray"],"type":"string"},"images":{"additionalProperties":false,"description":"The user's own artwork by upload ref (from upload_image). Needs the API key that owns the uploads. Single-surface formats only (describe_format → singleSurface). Each value is a ref string or { ref, fit, opacity }.","properties":{"background":{"description":"One image over the whole sheet (all panels).","oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"logo":{"description":"A custom studio / production logo (video formats). It replaces the title's own studio logos on the spine and back panel. Upload a transparent PNG.","pattern":"^upload:","type":"string"},"panels":{"additionalProperties":{"oneOf":[{"pattern":"^upload:","type":"string"},{"additionalProperties":false,"properties":{"fit":{"enum":["fit","fill","stretch"],"type":"string"},"opacity":{"maximum":100,"minimum":0,"type":"number"},"ref":{"type":"string"}},"required":["ref"],"type":"object"}]},"description":"Per-panel images keyed by the panel key describe_format reports (e.g. front, back, spine1). Unknown keys come back as unsupported.","type":"object"}},"type":"object"},"layout":{"additionalProperties":false,"properties":{" ⟨286 unchanged words⟩
Delete one of the user's saved designs (and the image copies it owns). Irreversible — confirm with the user first. Needs an API key with design:write.
One format in detail: the printed sheet in px and inches at export DPI, every panel (front, spine, back, flaps…) as a rectangle with its pixel size, and which intent sections the format accepts. Call this BEFORE generating artwork for a format so each image is made at the right size and aspect.
Render a saved design to a print file (members only). Queues a job — the file is produced by a headless renderer in ~15–60 s — and returns a jobId; poll get_export for the download link. output 'png' is the Original full-resolution PNG (600 DPI), 'pdf' its design-size PDF. Needs an API key with export on a membership account.
Who the API key belongs to: membership tier, today's remaining agent quotas, saved-design and upload-library counts. Needs an API key (Authorization: Bearer tc_live_…, created at https://vhs.texs.org/en/dashboard?tab=settings). Call it once to confirm the key works before uploading or saving.
One saved design by id: name, format, link and its raw design params. Needs an API key with read.
Status of an export job from export_design. When status is done, `file.url` is a download link valid for an hour.
The user's saved designs, newest first, with their links. Needs an API key with read.
Save a design straight to the user's dashboard and return its link. Takes the SAME fields as compose_design plus a name; needs an API key with design:write. Use it when the user wants the design kept on their account without opening a link first. Images are copied into the design (safe to delete from the library afterwards). The preview thumbnail and the frozen content snapshot are captured the first time the owner opens and saves it in the browser — say so.
Put an image into the user's Uploads library ("Your Uploads" in every picker) and get back a ref for compose_design's images.* fields. Needs an API key with design:write. Send the file as base64 (JPEG/PNG/WebP preferred, at the panel size describe_format reports; keep it under 3 MB — bigger files go through POST https://vhs.texs.org/api/v1/uploads as multipart). Identical bytes already in the library return the existing item instead of a copy.