bulk_update_competitor_status
bulk_update_competitor_status MCP tool: confirm, reject or reset suggested competitors in bulk (up to 50 per call). Per-item errors, member role required.
Updated 2026-04-26
bulk_update_competitor_status
bulk_update_competitor_status is the only write tool in this set. It updates the status of one or more competitors in a single call, up to 50 per batch. Use it to act on the auto-detection queue surfaced by list_competitors: confirm real competitors, reject noise, or reset previously dismissed entries to SUGGESTED.
When to use
Use it when the user gives a moderation instruction such as "confirm all the competitors I see here", "reject these three brand-name false positives", or "reset Otterly back to suggested for re-review". It is the right tool for any agent that triages the suggestion queue automatically based on rules. Pair with list_competitors (filter status: ["SUGGESTED"]) to fetch the candidates first.
Requires
memberrole minimum,customerrole rejected.
Input
| Field | Type | Description |
|---|---|---|
projectId |
string (CUID) | Project to update. |
updates |
array | 1 to 50 entries. |
updates[].competitorId |
string (CUID) | Competitor to update. |
updates[].status |
enum | CONFIRMED, REJECTED, SUGGESTED. |
Response
The response carries updated/failed counts and a per-item results array. Per-item errors do not block the rest of the batch: valid updates still apply, and success flips to false only to flag that at least one item failed.
{
"success": true,
"updated": 2,
"failed": 0,
"results": [
{
"competitorId": "clxcomp001",
"status": "success",
"competitor": {
"id": "clxcomp001",
"canonicalName": "Otterly",
"status": "CONFIRMED",
"updatedAt": "2026-04-26T10:15:00.000Z"
}
},
{
"competitorId": "clxcomp002",
"status": "success",
"competitor": {
"id": "clxcomp002",
"canonicalName": "Profound",
"status": "REJECTED",
"updatedAt": "2026-04-26T10:15:00.000Z"
}
}
]
}
If a competitor ID is invalid or belongs to another project, the entry returns status: "error" with a message and success is set to false for the whole batch. Other valid updates still apply.
Tips and patterns
- Always read
successand the per-itemresults[].statusto detect partial failures. - Batch up to the 50-item limit to minimise round trips. If the list is bigger, paginate.
- Confirm a
customeruser gracefully: catch the role-rejection error and route the request to a higher-privileged member. - Resetting to
SUGGESTEDre-injects the competitor into the moderation queue; do not use it as a soft-delete.
Related tools
- list_competitors — list the candidates to act on (use
filters.status: ["SUGGESTED"]). - list_competitor_sources — inspect a competitor's footprint before deciding to confirm or reject.