{"ok":true,"site":{"host":"mskutlu.github.io","url":"https://mskutlu.github.io/webmcp-duet/","type":"live","desc":"Duet","tools":[{"name":"search_products","kind":"answer","impl":"imperative","description":"Search the Duet catalog by keyword — multi-word ok, word order doesn't matter; matches name, category or specs. Returns ids, prices and live stock. Omit query to list everything.","inputSchema":{"type":"object","properties":{"query":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"get_product","kind":"answer","impl":"imperative","description":"Get full details of one product by id, including specs.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"compare_options","kind":"act","impl":"imperative","description":"Compare 2+ products side by side (price, stock, lead time). Flags the bestPrice and cheapestInStock option — use it before recommending a purchase.","inputSchema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":2}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"add_to_cart","kind":"act","impl":"imperative","description":"Add a product to the shared cart (qty defaults to 1). Fails with an exact stock message if not enough is available.","inputSchema":{"type":"object","required":["productId"],"properties":{"productId":{"type":"string"},"qty":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"propose_order","kind":"transact","impl":"imperative","description":"Create a PENDING order proposal from the current cart. Nothing is finalized until a human approves it — this is Duet's propose→approve loop.","inputSchema":{"type":"object","properties":{"note":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"approve_order","kind":"transact","impl":"imperative","description":"Approve a pending order proposal (the human-in-the-loop step). Commits stock and returns the fulfillment plan with remaining stock per line.","inputSchema":{"type":"object","required":["orderId"],"properties":{"orderId":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"},{"name":"check_inventory","kind":"answer","impl":"imperative","description":"Check live inventory: stock level, lead time and in-stock/backorder status. Pass productId for one item, omit it for the full register.","inputSchema":{"type":"object","properties":{"productId":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/webmcp-duet/"}],"category":"Commerce","apiSurface":"spec","toolCount":7}}