list_products
list_products MCP tool: the products of an e-commerce project, the brand's and its competitors', with the answers citing each one, engines and first and last seen dates. Inputs, response shape, JSON example.
Updated 2026-10-08
list_products returns the products tracked on an e-commerce project: your brand's and your competitors'. Each row says how many AI answers cite the product, on which engines, and when it was first and last seen.
A product is a range ("Trav-Ler", "Soft-Picks Comfort Flex"), not a variant: sizes, colors, ISO sizes and packs are folded into it. Mentions are counted through the raw names the engines used (the product's aliases), so a merge or a split recomputes the whole history.
When to use
Call it to answer "which of my products do AI engines recommend, and which of my competitors' do they push instead?". Filter on brand: "ours" to see your catalog, including products never cited (responses: 0), or on a competitorId to list one rival's ranges. Rows with a mergeIntoId are likely duplicates to clean up.
The list is empty on a project that is not in e-commerce mode (see update_project_settings).
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query. |
cursor |
string | - | nextCursor from the previous page. |
limit |
number (1-100) | 20 | Rows per page. |
filters.dateRange |
{ from?, to? } (ISO date or datetime) |
all time | Count answers of this period only. |
filters.llms |
array of LLM keys | all engines | Count answers of these engines only. |
filters.status |
array of CONFIRMED, SUGGESTED, REJECTED |
CONFIRMED, SUGGESTED |
Product statuses to return. |
filters.brand |
"ours" or "competitors" |
both | Your brand's products, or your competitors'. |
filters.competitorId |
string (CUID) | - | Products of one competitor brand. |
filters.category |
string | all categories | Product category, exactly as returned in category. "" = products without a category. |
filters.nameContains |
string | - | Case-insensitive match on the product name or its brand. |
filters.neverCited |
boolean | - | Only your brand's products that no answer cited in the window. |
sortBy |
responses_desc, name_asc |
responses_desc |
Order of the rows. |
Response
{
"data": [
{
"id": "clpr1...",
"name": "Trav-Ler",
"competitorId": null,
"brand": "GUM",
"category": "Brossettes interdentaires",
"status": "CONFIRMED",
"source": "CATALOG",
"responses": 38,
"mentionRate": 9,
"llms": ["CHATGPT", "COPILOT", "PERPLEXITY"],
"firstSeenAt": "2026-09-23T20:01:12.000Z",
"lastSeenAt": "2026-10-07T20:00:41.000Z",
"sitePageUrl": "https://www.sunstargum.com/fr/produits/trav-ler",
"mergeIntoId": null,
"mergeIntoName": null
},
{
"id": "clpr2...",
"name": "Easypick",
"competitorId": "clc1...",
"brand": "TePe",
"category": "Bâtonnets interdentaires",
"status": "SUGGESTED",
"source": "CARD",
"responses": 21,
"mentionRate": 5,
"llms": ["CHATGPT", "COPILOT"],
"firstSeenAt": "2026-09-24T20:00:08.000Z",
"lastSeenAt": "2026-10-06T20:00:31.000Z",
"sitePageUrl": null,
"mergeIntoId": null,
"mergeIntoName": null
}
],
"pageInfo": { "hasMore": true, "nextCursor": "20", "totalCount": 64 },
"summary": { "products": 64, "ours": 22, "cited": 41 }
}
Fields:
competitorId: the brand that makes the product.nullmeans your own brand;brandgives the name either way.status:CONFIRMED,SUGGESTED(seen only in answer text, waiting for review) orREJECTED. A rejected product is never recreated.source: where the product comes from.CATALOG(your site's product pages or the aliases you saved),CARD(a structured product card from Copilot or ChatGPT shopping),TEXT(answer text only) orMANUAL(created by a split).category: the product category ("Brossettes interdentaires"), unit ofget_product_share_of_voice. The AI sorts each new product after a scan and reuses the project's existing categories, so products of different brands share one category.nulluntil it is sorted. A category set withupdate_productis never overwritten.responses: distinct answers citing the product in the window.firstSeenAtandlastSeenAtarenullwhen it was never cited.mentionRate:responsesas a whole % of all the window's answers, ornullwhen the window has no answer.sitePageUrl: the product page on your site, for catalog products.mergeIntoIdandmergeIntoName: the product this one probably duplicates, according to the AI, and its name. Merge it withmerge_productsor dismiss it withupdate_product.summary: products after filters, how many are yours, and how many were cited at least once.
Tips and patterns
neverCited: true: your catalog that AI engines never recommend in the window.- Filter on one
categoryto compare your products with your competitors' in the same category. - Compare a competitor's top ranges with yours on the same
dateRangeto see which product takes your place. - Review
SUGGESTEDproducts withbulk_update_product_status: confirm the real ones, reject the noise. - Call
get_producton a row for its prompts, engines, retailers and prices.
Related tools
get_product: detail of one productget_product_share_of_voice: your share of voice by product categorylist_product_prompt_matrix: which prompt brings up which productmerge_products: merge duplicatesbulk_update_product_status: confirm or reject productslist_retailers: where AI engines send buyerslist_competitors: rival brands of the project