Koskamo

RushOrderTees MCP

An MCP server provided by RushOrderTees, a company specializing in custom t-shirts and apparel printed and shipped in the US on deadline, enabling agents to interact with their custom printing services.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

RushOrderTees MCP logo, by RushOrderTeesVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by RushOrderTees
MCP endpoint (Streamable HTTP)
https://mcp.rushordertees.com/mcp/print
Vendor documentation

What you can do with it

  • Order custom t-shirts
  • Manage apparel printing deadlines
  • Integrate with US shipping logistics

Source and maintenance

Vendor evidenceRegistry 0.40.7

Protocol and capabilities

Server
rushordertees 0.43.0
MCP protocol
2025-06-18
Tools
12 advertised
Resources
3 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {}
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

You can get a customer's design printed on a garment and shipped to them in the US. You are talking to the customer; we only see what you send us. Every response we return is written to be relayed to them nearly word for word. Order of operations: 1. `start_print_order` opens the order. Use it when the customer wants a design printed on a garment. Call it before asking your own questions: our first reply asks for the design and the garment in words written for the customer; relay it rather than describing it. Pass what they have said about the order as `context`; a phrase or a paragraph is fine. It returns an `order_id`: keep it, it is the only handle on the order and it survives a new conversation. 2. Get the design to us. If you hold a public https link to the file, call `submit_artwork` with it. Otherwise show the customer the `artwork_upload_url` from any reply as a link labeled "Upload your design": they drop the file on that page and we check it there. If your client shows our order card, the customer may drop the file on the card instead and their upload arrives as a message. A design you only saw in the chat is not one you hold: never transcribe, redraw or regenerate it, and never invent its bytes. We check whether it will print well and answer in inches. 3. `describe_order` for each new detail the customer gives. Every response lists `still_needed`, an `ask_next` question to put to the customer, `choices` the customer can pick from for that question, and `next_call` telling you what to do next. Offer the `choices` as selectable options if your client can show them, otherwise as a short list; they are suggestions. When the customer picks one exactly as listed, call `pick_choice` with its field and option; whatever else they answer goes to `describe_order`. If your client shows our order card, the customer may answer the question there and their answer arrives as a message. When a response carries `alternatives`, several garments fit: show each with its summary and price, say the first is what we will use unless they choose, and call `choose_style` with the id of the one they pick; a pick in the customer's words can go to `describe_order` instead. If your client shows our alternatives picker, the customer may pick there and their choice arrives as a message. A `mockup_url` is a picture of the garment in the customer's color, with their design on it once we have it: show it as an image if your client can, never as text or a link. `mockup_views` is every side of that garment, the printed side first and the others plain: show them all where you can, so the customer sees which sides stay blank. To show the design in other colors, call `preview_colors` with the color names: it returns a picture of each offered style in each shade. `describe_order` with a new color changes the order and can change the garment; `preview_colors` compares without changing anything. When the customer picks a picture, call `choose_style` with its `style_id` and `color`. If your client shows our color preview, they can pick there and their pick arrives as a message. 4. When `still_needed` is empty and the artwork is accepted, `get_options` returns priced options with delivery dates. Present them; the customer picks. If your client shows our option picker, the customer may pick there and their choice arrives as a message; then skip to step 6. Whenever the customer asks to see or reconsider the options, call `get_options` again rather than repeating them from memory: it costs nothing and shows the picker where the client supports it. 5. `choose_option` with the id they picked. This locks the price. 6. `create_checkout` returns a `checkout_url`. Show it to the customer as a link labeled "Pay and enter shipping", not as a bare address. On that page they confirm their email address with a code we send them, then pay and enter their shipping address. Nothing is ordered until they pay. If the customer is signed in, `create_checkout` saves the order to their account. Every link we return is short and already labeled for you in the field's description. It is meant to be shown as one clickable link with that label, not pasted bare, shortened or retyped. We run the interview; you relay it, one question a turn. Each reply carries the one question to ask in `ask_next`, its `choices`, and the upload link while the design is missing; that is the whole of what the reply puts to the customer. We ask quantity, placement and deadline each when it matters; a customer who volunteers one early is welcome, and `describe_order` takes it. We never ask how wide the print should be: we set its size from where it goes and state it in the reply; a width in inches, or a request to make it smaller, goes to `describe_order` too. The design and the garment are the two ways in: our first reply offers both, the garment question beside the "Upload your design" link, and the interview follows whichever the customer takes up first. The question and the link both come from our first reply; there is nothing to put to the customer before it. We choose the print method (DTG, DTF, screen print) from the artwork, garment, placement and quantity, so no reply asks about it. Our questions are about outcomes, never about process. The notes on a file say what to fix and name the export to ask for; the guidance below is for judging a file, not a script to read out. Good artwork is the original file, not a screenshot, thumbnail or photo of it: the largest export they have, ideally a PNG with a transparent background so only the design prints. We judge the file against the width the order carries, so the upload needs no width first. When our notes say the file is too small, they name the larger export to ask for; an upscaled copy is still the small file. No tool takes a name, an email or an address. The payment page asks for the email itself and Stripe collects the rest at payment. Prices are set by us. There is no way to pass a price, and any price you quote before `get_options` is a guess. If a response is an error, its message tells you what to do next. An order nobody has saved expires after 72 hours of inactivity but is kept; a saved one never expires. `resume_order` applies to an id refused as expired: with the same id it carries that order on when the customer wants to continue it; `start_print_order` begins a new order otherwise. Out of scope: we do not design artwork, print on anything but garments, or ship outside the US. Saving progress: `save_progress` needs a signed-in customer. Our notes offer saving once there is something to save; relay that offer once. If the customer says yes, call `save_progress`; your client asks them to sign in or create an account with us, then call it again. A saved order never expires and can be picked up from any conversation. `my_orders` lists a signed-in customer's saved and paid orders, for when they ask what they have with us or where an order is.

