list_competitors
list_competitors MCP tool: tracked competitors with mention totals, average position, LLM presence and prompt coverage. Filter by status, source, mentions threshold.
Updated 2026-04-26
list_competitors
list_competitors returns the competitors tracked on a project, with mention totals, average ranking position, the LLMs where they are mentioned and how many of your prompts they show up on. Three statuses are supported: CONFIRMED, SUGGESTED (auto-detected, awaiting moderation), REJECTED.
When to use
Reach for this tool whenever the user asks "who am I competing against in AI answers?", "who is gaining visibility on my prompts?", "list new competitors I need to review". The default filters.status: ["CONFIRMED"] returns the validated set; switch to ["SUGGESTED"] to triage the auto-detection queue. Combine with bulk_update_competitor_status to act on the result.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query. |
cursor |
string | — | Pagination cursor. |
limit |
integer | 20 | 1 to 100. |
filters.status |
enum[] | ["CONFIRMED"] |
CONFIRMED, SUGGESTED, REJECTED. |
filters.source |
string[] | — | Filter by detection source. |
filters.minMentions |
integer | 0 | Minimum total mentions. |
filters.nameContains |
string | — | Case-insensitive substring on canonical name. |
sortBy |
enum | mentions_desc |
mentions_desc, recent, alphabetical. |
Response
Each row is a competitor with aliases, status, source and a stats block. The top-level summary.byStatus lets the agent see the moderation backlog without a second call.
{
"data": [
{
"id": "clxcomp001",
"canonicalName": "Otterly",
"aliases": ["Otterly.ai", "OtterlyAI"],
"status": "CONFIRMED",
"source": "auto-detected",
"createdAt": "2026-02-15T00:00:00.000Z",
"stats": {
"totalMentions": 89,
"averagePosition": 2.3,
"llmsWhereMentioned": ["CHATGPT", "PERPLEXITY"],
"promptCoverage": 12
}
}
],
"pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": 7 },
"summary": {
"totalCompetitors": 7,
"byStatus": { "CONFIRMED": 7, "SUGGESTED": 12, "REJECTED": 3 }
}
}
Tips and patterns
- Sort by
mentions_descfor competitive intel; sort byrecentto surface newcomers in the auto-detection queue. averagePositionis computed across runs where the competitor was mentioned. A lowtotalMentionsmakes it noisy.promptCoverageis the count of distinct prompts where the competitor showed up. Pair it withlist_promptsto see which prompts overlap.- Pull
filters.status: ["SUGGESTED"]periodically and feed the IDs intobulk_update_competitor_statusto keep the dataset clean.
Related tools
- list_competitor_sources — domains where a given competitor is cited.
- bulk_update_competitor_status — confirm or reject competitors in bulk.
- list_prompts — see your own visibility on the same prompts.