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 reviewable first via list_geo_audit_competitors to avoid a not_in_review round 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 returns not_in_review instead of double-triggering generation.
  • Then poll get_geo_audit until COMPLETED to read recommendations and contentIdeas.

Related tools