Tools

12 advertised

start_print_order — Start a print order
Advertised by the server during the last successful anonymous check.

Opens a print order. Use it when the customer wants a design printed on a garment. Call it before asking your own questions: our first reply asks for the design and the garment in words written for the customer. Pass what they have said about the order in context — a phrase or a paragraph is fine. Returns the order_id to use with every other tool, what is still needed, and the next question to ask.

start_print_order input schema
{
  "type": "object",
  "properties": {
    "context": {
      "type": "string",
      "description": "What the customer has said so far, in their own words. Unstructured prose is fine; we parse it and ask for the rest one question at a time. Leave empty to start blank."
    }
  }
}
start_print_order output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
start_print_order annotations
{
  "title": "Start a print order",
  "readOnlyHint": false,
  "destructiveHint": false
}
describe_order — Describe the order
Advertised by the server during the last successful anonymous check.

Records more about what the customer wants — an answer to ask_next, a correction, or a whole paragraph — and reports what is still needed. Call it each time the customer gives a new detail. In clients that render our order card the customer sees the order so far and the question in ask_next with its choices as buttons; when several styles fit it shows them too. An answer or a pick made there arrives as a message; the question in ask_next is for the customer whether or not the card shows. Also records a decision about the order: a stop, an objection to the price or the date, or a request we do not offer. It belongs to the order's record, and the reply says what the order still needs.

