Gelato
Connect Claude, ChatGPT or Cursor to Gelato via MCP. Search print catalogs, quote shipping, and place or cancel orders with your API key. Pass a store id per call to cover multiple stores.
Example questions
Try asking your AI client
-
Which Gelato catalogs can I print from?
-
Quote a poster to Copenhagen before I place anything.
-
Did the draft order for Jack ever get tracking?
-
Write a product title for the new poster template - do not publish it.
-
Show stock for the card product I am about to order.
Overview
Connect Gelato print-on-demand so AI clients can search catalogs, check prices and stock, quote shipping, and place or cancel print orders with your Gelato API key.
One API key covers every store on the account. Pass store_id on each store tool call. There is no saved store id.
New connections start with Read tools. Turn on Write under Edit tool access before placing or canceling orders. create_order defaults to a draft. confirm_draft_order is the step that sends a draft into production. A Gelato account with a payment method will print and ship a live order. Use an account with no payment method when you want to try the API without printing.
Prerequisites
- A Gelato account
- An API key from the Gelato dashboard
- A stackgate.ai account
- Store and template ids copied from the dashboard when you use store tools (Gelato does not offer list-stores or list-templates)
Getting credentials
- Sign in to the Gelato dashboard.
- Open Developer, API Keys and create a key.
- Copy the key immediately. It is shown only once.
- In stackgate.ai, open My Integrations → Gelato.
- Paste the API key and save. stackgate.ai verifies the key with
GET /v3/catalogsand stores it encrypted. - Leave Write off until you are ready to place or cancel orders. Enable it under Edit tool access.
See How do I add, remove, deactivate, or replace an API key?. Gelato uses the same API hosts for test and live accounts. An account without a payment method is the safe way to trial orders.
Credentials reference
| Field | Required | Where to find it | Notes |
|---|---|---|---|
| API key | Yes | Developer, API Keys | Stored encrypted. Sent as X-API-KEY. |
Store id and template id are tool arguments, not saved credentials.
Permission model
| Scope | What it allows | Access level |
|---|---|---|
| Read | Catalogs, prices, stock, shipment methods, quotes, orders, store products, and templates | Read |
| Write | Create draft or live orders, confirm drafts, cancel orders, and publish store products from templates | Write |
Gelato does not use OAuth for this connect flow. The key is yours. stackgate.ai does not add a hub quota on top of Gelato's limit of about 100 requests per second per key.
Using with AI clients
- Dedicated endpoint:
POST /mcp/gelatowith a Sanctum bearer token - Private gateway: one config for all integrations - use
gelato__*namespaced tools
Example prompts:
- "List my Gelato catalogs and search posters."
- "Quote a 50x70 poster to Copenhagen. Do not place the order."
- "Search my Gelato orders from this week and summarize fulfillment status."
- "Create a Gelato draft order for this poster. Do not confirm it."
- "List products in store abc and in store def."
- "Get Gelato template tmpl-42, then draft a title for a new store product. Do not publish it."
Tools
Read:
list_catalogs,get_catalog,search_products,get_productget_product_prices,get_cover_dimensions,get_stock_availabilitylist_shipment_methods,quote_ordersearch_orders,get_orderlist_store_products,get_store_product,get_template
Write:
create_order(defaults to draft)confirm_draft_ordercancel_ordercreate_store_product
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| 422 integration not configured | Form not saved | Save the API key in My Integrations |
| 401 Unauthorized | Wrong or rotated key | Create a new key under Developer, API Keys and reconnect |
| 403 Forbidden | Key is inactive | Confirm the key is active in the Gelato dashboard |
| 404 Not found | Wrong catalog, product, order, store, or template id | Copy the id from the dashboard or from a previous tool result |
| 429 Too many requests | More than about 100 requests per second on this key | Wait and retry |
| Write tool missing | Connection is still Read-only | Enable Write under Edit tool access |
| Order was printed | order_type was order, or a draft was confirmed, on an account that can be charged |
Prefer draft, and use an account with no payment method for trials |
Security and revocation
- Disconnect Gelato in My Integrations to delete the stored API key from stackgate.ai.
- Deactivate the key in the Gelato dashboard if you suspect leakage.
- Order and quote results can include recipient name, email, phone, and shipping address. Prefer order ids and fulfillment status in summaries.
- stackgate.ai encrypts the API key and does not keep order or address payloads in the hub.
Limitations
- No Gelato Network, webhooks, wallet, or print-file upload. Print files are HTTPS URLs on the order.
- No list-stores or list-templates. Copy those ids from the dashboard and pass
store_idper call. - Order edits are limited to confirming a draft and canceling before production.
- Live orders on an account with a payment method are fulfilled by Gelato.
Available tools
-
list_catalogs
List Gelato product catalogs (posters, cards, apparel, and the rest).
-
get_catalog
Get one Gelato catalog, including the attributes you can filter on in search_products.
-
search_products
Search products in a Gelato catalog. attribute_filters is an object of attribute uid to a list of value uids from get_catalog.
-
get_product
Get one Gelato product by product uid, including attributes, dimensions, and supported countries.
-
get_product_prices
Get quantity prices for a Gelato product. page_count is required by Gelato for multi-page products.
-
get_cover_dimensions
Get cover dimensions for a multi-page Gelato product such as a photo book or brochure.
-
get_stock_availability
Check regional stock for up to 250 Gelato product uids. Statuses include in-stock, out-of-stock, out-of-stock-replenishable, non-stockable, and not-supported.
-
list_shipment_methods
List Gelato shipment methods, optionally filtered by destination country. Use quote_order for a price on a specific basket.
-
quote_order
Quote product and shipment prices for a recipient. Does not place an order. Nested recipient and products objects use Gelato camelCase field names.
-
search_orders
Search Gelato orders. Prefer ids and fulfillment status in summaries. Shipping addresses in the response are recipient PII.
-
get_order
Get one Gelato order by its Gelato order id, including items and shipment. Recipient address fields are PII.
-
create_order
Create a Gelato order. Defaults to draft so it is not produced. Pass order_type order only when the user confirmed a live print-and-ship order. A Gelato account with a payment method will fulfill live orders.
-
confirm_draft_order
Turn a Gelato draft into a live order. Only drafts can be patched. This sends the order to production when the Gelato account can be charged.
-
cancel_order
Cancel a Gelato order before it enters production.
-
list_store_products
List products in one connected Gelato store. Pass store_id for the store you want. One API key can call this for many stores.
-
get_store_product
Get one product from a connected Gelato store. store_id selects which store.
-
get_template
Get a Gelato product template by id, including variants and image placeholders. Copy the template id from the Gelato dashboard.
-
create_store_product
Create a product in one Gelato store from a template. store_id selects the store. variants, when sent, use Gelato names such as templateVariantId and imagePlaceholders.
MCP endpoint:
https://stackgate.ai/mcp/gelato
(HTTP) or via the
private gateway.