get_product_share_of_voice

get_product_share_of_voice MCP tool: by product category, how often AI answers cite the category and your brand's share of its product mentions against competitors, per engine, with top brands and top products. Inputs, response shape, JSON example.

Updated 2026-10-08

get_product_share_of_voice measures, category by category, how much room your brand takes in AI answers on an e-commerce project. For each category ("Interdental brushes", "Dental floss"), it returns how many answers cite a product of that category, your brand's share of the category's product mentions, the same share per engine, and the brands and products in the lead.

A mention is an answer that cites a product. The share of voice of a product is its part of the mentions of its category. Rejected products are left out.

Product categories are sorted by the AI after each scan. It reuses the categories already in the project, so products of different brands land in the same category. You can change a product's category with update_product; the AI never overwrites a category set by hand.

When to use

Call it to answer "on interdental brushes, how often do AI engines recommend my products rather than my competitors'?". It gives one share per category, so a strong range does not hide a weak one. Then open list_product_prompt_matrix on a category to see the prompts where you lose.

E-commerce projects only (see update_project_settings).

Input

Field Type Default Description
projectId string (CUID) required Project to query.
filters.dateRange { from?, to? } (ISO date or datetime) all time Answers of this period only.
filters.llms array of LLM keys all engines Answers of these engines only.
filters.category string all categories One product category, exactly as list_products returns it in category. "" = products without a category.

Response

{
  "success": true,
  "brandName": "GUM",
  "results": 412,
  "ourShare": 29,
  "categories": [
    {
      "category": "Brossettes interdentaires",
      "answers": 96,
      "answerRate": 23,
      "ourAnswers": 41,
      "ourRate": 10,
      "mentions": 158,
      "ourShare": 34,
      "byLlm": [
        { "llm": "CHATGPT", "mentions": 82, "ourShare": 38 },
        { "llm": "COPILOT", "mentions": 51, "ourShare": 25 },
        { "llm": "PERPLEXITY", "mentions": 25, "ourShare": 36 }
      ],
      "brands": [
        { "competitorId": "clc1...", "name": "TePe", "mentions": 61, "ours": false, "share": 39 },
        { "competitorId": null, "name": "GUM", "mentions": 54, "ours": true, "share": 34 },
        { "competitorId": "clc2...", "name": "Curaprox", "mentions": 43, "ours": false, "share": 27 }
      ],
      "products": [
        { "id": "clpr4...", "name": "TePe Original", "competitorId": "clc1...", "brand": "TePe", "ours": false, "mentions": 38, "share": 24 },
        { "id": "clpr1...", "name": "Trav-Ler", "competitorId": null, "brand": "GUM", "ours": true, "mentions": 31, "share": 20 },
        { "id": "clpr5...", "name": "CPS Prime", "competitorId": "clc2...", "brand": "Curaprox", "ours": false, "mentions": 27, "share": 17 }
      ]
    },
    {
      "category": "Fil dentaire",
      "answers": 40,
      "answerRate": 10,
      "ourAnswers": 6,
      "ourRate": 1,
      "mentions": 52,
      "ourShare": 12,
      "byLlm": [
        { "llm": "CHATGPT", "mentions": 34, "ourShare": 15 },
        { "llm": "COPILOT", "mentions": 18, "ourShare": 6 }
      ],
      "brands": [
        { "competitorId": "clc1...", "name": "TePe", "mentions": 46, "ours": false, "share": 88 },
        { "competitorId": null, "name": "GUM", "mentions": 6, "ours": true, "share": 12 }
      ],
      "products": [
        { "id": "clpr8...", "name": "Bridge & Implant Floss", "competitorId": "clc1...", "brand": "TePe", "ours": false, "mentions": 46, "share": 88 },
        { "id": "clpr9...", "name": "Fine Floss", "competitorId": null, "brand": "GUM", "ours": true, "mentions": 6, "share": 12 }
      ]
    }
  ]
}

Fields:

  • results: answers of the window, all prompts. It is the denominator of answerRate and ourRate.
  • ourShare (top level): your brand's share of every product mention, all categories together.
  • categories: one entry per product category, most mentioned first. category: null groups the products without a category yet.
  • answers and answerRate: answers citing a product of the category, and their % of the window's answers.
  • ourAnswers and ourRate: answers citing one of your products of the category, and their % of the window's answers.
  • mentions: product mentions of the category. An answer citing three brushes counts three mentions, so mentions can exceed answers.
  • ourShare: your brand's % of the category's product mentions. byLlm gives the same share per engine.
  • brands and products: the 10 brands and the 10 products with the most mentions in the category. share is their % of the category's mentions. ours: true marks your brand.

All rates are whole percentages, or null when there is nothing to divide by.

Error: not_an_ecommerce_project.

Tips and patterns

  • Sort your categories by ourShare: the lowest one with a high answerRate is where engines talk about the category often and recommend someone else.
  • Compare byLlm: a share at 38% on ChatGPT and 25% on Copilot points at the engine to work on first.
  • A big category: null entry means the AI has not sorted some products yet, or could not. Set their category with update_product.
  • Two categories that mean the same thing ("Brossettes" and "Brossettes interdentaires")? Move the products of one into the other with update_product.

Related tools

You can see where you stand today.

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