role (user or assistant) and a list of parts. Parts are the blocks your UI renders — text, an image the shopper sent, or product cards from a catalog tool.
What the shopper sends
User parts aretext and image. You can send either, or both.
image.url accepts a data: URL or a public https:// URL. data: URIs are uploaded and rewritten server-side. If you send only an image, Channel3 finds the products in it (same as Find products in the image.).
What the agent sends
Assistant parts aretext and tool. A tool part is one catalog call. Buy URLs already carry your affiliate tracking. The Product objects are the same type as the Search API.
tool_name is search_products, show_products, compare_products, or image_search. The model may also run an internal lookup (lookup_products) that never appears in your UI.
For search_products, show_products, and compare_products, render output.products as product cards.
image_search runs when the shopper sends a photo. Render output.things the same way as find-products-in-image: one heading per thing and a product rail from that group’s matches. There is no top-level products list on this tool.
suggestions: tap-ready follow-ups for your UI, like “in brown instead”.