{
"type": "object",
"required": [
"catalog"
],
"properties": {
"catalog": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search query string."
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max results per type (1-10). Defaults to 5.",
"default": 5,
"minimum": 1,
"maximum": 10
}
}
}
}
}
}
}{
"type": "object",
"properties": {
"collection": {
"type": "string",
"description": "Collection handle to browse (e.g. \"best-sellers\", \"new-arrivals\"). Omit to list all collections. Use \"all\" to browse every product."
},
"navigate": {
"type": "boolean",
"description": "When true, navigate the browser to the collection page after loading data. Set true for user intents like \"browse to\", \"go to\", \"show me\", \"open\", \"take me to\" a collection. Requires a collection handle. Defaults to false."
},
"sort_by": {
"type": "string",
"description": "Sort order. Options: best-selling (default), price-ascending, price-descending, title-ascending, title-descending, created-descending, created-ascending."
},
"page": {
"type": "number",
"description": "Page number for pagination (starts at 1). Each page returns up to 30 products."
}
}
}{
"type": "object",
"properties": {
"catalog": {
"type": "object",
"description": "Product detail parameters.",
"properties": {
"id": {
"type": "string",
"description": "Storefront API Product GID, product handle, or product URL path. Custom app product paths and Shopify standard /products/<handle> paths are supported. The id field from search_catalog or browse_store can be passed directly. If omitted, uses the current page's product."
},
"navigate": {
"type": "boolean",
"description": "When true, navigate the browser to the product page after fetching details. Set true for user intents like \"show me\", \"open\", \"view\", \"go to\", \"take me to\" a product. Defaults to false. If the user specified partial options (e.g. only a color), prefer show_variant with selected_options instead."
},
"selected_options": {
"type": "array",
"description": "Known product option selections to filter available_options. Use exact option names and values from search_catalog options or a prior get_product available_options entry.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Option name, e.g. \"Size\" or \"Color\"."
},
"value": {
"type": "string",
"description": "Option value, e.g. \"160cm\" or \"Fiberglass\"."
}
},
"required": [
"name",
"value"
]
}
}
}
}
}
}{
"type": "object",
"required": [
"catalog"
],
"properties": {
"catalog": {
"type": "object",
"description": "Provide EITHER variant_id OR selected_options. Handle is required unless the user is already on the product page.",
"properties": {
"handle": {
"type": "string",
"description": "Product handle. If omitted, uses the current product page's handle."
},
"variant_id": {
"type": [
"string",
"number"
],
"description": "ProductVariant ID from get_product variants[].id, e.g. \"gid://shopify/ProductVariant/123\", or the numeric variant ID. Use when the user picked a specific fully-specified variant. Omit when using selected_options."
},
"selected_options": {
"type": "array",
"description": "Partial (or full) option selections, e.g. [{\"name\":\"Color\",\"value\":\"Purple\"}]. Use when the user names some options but not all (e.g. \"show me the purple shoe\" — pass only Color). The first matching available variant will be selected automatically. Use exact option names and values from get_product available_options or search_catalog options.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
}
}
}{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"cart"
],
"properties": {
"cart": {
"type": "object",
"required": [
"line_items"
],
"properties": {
"line_items": {
"type": "array",
"description": "Items to add or update (1-10).",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Existing cart line id from get_cart. Use to update or remove an existing line. Omit when adding new items."
},
"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": "Quantity. Defaults to 1 for adds and updates. Set to 0 with an existing line id to remove it.",
"default": 1
}
}
}
}
}
}
}
}{
"type": "object",
"properties": {}
}{
"type": "object",
"properties": {}
}{
"type": "object",
"properties": {}
}{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A natural language query. Searches FAQ pages and articles, and routes policies by keyword when policy_types is omitted."
},
"policy_types": {
"type": "array",
"description": "Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns/exchanges, [\"contact\"] for phone/hours/address. Include every kind the question touches. Omit when no specific policy is relevant (e.g. a general FAQ question).",
"items": {
"type": "string",
"enum": [
"refund",
"shipping",
"privacy",
"terms_of_service",
"terms_of_sale",
"subscription",
"legal_notice",
"contact"
]
}
}
},
"required": [
"query"
]
}