printful-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRINTFUL_STORE_ID | No | Optional Printful store ID. Required for account-level tokens on store-specific calls. | |
| PRINTFUL_API_TOKEN | Yes | Your Printful private token. Required to authenticate with the Printful API. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_storesA | List Printful stores visible to the private token. Use a store id from this list as PRINTFUL_STORE_ID when the token is account-level. |
| search_catalogA | Search the Printful product catalog. The v1 catalog endpoint has no text query, so this loads the catalog (optionally by category_id) and filters title, brand, model, and type locally. Results are paged with offset and limit (default 20, max 100). |
| get_productB | Get one Printful catalog product, including its variants, by catalog product id. |
| get_variantsA | Get variants for a catalog product, or one variant by variant id. Pass product_id or variant_id, not both. |
| get_shipping_ratesB | Calculate Printful shipping options for catalog or warehouse items. country_code is required. state_code is required for US, CA, and AU. These rates can differ from estimate_order_costs when store shipping settings apply. |
| estimate_order_costsA | Estimate item, print, shipping, and tax costs without creating an order. Call this before create_order. Nothing is charged. |
| create_orderA | Create a Printful order as a DRAFT only. This tool always sends confirm=false, ignores any confirm flag, and never charges the store. Fulfillment happens only if you later call confirm_order with confirm set to true. Prefer a unique external_id so a retry cannot duplicate the draft. |
| confirm_orderA | Submit an existing DRAFT order for fulfillment. This charges the store payment method. confirm must be the boolean true. Do not call this unless a person explicitly asked to place and pay for the order. |
| cancel_orderA | Cancel a draft or pending Printful order. Charged amounts are returned by Printful when the order is eligible. |
| get_orderA | Get one Printful order by id, including status, costs, and shipments. |
| list_ordersA | List orders for the current store. Filter by status (for example draft, pending, fulfilled, canceled). limit max is 100. |
| list_sync_productsB | List sync products in the connected store. status can be all, synced, unsynced, ignored, imported, discontinued, or out_of_stock. |
| create_sync_productB | Create a sync product from one or more catalog variant ids, a print-file URL, and a placement (front, back, default, or another Printful file type). The same file URL is applied to every variant. |
| upload_fileA | Add a file to the Printful file library by URL. If the same URL already exists, Printful returns the existing file. Processing is asynchronous; status starts as waiting and later becomes ok or failed. Deprecated .ai, .psd, and .tiff sources are rejected by Printful. |
| create_mockup_taskA | Start an asynchronous Printful mockup task for a catalog product. This endpoint is tightly rate limited (about 2 to 10 calls per minute). Poll get_mockup_task with the returned task_key. On 429, wait the reported seconds before retrying. |
| get_mockup_taskA | Read a mockup generation task. When status is completed, result.mockups contains image URLs. If status is pending, wait and call again. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Most tools have clearly distinct resource+action targets, and descriptions explicitly warn about overlaps (confirm_order requires explicit human intent, get_shipping_rates vs estimate_order_costs are explained). Minor confusion remains between get_product and get_variants (the latter also fetches a single variant and get_product already returns variants), and between the two cost-estimation tools. Overall an agent can reliably pick the right tool.
All 16 names are snake_case with a consistent verb_noun pattern (list_, get_, create_, confirm_, cancel_, estimate_, search_, upload_). The convention is uniform across every resource type, so the pattern is completely predictable.
16 tools is on the heavier side but each maps to a genuine Printful domain operation (catalog, files, mockups, sync products, stores, shipping, order lifecycle). Nothing feels redundant, though a couple of read tools (get_product/get_variants) could be consolidated.
Order lifecycle is fully covered (create draft, confirm, cancel, get, list) and catalog/files/mockups/shipping are all present. The main gap is the sync product lifecycle: create and list exist but there is no get_single, update, or delete/ignore sync product tool, which will force awkward workarounds for managing existing products.