select_geo_audit_competitors
select_geo_audit_competitors MCP tool: freeze a GEO Audit's competitor selection and advance it from REVIEWING to GENERATING.
Updated 2026-07-23
select_geo_audit_competitors freezes the competitor selection of a GEO Audit and advances it from REVIEWING to GENERATING, which triggers insight and recommendation generation. It is the write half of the pair completed by list_geo_audit_competitors, and it removes the manual review bottleneck for agencies running audits at volume.
When to use
After reading candidates with list_geo_audit_competitors (when reviewable is true), call this tool with the names you want to keep. The audit then generates its report asynchronously; poll get_geo_audit until status is COMPLETED. The tool only works while the audit is REVIEWING and requires a non read-only API key.
Input
| Field | Type | Description |
|---|---|---|
auditId |
string (CUID) | The GEO Audit id. Returns audit_not_found if it does not belong to your workspace. |
selectedCompetitors |
string[] | 1 to 50 competitor names to freeze. Pick from the suggestedCompetitors returned by list_geo_audit_competitors. |
GEO Audits are workspace-scoped, so this tool takes no projectId.
Response
Success
{
"success": true,
"auditId": "clx_audit_42",
"status": "GENERATING",
"selectedCompetitors": ["Acme", "Globex"],
"message": "Selection frozen. The audit is now generating insights and recommendations; poll get_geo_audit until status is COMPLETED."
}
Not in review
{ "success": false, "error": "not_in_review", "currentStatus": "SCANNING", "message": "Competitor selection is only possible while the audit is REVIEWING. This audit is in SCANNING." }
Not found
{ "success": false, "error": "audit_not_found", "message": "No GEO audit with this id exists in your workspace. Verify the auditId returned by list_geo_audits." }
Tips and patterns
- Check
reviewablefirst vialist_geo_audit_competitorsto avoid anot_in_reviewround trip. - The transition is atomic and idempotent at the boundary. If the audit was already moved past
REVIEWING(e.g. someone submitted in the UI), this returnsnot_in_reviewinstead of double-triggering generation. - Then poll
get_geo_audituntilCOMPLETEDto readrecommendationsandcontentIdeas.
Related tools
- list_geo_audit_competitors — read the candidates to pick from.
- get_geo_audit — poll the audit until COMPLETED after selection.
- list_geo_audits — find audits sitting in REVIEWING.