{"schema_version": "1.0", "name": "handlylab", "description": "MCP-compatible API for Handly Live laser engraving studio", "base_url": "https://handlylab.ru", "tools": [{"name": "get_catalog", "description": "Return full product catalog with filters and metadata", "method": "GET", "endpoint": "/catalog.json"}, {"name": "search_catalog", "description": "Search and filter catalog by material, surface, category, collection or free text query", "method": "POST", "endpoint": "/ai/catalog", "input_schema": {"type": "object", "properties": {"q": {"type": "string", "description": "Free text query"}, "material": {"type": "string"}, "surface": {"type": "string"}, "category": {"type": "string"}, "collection": {"type": "string"}, "featured": {"type": "boolean"}}}}, {"name": "create_engraving_order", "description": "Submit an engraving request", "method": "POST", "endpoint": "/api/orders", "input_schema": {"type": "object", "required": ["name", "contactMethod", "contactValue", "occasion", "consent"], "properties": {"name": {"type": "string", "maxLength": 100}, "contactMethod": {"type": "string", "enum": ["telegram", "phone", "email"]}, "contactValue": {"type": "string", "maxLength": 160}, "occasion": {"type": "string", "maxLength": 300}, "interests": {"type": "string", "maxLength": 300}, "item": {"type": "string", "maxLength": 300}, "details": {"type": "string", "maxLength": 2000}, "consent": {"type": "string", "enum": ["on"]}}}}, {"name": "get_order_status", "description": "Get the status of a specific order by its order number (HL-XXXXX) or public uid, including the linked Bitrix24 lead status. IMPORTANT: this endpoint is strictly rate-limited to roughly 1 call per minute per IP (with a small burst). Do not poll or enumerate. Only call when the user provides a concrete order number or uid.", "method": "GET", "endpoint": "/api/orders/{order_id}", "input_schema": {"type": "object", "required": ["order_id"], "properties": {"order_id": {"type": "string", "description": "Order number like HL-00018 or public uid"}}}}], "rate_limit_hints": {"get_order_status": "Strict: ~1 request per minute per IP. Never enumerate, never poll. Only call with an order number or uid supplied by the user.", "general": "Do not loop over IDs or ranges. /api/orders/{id} is for explicit single-order lookups only."}}