Skip to main content
Glama

ship_product

End-to-end pipeline in ONE call: take a design, generate + verify a mockup (one per imported color, so every color variant has a matching mockup), create the product with the correct field names, add all variants, associate with a store, sync to fulfillment, then (optionally) sync to sales channels as DRAFT. Handles EMBROIDERY garments automatically WHEN the garment is actually embroidered: routes the design to the real embroidery placement and attaches thread colors (derived from the design, or pass thread_colors). Headwear is NOT inherently embroidered -- some providers carry printed (DTF) caps that take photoreal art as-is, so check accepts_photoreal on the garment rather than assuming, and call find_garments before concluding a design cannot go on a hat. Face goods (canvas, posters, backpacks, bags, socks, towels, blankets, pillows, cases...) default to print_style "fill": the design is recomposed onto an aesthetically matching background and printed edge-to-edge, so no green-screen background or contrasting borders reach the product. Enforces pricing floors and guards the AQUA-vs-Navy variant trap. Streams progress. PREFER this over chaining create_product + add_variants + sync_to_fulfillment + sync_to_channel yourself — especially for AUTOMATED or SCHEDULED runs — because it guarantees the correct order (store association + fulfillment sync BEFORE any channel sync). Use the split primitives only when you deliberately need a partial/interactive flow.

[#57ec3c]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
garmentYes
pricingYes
variantsYes
workspaceNo
design_urlNoThe design URL, if known (else resolved).
store_uuidNoOmit to create a standalone (unassociated) product.
design_uuidYesThe design to print. Comes from generate_image / design_apparel, OR from upload_design when the merchant already owns the artwork (a logo, a brand mark, a cleared cover). Never regenerate a mark you were given as a file.
print_styleNoHow the design sits on the print face. "fill": recompose onto a matching background and print edge-to-edge (default for face goods like canvas/backpacks/bags/socks/towels/blankets/pillows/cases). "placed": the design floats with transparency preserved (default for apparel and embroidery). "auto" (default) picks by garment.
product_metaYes
thread_colorsNoEMBROIDERY garments only: explicit Printful thread palette colors. Omit to auto-derive from the design (mapped to the fixed 15-color palette).
generate_mockupNoDefault true.
sync_to_channelsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Only openWorldHint is annotated, so the description carries the behavioral burden and does so richly: one mockup per imported color, automatic embroidery routing with thread colors, DTF vs embroidery distinction via accepts_photoreal, the 'fill' recomposition for face goods, pricing-floor enforcement, the AQUA-vs-Navy variant guard, and guaranteed ordering (store association + fulfillment sync BEFORE channel sync). It also notes progress streaming. This is far beyond what the single annotation conveys.

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?

The pipeline is front-loaded in the first sentence and each subsequent clause conveys distinct operational detail, so length is mostly justified by the tool's complexity. Minor deductions for dense parenthetical asides and a stray trailing artifact ('[#57ec3c]') that add noise without meaning.

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

Completeness4/5

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

For a 12-param, nested-object, no-output-schema tool, the description covers the end-to-end flow, the key defaults, the ordering guarantee, and progress streaming, which is close to sufficient. It stops short of stating failure/error semantics or permission requirements, but nothing an agent needs to invoke it correctly is critically 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?

With 12 parameters and only 50% schema description coverage, the description compensates well for several: thread_colors is scoped to embroidery with an auto-derive fallback, print_style defaults ('fill' for face goods, 'placed' for apparel/embroidery), and sync_to_channels is described as producing DRAFT items. However, params such as workspace, design_url, generate_mockup, pricing internals, and provider_variant_ids are left to the schema, so it does not fully close the coverage gap.

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 description opens with a specific verb+resource ('End-to-end pipeline in ONE call') and enumerates the exact steps performed (mockup, create product, add variants, store association, fulfillment, channel sync). It explicitly distinguishes itself from the chained primitives create_product + add_variants + sync_to_fulfillment + sync_to_channel, so an agent can route without opening sibling schemas.

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?

It gives an explicit preference rule ('PREFER this over chaining... especially for AUTOMATED or SCHEDULED runs') and names the exclusion condition ('Use the split primitives only when you deliberately need a partial/interactive flow'). It also adds a domain precondition: call find_garments / check accepts_photoreal before assuming a design cannot go on a hat.

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