Create a product in the current workspace: a good, a service, a plan or a collection the workspace sells or buys. A variant, a collection member or a dated price nests under a parent product.
Use this tool when the user asks to create or add a product, a service, a plan, a variant or a price, in any language ("Ajoute le produit Audit SEO à 1 200 € HT"). It adds a row to the catalog: it never drafts an invoice or an invoice line, and it asks for no customer.
REQUIRED: name, supply_type (good, service, plan or collection), status (draft, active or archived), availability (in_stock, out_of_stock, preorder or discontinued).
Read these values from the user's words when the words make them plain. A product the user adds with no status word is status active; a draft or an archived product needs the user's word. Work billed by the job, the day or the hour (an audit, a consulting day, a training) is a service: supply_type service, stock_tracked false, availability in_stock. A service with a name and a price is a complete order: on WhatsApp it saves at once, with no card and no question. For a physical good, the words rarely say whether it is in stock: ask that one value before the create, and ask for nothing else.
OPTIONAL: sku, description, unit_price (a decimal string) with its currency, parent_product_id, vendor_company_id, product_type_project_id, stock_tracked (false for a service or a product made to order, whose own availability then stands). A price for one company or one project is a dated row under its parent: parent_product_id, valid_from (YYYY-MM-DD) and scope_company_id or scope_project_id, with valid_to to close it.
A collection has no parent, no price and no SKU. Two live products cannot share a SKU: the call then fails, and well_list_products finds the existing one.
Returns { success: true, product } on success, or { success: false, error } on failure.