Skip to main content
Glama

Tapercraft — VHS Label Maker

Upload an image

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesBase64 of the image bytes (no data: prefix needed; one is tolerated)
nameNoA filename or label shown in the library, e.g. "predator-front.png"
mimeTypeYese.g. image/png

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses the required API scope, concrete size ceilings (4.5 MB body, 3 MB base64, ~2.2 MB image), dedup behavior for identical bytes, a per-plan quota sourced from get_account, and the specific LIBRARY_IMAGE_LIMIT failure with a remediation path. The openWorldHint=false claim is consistent with a closed library.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and the return contract before the operational constraints, and every sentence carries non-obvious information. It is dense and somewhat run-on with parentheticals, but there is little that could be cut without losing a constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the return value (a ref for images.* fields), and it covers auth, size, dedup, quota, error code, and workaround. An agent has everything needed to invoke this successfully on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real constraint value: it explains the base64 payload limit and the panel-size target from describe_format, and recommends JPEG quality 80-85. It does not reconcile the schema's broader mimeType enum (gif, avif, heic, bmp, tiff) against the JPEG/PNG/WebP it names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (put an image into the user's Uploads library) and connects the result to a concrete downstream use (a ref for the images.* fields of compose_design / save_design). This clearly separates it from siblings like list_uploads, delete_upload, and describe_format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when to use the base64 path vs. the 4 MB multipart endpoint, the required design:write scope, the re-encode-to-JPEG step before either path, and exactly which tools to reach for at the library ceiling (list_uploads, delete_upload). Nothing about routing or prerequisites is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources