Server & prerequisites
A hosted MCP server using Streamable HTTP and OAuth. Add this URL to your client:
https://www.useproductify.com/api/mcpYou need a Productify account, a connected Printify shop and a saved product template for creating products from designs. Your Printify token stays in Productify; do not paste it into your chat or client configuration.
These instructions cover ChatGPT and Codex. Production sign-in accepts approved OpenAI and Claude callback URLs and client metadata; support for HTTP and OAuth alone does not make another client compatible.
Connect ChatGPT
Available on the web with a Plus, Pro, Business, Enterprise or Education plan and developer mode access.
- Open ChatGPT Settings, then Security and login. Turn on Developer mode.
- Open the Plugins page and select the plus button. Name the connection Productify.
- Use this server URL and choose OAuth:
https://www.useproductify.com/api/mcp - Sign in to Productify. To create, publish or edit products, select the optional manage permission before choosing Allow.
- In a new chat, choose Developer mode from the plus menu and select Productify. Ask it to show your saved templates.
Setup guidance: OpenAI's developer mode documentation.
Connect Codex
Add the remote server, then sign in:
codex mcp add productify --url https://www.useproductify.com/api/mcp
codex mcp login productifyOr add this to ~/.codex/config.toml, then run codex mcp login productify:
[mcp_servers.productify]
url = "https://www.useproductify.com/api/mcp"In the IDE extension, open the gear menu, choose MCP servers and add a Streamable HTTP server using the URL above. Save, restart the extension and select Authenticate.
Codex can upload local design files. Tell it which files to use and which saved Productify template to apply.
Configuration guidance: OpenAI's MCP documentation.
Authentication & permissions
OAuth 2.1 with PKCE (S256) for public clients. Dynamic client registration and trusted client ID metadata documents are supported. Production loopback callbacks require trusted client metadata; self-registered loopback clients are not accepted.
productify- Always granted: read shops, templates and products; stage designs; write listings; read reviews and job progress. Staging also uploads artwork to the Printify media library.
productify.manage- Granted only when the seller selects it on Productify's consent screen: create, publish and edit products, and save the shop's first listing voice. Requesting the scope alone does not grant it.
Every tool uses the shop selected in Productify. Tool inputs do not accept an account or shop identifier. Work already running keeps its original shop.
Protected resource metadata:
https://www.useproductify.com/.well-known/oauth-protected-resource/api/mcpTo revoke access, open Shops → Connected apps in Productify and select Disconnect. To add manage permission later, disconnect, sign in again and select that permission.
Preview, approve, run
- Find a template with
list_shops_and_templates. Stage the designs and useget_reviewto inspect the proposed products. - If staging returns
needs_voice, ask the seller how their listings should sound, then callset_shop_voiceandwrite_listings. If they decline, usewrite_listingswithskipVoice: true. Pollget_reviewuntil the products reportlistingWritten: truebefore creating them. - Call
preview_create,preview_publishorpreview_edit. Show the seller the affected products, prices and warnings. - After the seller approves that preview, call the matching action with the same values and its
confirmToken. If the product changed, request a new preview and approval. - Create, publish and remote price edits return a job. Follow it with
get_job_status. Other edits finish before the tool returns.
Wait for listing generation to finish. If the seller explicitly wants to use the current titles and descriptions without generated listings, pass withoutListings: true to both the creation preview and action.
Creation produces unpublished Printify products. Publishing requires its own preview and approval; republishing a live product can replace edits made in the store. Create, publish and edit actions send the seller an email with a disconnect link.
Tool reference
Read and preparation tools use productify. Remote product changes require productify.manage.
| Tool | Scope | Purpose |
|---|---|---|
list_shops_and_templates | productify | Lists the connected Printify shops, which one is selected, and that shop's saved templates. Call it first for a templateId. |
stage_designs | productify | Adds attached PNG or JPEG designs, up to 20 per call, to a new upload on a saved template: one product per design. Starts the listings. |
get_upload_urls | productify | For files on the seller's computer: one-time upload URLs from each file's name, size, type and SHA-256. PUT the bytes, then pass the uploadIds to stage_designs. |
write_listings | productify | Starts Productify's writer on an unfinished upload: title, description and tags in the shop's voice, following Etsy's tag rules. |
set_shop_voice | productify.manage | Saves how the shop's listings should sound, only when the shop has no voice yet. |
get_review | productify | Shows the upload's products: title, file, variant count, price range, whether the listing is written, and print warnings. |
find_products | productify | Finds products in the selected shop by words in the title, and by status. Returns the 20 most recently changed. |
get_job_status | productify | Reports the progress of a create, publish or edit run. |
preview_create, then create_products | productify.manage | Previews, then creates up to 20 products in Printify, unpublished, from one upload or several. |
preview_publish, then publish_products | productify.manage | Previews, then publishes up to 20 products to the store connected to the Printify shop. |
preview_edit, then edit_products | productify.manage | Previews, then changes the title, description, tags or price of up to 10 products. |
Limits & boundaries
- Up to 20 PNG or JPEG files per
stage_designsorget_upload_urlscall. - Up to 20 products per create or publish action, and 10 per edit.
- One upload per template per call. A create action can include products from several uploads.
- Chat needs a saved template. Use the new-product guide to choose a product and print provider first.
- Edits apply to staged products or products created through Productify. Artwork, placement and variant changes stay in the web app.
- Pricing can use a fixed retail price, profit over each variant's cost or percentage markup. Prices at or below a variant's Printify cost are refused.
- Productify writes the listing copy unless the seller provides it. Deleting products is not exposed through MCP.
Troubleshooting
No templates found
Select the correct shop in Productify and save a template. Then ask the client to list templates again.
Permission denied on a create, publish or edit
Reconnect with the manage permission selected. In Codex, disconnect under Shops → Connected apps, then run codex mcp login productify again.
Listings are waiting on credits
If staging or listing generation returns waiting_on_credits, show the seller the returned pricing link. After they add enough credits to cover the upload, call write_listings again.
The preview is no longer valid
The products changed after the preview. Generate a fresh preview and ask for approval again.
A design has a print warning
Check its pixel dimensions against the template's print area. Use the original file or a higher-resolution export and review again.
Discovery: server card · Smithery listing
