{
    "protocolVersion": "0.3.0",
    "name": "CS-Cart Shopping Agent",
    "description": "Agent interface to the CS-Cart online store: search the catalog, check availability and prices, build a cart and place an order.",
    "version": "1.3.0",
    "url": "https://demo.larionov.tech/agent/v1",
    "preferredTransport": "JSONRPC",
    "provider": {
        "organization": "CS-Cart",
        "url": "https://demo.larionov.tech"
    },
    "documentationUrl": "https://demo.larionov.tech/llms.txt",
    "supportedInterfaces": [
        {
            "url": "https://demo.larionov.tech/mcp",
            "transport": "streamable-http",
            "protocol": "mcp"
        },
        {
            "url": "https://demo.larionov.tech/agent/v1",
            "transport": "HTTP+JSON",
            "protocol": "rest"
        }
    ],
    "capabilities": {
        "streaming": false,
        "pushNotifications": false,
        "stateTransitionHistory": false
    },
    "defaultInputModes": [
        "text/plain",
        "application/json"
    ],
    "defaultOutputModes": [
        "application/json"
    ],
    "securitySchemes": {
        "oauth2": {
            "type": "oauth2",
            "flows": {
                "clientCredentials": {
                    "tokenUrl": "https://demo.larionov.tech/agent/oauth/token",
                    "scopes": {
                        "catalog:read": "Read the product catalog: search, categories, prices and availability.",
                        "cart:write": "Create and modify carts on behalf of the caller.",
                        "orders:read": "Read the status of orders created through the agent API.",
                        "orders:write": "Place orders on behalf of the caller."
                    }
                }
            }
        }
    },
    "security": [
        {
            "oauth2": [
                "catalog:read"
            ]
        }
    ],
    "skills": [
        {
            "id": "search_products",
            "name": "Search products",
            "description": "Search the store catalog by keywords, category and price range. Returns products with prices, availability and links.",
            "tags": [
                "catalog",
                "search"
            ],
            "examples": [
                "find a waterproof jacket under 100",
                "what mugs do you sell"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "get_product",
            "name": "Get product details",
            "description": "Full details of one product: description, price, stock, options and features.",
            "tags": [
                "catalog"
            ],
            "examples": [
                "tell me more about product 42",
                "what sizes does this item come in"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "list_categories",
            "name": "List categories",
            "description": "List catalog categories, optionally the children of one category. product_count comes from the cached store counter and may be null; for an exact number call search_products with that category_id and read \"total\".",
            "tags": [
                "catalog"
            ],
            "examples": [
                "what departments does this store have",
                "show subcategories of category 3"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "ucp_catalog_search",
            "name": "UCP catalog search",
            "description": "Search the catalog and return products in the Universal Commerce Protocol schema (dev.ucp.shopping.catalog.search). Prices are integers in ISO 4217 minor units.",
            "tags": [
                "catalog",
                "ucp"
            ],
            "examples": [
                "find running shoes in the UCP schema",
                "search this catalog as a UCP agent"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "ucp_catalog_lookup",
            "name": "UCP catalog lookup",
            "description": "Retrieve products or variants by identifier in the Universal Commerce Protocol schema (dev.ucp.shopping.catalog.lookup).",
            "tags": [
                "catalog",
                "ucp"
            ],
            "examples": [
                "look up product 42 in the UCP schema",
                "resolve these variant ids"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "create_cart",
            "name": "Create a cart",
            "description": "Create an empty cart and get its identifier. Every other cart call needs that identifier.",
            "tags": [
                "cart"
            ],
            "examples": [
                "start a new order",
                "begin shopping"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "add_to_cart",
            "name": "Add a product to the cart",
            "description": "Add a product to a cart. Product options are passed as option_id => variant_id pairs.",
            "tags": [
                "cart"
            ],
            "examples": [
                "add two of product 42 to my cart",
                "put the blue one in the basket"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "update_cart_item",
            "name": "Change or remove a cart line",
            "description": "Set a new quantity for a cart line, or remove it by passing amount 0.",
            "tags": [
                "cart"
            ],
            "examples": [
                "make it three instead of two",
                "remove the mug from my cart"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "get_cart",
            "name": "Read the cart",
            "description": "Read the current contents and totals of a cart.",
            "tags": [
                "cart"
            ],
            "examples": [
                "what is in my cart",
                "how much is it altogether"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "set_customer",
            "name": "Set customer and delivery address",
            "description": "Attach the buyer contact details and the delivery address to a cart. Required before shipping can be calculated or an order placed.",
            "tags": [
                "cart",
                "checkout"
            ],
            "examples": [
                "deliver to this address",
                "my email is jane@example.com"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "get_shipping_options",
            "name": "Get shipping options",
            "description": "Calculate real shipping rates for the cart address and list the available methods per vendor group.",
            "tags": [
                "cart",
                "shipping"
            ],
            "examples": [
                "how much is delivery",
                "what shipping methods can I choose"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "choose_shipping",
            "name": "Choose a shipping method",
            "description": "Select a shipping method for each product group in the cart.",
            "tags": [
                "cart",
                "shipping"
            ],
            "examples": [
                "use the cheapest delivery",
                "pick express shipping"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "place_order",
            "name": "Place the order",
            "description": "Turn the cart into a real order. Requires customer details and, when the cart needs shipping, a chosen shipping method.",
            "tags": [
                "checkout"
            ],
            "examples": [
                "place the order",
                "buy it"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        },
        {
            "id": "get_order",
            "name": "Get order status",
            "description": "Read the status and contents of an order placed through this API.",
            "tags": [
                "orders"
            ],
            "examples": [
                "where is my order",
                "what is the status of order 1042"
            ],
            "inputModes": [
                "application/json"
            ],
            "outputModes": [
                "application/json"
            ]
        }
    ]
}