{"serverId":"mcp-registry/io.github.tuanone123/hotlikeshop-mcp","tools":[{"name":"best_sellers","fixed":{"name":"best_sellers","description":"List best-selling in-stock public products (most sold first), public fields only (price VND + units sold). Read-only, no api_key required. WHEN TO USE: the user wants \"popular / hot / most bought\" items. PREFER INSTEAD: latest_products for \"new arrivals\", search_products for a keyword, recommend_products for a budget, list_category_products for a full category. Optionally scope with category_id (from list_categories) or a keyword. Danh sách sản phẩm BÁN CHẠY còn hàng (đã bán nhiều nhất trước); c","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"Max results (default 10, max 20)."},"keyword":{"type":"string","description":"Keyword in product name (optional). Từ khóa trong tên SP (tùy chọn)."},"category_id":{"type":"integer","description":"Limit to a category id (optional). Giới hạn theo danh mục (tùy chọn)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":250,"tokensAfter":250},{"name":"buy_product","fixed":{"name":"buy_product","description":"STEP 2 of buying: place the order using the confirm_token from quote_order. IRREVERSIBLE — this SPENDS real balance and delivers the product; returns order_code + the delivered content. PREREQUISITE: a fresh confirm_token from quote_order (same api_key). WHEN TO USE: only AFTER the user has explicitly approved the exact total shown by quote_order. Do NOT call speculatively or to re-price. AFTERWARDS: check_order_status for delivery (set refresh=true if it looks stuck), get_mail_code for OTP, sub","inputSchema":{"type":"object","required":["api_key","confirm_token"],"properties":{"api_key":{"type":"string","description":"Your shop account API key (must match the one used in quote_order)."},"confirm_token":{"type":"string","description":"The confirm_token returned by quote_order (valid ~5 minutes, single use)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240},{"name":"check_health_bulk","fixed":{"name":"check_health_bulk","description":"Bulk live/dead check for MANY accounts at once (max 20 per call): Facebook UID (numeric) or Instagram/Telegram/TikTok usernames. Returns per-item status + a summary. Read-only, free, no api_key required. IG/FB items that cannot be verified (datacenter IP blocked) are moved to \"skipped\" — pass your own \"proxy\" to check them reliably. WHEN TO USE: a list of 2-20 accounts, or any non-Facebook platform. PREFER INSTEAD: check_live_facebook for a single Facebook UID, deep_inspect for one detailed prof","inputSchema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"string"},"description":"List of UIDs (Facebook) or usernames (IG/TG/TikTok). Danh sách UID/username (tối đa 20). Cũng chấp nhận 1 chuỗi ngăn cách bởi dấu phẩy/xuống dòng."},"proxy":{"type":"string","description":"Optional (recommended for IG/FB): YOUR own proxy, this request only, never shared. http(s)://user:pass@host:port or socks5://host:port. Tùy chọn (nên có cho IG/FB): proxy CỦA BẠN, chỉ request này."},"platform":{"enum":["facebook","instagram","telegram","tiktok"],"type":"string","description":"Platform to check. Nền tảng cần kiểm tra (mặc định facebook)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":342,"tokensAfter":342},{"name":"check_live_facebook","fixed":{"name":"check_live_facebook","description":"Check whether ONE Facebook UID (numeric) is live or dead via the public profile-picture endpoint (server-side). Read-only, free, no api_key required. Facebook blocks datacenter IPs, so if it cannot verify it returns status \"needs_proxy\" — pass your own \"proxy\" to check reliably. WHEN TO USE: a single Facebook UID. PREFER INSTEAD: check_health_bulk for many accounts at once or for Instagram/Telegram/TikTok, deep_inspect for a detailed profile (followers, bio, media). Kiểm tra 1 UID Facebook (số) ","inputSchema":{"type":"object","required":["uid"],"properties":{"uid":{"type":"string","description":"Facebook numeric UID. UID Facebook (chỉ gồm chữ số)."},"proxy":{"type":"string","description":"Optional: YOUR own proxy for this request only (never shared). Format: http(s)://user:pass@host:port or socks5://host:port. Tùy chọn: proxy CỦA BẠN, chỉ áp cho request này (không chia sẻ). Dạng http(s)://user:pass@host:port hoặc socks5://host:port."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"check_order_status","fixed":{"name":"check_order_status","description":"Check the status and delivered content (account credentials) of ONE of your orders by order_code (requires your api_key). Read-only by default — spends nothing. OPTIONAL refresh=true: if the order looks stuck/undelivered (pending/failed), re-triggers delivery from the system (async, safe — never charges money, never touches a completed/refunded order) then returns the current status; poll again after ~5-10s. PREREQUISITE: an order_code (from buy_product or list_orders). WHEN TO USE: the user wan","inputSchema":{"type":"object","required":["api_key","order_code"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."},"refresh":{"type":"boolean","description":"Set true to re-trigger delivery when the order looks stuck/undelivered (async; safe, never charges). Default false = plain read-only status check."},"order_code":{"type":"string","description":"The order code returned by buy_product."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":272,"tokensAfter":272},{"name":"compare_products","fixed":{"name":"compare_products","description":"Compare 2–5 public products side by side (price, stock, min/max, sold, category) with a quick summary (cheapest / most stock / best seller). Read-only, no api_key required, public fields only (price VND). PREREQUISITE: you already have 2-5 product ids. WHEN TO USE: help the user pick between specific candidates. PREFER INSTEAD: get_product for one id in depth, similar_products to first discover comparable items, search_products / list_category_products to find ids. So sánh 2–5 sản phẩm cạnh nhau","inputSchema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","items":{"type":"integer"},"description":"Danh sách 2–5 product id cần so sánh, vd [943, 1004]. Cũng chấp nhận chuỗi \"943,1004\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"create_binance_deposit","fixed":{"name":"create_binance_deposit","description":"Create a Binance Pay deposit order to top up your balance. The SERVER returns the shop receive Pay ID (and QR) plus a unique USDT amount (with cents) — relay them VERBATIM, never invent them. PREREQUISITE: api_key AND Binance Pay must be enabled (check topup_guide first). WHEN TO USE: the user will pay inside the official Binance app. AFTERWARDS: call verify_binance_deposit with merchant_trade_no. PREFER INSTEAD: create_usdt_deposit for on-chain USDT transfers. Tạo đơn nạp Binance Pay — hệ thống","inputSchema":{"type":"object","required":["api_key","amount_usd"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."},"amount_usd":{"type":"number","description":"Whole-number USD amount to deposit (the system assigns a unique cents suffix)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"create_usdt_deposit","fixed":{"name":"create_usdt_deposit","description":"Create a USDT deposit order to top up your balance. The SERVER generates the real receiving wallet address and a unique amount (with cents) — relay them to the user VERBATIM, never invent or edit a wallet address. Supports TRC20 / BEP20 / Polygon / Arbitrum / Base. PREREQUISITE: api_key; call topup_guide FIRST to see which networks are active + min/max. WHEN TO USE: the user wants to deposit on-chain USDT. AFTERWARDS: once they send, call verify_usdt_deposit with order_code + claim_token. PREFER","inputSchema":{"type":"object","required":["api_key","amount_usd"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."},"network":{"enum":["trc20","bep20","polygon","arbitrum","base"],"type":"string","description":"USDT network: trc20 | bep20 | polygon | arbitrum | base (default trc20). Only networks with a configured wallet work — check topup_guide."},"amount_usd":{"type":"number","description":"Whole-number USD amount to deposit (decimals are ignored — the system assigns a unique cents suffix)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":302,"tokensAfter":302},{"name":"daily_checkin","fixed":{"name":"daily_checkin","description":"Perform the once-a-day check-in and collect the reward (random 200-1,000đ base + streak milestone bonuses at 7/30 days, sometimes x2 combo). Idempotent — if already checked in today it just says so (no double credit). Each check-in also grants +1 lucky-wheel spin. Reward credits the SHOPPING balance (not withdrawable). WHEN TO USE: the user wants to claim today's free check-in. PREFER INSTEAD: gamefi_status to first see if it is available, spin_wheel to use the earned spin, claim_quest for quest","inputSchema":{"type":"object","required":["api_key"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"gamefi_status","fixed":{"name":"gamefi_status","description":"One-shot overview of all FREE balance rewards the account can grab right now: daily check-in (available today? streak, reward range), lucky-wheel spins available, and the quest board (how many quests are complete & claimable). Read-only. WHEN TO USE: call this FIRST whenever the user asks about rewards/free balance, then use daily_checkin / spin_wheel / list_quests + claim_quest to collect. Note: all rewards credit the SHOPPING balance (spendable in-shop, NOT withdrawable). Requires api_key. Tổn","inputSchema":{"type":"object","required":["api_key"],"properties":{"lang":{"type":"string","description":"Language for labels: \"vi\" or \"en\" (default en)."},"api_key":{"type":"string","description":"Your shop account API key."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"get_2fa","fixed":{"name":"get_2fa","description":"Generate the current 2FA/TOTP code (6 digits) from a Base32 secret key (Google Authenticator style). Computed on the server in-memory only, never stored or logged. Free, no api_key required. WHEN TO USE: the user has an authenticator secret key (from an account they bought or own) and needs the live TOTP code now. PREFER INSTEAD: get_mail_code for email OTP/verification codes delivered to a mail-bundled order. Requires a valid Base32 secret. Sinh mã 2FA/TOTP hiện tại (6 số) từ khóa bí mật Base32","inputSchema":{"type":"object","required":["secret"],"properties":{"secret":{"type":"string","description":"Base32 secret key (spaces allowed). Khóa bí mật Base32 (cho phép có dấu cách)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"get_mail_code","fixed":{"name":"get_mail_code","description":"Get the latest email OTP / verification code for a purchased mail-bundled account order. Supports Hotmail/Outlook via OAuth (refresh_token) and mail.tm (email + password). Read-only. PREREQUISITE: api_key + an order_code whose delivered account includes an inbox. WHEN TO USE: the user needs the verification code sent to the email that came with their order. PREFER INSTEAD: get_2fa for authenticator (TOTP) codes, check_order_status to see the delivered credentials themselves. Lấy mã OTP/xác minh ","inputSchema":{"type":"object","required":["api_key","order_code"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."},"order_code":{"type":"string","description":"The order code of the mail-bundled account order."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":220,"tokensAfter":220},{"name":"get_my_balance","fixed":{"name":"get_my_balance","description":"Get your account balance, level and discount (requires your shop api_key). Read-only, spends nothing. WHEN TO USE: the user asks \"how much do I have\" or you need to confirm funds before quote_order / buy_product. PREFER INSTEAD: wallet_history for the full ledger of top-ups/spends/refunds, topup_guide to add funds, quote_order to price a specific purchase. Requires a valid api_key. Xem số dư & hạng tài khoản (cần api_key); trả balance (VND), level, discount.","inputSchema":{"type":"object","required":["api_key"],"properties":{"api_key":{"type":"string","description":"Your shop account API key. Khóa API tài khoản shop của bạn (Trang cá nhân → API)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"get_product","fixed":{"name":"get_product","description":"Get the full public detail of ONE product by its numeric id: name, price (VND), stock, category, long description and url. Read-only, no api_key required. WHEN TO USE: after search_products / list_category_products / best_sellers gave you an id and the user wants the full description of that single item. PREFER INSTEAD: compare_products to evaluate 2-5 ids at once, similar_products to find alternatives. Requires a known product id (not a name). Not for buying — pass the id to quote_order. Xem ch","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","description":"Product id."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183},{"name":"how_to_start","fixed":{"name":"how_to_start","description":"Onboarding guide for NEW users: how to start buying on hotlikeshop through this MCP (create account -> get api_key -> top up -> search & buy). Read-only, no api_key required. WHEN TO USE: the very FIRST call for a new / international user, or whenever someone lacks an api_key or asks \"how does this work\". Lists which tools are free vs. which need an api_key. PREFER INSTEAD: topup_guide for deposit specifics, quote_order + buy_product to actually purchase, search_products to browse. Pass lang=\"en","inputSchema":{"type":"object","properties":{"lang":{"type":"string","description":"Optional: \"en\" (default) or \"vi\". Ngôn ngữ hướng dẫn: \"en\" (mặc định) hoặc \"vi\"."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":200,"tokensAfter":200},{"name":"list_categories","fixed":{"name":"list_categories","description":"List every public category with its id, name and in-stock product count. Read-only, takes no parameters, no api_key required. WHEN TO USE: call this FIRST to discover the category taxonomy and get the category_id values required by list_category_products, best_sellers, latest_products and recommend_products. PREFER INSTEAD: search_products when the user already has a keyword, or how_to_start for onboarding. This only lists categories — it does not return individual products. Liệt kê danh mục côn","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":165,"tokensAfter":165},{"name":"list_category_products","fixed":{"name":"list_category_products","description":"List in-stock public products inside ONE category by category_id: id, name, price (VND), stock. Read-only, no api_key required. PREREQUISITE: get category_id from list_categories first. WHEN TO USE: browse everything in a chosen category. PREFER INSTEAD: search_products for keyword search across all categories, best_sellers to rank a category by sales, recommend_products to filter by budget, latest_products for newest. Not for buying — pass a chosen id to quote_order. Liệt kê sản phẩm công khai ","inputSchema":{"type":"object","required":["category_id"],"properties":{"limit":{"type":"integer","description":"Max results (default 30, max 100)."},"category_id":{"type":"integer","description":"Category id."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"list_orders","fixed":{"name":"list_orders","description":"List your recent orders (order history), paginated, with order_code, product, quantity, total paid, status and date (requires your api_key). Read-only, spends nothing. WHEN TO USE: the user wants their purchase history or you need to find an order_code. AFTERWARDS: check_order_status (with refresh=true to nudge a stuck order) / get_mail_code for a specific order_code. PREFER INSTEAD: wallet_history for money movements (top-ups/refunds), not order details. Liệt kê lịch sử đơn (order_code, sản phẩ","inputSchema":{"type":"object","required":["api_key"],"properties":{"page":{"type":"integer","description":"Page number (default 1)."},"limit":{"type":"integer","description":"Orders per page (default 20, max 100)."},"api_key":{"type":"string","description":"Your shop account API key."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"list_quests","fixed":{"name":"list_quests","description":"List the daily & weekly quest board with progress: each quest key, title, reward, current/target progress, whether it is complete and whether it is already claimed. Read-only, spends nothing. WHEN TO USE: the user wants to see quests or you need a quest_key. AFTERWARDS: call claim_quest on any quest that is complete but not yet claimed. PREFER INSTEAD: gamefi_status for a combined rewards summary (check-in + wheel + quests). Requires api_key. Danh sách nhiệm vụ ngày/tuần kèm tiến độ + phần thưởn","inputSchema":{"type":"object","required":["api_key"],"properties":{"lang":{"type":"string","description":"Language for titles: \"vi\" or \"en\" (default en)."},"api_key":{"type":"string","description":"Your shop account API key."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"quote_order","fixed":{"name":"quote_order","description":"STEP 1 of buying: get a price quote for a product BEFORE purchasing. Returns unit price, discount, total to pay (VND), your balance, stock, and a confirm_token (single-use, valid ~5 min). SPENDS NOTHING. Requires api_key + product_id. WHEN TO USE: always call this first, then show the total to the user and get explicit approval before buy_product. PREFER INSTEAD: get_my_balance to only check funds, check_order_status for an order that already exists (not for pricing a new one). Bước 1 khi mua: b","inputSchema":{"type":"object","required":["api_key","product_id"],"properties":{"api_key":{"type":"string","description":"Your shop account API key."},"quantity":{"type":"integer","description":"Quantity to buy (default 1)."},"product_id":{"type":"integer","description":"Product id (from search_products / get_product)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":241,"tokensAfter":241},{"name":"search_products","fixed":{"name":"search_products","description":"Search the public catalog by keyword in the product name; returns id, name, price (VND), stock, category and url. Read-only, no api_key required. WHEN TO USE: the user already has a search term or product name. PREFER INSTEAD: list_categories + list_category_products to browse without a keyword, best_sellers for \"popular\", latest_products for \"new\", get_product for the full detail of one id. Not for buying — pass a found id to quote_order. Tìm sản phẩm công khai theo tên; chỉ đọc, không cần api_","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","description":"Max results (default 20, max 50)."},"query":{"type":"string","description":"Keyword / từ khóa (product name)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"submit_complaint","fixed":{"name":"submit_complaint","description":"File a complaint / warranty-refund request for ONE delivered order (requires your api_key). Opens a support case; the shop reviews within 3 days and if unresolved in time the order is auto-refunded. NOT idempotent — one complaint per order, so confirm with the user before calling. PREREQUISITE: an order_code that was delivered and is genuinely faulty. WHEN TO USE: the bought item is wrong / dead / login-fails / short quantity. PREFER INSTEAD: check_order_status with refresh=true first if it mere","inputSchema":{"type":"object","required":["api_key","order_code","reason"],"properties":{"reason":{"type":"string","description":"Short reason for the complaint, e.g. \"Sai sản phẩm\", \"Không đăng nhập được\", \"Die/khóa\", \"Thiếu số lượng\", \"Khác\"."},"api_key":{"type":"string","description":"Your shop account API key."},"order_code":{"type":"string","description":"The order code you want to complain about (must belong to your account)."},"description":{"type":"string","description":"Optional details describing the problem (which items failed, error message, etc.)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":313,"tokensAfter":313}],"toolsChanged":22,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}