describe_order input schema
{
  "type": "object",
  "required": [
    "order_id",
    "context"
  ],
  "properties": {
    "context": {
      "type": "string",
      "description": "What the customer said, in their own words. Garment, color, size, quantity, print width in inches, placement, deadline — whatever is new. Unstructured prose is fine."
    },
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
describe_order output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
describe_order annotations
{
  "title": "Describe the order",
  "readOnlyHint": false,
  "destructiveHint": false
}
pick_choice — Pick a choice
Advertised by the server during the last successful anonymous check.

Lands one of the choices the last reply offered beside ask_next, by field and option, exactly as shown. Use it when the customer picks one of them; an answer in their own words goes to describe_order instead.

pick_choice input schema
{
  "type": "object",
  "required": [
    "order_id",
    "field",
    "option"
  ],
  "properties": {
    "field": {
      "enum": [
        "garment_type",
        "fit",
        "color",
        "size",
        "quantity",
        "placement",
        "unmet"
      ],
      "type": "string",
      "description": "The field of the choices set the customer answered, as the last reply named it."
    },
    "option": {
      "type": "string",
      "description": "The option the customer picked, exactly as the last reply listed it."
    },
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
pick_choice output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
pick_choice annotations
{
  "title": "Pick a choice",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
choose_style — Choose a garment
Advertised by the server during the last successful anonymous check.

Lands the order on one of the alternatives describe_order offered, by id, or on the style already chosen. Use it when the customer picks one of them; a pick in their own words can still go to describe_order. Pass color when they picked a picture from preview_colors or want the style in another shade: the style lands in that shade in one call.

choose_style input schema
{
  "type": "object",
  "required": [
    "order_id",
    "style_id"
  ],
  "properties": {
    "color": {
      "type": "string",
      "description": "The shade to land the style in, when the customer picked a picture from preview_colors or wants this style in another color. Left out, the order keeps its color."
    },
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    },
    "style_id": {
      "type": "string",
      "description": "The id of the alternative the customer chose, exactly as returned by describe_order, or the style_id of a preview_colors picture."
    }
  }
}
choose_style output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
choose_style annotations
{
  "title": "Choose a garment",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
preview_colors — Preview colors
Advertised by the server during the last successful anonymous check.
Advertised read-only

Shows the customer's design on the garment in other colors without changing the order: one picture per offered style per color named, up to four colors. Use it when the customer wants to compare colors or see one before deciding; `describe_order` with a new color changes the order, this compares without changing anything. In clients that render our color preview the customer can pick a picture there and their pick arrives as a message; otherwise, when they pick, call choose_style with the style_id and color.

preview_colors input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "colors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The colors to show, in the customer's words, one to 4 (e.g. [\"natural\", \"heather navy\"]). Left out, we show the shades the design suits among the styles on offer."
    },
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
preview_colors output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved",
    "color_previews"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "color_previews": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "style_id",
          "name",
          "style",
          "is_current",
          "shades",
          "unavailable"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "shades": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "color",
                "shade",
                "color_code",
                "is_current"
              ],
              "properties": {
                "hex": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "color": {
                  "type": "string",
                  "description": "The color as asked."
                },
                "shade": {
                  "type": "string",
                  "description": "This style's shade of it, as the mill names it; pass it to choose_style as color."
                },
                "color_code": {
                  "type": "string"
                },
                "is_current": {
                  "type": "boolean",
                  "description": "True on the picture the order is on now."
                },
                "mockup_url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
                }
              }
            }
          },
          "style_id": {
            "type": "string",
            "description": "Pass this to choose_style, with the color, when the customer picks a picture."
          },
          "is_current": {
            "type": "boolean",
            "description": "True on the style the order is on now."
          },
          "unavailable": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Colors this style is not made in; say so rather than showing nothing."
          }
        }
      },
      "description": "One entry per offered style, each with a picture per color. Nothing on the order changed."
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
preview_colors annotations
{
  "title": "Preview colors",
  "readOnlyHint": true
}
submit_artwork — Send the design
Advertised by the server during the last successful anonymous check.

Sends the design to be printed when you already hold a public https link to the original file; never ask the customer for one, they upload through the artwork_upload_url from any reply. We check whether it will print well at the requested size and answer in inches, with what to fix if anything. A design you only saw in the chat is not one you hold: never transcribe, redraw or regenerate it; give the customer the artwork_upload_url instead. Artwork can be replaced later.

submit_artwork input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "filename": {
      "type": "string",
      "description": "The original file name, if known."
    },
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    },
    "image_url": {
      "type": "string",
      "description": "A public https link to the image (PNG, JPEG or WebP) that you already hold; it survives a new conversation."
    },
    "image_base64": {
      "type": "string",
      "description": "The bytes of a file dropped on our order card, sent by the card itself (PNG, JPEG or WebP, no data: prefix). Not for a file the customer put in the chat; they upload through artwork_upload_url."
    }
  }
}
submit_artwork output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
submit_artwork annotations
{
  "title": "Send the design",
  "readOnlyHint": false,
  "destructiveHint": false
}
get_options — Get priced options
Advertised by the server during the last successful anonymous check.

Returns priced options with lead times once the order is fully described and the artwork has passed the print check. Present them to the customer; each has an id for choose_option. In clients that render our option picker the customer can pick there, and you will see the choice as a message. Call it again whenever the customer asks to see or reconsider the options; it costs nothing. Prices come from us and cannot be passed in.

get_options input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
get_options output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
get_options annotations
{
  "title": "Get priced options",
  "readOnlyHint": false,
  "destructiveHint": false
}
choose_option — Choose an option
Advertised by the server during the last successful anonymous check.

Locks in the option the customer picked from get_options, and its price. Pass the option id exactly as returned. There is no way to pass a price.

