Skip to main content
Glama

update_cart

Modify an open cart before checkout. op: 'add' appends items, 'remove' drops items by 0-based index, 'set' replaces the full item list, 'clear' empties the cart. Merges customer details (name, email, phone) via the customer field. Call get_cart afterwards to confirm. Cannot modify a cart that already has a checkout in progress.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
opNoset
itemsNo
cart_idYes
indicesNoItem indices to remove (0-based) when op='remove'
customerNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes
cart_idYes
currencyYes
customerYes
total_zarYes
created_atYes
expires_atYes
item_countYes
updated_atYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / customer / properties
      Added value: +{
      +  "address": {
      +    "type": "string"
      +  },
      +  "city": {
      +    "type": "string"
      +  },
      +  "email": {
      +    "description": "Real customer email, checked before checkout creation",
      +    "type": "string"
      +  },
      +  "name": {
      +    "description": "Real customer name, checked before checkout creation",
      +    "type": "string"
      +  },
      +  "phone": {
      +    "description": "South African phone number, checked before checkout creation",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / items / items
      Added value: +{
      +  "properties": {
      +    "colour": {
      +      "description": "Exact available colour; validate with configure_product before adding",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "finish": {
      +      "description": "Optional pricing finish for aluminium Venetians",
      +      "type": "string"
      +    },
      +    "height_mm": {
      +      "description": "Actual ordered drop in millimetres",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "mount_type": {
      +      "description": "Use inside for recess fit or outside for face fix",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "product_id": {
      +      "description": "product_id returned by search_catalog or lookup_catalog",
      +      "type": "string"
      +    },
      +    "product_name": {
      +      "description": "Optional; server resolves the catalogue name",
      +      "type": "string"
      +    },
      +    "quantity": {
      +      "description": "Number of blinds; defaults to 1",
      +      "type": "number"
      +    },
      +    "total_price_zar": {
      +      "description": "Optional, ignored: server recalculates all totals",
      +      "type": "number"
      +    },
      +    "unit_price_zar": {
      +      "description": "Optional, ignored: server recalculates all prices",
      +      "type": "number"
      +    },
      +    "width_mm": {
      +      "description": "Actual ordered width in millimetres",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "product_id",
      +    "width_mm",
      +    "height_mm",
      +    "colour",
      +    "mount_type"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / op / default
      Added value: +"set"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "cart_id": {
      +      "type": "string"
      +    },
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "currency": {
      +      "const": "ZAR",
      +      "type": "string"
      +    },
      +    "customer": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "address": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "city": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "email": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "phone": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "expires_at": {
      +      "type": "string"
      +    },
      +    "item_count": {
      +      "type": "number"
      +    },
      +    "items": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "colour": {
      +            "type": "string"
      +          },
      +          "finish": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "height_mm": {
      +            "type": "number"
      +          },
      +          "mount_type": {
      +            "type": "string"
      +          },
      +          "product_id": {
      +            "type": "string"
      +          },
      +          "product_name": {
      +            "type": "string"
      +          },
      +          "quantity": {
      +            "type": "number"
      +          },
      +          "total_price_zar": {
      +            "type": "number"
      +          },
      +          "unit_price_zar": {
      +            "type": "number"
      +          },
      +          "width_mm": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "product_id",
      +          "width_mm",
      +          "height_mm",
      +          "quantity",
      +          "unit_price_zar",
      +          "total_price_zar"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_zar": {
      +      "type": "number"
      +    },
      +    "updated_at": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "cart_id",
      +    "items",
      +    "item_count",
      +    "total_zar",
      +    "currency",
      +    "customer",
      +    "created_at",
      +    "updated_at",
      +    "expires_at"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources