Every tool returns JSON in a single text content block. Arguments are validated against the schema advertised by tools/list; invalid arguments return an isError result describing the problem.
search_products
Free-text search over the public InkFE catalog. Use it to find products other than template business cards, or to confirm a handle before calling get_product.
Input
query (string, 1-160 characters) — Matched against product titles, types and tags.limit (integer 1-20, default 10) — Maximum number of products returned.
Returns
{ products: [{ handle, title, productType, priceRange: { min, max, currency }, options: [{ name, values }], url }] }
Error codes
connector_unavailable, internal_error
get_product
Describes one public product: options with their roles, every purchasable variant with its pack price, whether a back side is printed, and the trim size when known.
Input
handle (string, 1-255 characters) — The product handle exactly as returned by search_products or list_business_card_templates.
Returns
{ handle, title, productType, hasBack, dimensions: { widthInches, heightInches } | null, options: [{ name, role, values }], variants: [{ variantId, title, selectedOptions, packPrice, currency, availableForSale }], url }
Error codes
product_unavailable, connector_unavailable, internal_error
list_business_card_templates
The starting point for a business card. Lists the Classic templates a buyer can personalise, with preview images, physical size, the product to buy and the fields each template needs.
Input
No arguments.
Returns
{ templates: [{ templateId, name, orientation, widthInches, heightInches, previewUrls: { front, back }, hasBack, fields: [{ attribute, label, side, inputType, required, sampleValue, maxLines? }], productHandle }] }
Error codes
connector_unavailable, internal_error
create_business_card_design
Applies the buyer's field values (and logo, if the template needs one) to a template, fits the text to its printable area, renders both sides as preview images, and returns a design token to redeem with create_checkout.
Input
templateId (positive integer) — The templateId from list_business_card_templates identifying which Classic business card to design.fields (object, string values, at most 64 keys / 2000 characters each) — Every field from the template's `fields` list, keyed by `attribute`, is required. A blank or missing value fails with missing_required_fields.logoUrl (https URL, at most 2048 characters, optional) — A public PNG or JPEG image, required only when the template has an imageUrl field.
Returns
{ designToken, designId, templateId, revisionId, expiresAt, previews: [{ side, url, expiresInSeconds: 300, width, height }], warnings: [{ attribute, layerId, code: "text_shrunk", fromFontSize, toFontSize }], nextStep }, plus the same two preview images attached as PNG image content blocks.
Error codes
unknown_template, missing_required_fields, unknown_field, value_too_long, unsupported_characters, logo_required, logo_fetch_failed, logo_unsupported, rate_limited, connector_unavailable, internal_error
create_checkout
Turns a design token from create_business_card_design plus the buyer's chosen pack options and email into a Shopify checkout URL, with the print-ready artwork attached to the line item.
Input
designToken (string, 1-4096 characters) — The designToken returned by create_business_card_design for the design the buyer approved.selectedOptions (array of { name, value }, 1-8 entries, unique names, each 1-255 characters) — Every customer-facing option get_product lists for the business card product, keyed by option name with the buyer's chosen value exactly as listed.buyer ({ email, name? }) — email is used for the Shopify guest cart; name (at most 120 characters) is optional and kept for reference only.
Returns
{ checkoutUrl, cartId, designAssetId, lineItem: { productTitle, variantTitle, packPrice, currency, selectedOptions }, instructions }
Error codes
design_token_invalid, design_token_expired, design_not_found, unknown_template, product_unavailable, variant_unavailable, rate_limited, storage_failed, cart_create_failed, connector_unavailable, internal_error