Rank the brands answering alongside yours
list_competitorsIdentify which competitor brands AI assistants name on your prompts, ranked by visibility and average position to show who you are losing to. Filter by model, prompt, or category.
Instructions
Every brand the assistants named on the active project's prompts, measured the same way the project's own brand is and ranked by visibility, then by average position. Call this for 'who are we losing to' and for how a market splits between brands.
The order is not share of voice. The ranking is cut to the strongest brands by visibility first, so re-sorting what it returns by share of voice does not give the strongest brands by share of voice.
Changes are signed so that positive always means improvement. For average position that means the brand was named earlier in the answer, so a positive change goes with a lower position number.
shareOfVoice is how much of all the naming that happened on the project's prompts went to one brand, so the brands in a ranking describe one pie. It answers a different question from visibility: visibility is how often a brand was named at all, and every brand can score high at once, while share of voice is what each took from the others. citedAnswers counts the answers that cited at least one domain assigned to the brand, its own or an alternative one, each domain at most once per answer, and citationShare is the share of answers carrying sources that did. It is a count of answers, not of sources, so it is not comparable with sourceOccurrences from list_sources, which counts every source on one host. Being cited can diverge from being named — a brand can be recommended without being linked, and linked without being recommended. The project's own brand is in the ranking and marked with ownBrand, so it can be read against the rest.
visibility is the share of answers that named the brand, 0 to 100; reachIndex is that figure weighted by how much of the market each assistant carries; averagePosition is where in the answer the brand was named, counting from 1. Each is null until it is measured.
The ranking answers with the strongest brands rather than a list to walk to the end of, so raise limit to see further down. model narrows it to one assistant, which is how to tell a brand that dominates everywhere from one that owns a single assistant.
Narrow the ranking to one prompt (promptId), one prompt group (groupId), or one category — categoryId alone, or categoryId with subcategoryId — the same way the app's own visibility screen narrows it. Give at most one of these; combining them fails. There is no single call for 'which prompts does competitor X outrank us on' — call list_prompts for the prompt ids, then this tool once per promptId, and keep the ones where the named competitor's position beats the brand's.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many brands to return, at most 200. | |
| model | No | Report on this assistant alone instead of all of them. | |
| endDate | No | Last day to report on, inclusive. Defaults to today, and must be within 366 days of startDate. | |
| groupId | No | Rank this prompt group alone instead of every prompt in the project. | |
| promptId | No | Rank this prompt alone instead of every prompt in the project. | |
| startDate | No | First day to report on, inclusive. Defaults to 30 days before today. | |
| categoryId | No | Rank only the prompts filed under this category, subcategories included. | |
| subcategoryId | No | Narrow `categoryId` further, to one of its subcategories. Needs `categoryId` alongside it. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| brand | Yes | ||
| model | Yes | The assistant the ranking is narrowed to. null = all assistants. | |
| nextCursor | Yes | Pass as cursor to read the next page. null = this was the last page. | |
| projectName | Yes |