← WebMCP Directory

Tool tree

shopfront-copilot.vercel.app

CommerceTools verified
Website
A storefront where a shopper and their AI agent browse, compare, and buy together, with a human-only checkout confirmation.
Explore capabilities

    page: Every page

    search_productsAnswer

    Search the product catalog by keyword. Matches product names, descriptions, categories, and spec fields. Read-only: does not change cart or page state.

    View tool JSON
    {
      "name": "search_products",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the product catalog by keyword. Matches product names, descriptions, categories, and spec fields. Read-only: does not change cart or page state.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search keywords, e.g. 'wireless headphones' or 'mechanical keyboard'."
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/"
    }
    apply_filtersAnswer

    Filter the product catalog by price range, category, and minimum rating. Read-only: does not change cart or page state. All fields are optional and bounded (enumerated category, numeric ranges); no free-text input.

    View tool JSON
    {
      "name": "apply_filters",
      "kind": "answer",
      "impl": "imperative",
      "description": "Filter the product catalog by price range, category, and minimum rating. Read-only: does not change cart or page state. All fields are optional and bounded (enumerated category, numeric ranges); no free-text input.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "minPrice": {
            "type": "number",
            "minimum": 0,
            "description": "Minimum price in USD."
          },
          "maxPrice": {
            "type": "number",
            "minimum": 0,
            "description": "Maximum price in USD."
          },
          "category": {
            "type": "string",
            "enum": [
              "headphones",
              "keyboards",
              "smart-home"
            ],
            "description": "Restrict results to a single category."
          },
          "minRating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5,
            "description": "Minimum star rating (0-5)."
          }
        }
      },
      "page": "/"
    }
    check_return_policyAnswer

    Return the return/warranty policy text for a single product, exactly as shown on its product page. First-party content, not user-generated.

    View tool JSON
    {
      "name": "check_return_policy",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the return/warranty policy text for a single product, exactly as shown on its product page. First-party content, not user-generated.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "The product ID to look up."
          }
        },
        "required": [
          "productId"
        ]
      },
      "page": "/"
    }
    get_product_detailsAnswer

    Return the full record for a single product by ID: specs, price, rating, return policy, stock, and description. Read-only. Use this before add_to_cart when the agent only has a product name from search results and needs the full record.

    View tool JSON
    {
      "name": "get_product_details",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the full record for a single product by ID: specs, price, rating, return policy, stock, and description. Read-only. Use this before add_to_cart when the agent only has a product name from search results and needs the full record.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "The product ID to look up."
          }
        },
        "required": [
          "productId"
        ]
      },
      "page": "/"
    }
    get_cartAnswer

    Read the current contents of the shared cart, the same cart the shopper sees in the page's cart drawer. Read-only.

    View tool JSON
    {
      "name": "get_cart",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current contents of the shared cart, the same cart the shopper sees in the page's cart drawer. Read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    compare_productsAction

    Compare 2-4 products by ID, spec by spec. Renders a real comparison table inline on the storefront page (not just returned as text) so the shopper sees the same comparison the agent is reasoning about. Read-only with respect to the cart.

    View tool JSON
    {
      "name": "compare_products",
      "kind": "act",
      "impl": "imperative",
      "description": "Compare 2-4 products by ID, spec by spec. Renders a real comparison table inline on the storefront page (not just returned as text) so the shopper sees the same comparison the agent is reasoning about. Read-only with respect to the cart.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 2,
            "maxItems": 4,
            "description": "2 to 4 product IDs to compare."
          }
        },
        "required": [
          "productIds"
        ]
      },
      "page": "/"
    }
    add_to_cartAction

    Add a product to the shared cart. Reversible: remove_from_cart undoes this. Updates the same cart the shopper sees in the page's cart drawer; does not charge anything.

    View tool JSON
    {
      "name": "add_to_cart",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a product to the shared cart. Reversible: remove_from_cart undoes this. Updates the same cart the shopper sees in the page's cart drawer; does not charge anything.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "The product ID to add."
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "description": "Quantity to add (default 1)."
          }
        },
        "required": [
          "productId"
        ]
      },
      "page": "/"
    }
    remove_from_cartAction

    Remove a product from the shared cart. Reversible: add_to_cart undoes this. Updates the same cart the shopper sees in the page's cart drawer.

    View tool JSON
    {
      "name": "remove_from_cart",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove a product from the shared cart. Reversible: add_to_cart undoes this. Updates the same cart the shopper sees in the page's cart drawer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "The product ID to remove."
          }
        },
        "required": [
          "productId"
        ]
      },
      "page": "/"
    }
    track_price_dropAnswer

    Register a price-drop watch on a product. Low-stakes and reversible: the shopper can unwatch it from the product page. Does not affect the cart or complete any purchase.

    View tool JSON
    {
      "name": "track_price_drop",
      "kind": "answer",
      "impl": "imperative",
      "description": "Register a price-drop watch on a product. Low-stakes and reversible: the shopper can unwatch it from the product page. Does not affect the cart or complete any purchase.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "description": "The product ID to watch."
          }
        },
        "required": [
          "productId"
        ]
      },
      "page": "/"
    }
    checkoutAction

    Begin checkout for the current cart. This tool DOES NOT complete a purchase and DOES NOT charge anything. It opens an in-page confirmation modal that only the shopper can act on, completing the order requires the shopper's own click inside that modal. This call always returns status "confirmation_required"; there is no way to finalize the purchase through this or any other tool.

    View tool JSON
    {
      "name": "checkout",
      "kind": "act",
      "impl": "imperative",
      "description": "Begin checkout for the current cart. This tool DOES NOT complete a purchase and DOES NOT charge anything. It opens an in-page confirmation modal that only the shopper can act on, completing the order requires the shopper's own click inside that modal. This call always returns status \"confirmation_required\"; there is no way to finalize the purchase through this or any other tool.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    ask_humanAction

    Ask the shopper a clarifying question inline on the page (e.g. "Wired or wireless?", "What's your budget cap?") and wait for their answer. Optionally provide a small set of suggested options. Does not mutate cart or session state, it only pauses for human input.

    View tool JSON
    {
      "name": "ask_human",
      "kind": "act",
      "impl": "imperative",
      "description": "Ask the shopper a clarifying question inline on the page (e.g. \"Wired or wireless?\", \"What's your budget cap?\") and wait for their answer. Optionally provide a small set of suggested options. Does not mutate cart or session state, it only pauses for human input.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "description": "The question to show the shopper."
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 5,
            "description": "Optional short list of suggested answers to show as buttons."
          }
        },
        "required": [
          "question"
        ]
      },
      "page": "/"
    }