MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · AI / LLM tooling

Tapercraft — VHS Label Maker

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

Checks passed
11 / 22

3 failed · 8 not measured

Median response
1500 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
16

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
222

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1500 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name tapercraft.

  • Pass
    Lists tools

    tools/list returned 16 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1500 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1500 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Fail
    Parameters documented

    59 of 106 parameters have a description (56%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Fail
    Website matches publisher

    The website host does not match the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-08-27T19:48:36.761048Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using Tapercraft — VHS Label Maker

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http tapercraft-vhs-label-maker https://vhs.texs.org/mcp

Capabilities

Tools 16

compose_design

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.

Discovered
delete_design

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.

Discovered
delete_upload

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.

Discovered
describe_format

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.

Discovered
export_design

Render 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.

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

Discovered
get_content

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.

Discovered
get_design

One saved design by id: name, format, link and its raw design params. Needs an API key with read.

Discovered
get_export

Status 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`.

Discovered
list_decals

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.

Discovered
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.

Discovered
list_formats

List the packaging formats that can be composed, with their printed dimensions. Call this first if you are unsure which format the user wants.

Discovered
list_uploads

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.

Discovered
save_design

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.

Discovered
search_content

Look 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.

Discovered
upload_image

Put 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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1500 ms16