choose_option input schema
{
  "type": "object",
  "required": [
    "order_id",
    "option_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    },
    "option_id": {
      "type": "string",
      "description": "The id of the option the customer chose, exactly as returned by get_options."
    }
  }
}
choose_option output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
choose_option annotations
{
  "title": "Choose an option",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_checkout — Get the payment link
Advertised by the server during the last successful anonymous check.

Returns the payment link for a fully specified order with a chosen option. Show checkout_url to the customer as a link labeled "Pay and enter shipping": they see their artwork and total, confirm their email address with a code we send them, then pay and enter their shipping address. Nothing is ordered until they pay. Refuses, and says what is missing, if the order is not ready. When the customer is signed in, asking to pay also saves the order to their account, so it stops expiring.

create_checkout input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
create_checkout output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
create_checkout annotations
{
  "title": "Get the payment link",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
resume_order — Resume an expired order
Advertised by the server during the last successful anonymous check.

Picks up an order that another tool refused as expired. Applies only after that refusal, with the same order_id, when the customer wants to continue that order rather than start over: it gives the order a fresh window and fresh links and returns where things stand, so you can carry on with the call next_call names. Without a refusal there is nothing to resume; start_print_order opens a new order.

resume_order input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order_id another tool refused as expired."
    }
  }
}
resume_order output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
resume_order annotations
{
  "title": "Resume an expired order",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
save_progress — Save the order to my account
Advertised by the server during the last successful anonymous check.

Saves the customer's order to their account so they can pick it up from any conversation; a saved order never expires. Needs the customer to be signed in: if they are not, your client will ask them to sign in or create an account with us, then call this again. Applies when a response's notes offer saving, or when the customer asks to save, to come back later, or to keep their order.

save_progress input schema
{
  "type": "object",
  "required": [
    "order_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order_id returned by start_print_order."
    }
  }
}
save_progress output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "still_needed",
    "spec",
    "next_call",
    "notes",
    "saved"
  ],
  "properties": {
    "spec": {
      "type": "object",
      "properties": {
        "cut": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fit they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "size": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "The shade in the customer's words."
        },
        "weight": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric weight they asked for, in customer words, when they volunteered one; it narrows the garments offered."
        },
        "quantity": {
          "type": [
            "integer",
            "null"
          ]
        },
        "needed_by": {
          "type": [
            "string",
            "null"
          ],
          "description": "The customer's deadline, YYYY-MM-DD."
        },
        "placement": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where the print goes, in customer words."
        },
        "garment_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "The garment in the customer's words, before a product has been settled on."
        },
        "print_width_in": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "The print as the customer has described it so far, beside garment. Null where they have not said; still_needed lists what is missing."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Relay these to the customer."
    },
    "saved": {
      "type": "boolean",
      "description": "Whether the order is saved to a customer account (save_progress)."
    },
    "status": {
      "enum": [
        "draft",
        "specified",
        "priced",
        "payable",
        "paid",
        "submitted",
        "in_production",
        "shipped",
        "delivered",
        "failed",
        "canceled"
      ],
      "type": "string"
    },
    "artwork": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "verdict",
        "findings",
        "review_notes",
        "suggested_colors"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "accepted",
            "warned",
            "rejected"
          ],
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What we measured: the crisp width, the background, the file."
        },
        "artwork_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "review_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What our design reviewer said about this file on this garment: the background, which garment colors suit it, fine detail. Relay it when the customer asks about color or the design, or has not heard it yet; it was shown on the upload page but you did not see it."
        },
        "suggested_colors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The garment colors this design suits among those the customer can still choose, best first, scored from the design's own colors: shades once a garment is named, color families before. They lead the color choices. Empty once the color is decided."
        },
        "max_print_width_in": {
          "type": [
            "number",
            "null"
          ],
          "description": "Largest width, in inches, that prints crisply."
        }
      }
    },
    "choices": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "field",
          "options"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "description": "Answers the customer can pick from, one set per field ask_next asks about. Offer them as selectable options where your client can, otherwise as a short list. They are suggestions: colors are families and the customer may name any shade, quantity and width may be any number. Send whatever they answer to describe_order."
    },
    "garment": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "name",
        "materials",
        "color",
        "size",
        "style",
        "is_provisional"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "size": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "color": {
          "type": "string",
          "description": "The shade on the order, as the mill names it."
        },
        "style": {
          "type": "string",
          "description": "The mill's style code."
        },
        "fabric": {
          "type": [
            "string",
            "null"
          ],
          "description": "The fabric family in customer words."
        },
        "materials": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The mill's own material words, e.g. \"Tri-Blend (Poly/Cotton/Rayon)\"."
        },
        "is_provisional": {
          "type": "boolean",
          "description": "True while alternatives are on offer and the customer has not picked: this is the garment we will use unless they choose another."
        }
      },
      "description": "The garment on the order, and what mockup_url shows. Name it when you show the picture; when it is provisional, say so."
    },
    "options": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "speed",
          "quantity",
          "unit_price_cents",
          "total_cents",
          "currency",
          "delivery_days",
          "delivers_by",
          "delivery_label",
          "summary"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_option."
          },
          "speed": {
            "enum": [
              "standard",
              "rush"
            ],
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready description of the option."
          },
          "currency": {
            "type": "string"
          },
          "quantity": {
            "type": "integer"
          },
          "delivers_by": {
            "type": "string",
            "description": "The date it arrives, YYYY-MM-DD."
          },
          "total_cents": {
            "type": "integer"
          },
          "delivery_days": {
            "type": "integer",
            "description": "Business days from now to the customer's door."
          },
          "delivery_label": {
            "type": "string",
            "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
          },
          "meets_deadline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unit_price_cents": {
            "type": "integer"
          }
        }
      }
    },
    "ask_next": {
      "type": [
        "string",
        "null"
      ],
      "description": "Ask the customer this, in your own words, and send the answer to describe_order."
    },
    "order_id": {
      "type": "string"
    },
    "next_call": {
      "type": "string",
      "description": "What to call next, and why."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When an unsaved order expires; null once it is saved to an account or paid."
    },
    "mockup_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "The garment on the order, in the customer's color, with their design on it once we have it. An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
    },
    "alternatives": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "unit_price_cents",
          "priced_at_quantity",
          "rank",
          "summary",
          "is_provisional",
          "style"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass this to choose_style when the customer picks it."
          },
          "cut": {
            "type": [
              "string",
              "null"
            ],
            "description": "How it hangs: loose, standard or fitted, in customer words."
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "description": "1 is the most popular."
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "style": {
            "type": "string",
            "description": "The mill's style code."
          },
          "fabric": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight": {
            "type": [
              "string",
              "null"
            ],
            "description": "Lightweight, midweight or heavyweight, in customer words."
          },
          "summary": {
            "type": "string",
            "description": "One line on what sets it apart. Relay it as written."
          },
          "color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "mockup_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"cheapest\" or \"priciest\" of the three, when they differ."
          },
          "is_provisional": {
            "type": "boolean",
            "description": "True on the style we will use unless the customer picks another."
          },
          "unit_price_cents": {
            "type": "integer",
            "description": "Garment and printing, per garment, at priced_at_quantity."
          },
          "priced_at_quantity": {
            "type": "integer",
            "description": "The quantity the price is for: the order's, or 1 until the customer says how many. It drops at 12 and again at 24."
          }
        }
      },
      "description": "Present from the moment several styles fit until the customer picks, beside whatever ask_next asks: show all of them with their summaries and prices, say the first is what we will use unless they choose, and call choose_style with the id they pick (or send \"any\" to describe_order to keep the first)."
    },
    "checkout_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Show it to the customer as one link labeled \"Pay and enter shipping\", not as a bare address: they see the artwork and total, confirm their email with a code we send them, then pay and enter their address there."
    },
    "mockup_views": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "view",
          "label",
          "url",
          "printed"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "An image address: show it as a picture where your client can, never as text or as a link, and never describe it in place of the summary."
          },
          "view": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "The side, in customer words: Front, Back, Side."
          },
          "printed": {
            "type": "boolean",
            "description": "True on the side the design goes on; the others are plain and stay blank."
          }
        }
      },
      "description": "Every side of the garment, the printed one first: mockup_url with the design, then the other sides plain. Where your client can show pictures, show them all, so the customer sees which sides stay blank."
    },
    "still_needed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields the customer has not told us yet, and any go-ahead we are waiting on for something the order cannot carry."
    },
    "chosen_option": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "id",
        "method",
        "speed",
        "quantity",
        "unit_price_cents",
        "total_cents",
        "currency",
        "delivery_days",
        "delivers_by",
        "delivery_label",
        "summary"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Pass this to choose_option."
        },
        "speed": {
          "enum": [
            "standard",
            "rush"
          ],
          "type": "string"
        },
        "method": {
          "type": "string"
        },
        "summary": {
          "type": "string",
          "description": "Customer-ready description of the option."
        },
        "currency": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "delivers_by": {
          "type": "string",
          "description": "The date it arrives, YYYY-MM-DD."
        },
        "total_cents": {
          "type": "integer"
        },
        "delivery_days": {
          "type": "integer",
          "description": "Business days from now to the customer's door."
        },
        "delivery_label": {
          "type": "string",
          "description": "\"Free delivery\" or \"Rush delivery\"; standard shipping costs nothing."
        },
        "meets_deadline": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "unit_price_cents": {
          "type": "integer"
        }
      }
    },
    "artwork_upload_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present until the design is accepted. Show it to the customer as one link labeled \"Upload your design\", not as a bare address: they drop their design file on that page and it is checked there. You cannot upload for them."
    }
  }
}
save_progress annotations
{
  "title": "Save the order to my account",
  "readOnlyHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_orders — My orders
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the signed-in customer's orders with us, open and paid, each with its status. Needs the customer to be signed in; if they are not, your client will ask them to. Applies when the customer asks what they have with us, wants to pick up a saved order, or asks where an order is.

my_orders input schema
{
  "type": "object",
  "properties": {
    "include": {
      "enum": [
        "all",
        "open",
        "paid"
      ],
      "type": "string",
      "description": "Which orders to list: everything (the default), only open unpaid ones, or only paid ones."
    }
  }
}
my_orders output schema
{
  "type": "object",
  "required": [
    "orders",
    "next_call"
  ],
  "properties": {
    "orders": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "order_id",
          "status",
          "label",
          "paid",
          "expired",
          "summary",
          "still_needed",
          "has_artwork",
          "currency",
          "last_activity_at"
        ],
        "properties": {
          "paid": {
            "type": "boolean"
          },
          "label": {
            "type": "string",
            "description": "The status in words a customer can read. A paid order reads \"Paid, in production\" until it ships."
          },
          "status": {
            "type": "string"
          },
          "expired": {
            "type": "boolean",
            "description": "An expired order is kept; call resume_order to pick it up."
          },
          "paid_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": "string",
            "description": "Customer-ready one-line description."
          },
          "currency": {
            "type": "string"
          },
          "order_id": {
            "type": "string",
            "description": "For an open order, use with describe_order, get_options, choose_option or create_checkout to continue."
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "status_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "For a paid order. Show it to the customer as one link labeled \"Track your order\", not as a bare address."
          },
          "delivers_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "For a paid order, the date it is planned to arrive by."
          },
          "has_artwork": {
            "type": "boolean"
          },
          "total_cents": {
            "type": [
              "integer",
              "null"
            ]
          },
          "still_needed": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "last_activity_at": {
            "type": "string"
          }
        }
      },
      "description": "Every order on this account, open and paid, latest activity first."
    },
    "next_call": {
      "type": "string"
    }
  }
}
my_orders annotations
{
  "title": "My orders",
  "readOnlyHint": true
}

Prompts

0 advertised

No prompt definitions available.

Resources

3 advertised

alternatives-picker — Alternatives Picker App

Advertised by the server during the last successful anonymous check.

Pick the garment style for your print order.

alternatives-picker URI
ui://print/alternatives-picker.html

MIME type: text/html;profile=mcp-app

color-preview — Color Preview App

Advertised by the server during the last successful anonymous check.

Compare your design on the garment in different colors.

color-preview URI
ui://print/color-preview.html

MIME type: text/html;profile=mcp-app

option-picker — Option Picker App

Advertised by the server during the last successful anonymous check.

Pick a priced option for your print order.

option-picker URI
ui://print/option-picker.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1460 ms
95th percentile latency
1460 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1460 ms · metadata changed · 12 tool(s), 3 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http rushordertees-mcp https://mcp.rushordertees.com/mcp/print

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add rushordertees-mcp --url https://mcp.rushordertees.com/mcp/print

Cursor

Merge this server into .cursor/mcp.json in your project, then enable rushordertees-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "rushordertees-mcp": {
      "url": "https://mcp.rushordertees.com/mcp/print"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "rushordertees-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.rushordertees.com/mcp/print",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start rushordertees-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "rushordertees-mcp": {
      "type": "http",
      "url": "https://mcp.rushordertees.com/mcp/print"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http rushordertees-mcp https://mcp.rushordertees.com/mcp/print

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "rushordertees-mcp": {
      "url": "https://mcp.rushordertees.com/mcp/print"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "rushordertees-mcp": {
      "serverUrl": "https://mcp.rushordertees.com/mcp/print"
    }
  }
}

Let your agent find its tools

Find servers like RushOrderTees MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run RushOrderTees MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing