Skip to main content
Glama

AgentMade Print on Demand

Upload and validate artwork

validate_artwork

Upload artwork and check that it prints well on one product placement. Send exactly one of: artwork with svg (markup, best for text and logos), base64 (a PNG, JPEG or SVG file up to about 2 MB, no data: prefix) or url (a public HTTPS link to the file); file (a file object from your client); or upload_link:true when you cannot send the file in this call. Returns artwork_id and PASS/WARN/FAIL checks: print size in mm, resolution (DPI), print and safe area, transparent background, contrast with the product colour. For photos and AI images use preset center_chest. Use the artwork_id in quote.

Input Schema

NameRequiredDescriptionDefault
fileNoA file that your client gives you as a file object (for example in ChatGPT).
sizeNoGarment size, e.g. "XL". Print areas can differ by size; without it the smallest size is checked.
colorNoProduct colour, for the contrast check.
presetNoNamed position inside the placement, e.g. "center_chest", "left_chest", "full_front". Defaults to the placement default.
top_mmNoDistance from the top of the print area to the top of the artwork.
artworkNoNew artwork to upload: exactly one of svg, base64 or url.
left_mmNoDistance from the left edge of the print area. Default: horizontally centred.
width_mmNoExact printed width of the visible artwork in millimetres. Height follows the aspect ratio.
height_mmNoMaximum printed height in millimetres.
placementNoPrint location on the product, e.g. "front" or "back". See get_product for the list.front
artwork_idNoRe-validate artwork uploaded earlier, or validate the file of an upload link.
product_idYesProduct to print on.
upload_linkNoSet true when you cannot send the file in this call. The answer gives an artwork_id and a one-time upload_url: upload with curl, or give the link to the person. Then call validate_artwork with the artwork_id.

Output Schema

NameRequiredDescriptionDefault
artworkNo
next_stepYesWhat the agent should do next, in plain language.
artwork_idNoOnly in the upload_link answer: the reserved id for the file.
expires_atNo
upload_urlNoOnly in the upload_link answer: the one-time upload link.
validationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations (readOnly=false, destructive=false, openWorld=true, idempotent=false) already signal a non-destructive but externally-touching write. The description adds real behavioral context beyond them: the PASS/WARN/FAIL check set, the returned artwork_id, the ~2 MB size ceiling, and the two-step upload_link flow with a one-time upload_url. It does not mention permissions, rate limits, or whether a re-validation with artwork_id overwrites prior state.

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-loaded with the action and the one-of input constraint, followed by return semantics and usage hints; every sentence carries information. It is dense and the semicolon-chained input list is slightly cramped, but there is little waste.

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?

For a 13-parameter tool with nested objects and an output schema, the description covers the input-mode decision, size limits, preset positioning, the deferred-upload flow, and the summary of returned checks. With the output schema present, it need not detail return values further, and nothing an agent needs to invoke this correctly seems missing.

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 description coverage is 100%, giving a baseline of 3, and the description adds meaning the schema cannot express: the mutual-exclusion rule across artwork.svg/base64/url within the nested object, the no-data:-prefix and size caveats, and the concrete preset example (center_chest for photos and AI images). It is above baseline, though size/color/placement units and defaults are left to the schema.

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?

The first sentence states a specific verb pair and resource – 'Upload artwork and check that it prints well on one product placement' – and the rest of the text clarifies the validation scope (print size, DPI, print/safe area, transparency, contrast). An agent can distinguish this from siblings like create_mockup or quote without opening the schema.

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

Usage Guidelines4/5

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

It gives explicit input-selection rules ('Send exactly one of: svg, base64 or url; file; or upload_link:true') and states when-not conditions (base64 only for files up to ~2 MB, upload_link only 'when you cannot send the file in this call'), plus downstream routing ('Use the artwork_id in quote'). It never compares against sibling tools such as create_mockup, so tool-level alternatives are left implicit.

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.