Back to Docs
MCP

Tool Reference

The nine Vaybel MCP tools — arguments, return shapes, credits, and scopes.

Updated 2026-04-20

Nine tools are exposed over HTTP. Every signature, credit cost, and scope listed here matches what the server accepts.

ping

Smoke test for the full request pipeline. Consumes no credits, needs no scopes — use it to confirm your token reaches the server.

Parameters

echostringDefault: "pong"

Any string you want echoed back.

Returns

echostring

The string you passed in.

brand_dna.get_brand_dna

Scopebrand_dna:read

Read the persisted Brand DNA for your organization. Takes no arguments.

Returns

has_brand_kitboolean

false when the org hasn't generated a Brand DNA yet. The remaining fields will be empty strings or empty lists (not null), so agents can inspect this flag once without guarding every field.

brand_descriptionstring

AI-generated summary of the brand identity.

user_brand_inputstring

The raw brand description the user originally provided.

colorsstring[]

Hex color codes (e.g. ["#0F172A", "#F97316"]).

typographystring

Typography guidance, e.g. "Modern serif, moderate contrast".

tonestring

Voice-and-tone descriptor, e.g. "Playful but precise".

product_typesstring[]

Product category names associated with the brand.

logo_s3_keystring | null

S3 key for the uploaded logo, or null if none.

logo_descriptionstring | null

AI description of the logo, or null if no logo.

catalog.list_blanks

Scopecatalog:read

Query the catalog of blank products. Read-only — supports search, technique, and category filters.

Parameters

searchstring

Case-insensitive substring over title, name, brand, or SKU.

techniquestring

"dtg", "cut-sew", "sublimation", "direct-to-fabric", "embroidery", "screen-print", or the meta-value "aop" (any all-over-print technique).

categorystring

Substring over product type ("tee", "hoodie", "bag").

limitintDefault: 20

Clamped to [1, 100].

Returns

productsProduct[]

Each product carries uuid, vaybel_sku, handle, name, title, type, brand, default_technique, category. Variants are omitted — fetch per-product when you actually need them.

countnumber

Length of products after the server-side limit is applied.

credits.check_credits

Scopecredits:read

Inspect your organization's credit wallet before committing to an expensive tool chain.

Parameters

requiredintDefault: 0

Test whether this amount can be afforded. 0 just returns the current balance.

Returns

balancenumber

Current credit balance for your organization.

requirednumber

Echo of the required argument.

sufficientboolean

Whether balance >= required. true when required is 0.

design.generate_design

Scopedesign:writeCredits10 per callRate limit10/minIdempotent

Dispatch a design-generation task. Returns immediately; generation runs in the background (~3–5 minutes).

Parameters

product_uuidstringRequired

Catalog product UUID. Get one from catalog.list_blanks.

promptstringRequired

Design brief, ≤ 4000 characters. Prompts containing ignore previous are rejected.

variant_group_uuidstring

Pins the colorway. Omit to let the pipeline pick a default.

Returns

task_idstring

Task id. Feed into get_design_status or wait_for_design to track progress.

design.get_design_status

Scopedesign:read

One-shot status lookup for a dispatched design task.

Parameters

task_idstringRequired

Task id from generate_design.

Returns

status"pending" | "running" | "complete" | "failed"

Lifecycle state of the design task.

design_idstring | null

Design UUID. null until the pipeline has produced a design.

progressnumber | null

Fractional progress 0.0–1.0 when known.

stagestring

Current pipeline stage, e.g. "Upscaling…". Empty string when unknown.

image_urlstring | null

Primary design image URL once the task completes.

errorstring

Failure message when status == "failed". Empty string otherwise.

design.wait_for_design

Scopedesign:read

Block until the design completes, fails, or the timeout elapses. Exponential-backoff polling so the agent doesn't burn turns on a tight loop.

Parameters

task_idstringRequired

Task id from generate_design.

timeout_secintDefault: 300

Clamped to [1, 600].

Returns

status"pending" | "running" | "complete" | "failed"

Lifecycle state. A "running" or "pending" return means the timeout fired — re-poll or give up.

design_idstring | null

Design UUID. null until the pipeline has produced a design.

progressnumber | null

Fractional progress 0.0–1.0 when known.

stagestring

Current pipeline stage. Empty string when unknown.

image_urlstring | null

Primary design image URL once the task completes.

errorstring

Failure message when status == "failed". Empty string otherwise.

mockup.generate_mockup

Scopemockup:writeCredits2 per mockup (pro)Rate limit20/minIdempotent

Dispatch flat mockup generation (front + back, product-on-white) for a completed design.

Parameters

design_idstringRequired

Design UUID (from generate_design).

qualitystringDefault: "pro"

"standard" (raw Printful, free) or "pro" (AI-enhanced, billable).

Returns

task_idstring

Task id. Empty string when all flats already exist — nothing dispatched, but the mockup ids below are still usable for get_mockup_status.

mockup_idsstring[]

Stable UUIDs for every mockup in the batch.

mockup.get_mockup_status

Scopemockup:read

Poll a dispatched mockup batch.

Parameters

mockup_idsstring[]Required

UUIDs returned by generate_mockup.

Returns

status"pending" | "running" | "complete" | "failed"

Batch state. "complete" only when every mockup reached complete; any failure flips the batch to "failed".

mockupsMockup[]

Each mockup: { id, status, external_key, image_url, error, stage }.