{"protocolVersion":"2024-11-05","serverInfo":{"name":"\u041d\u0430\u0433\u043e\u0434\u0443\u0439\u043a\u0430-WebMCP","version":"0.57.20"},"tools":[{"name":"search_products","description":"Search products in the catalogue by keyword, category, price range, and sorting. Keywords are matched against the site search index over product names, descriptions and specifications, so partial words and word forms work. Returns matching products with name, price, stock status, page URL and an order_url \u2014 a link the customer can open to put that product in their cart and go straight to checkout.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Words to search for, in any order. Matched against product names, brands, descriptions and specifications; word beginnings are enough. A single EAN, UPC, SKU or product ID on its own returns that exact product first."},"category_id":{"type":"integer","description":"Optional category ID to filter within"},"min_price":{"type":"number","description":"Minimum price in UAH"},"max_price":{"type":"number","description":"Maximum price in UAH"},"sort":{"type":"string","enum":["relevance","price_asc","price_desc","newest"],"description":"Sort order for products","default":"relevance"},"limit":{"type":"integer","description":"Number of products to return (max 50)","default":20}}},"parameters":{"type":"object","properties":{"query":{"type":"string","description":"Words to search for, in any order. Matched against product names, brands, descriptions and specifications; word beginnings are enough. A single EAN, UPC, SKU or product ID on its own returns that exact product first."},"category_id":{"type":"integer","description":"Optional category ID to filter within"},"min_price":{"type":"number","description":"Minimum price in UAH"},"max_price":{"type":"number","description":"Maximum price in UAH"},"sort":{"type":"string","enum":["relevance","price_asc","price_desc","newest"],"description":"Sort order for products","default":"relevance"},"limit":{"type":"integer","description":"Number of products to return (max 50)","default":20}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"sku":{"type":"string"},"name":{"type":"string"},"brand":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"url":{"type":"string"},"order_url":{"type":"string"},"in_stock":{"type":"boolean"},"description_short":{"type":"string"}}}}}},"endpoint":"\/api\/webmcp\/products\/search"},{"name":"get_product_details","description":"Retrieve full details, attributes, specifications, variants, pricing, and stock availability for a specific product by its ID, URL slug or full page URL. Includes order_url, the link to give the customer when they want to buy it.","inputSchema":{"type":"object","properties":{"product_id":{"type":"integer","description":"Unique numeric ID of the product (optional if slug is provided or when on a product page)"},"slug":{"type":"string","description":"URL slug or full URL of the product (optional if product_id is provided or when on a product page)"}}},"parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"Unique numeric ID of the product (optional if slug is provided or when on a product page)"},"slug":{"type":"string","description":"URL slug or full URL of the product (optional if product_id is provided or when on a product page)"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"product":{"type":"object","properties":{"id":{"type":"integer"},"sku":{"type":"string"},"ean":{"type":"string"},"upc":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string"},"order_url":{"type":"string"},"category_id":{"type":"integer"},"brand":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"in_stock":{"type":"boolean"},"description_short":{"type":"string"},"description_full":{"type":"string"},"features":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}}},"images":{"type":"array","items":{"type":"string"}},"variants":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer"},"name":{"type":"string"},"label":{"type":"string"},"url":{"type":"string"},"price":{"type":"number"},"in_stock":{"type":"boolean"},"is_current":{"type":"boolean"}}}}}}}},"endpoint":"\/api\/webmcp\/products\/{id}"},{"name":"get_categories","description":"Retrieve the hierarchical category tree of the store catalogue.","inputSchema":{"type":"object","properties":{"parent_id":{"type":"integer","description":"Optional parent category ID to fetch only subcategories"}}},"parameters":{"type":"object","properties":{"parent_id":{"type":"integer","description":"Optional parent category ID to fetch only subcategories"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"},"parent_id":{"type":"integer"},"url":{"type":"string"},"product_count":{"type":"integer"}}}}}},"endpoint":"\/api\/webmcp\/categories"},{"name":"get_store_info","description":"Retrieve store general information, currency, contact details, delivery\/carrier options, payment methods, and how_to_order \u2014 how an assistant should help a customer buy (by giving them an order link).","inputSchema":{"type":"object","properties":{}},"parameters":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"store":{"type":"object","properties":{"name":{"type":"string"},"currency":{"type":"string"},"phone":{"type":"string"},"working_hours":{"type":"string"},"delivery_methods":{"type":"array"},"payment_methods":{"type":"array"}}}}},"endpoint":"\/api\/webmcp\/store-info"},{"name":"track_order","description":"Query the status, timeline, and delivery details of an order by reference. Anti-bruteforce rate limited and masked for privacy.","inputSchema":{"type":"object","properties":{"reference":{"type":"string","description":"Order reference string (e.g. OKX-12345 or alphanumeric 4-16 chars)"},"phone":{"type":"string","description":"Optional customer phone number to verify identity and unmask details"}},"required":["reference"]},"parameters":{"type":"object","properties":{"reference":{"type":"string","description":"Order reference string (e.g. OKX-12345 or alphanumeric 4-16 chars)"},"phone":{"type":"string","description":"Optional customer phone number to verify identity and unmask details"}},"required":["reference"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"order":{"type":"object","properties":{"reference":{"type":"string"},"status":{"type":"string"},"date":{"type":"string"},"items":{"type":"array"},"total":{"type":"number"}}}}},"endpoint":"\/api\/webmcp\/orders\/track"},{"name":"get_delivery_options","description":"List the ways an order can be delivered and paid for: carriers (for example Nova Poshta, Rozetka Delivery, Ukrposhta), each carrier's delivery types (branch, parcel locker, courier), and the payment methods offered with each carrier. Collection (\"\u0441\u0430\u043c\u043e\u0432\u0438\u0432\u0456\u0437\") means picking the parcel up at a carrier branch or parcel locker in the customer's town; use find_pickup_points to list them.","inputSchema":{"type":"object","properties":{"amount":{"type":"number","description":"Optional goods value in UAH, for payment methods with a minimum or maximum order"}}},"parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Optional goods value in UAH, for payment methods with a minimum or maximum order"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"currency":{"type":"string"},"carriers":{"type":"array"},"payments":{"type":"array"}}},"endpoint":"\/api\/webmcp\/delivery-options"},{"name":"find_pickup_points","description":"Find a carrier's collection points (branches, parcel lockers, post offices) in a town, so the customer can choose where to pick up the parcel. Returns the matched town and up to 20 points with their addresses. The customer still picks the point on the checkout page; this is for answering \"where can I collect it?\".","inputSchema":{"type":"object","properties":{"carrier":{"type":"string","description":"Carrier code from get_delivery_options, e.g. \"nova_poshta\", \"rozetka\", \"ukrposhta\""},"city":{"type":"string","description":"Town or village name, in Ukrainian for best results (e.g. \"\u041a\u0438\u0457\u0432\", \"\u041b\u044c\u0432\u0456\u0432\")"},"type":{"type":"string","description":"Optional delivery type code from get_delivery_options, e.g. \"branch\" or \"postomat\""},"query":{"type":"string","description":"Optional filter: branch number or street name"}},"required":["carrier","city"]},"parameters":{"type":"object","properties":{"carrier":{"type":"string","description":"Carrier code from get_delivery_options, e.g. \"nova_poshta\", \"rozetka\", \"ukrposhta\""},"city":{"type":"string","description":"Town or village name, in Ukrainian for best results (e.g. \"\u041a\u0438\u0457\u0432\", \"\u041b\u044c\u0432\u0456\u0432\")"},"type":{"type":"string","description":"Optional delivery type code from get_delivery_options, e.g. \"branch\" or \"postomat\""},"query":{"type":"string","description":"Optional filter: branch number or street name"}},"required":["carrier","city"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"carrier":{"type":"string"},"city":{"type":"object"},"points":{"type":"array"},"other_matching_towns":{"type":"array"}}},"endpoint":"\/api\/webmcp\/pickup-points"},{"name":"report_error","description":"Report an error, API failure, unexpected response, or storefront anomaly encountered during agent execution. Agents are instructed to call this tool whenever an API interaction fails (HTTP 4xx\/5xx), returns invalid data structures, or behaves unexpectedly. Queues a structured error report to the database for delivery to the administrator.","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Clear explanation of the error, failure, or anomaly encountered"},"endpoint":{"type":"string","description":"API endpoint path or tool name that failed (e.g. '\/api\/webmcp\/cart\/add')"},"status_code":{"type":"integer","description":"HTTP status code received (e.g. 500, 404, 400, 429), if applicable"},"request_payload":{"type":"object","description":"Request parameters, arguments, or body sent that caused the error"},"response_payload":{"type":"object","description":"Response body, error payload, or error message received from the server"},"context":{"type":"object","description":"Additional agent diagnostic context, user goal, or step details"},"severity":{"type":"string","enum":["critical","error","warning","info"],"default":"error","description":"Severity level of the error"}},"required":["message"]},"parameters":{"type":"object","properties":{"message":{"type":"string","description":"Clear explanation of the error, failure, or anomaly encountered"},"endpoint":{"type":"string","description":"API endpoint path or tool name that failed (e.g. '\/api\/webmcp\/cart\/add')"},"status_code":{"type":"integer","description":"HTTP status code received (e.g. 500, 404, 400, 429), if applicable"},"request_payload":{"type":"object","description":"Request parameters, arguments, or body sent that caused the error"},"response_payload":{"type":"object","description":"Response body, error payload, or error message received from the server"},"context":{"type":"object","description":"Additional agent diagnostic context, user goal, or step details"},"severity":{"type":"string","enum":["critical","error","warning","info"],"default":"error","description":"Severity level of the error"}},"required":["message"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"readOnlyHint":false,"destructiveHint":false,"mutates":true,"method":"POST","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"report_id":{"type":"string"}}},"endpoint":"\/api\/webmcp\/report-error"},{"name":"get_cart","description":"Get the current shopping cart contents, line items, product quantities, prices, currency, and total amount for the current session.","inputSchema":{"type":"object","properties":{}},"parameters":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"cart":{"type":"object","properties":{"items":{"type":"array"},"total_price":{"type":"number"},"currency":{"type":"string"},"total_items":{"type":"integer"}}}}},"endpoint":"\/api\/webmcp\/cart"},{"name":"add_to_cart","description":"Add a product to the shopping cart with a specified quantity. Mutates the shopping cart and updates the session.","inputSchema":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to add to cart"},"quantity":{"type":"integer","description":"Quantity to add (minimum 1)","default":1,"minimum":1}},"required":["product_id"]},"parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to add to cart"},"quantity":{"type":"integer","description":"Quantity to add (minimum 1)","default":1,"minimum":1}},"required":["product_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"readOnlyHint":false,"destructiveHint":false,"mutates":true,"method":"POST","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"cart_count":{"type":"integer"},"total":{"type":"number"}}},"endpoint":"\/api\/webmcp\/cart\/add"},{"name":"update_cart_quantity","description":"Update the quantity of an existing product in the shopping cart.","inputSchema":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to update"},"quantity":{"type":"integer","description":"New quantity (0 removes the item)","minimum":0}},"required":["product_id","quantity"]},"parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to update"},"quantity":{"type":"integer","description":"New quantity (0 removes the item)","minimum":0}},"required":["product_id","quantity"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":false,"destructiveHint":false,"mutates":true,"method":"POST","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"cart_count":{"type":"integer"},"total":{"type":"number"}}},"endpoint":"\/api\/webmcp\/cart\/qty\/{productId}"},{"name":"remove_from_cart","description":"Remove a product from the shopping cart.","inputSchema":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to remove from cart"}},"required":["product_id"]},"parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"The numeric product ID to remove from cart"}},"required":["product_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":false,"destructiveHint":true,"mutates":true,"method":"DELETE","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"cart_count":{"type":"integer"},"total":{"type":"number"}}},"endpoint":"\/api\/webmcp\/cart\/item\/{productId}"},{"name":"create_checkout_link","description":"Create an order link for the customer. Orders cannot be placed on the customer's behalf: give them this link instead. When they open it in their browser and press \"Continue to checkout\", the products go into their own cart and the checkout opens, where they enter their name, phone number, delivery point and payment method. Quantities are checked against current stock. The link has the form https:\/\/{shop}\/buy\/{product_id}[:{quantity}],... and can also be composed by hand.","inputSchema":{"type":"object","properties":{"items":{"type":"array","description":"Products to order. Use the numeric product id from search_products or get_product_details \u2014 one id per package size.","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"product_id":{"type":"integer","description":"Numeric product id"},"quantity":{"type":"integer","minimum":1,"default":1}},"required":["product_id"]}}},"required":["items"]},"parameters":{"type":"object","properties":{"items":{"type":"array","description":"Products to order. Use the numeric product id from search_products or get_product_details \u2014 one id per package size.","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"product_id":{"type":"integer","description":"Numeric product id"},"quantity":{"type":"integer","minimum":1,"default":1}},"required":["product_id"]}}},"required":["items"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"readOnlyHint":true,"destructiveHint":false,"mutates":false,"method":"GET","outputSchema":{"type":"object","properties":{"success":{"type":"boolean"},"url":{"type":"string"},"items":{"type":"array"},"total":{"type":"number"},"currency":{"type":"string"},"next_steps":{"type":"string"}}},"endpoint":"\/api\/webmcp\/checkout-link"}]}