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. null means your own brand; brand gives the name either way.
  • status: CONFIRMED, SUGGESTED (seen only in answer text, waiting for review) or REJECTED. 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) or MANUAL (created by a split).
  • category: the product category ("Brossettes interdentaires"), unit of get_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. null until it is sorted. A category set with update_product is never overwritten.
  • responses: distinct answers citing the product in the window. firstSeenAt and lastSeenAt are null when it was never cited.
  • mentionRate: responses as a whole % of all the window's answers, or null when the window has no answer.
  • sitePageUrl: the product page on your site, for catalog products.
  • mergeIntoId and mergeIntoName: the product this one probably duplicates, according to the AI, and its name. Merge it with merge_products or dismiss it with update_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 category to compare your products with your competitors' in the same category.
  • Compare a competitor's top ranges with yours on the same dateRange to see which product takes your place.
  • Review SUGGESTED products with bulk_update_product_status: confirm the real ones, reject the noise.
  • Call get_product on a row for its prompts, engines, retailers and prices.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.