# Printify — how to use (mcp.ai)

Connect your Printify account and use 25 tools for ecommerce straight from your AI agent. Connect with your own API key. Printify is a print-on-demand platform for managing merchant shops, products, orders, uploads, catalog data, and webhooks.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_printify?ms=1787295720000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `printify_archive_upload`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/printify`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/printify/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/printify/archive/upload` — Irreversibly archive an image in the connected merchant's Printify media library. This cannot be undone, removes it from normal media-library use, and may affect future product editing, but does not r
  - body: { image_id: string, confirm_archive: boolean }
- `POST https://api.mcp.ai/api/printify/calculate/order/shipping` — Calculate available shipping-cost estimates for proposed line items and a destination. This is quote-only: it does not create an order, send anything to production, or charge the merchant, despite req
  - body: { shop_id: integer, address_to: object, line_items: object[] }
- `POST https://api.mcp.ai/api/printify/create/product` — Create a new product draft in a Printify shop. This changes merchant data but does not publish the product or submit an order. Validate blueprint, provider, variant, print-position, and uploaded image
  - body: { title: string, shop_id: integer, variants: object[], description?: string, print_areas: object[], blueprint_id: integer, print_provider_id: integer, safety_information?: string }
- `POST https://api.mcp.ai/api/printify/create/webhook` — Create a persistent webhook subscription for a Printify shop. Printify sends real event payloads to the HTTPS callback URL. An optional signing secret can be supplied for receiver-side X-Pfy-Signature
  - body: { url: string, topic: string, secret?: string, shop_id: integer }
- `POST https://api.mcp.ai/api/printify/delete/product` — Permanently delete a product from a Printify shop. This cannot be undone and does not cancel or refund existing orders. Read the product first and verify both IDs before confirming deletion.
  - body: { shop_id: integer, product_id: string, confirm_delete: boolean }
- `POST https://api.mcp.ai/api/printify/delete/webhook` — Permanently delete a Printify webhook subscription so future events are no longer delivered. The expected callback host must match the subscription, which helps prevent deletion of the wrong webhook.
  - body: { shop_id: integer, webhook_id: string, expected_host: string, confirm_delete: boolean }
- `POST https://api.mcp.ai/api/printify/get/blueprint` — Get the full catalog record for one Printify product blueprint, including its description and images. Use SEARCH_BLUEPRINTS first when the blueprint ID is unknown.
  - body: { blueprint_id: integer }
- `POST https://api.mcp.ai/api/printify/get/order` — Get complete details for one Printify order, including its recipient address, line items, status, shipping method, shipments, and timestamps. This call is read-only. All monetary amounts are integer m
  - body: { shop_id: integer, order_id: string }
- `POST https://api.mcp.ai/api/printify/get/product` — Get the complete Printify record for one product in a shop, including variants, print areas, images, visibility, and sales-channel properties.
  - body: { shop_id: integer, product_id: string }
- `POST https://api.mcp.ai/api/printify/get/shipping/details` — Get per-variant shipping costs and handling-time ranges for one advertised V2 shipping method. Monetary amounts are integer minor currency units, not decimal major units. Call LIST_SHIPPING_METHODS fi
  - body: { blueprint_id: integer, shipping_method: string, print_provider_id: integer }
- `POST https://api.mcp.ai/api/printify/list/blueprint/print/providers` — List print providers that can fulfill a specific Printify blueprint. Use a returned provider ID with variant and shipping tools before creating a product.
  - body: { blueprint_id: integer }
- `POST https://api.mcp.ai/api/printify/list/blueprint/variants` — List purchasable variants and print placeholders for a blueprint and print provider. Variant IDs and placeholder dimensions are required inputs when configuring a product.
  - body: { blueprint_id: integer, print_provider_id: integer, include_out_of_stock?: boolean }
- `POST https://api.mcp.ai/api/printify/list/orders` — Return one page of orders in a Printify shop, optionally filtered by provider status or exact SKU. This is read-only and does not submit, cancel, or send orders to production. All monetary amounts are
  - body: { sku?: string, limit?: integer, status?: string, shop_id: integer, next_cursor?: string }
- `POST https://api.mcp.ai/api/printify/list/products` — Return one page of products in a Printify shop. Use next_cursor to continue without automatically exhausting a potentially large shop catalog.
  - body: { limit?: integer, shop_id: integer, next_cursor?: string }
- `POST https://api.mcp.ai/api/printify/list/shipping/methods` — List the V2 shipping methods actually available for a Printify blueprint and print provider. Availability varies by pair, so call this before requesting method-specific shipping details.
  - body: { blueprint_id: integer, print_provider_id: integer }
- `POST https://api.mcp.ai/api/printify/list/shops` — List shops available to the connected Printify merchant account. Use the returned shop IDs in product, order, and webhook workflows; a shop may be disconnected from a sales channel while remaining rea
- `POST https://api.mcp.ai/api/printify/list/uploads` — Return one page of images in the connected merchant's Printify media library. Use image IDs and preview metadata when configuring product print areas.
  - body: { limit?: integer, next_cursor?: string }
- `POST https://api.mcp.ai/api/printify/list/webhooks` — List webhook subscriptions configured for a Printify shop. The live API returns a complete array, so this action does not expose pagination controls.
  - body: { shop_id: integer }
- `POST https://api.mcp.ai/api/printify/publish/product` — Start asynchronous publication of one or more fields selected in fields_to_publish from Printify to the shop's connected sales channel. This can make product content externally visible but does not cr
  - body: { shop_id: integer, product_id: string, fields_to_publish: string[], confirm_external_publish: boolean }
- `POST https://api.mcp.ai/api/printify/search/blueprints` — Search Printify's product blueprint catalog by case-insensitive text in title, brand, or model. The upstream catalog is unpaginated, so this tool fetches it once and returns only bounded matching summ
  - body: { limit?: integer, query: string }
- `POST https://api.mcp.ai/api/printify/simulate/webhook` — Ask Printify to send a simulated event to an existing webhook's external callback URL. This causes a real outbound request and may activate downstream automation, but does not create a Printify order 
  - body: { payload?: object, shop_id: integer, webhook_id: string, confirm_external_delivery: boolean }
- `POST https://api.mcp.ai/api/printify/unpublish/product` — Notify Printify that a product has been unpublished from the connected sales channel. This irreversibly changes publication-state metadata but does not delete the Printify product. Use only after the 
  - body: { shop_id: integer, product_id: string, confirm_unpublish: boolean }
- `POST https://api.mcp.ai/api/printify/update/product` — Update selected fields of an existing Printify product. This changes merchant product data but does not publish those changes to the connected sales channel. Read the product first and provide at leas
  - body: { title?: string, shop_id: integer, variants?: object[], product_id: string, description?: string, print_areas?: object[], blueprint_id?: integer, print_provider_id?: integer, safety_information?: string }
- `POST https://api.mcp.ai/api/printify/update/webhook` — Replace the callback URL of an existing Printify webhook subscription. This changes where future real event payloads are delivered; it does not change the subscribed topic or signing secret.
  - body: { url: string, shop_id: integer, webhook_id: string }
- `POST https://api.mcp.ai/api/printify/upload/image` — Add an image to the connected merchant's Printify media library from either a public HTTP(S) URL or base64 content. This creates persistent merchant media but does not create or publish a product or i
  - body: { url?: string, contents?: string, file_name: string }

## Example prompts
- "What can I do in Printify?"
- "Show me a summary of my Printify account"

## More
- Page: https://mcp.ai/printify
- Agent spec (llms.txt): https://mcp.ai/printify/llms.txt
- Postman collection: https://mcp.ai/printify/postman.json
