protogrid

Search / org.texs/tapercraft

Tapercraft — VHS Label Maker

R0· no sign-in

Compose printable VHS, DVD, cassette, CD and vinyl packaging from any movie, show, or album.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality75good
Trust80of 100
Uptime, 30 days100%
Latency p50260 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "tapercraft": {
      "type": "http",
      "url": "https://vhs.texs.org/mcp"
    }
  }
}
claude mcp add --transport http tapercraft https://vhs.texs.org/mcp
[mcp_servers.tapercraft]
url = "https://vhs.texs.org/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tapercraft": {
      "type": "remote",
      "url": "https://vhs.texs.org/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "tapercraft": {
      "type": "http",
      "url": "https://vhs.texs.org/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=tapercraft&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdmhzLnRleHMub3JnL21jcCJ9"
}
{
  "servers": {
    "tapercraft": {
      "type": "http",
      "url": "https://vhs.texs.org/mcp"
    }
  }
}
{
  "mcpServers": {
    "tapercraft": {
      "httpUrl": "https://vhs.texs.org/mcp"
    }
  }
}
extensions:
  "tapercraft":
    enabled: true
    name: "tapercraft"
    type: streamable_http
    uri: "https://vhs.texs.org/mcp"
    timeout: 300

Quality 75 / 100good

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 3600000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations16 of 16 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_formats (idempotentHint); list_decals (idempotentHint); get_content (idempotentHint); …
  • pass
    tools.token_costabout 7,546 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes42 tool changes in 30 days
  • fail
    stability.rug_pull2 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

16 tools, about 7,546 tokens to load them all · tool set f60028167ac7 · tools last changed 2026-10-13 · checked 2026-10-20 09:31 UTC

Tool changes

  • get_accountchangeddescription
    before

    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.

    after · 96% of words in common

    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=api-keys). Call it once to confirm the key works before uploading or saving.

  • save_designchangedinput schema
  • compose_designchangeddescription, input schema
    before

    Build a label design and return a URL the user opens to finish it. Designing and previewing are free; exporting a print-ready file requires a membership, so present the URL as a starting point the user completes in their browser. Fields listed in the response as "unsupported" were NOT applied — tell the user rather than reporting them as done. The user's own artwork goes in through `images` (upload it first with upload_image; needs an API key): `images.background` covers the whole sheet, `images.panels.<key>` one panel each (keys 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 and tell the user to drag images in after opening the URL.

    after · 97% of words in common

    Build a label design and return a URL the user opens to finish it. Designing and previewing are free; exporting a print-ready file requires a membership, so present the URL as a starting point the user completes in their browser. Fields listed in the response as "unsupported" were NOT applied — tell the user rather than reporting them as done. The user's own artwork goes in through `images` (upload it first with upload_image; needs an API key): `images.background` covers the whole sheet, `images.panels.<key>` one panel each (keys 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 (`style.productionLogoColorize: 'off'` keeps their own colours), and `layout.hide: ["poster"]` clears the cover art — enough to rebuild a specific vintage cover. Without a key, compose from format + content and tell the user to drag images in after opening the URL.

  • list_designschangeddescription, input schemameaning changed
    before

    The user's saved designs, newest first, with their links. Needs an API key with read.

    after · 31% of words in common

    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.

  • get_accountchangedtitle, annotations
  • get_exportchangedtitle, annotations
  • export_designchangedtitle, annotations
  • delete_designchangedtitle, annotations
  • get_designchangedtitle, annotations
  • list_designschangedtitle, annotations

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance55
liveness100
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-100% ~updated-54d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://vhs.texs.org/mcp streamable-httpnoneyes100%260 ms2026-07-28, 2025-11-25, 2025-06-18, 2025-03-262026-10-20

Tools (16)

compose_designread-onlyBuild a label design and return a URL the user opens to finish it. Designing and previewing are free; exporting a print-ready file requires a membership, so present the URL as a starting point the user completes in their browser. Fields listed in the response as "unsupported" were NOT applied — tell the user rather than reporting them as done. The user's own artwork goes in through `images` (upload it first with upload_image; needs an API key): `images.background` covers the whole sheet, `images.panels.<key>` one panel each (keys 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 (`style.productionLogoColorize: 'off'` keeps their own colours), and `layout.hide: ["poster"]` clears the cover art — enough to rebuild a specific vintage cover. Without a key, compose from format + content and tell the user to drag images in after opening the URL.
delete_designdestructiveDelete 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.
delete_uploaddestructiveRemove 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.
describe_formatread-onlyOne 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.
export_designRender a saved design. Queues a job — a headless renderer produces the file in ~15–60 s — and returns a jobId; poll get_export. output 'preview' (every plan) is a downscaled image of the whole sheet that get_export returns INLINE so you can look at it: render one after every save, check the layout, cover art, text sizes and colours against what the user asked for, fix the intent and save again before exporting. 'png' is the Original full-resolution print PNG (600 DPI) and 'pdf' its design-size PDF — members only, and only once the preview looks right. Needs an API key with the export scope.
get_accountread-onlyWho 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=api-keys). Call it once to confirm the key works before uploading or saving.
get_contentread-onlyA 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.
get_designread-onlyOne saved design by id: name, format, link and its raw design params. Needs an API key with read.
get_exportread-onlyStatus of an export job from export_design. When status is done, `file.url` is a download link valid for an hour; a preview job also returns the image itself. Files are kept for a day, then the job reads `expired`.
list_decalsread-onlyThe 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.
list_designsread-onlyThe 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.
list_formatsread-onlyList the packaging formats that can be composed, with their printed dimensions. Call this first if you are unsure which format the user wants.
list_uploadsread-onlyThe 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.
save_designSave 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.
search_contentread-onlyLook up a movie, TV show, or music album by title and return candidate matches with years. Use when the user's title is ambiguous and you want to confirm which one they mean before composing.
upload_imagePut an image into the user's Uploads library ("Your Uploads" in every picker) and get back a ref for the images.* fields of compose_design / save_design. Needs an API key with design:write. Send the file as base64 (JPEG/PNG/WebP, at the panel size describe_format reports). SIZE: the request body may not exceed 4.5 MB, so keep the base64 under 3 MB (~2.2 MB of image); a file up to 4 MB goes through POST https://vhs.texs.org/api/v1/uploads as multipart instead — re-encode as JPEG quality 80–85 before either. Identical bytes already in the library return the existing item instead of a copy. The library has a per-plan image count (get_account → uploads); at the ceiling the call answers LIBRARY_IMAGE_LIMIT — call list_uploads and delete_upload to make room.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "org.texs/tapercraft",
  "icons": [
    {
      "src": "https://vhs.texs.org/apple-touch-icon.png",
      "sizes": [
        "180x180"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "Tapercraft — VHS Label Maker",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://vhs.texs.org/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://vhs.texs.org/en/mcp",
  "description": "Compose printable VHS, DVD, cassette, CD and vinyl packaging from any movie, show, or album."
}