Skip to content

Gelato MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.4.3 · published by io.usefulapi

Browse the Gelato catalog, prices, orders and shipping; quote, create draft orders and products.

Deletes · 5Final · 1Changes · 1

19 tools: 5 can delete or cancel things, 1 do something that can't be undone, 1 change things and 12 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http gelato https://gelato.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "gelato_quote_order" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.recipient): what it sends cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

19 tools

Deletes or cancels 5Claude Code: deny
  • gelato_cancel_orderCancel an order before production.No findings

    Why it is in this group

    • The name "gelato_cancel_order" says "cancel": a word for removing or ending something.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel an order before production. Gelato refuses (HTTP 409) once any item is printed or the order has shipped. This cannot be undone. POST /v4/orders/{orderId}:cancel.

    Annotations the server declares

    • title: Cancel order
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • gelato_create_orderCreate an order.No findings

    Why it is in this group

    • The name "gelato_create_order" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create an order. By default it is a DRAFT: nothing is produced or charged until it is submitted with gelato_submit_draft_order (or in the dashboard). With order_type "order" Gelato starts production and charges the account right away. Shipment: a shipmentMethodUid from gelato_quote_order, or "normal"/"standard"/"express"; omitted = the cheapest. POST /v4/orders.

    Annotations the server declares

    • title: Create order
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • gelato_create_product_from_templateCreate a product in a connected store from a template, with your own images in the template's placeholders.No findings

    Why it is in this group

    • The name "gelato_create_product_from_template" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a product in a connected store from a template, with your own images in the template's placeholders. Gelato creates the product, then publishes variants and mockups in the background (track it with gelato_get_store_product). Hidden in the online store unless visible_in_online_store is true. POST /v1/stores/{storeId}/products:create-from-template.

    Annotations the server declares

    • title: Create store product from template
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • gelato_delete_draft_orderPermanently delete a DRAFT order (regular orders cannot be deleted; cancel them instead).No findings

    Why it is in this group

    • The name "gelato_delete_draft_order" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete a DRAFT order (regular orders cannot be deleted; cancel them instead). DELETE /v4/orders/{orderId}.

    Annotations the server declares

    • title: Delete draft order
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • gelato_submit_draft_orderConvert a DRAFT order into a regular order: Gelato starts production and charges the account.No findings

    Why it is in this group

    • The name "gelato_submit_draft_order" says "submit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Convert a DRAFT order into a regular order: Gelato starts production and charges the account. Items stay as they are. Only drafts can be submitted. PATCH /v4/orders/{orderId} {"orderType":"order"}.

    Annotations the server declares

    • title: Submit draft order
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Can't be undone 1Claude Code: ask
  • gelato_quote_orderPrice an order before placing it: product prices and the available shipment methods (shipmentMethodUid, price, min/max delivery days and dates) per fulfillment facility, for a reci…1 finding

    Why it is in this group

    • The input addresses people (input.recipient): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "gelato_quote_order" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The input addresses people (input.recipient): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Price an order before placing it: product prices and the available shipment methods (shipmentMethodUid, price, min/max delivery days and dates) per fulfillment facility, for a recipient address. Nothing is created or charged. Pass a returned shipmentMethodUid to gelato_create_order. POST /v4/orders:quote.

    Annotations the server declares

    • title: Quote order
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Changes things 1Claude Code: ask
  • gelato_check_stockStock status of stockable products per stock region (US-CA, EU, UK, OC, AS, SA, ROW): in-stock, out-of-stock-replenishable (with a replenishment date), out-of-stock, non-stockable …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Stock status of stockable products per stock region (US-CA, EU, UK, OC, AS, SA, ROW): in-stock, out-of-stock-replenishable (with a replenishment date), out-of-stock, non-stockable or not-supported. POST /v3/stock/region-availability.

    Annotations the server declares

    • title: Check stock availability
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 12Claude Code: allow
  • gelato_get_catalogOne catalog with the attributes that define its products (e.g.No findings

    Why it is in this group

    • The name "gelato_get_catalog" says "get": a word for reading.
    Description, as the server wrote it
    One catalog with the attributes that define its products (e.g. PaperFormat, PaperType, ColorType) and each attribute's possible values. Use them as attribute_filters in gelato_search_products. GET /v3/catalogs/{catalogUid}.

    Annotations the server declares

    • title: Get catalog
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_cover_dimensionsCover layout of a multi-page product (photo book, brochure) in millimetres: spine, front, back, bleed and wraparound areas, for designing the cover file.No findings

    Why it is in this group

    • The name "gelato_get_cover_dimensions" says "get": a word for reading.
    Description, as the server wrote it
    Cover layout of a multi-page product (photo book, brochure) in millimetres: spine, front, back, bleed and wraparound areas, for designing the cover file. GET /v3/products/{productUid}/cover-dimensions.

    Annotations the server declares

    • title: Get cover dimensions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_orderOne order by Gelato order id: type (order/draft), fulfillment and financial status, items with their files and statuses, shipment with packages and tracking codes/URLs, shipping ad…No findings

    Why it is in this group

    • The name "gelato_get_order" says "get": a word for reading.
    Description, as the server wrote it
    One order by Gelato order id: type (order/draft), fulfillment and financial status, items with their files and statuses, shipment with packages and tracking codes/URLs, shipping address, receipts and totals. GET /v4/orders/{orderId}.

    Annotations the server declares

    • title: Get order
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_productOne catalog product by productUid: attributes, weight, supported and unsupported countries, whether it is printable or stockable, and valid page counts for multi-page products.No findings

    Why it is in this group

    • The name "gelato_get_product" says "get": a word for reading.
    Description, as the server wrote it
    One catalog product by productUid: attributes, weight, supported and unsupported countries, whether it is printable or stockable, and valid page counts for multi-page products. GET /v3/products/{productUid}.

    Annotations the server declares

    • title: Get product
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_product_pricesGelato's production prices of a product for every quantity tier, optionally for one destination country and currency.No findings

    Why it is in this group

    • The name "gelato_get_product_prices" says "get": a word for reading.
    Description, as the server wrote it
    Gelato's production prices of a product for every quantity tier, optionally for one destination country and currency. page_count is required for multi-page products. Shipping is not included (use gelato_quote_order). GET /v3/products/{productUid}/prices.

    Annotations the server declares

    • title: Get product prices
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_store_productOne product of a connected store: title, description, status, variants (with productUid and external ids), options, preview and publishing state.No findings

    Why it is in this group

    • The name "gelato_get_store_product" says "get": a word for reading.
    Description, as the server wrote it
    One product of a connected store: title, description, status, variants (with productUid and external ids), options, preview and publishing state. GET /v1/stores/{storeId}/products/{productId}.

    Annotations the server declares

    • title: Get store product
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_get_templateA product template made in the Gelato dashboard: title, description, preview, and its variants (id, title, productUid; pass the variant id as template_variant_id) with their image …No findings

    Why it is in this group

    • The name "gelato_get_template" says "get": a word for reading.
    Description, as the server wrote it
    A product template made in the Gelato dashboard: title, description, preview, and its variants (id, title, productUid; pass the variant id as template_variant_id) with their image placeholders (names to fill in gelato_create_product_from_template). GET /v1/templates/{templateId}.

    Annotations the server declares

    • title: Get template
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_list_catalogsList Gelato's product catalogs (posters, cards, t-shirts, mugs, photo books, ...) with their catalogUid and title.No findings

    Why it is in this group

    • The name "gelato_list_catalogs" says "list": a word for reading.
    Description, as the server wrote it
    List Gelato's product catalogs (posters, cards, t-shirts, mugs, photo books, ...) with their catalogUid and title. Start here to find products. GET product.gelatoapis.com/v3/catalogs.

    Annotations the server declares

    • title: List product catalogs
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_list_shipment_methodsGelato's shipment methods (shipmentMethodUid, name, type normal/express/pallet, tracking, business/private, supported destination countries), optionally only those for one destinat…No findings

    Why it is in this group

    • The name "gelato_list_shipment_methods" says "list": a word for reading.
    Description, as the server wrote it
    Gelato's shipment methods (shipmentMethodUid, name, type normal/express/pallet, tracking, business/private, supported destination countries), optionally only those for one destination country. GET shipment.gelatoapis.com/v1/shipment-methods.

    Annotations the server declares

    • title: List shipment methods
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_list_store_productsProducts of a connected e-commerce store (Shopify, Etsy, WooCommerce, ...) as Gelato knows them: id, title, status (created/publishing/publishing_error/active), external id, varian…No findings

    Why it is in this group

    • The name "gelato_list_store_products" says "list": a word for reading.
    Description, as the server wrote it
    Products of a connected e-commerce store (Shopify, Etsy, WooCommerce, ...) as Gelato knows them: id, title, status (created/publishing/publishing_error/active), external id, variants with their productUid, preview images and dates. The store id is in the Gelato dashboard URL of the store and on its orders (storeId). GET ecommerce.gelatoapis.com/v1/stores/{storeId}/products.

    Annotations the server declares

    • title: List store products
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_search_ordersSearch orders and drafts, newest first: id, your reference ids, order type, fulfillment and financial status, channel, store, country, currency, totals and dates.No findings

    Why it is in this group

    • The name "gelato_search_orders" says "search": a word for reading.
    Description, as the server wrote it
    Search orders and drafts, newest first: id, your reference ids, order type, fulfillment and financial status, channel, store, country, currency, totals and dates. Filter by status, type, country, channel, store, reference, date range or free text (recipient name or order reference). POST /v4/orders:search.

    Annotations the server declares

    • title: Search orders
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • gelato_search_productsList the products of a catalog, optionally filtered by attribute values, with each product's productUid, attributes, weight and dimensions, plus hit counts per attribute value.No findings

    Why it is in this group

    • The name "gelato_search_products" says "search": a word for reading.
    Description, as the server wrote it
    List the products of a catalog, optionally filtered by attribute values, with each product's productUid, attributes, weight and dimensions, plus hit counts per attribute value. POST /v3/catalogs/{catalogUid}/products:search.

    Annotations the server declares

    • title: Search catalog products
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.4.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http gelato https://gelato.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__gelato__gelato_list_catalogs",
      "mcp__gelato__gelato_get_catalog",
      "mcp__gelato__gelato_search_products",
      "mcp__gelato__gelato_get_product",
      "mcp__gelato__gelato_get_product_prices",
      "mcp__gelato__gelato_get_cover_dimensions",
      "mcp__gelato__gelato_list_shipment_methods",
      "mcp__gelato__gelato_search_orders",
      "mcp__gelato__gelato_get_order",
      "mcp__gelato__gelato_list_store_products",
      "mcp__gelato__gelato_get_store_product",
      "mcp__gelato__gelato_get_template"
    ],
    "ask": [
      "mcp__gelato__gelato_check_stock",
      "mcp__gelato__gelato_quote_order"
    ],
    "deny": [
      "mcp__gelato__gelato_create_order",
      "mcp__gelato__gelato_submit_draft_order",
      "mcp__gelato__gelato_cancel_order",
      "mcp__gelato__gelato_delete_draft_order",
      "mcp__gelato__gelato_create_product_from_template"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as gelato. Review it before you use it.