← Tool reference

add_to_cart

A WebMCP tool distributed by Shopify. 95,582 of the sites we crawled carry a tool set that includes it (95.7% of vendor-distributed detections). This is a documented platform feature, not a vulnerability. Individual sites did not each choose it one by one.

What the tool declares

The description below is quoted as Shopify publishes it, in the distributed bundle:

Add products to the cart. Call this as soon as the user asks to ADD items (triggers: "add ... to my cart", "buy", "I'll take", "put ... in my basket") — in ONE call listing every item they named, up to the 10-entry limit. That request IS the authorization: do NOT ask the user to confirm before calling, and do NOT stop after search_catalog or get_product merely to report the variant you found — make the change, then tell the user it is done. Batch every item for ONE request into a SINGLE call — line_items accepts up to 10 entries; do NOT call add_to_cart once per item. Batching applies WITHIN a single request: each new thing the user asks for later is its own call. If one request names more than 10 items, split just that request into as few calls as possible. Do NOT retry a call that already returned a result: adds are cumulative, so repeating a call adds duplicate items. Use line_items[].item.id with a ProductVariant GID when the exact variant is known. Use handle or query only when adding the selected or first available variant. To change a quantity or remove something already in the cart, use update_cart_lines instead — this tool can only add.
VendorShopify
Sites95,582 in 2 tool sets (64,429 + 31,153)
Declared by bundle versions1cd8a9f0, f427de6a
Read-only hintreadOnlyHint: false
Other hintsuntrustedContentHint: true

The input it asks for

FieldTypeRequiredDescription
cartobjectyes

The full input schema, as declared:

{
  "type": "object",
  "required": [
    "cart"
  ],
  "properties": {
    "cart": {
      "type": "object",
      "required": [
        "line_items"
      ],
      "properties": {
        "line_items": {
          "type": "array",
          "description": "Items to add (1-10).",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "object",
            "properties": {
              "item": {
                "type": "object",
                "description": "The merchandise to add.",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "ProductVariant GID from get_product variants[].id, e.g. \"gid://shopify/ProductVariant/123\"."
                  }
                }
              },
              "handle": {
                "type": "string",
                "description": "Product handle. Adds the selected or first available variant; call get_product first if the user requested specific options."
              },
              "query": {
                "type": "string",
                "description": "Search query to find and add the selected or first available variant. For specific variants, call search_catalog/get_product first and pass item.id."
              },
              "quantity": {
                "type": "integer",
                "description": "How many to add. Defaults to 1.",
                "minimum": 1,
                "default": 1
              }
            }
          }
        }
      }
    }
  }
}

What we checked

We read the tool set the page declares and we never invoke a tool. We fetched and analysed the distributed bundle that declares this tool, so these copies carry no unverified-implementation signal. What a tool does is inferred from its name and description, and we have not yet published an accuracy measurement for that inference. These are measured indicators, not audits. The crawl is a sample, not a census.

Vendor documentation: https://shopify.dev/docs/api/web-mcp

Other tools in the same sets

Source

Counts: sealed file 2026-10-11, sha256 25d8fb700a3a3e973ea18e6ac678d15762cce58a46690334defa5b05b9142e13. Declarations: captured from the vendor's distributed bundles, each checked against a recorded sha256. See the Shopify tool sets and what a tool declares and what a crawler cannot see.