AgentMade Print on Demand
Server Details
Print on demand for AI agents. No sign-up. Picture, words or logo on a tee, hoodie or tote.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- alexmensak/agentmade-print-on-demand
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
9 toolscancel_orderCancel an orderDestructiveIdempotentInspect
Cancel an order. Unpaid: closes the payment link; nothing is charged. Paid and not yet in production: cancels and refunds in full. In production or shipped: cannot be cancelled; the error gives the reason. A second call on a cancelled order is safe.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| order_id | Yes | order_id returned by purchase. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total | Yes | |
| status | Yes | |
| payment | Yes | |
| order_id | Yes | A bearer key: whoever has it can read and cancel the order. Do not share it publicly. |
| quote_id | Yes | |
| timeline | Yes | |
| next_step | Yes | What the agent should do next, in plain language. |
| order_url | Yes | The order page. The person sees the status there. |
| shipments | Yes | |
| destination | Yes | While address_needed: the quoted destination. |
| status_reason | Yes | |
| address_needed | Yes | True when purchase had no street address: the person enters it on the order page before paying. |
| delivery_estimate_business_days | Yes | Null when the order ended (cancelled, refunded, rejected, expired or delivered). |
create_mockupCreate a preview mockupIdempotentInspect
Render a preview PNG of the artwork on the product in the chosen colour and placement. style flat draws the placement; style packshot uses a product photo with the exact print at real size, or gives the flat preview with a note when no photo exists. Returns mockup_url, blank_image_url and image_prompt (an optional text prompt for an illustration of a person who wears the product; such an image is an illustration, not the exact print). Optional.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| color | Yes | Product colour, e.g. "black". | |
| style | No | flat: quick placement drawing. packshot: product photo with the exact print at real size (where a product photo exists). | flat |
| preset | No | Named position inside the placement, e.g. "center_chest", "left_chest", "full_front". Defaults to the placement default. | |
| top_mm | No | Distance from the top of the print area to the top of the artwork. | |
| left_mm | No | Distance from the left edge of the print area. Default: horizontally centred. | |
| width_mm | No | Exact printed width of the visible artwork in millimetres. Height follows the aspect ratio. | |
| height_mm | No | Maximum printed height in millimetres. | |
| placement | No | Print location on the product, e.g. "front" or "back". See get_product for the list. | front |
| artwork_id | Yes | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| style | Yes | |
| summary | Yes | |
| mockup_url | Yes | PNG preview of the exact print on the product. |
| image_prompt | Yes | A prompt for your own image model, to make an illustration from mockup_url. |
| blank_image_url | Yes | |
| validation_status | Yes |
get_orderGet order statusRead-onlyIdempotentInspect
Current order status (AWAITING_PAYMENT, PAID, SUBMITTED, IN_PRODUCTION, SHIPPED, DELIVERED or an exception state), next_step in plain language, the payment link while unpaid, shipments and a timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | order_id returned by purchase. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total | Yes | |
| status | Yes | |
| payment | Yes | |
| order_id | Yes | A bearer key: whoever has it can read and cancel the order. Do not share it publicly. |
| quote_id | Yes | |
| timeline | Yes | |
| next_step | Yes | What the agent should do next, in plain language. |
| order_url | Yes | The order page. The person sees the status there. |
| shipments | Yes | |
| destination | Yes | While address_needed: the quoted destination. |
| status_reason | Yes | |
| address_needed | Yes | True when purchase had no street address: the person enters it on the order page before paying. |
| delivery_estimate_business_days | Yes | Null when the order ended (cancelled, refunded, rejected, expired or delivered). |
get_productGet product detailsRead-onlyIdempotentInspect
Full details for one product: colours with hex codes and product photos (images: url, view, style, alt; empty when none yet; ai_generated marks AI photos), sizes, variant ids, print placements with the print area in mm, placement presets (for example center_chest, left_chest, full_front, full_back), materials and artwork guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product id from search_products, e.g. "tee-heavyweight". |
Output Schema
| Name | Required | Description |
|---|---|---|
| brand | Yes | |
| model | Yes | |
| sizes | Yes | Size values to pass as size. |
| title | Yes | |
| colors | Yes | |
| category | Yes | |
| variants | Yes | |
| image_url | Yes | A product photo, or null when none is approved yet. |
| next_step | Yes | What the agent should do next, in plain language. |
| placements | Yes | |
| product_id | Yes | Use in get_product, validate_artwork and quote. |
| description | Yes | |
| size_chart_cm | Yes | |
| artwork_guidance | Yes | |
| decoration_method | Yes | |
| printed_in_regions | Yes | Regions where this product is printed, e.g. ["EU", "US"]. |
| production_business_days | Yes |
purchasePlace the order and get the payment linkIdempotentInspect
Turn a quote into an order. Needs quote_id, the full recipient address (it must match the quoted destination) and rights_attestation=true. contact_email is the payer's own email, never the gift recipient's. Returns order_id and payment.url: the order page where the person pays by card, Apple Pay or Google Pay. Nothing is printed until the payment is confirmed. Idempotent per quote_id.
| Name | Required | Description | Default |
|---|---|---|---|
| orders | No | Many parcels with one payment: one quote_id and one recipient per parcel. Not live yet: call purchase once per quote_id for now. | |
| quote_id | No | quote_id returned by quote, for one parcel. Set quote_id or orders, not both. | |
| recipient | No | Shipping address. Country, state and postal code must match the quote destination. Send the full address when you have it. If you cannot collect the street address, send only country_code, postal_code (and state_code for US, CA and AU): the person then enters the address on the order page before paying. Required with quote_id. | |
| gift_message | No | Short message for the packing slip of a gift. Not printed yet: the answer says so. | |
| contact_email | No | Email of the payer, for the order confirmation and the payment receipt. Not the recipient's email: for a gift, the recipient must not see the price. Optional. | |
| rights_attestation | Yes | Must be true: confirms the customer owns or is licensed to print all submitted artwork, and that it is not prohibited content. | |
| payment_capabilities | No | Payment methods the calling agent can use. "hosted_checkout" = a link that the person opens to pay by card, Apple Pay or Google Pay. Always supported. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| notes | Yes | |
| total | Yes | |
| status | Yes | |
| payment | Yes | |
| order_id | Yes | A bearer key: whoever has it can read and cancel the order. Do not share it publicly. |
| quote_id | Yes | |
| timeline | Yes | |
| next_step | Yes | What the agent should do next, in plain language. |
| order_url | Yes | The order page. The person sees the status there. |
| shipments | Yes | |
| destination | Yes | While address_needed: the quoted destination. |
| status_reason | Yes | |
| address_needed | Yes | True when purchase had no street address: the person enters it on the order page before paying. |
| delivery_estimate_business_days | Yes | Null when the order ended (cancelled, refunded, rejected, expired or delivered). |
quoteGet a delivered price quoteInspect
Price printed items delivered to one destination. Returns quote_id, the total that the payer pays (products, shipping and VAT where AgentMade collects it), what is not included, the delivery estimate and the expiry. Needs artwork_id values from validate_artwork. Charges nothing. For a destination where orders are not open, the quote is for information only.
| Name | Required | Description | Default |
|---|---|---|---|
| buyer | No | Only for a company purchase with an invoice. Business checkout is not open yet: the quote charges destination VAT. | |
| items | Yes | ||
| speed | No | Shipping speed. Only standard is offered now; express returns a note and a standard quote. | standard |
| purpose | No | What the order is for. Set it only if the user already said it. Do not ask for it. | |
| ship_to | Yes | Destination. country_code is required; postal_code and state_code improve shipping accuracy. | |
| currency | No | ISO 4217 currency of the payer, e.g. "USD". Optional. The quote states the currency that it uses. | |
| deliver_by | No | Date by which the parcel should arrive, e.g. "2026-12-20". The quote is never refused because of it: if the estimate is later, the quote says so. | |
| preference | No | How AgentMade picks the manufacturing route: fewest_packages (default: fewest parcels, then best price among the fastest routes), cheapest, or fastest. | fewest_packages |
Output Schema
| Name | Required | Description |
|---|---|---|
| tax | Yes | |
| items | Yes | |
| notes | Yes | Things to tell the user before purchase. |
| status | Yes | |
| totals | Yes | total_minor is the full amount that the payer pays. Show total_formatted to the user. products_minor and shipping_minor are before VAT; tax_minor is the VAT included in the total, or 0 when tax is not collected. |
| ship_to | Yes | |
| currency | Yes | |
| packages | Yes | |
| quote_id | Yes | Use in purchase before expires_at. |
| shipping | Yes | |
| next_step | Yes | What the agent should do next, in plain language. |
| expires_at | Yes | |
| assumptions | Yes | |
| package_count | Yes | |
| purchase_open | Yes | False when this destination does not take orders yet or the quote expired. Then do not call purchase. |
| delivery_estimate_dates | Yes | Calendar dates (YYYY-MM-DD) for the delivery estimate. Tell the user these dates. |
| delivery_estimate_business_days | Yes |
search_productsSearch printable productsRead-onlyIdempotentInspect
Use this when the user wants their own picture, words or logo printed on a T-shirt, hoodie, sweatshirt or tote bag and delivered, as a gift or for themselves. Finds products by free text, category, colour and size. Returns product_id, image_url (a product photo, or null), colours, sizes and print placements. No account needed. Not for mugs, posters, caps, stickers or embroidery.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Only products available in this size, e.g. "XL". | |
| color | No | Only products available in this colour, e.g. "black". | |
| query | No | Free-text description, e.g. "heavyweight black t-shirt" or "hoodie". | |
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| count | Yes | |
| products | Yes |
track_orderTrack shipmentRead-onlyIdempotentInspect
Carrier, tracking number and tracking link for each shipment of an order, and the delivery estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | order_id returned by purchase. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| order_id | Yes | |
| next_step | Yes | What the agent should do next, in plain language. |
| order_url | Yes | |
| shipments | Yes | |
| tracking_available | Yes | |
| delivery_estimate_business_days | Yes | Null when the order ended (cancelled, refunded, rejected, expired or delivered). |
validate_artworkUpload and validate artworkInspect
Upload artwork and check that it prints well on one product placement. Send exactly one of: artwork with svg (markup, best for text and logos), base64 (a PNG, JPEG or SVG file up to about 2 MB, no data: prefix) or url (a public HTTPS link to the file); file (a file object from your client); or upload_link:true when you cannot send the file in this call. Returns artwork_id and PASS/WARN/FAIL checks: print size in mm, resolution (DPI), print and safe area, transparent background, contrast with the product colour. For photos and AI images use preset center_chest. Use the artwork_id in quote.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | A file that your client gives you as a file object (for example in ChatGPT). | |
| size | No | Garment size, e.g. "XL". Print areas can differ by size; without it the smallest size is checked. | |
| color | No | Product colour, for the contrast check. | |
| preset | No | Named position inside the placement, e.g. "center_chest", "left_chest", "full_front". Defaults to the placement default. | |
| top_mm | No | Distance from the top of the print area to the top of the artwork. | |
| artwork | No | New artwork to upload: exactly one of svg, base64 or url. | |
| left_mm | No | Distance from the left edge of the print area. Default: horizontally centred. | |
| width_mm | No | Exact printed width of the visible artwork in millimetres. Height follows the aspect ratio. | |
| height_mm | No | Maximum printed height in millimetres. | |
| placement | No | Print location on the product, e.g. "front" or "back". See get_product for the list. | front |
| artwork_id | No | Re-validate artwork uploaded earlier, or validate the file of an upload link. | |
| product_id | Yes | Product to print on. | |
| upload_link | No | Set true when you cannot send the file in this call. The answer gives an artwork_id and a one-time upload_url: upload with curl, or give the link to the person. Then call validate_artwork with the artwork_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| artwork | No | |
| next_step | Yes | What the agent should do next, in plain language. |
| artwork_id | No | Only in the upload_link answer: the reserved id for the file. |
| expires_at | No | |
| upload_url | No | Only in the upload_link answer: the one-time upload link. |
| validation | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
cancel_order - First observed
create_mockup - First observed
get_order - First observed
get_product - First observed
purchase - First observed
quote - First observed
search_products - First observed
track_order - First observed
validate_artwork
Related MCP Connectors
Print-on-demand catalog, listings, and fulfillment for AI agents.
Put any picture on a shirt, hoodie, cap, tumbler or tote; get the link where the person buys it.
Shop all-over print cotton tees with your AI agent: search, cart, promos, checkout. Human pays.
- mcpOAuthai.crayonz
Design custom apparel from chat: AI art on tees and hoodies, then a checkout link to buy.
Related MCP Servers
AlicenseAqualityAmaintenanceRun a custom-merchandise store end to end from an AI agent: generate designs, build products with mockups and margin-safe pricing, list them on Shopify, WooCommerce, Wix and TikTok Shop, and route orders to Printful, Printify or Gelato for fulfillment.123451 npmMIT
OpenPrints MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to browse products, upload designs, place print orders, track shipments, and manage account balance via natural language.14 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to run a print-on-demand store by creating products on Printify, pricing from production cost, publishing to Shopify and its sales channels, and generating ad creative from mockups.1ISC
- AlicenseAqualityAmaintenanceSimple and free publishing of content on the web for AI Agents28,040 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.