get_geo_audit

get_geo_audit MCP tool: fetch a single GEO Audit by id. Status and progress while running, full content once COMPLETED.

Updated 2026-07-23

get_geo_audit fetches a single GEO Audit (one-shot white-label audit) by id. While the audit is still running, the response carries the status, a progress counter and a hint about what the audit is waiting for. Once COMPLETED, the response includes the full frozen content: selected competitors, personas, recommendations, content ideas and the audit context.

When to use

After finding an audit with list_geo_audits, call this tool to read its content or to check what it is waiting for. The status field tells you where the audit is in its lifecycle, including whether it is parked at competitor selection (REVIEWING).

Input

Field Type Description
auditId string (CUID) The audit id returned by list_geo_audits. The tool returns audit_not_found if no audit with this id exists in the workspace.
include.pageContent boolean Include the scraped page markdown in auditContext.pages. Off by default (heavy field, several KB per page); withheld pages carry a markdownLength hint instead.
maxPageChars integer When include.pageContent is true, truncate each page's markdown to this many characters (sets markdownTruncated: true).

GEO Audits are workspace-scoped, so this tool takes no projectId.

Response

Still running

{
  "success": true,
  "auditId": "clx_audit_42",
  "status": "REVIEWING",
  "prospectUrl": "https://prospect.com",
  "brandName": "Prospect",
  "createdAt": "2026-06-20T09:00:00.000Z",
  "isComplete": false,
  "progress": { "received": 24, "expected": 24 },
  "message": "Scans done. The audit is paused at competitor selection — confirm/reject competitors before insights can be generated."
}

The message is status-specific. REVIEWING means the audit is waiting on competitor selection before it can move to insight generation.

Completed

{
  "success": true,
  "auditId": "clx_audit_42",
  "status": "COMPLETED",
  "prospectUrl": "https://prospect.com",
  "brandName": "Prospect",
  "createdAt": "2026-06-20T09:00:00.000Z",
  "isComplete": true,
  "brandAliases": ["Prospect Inc"],
  "country": "US",
  "language": "en",
  "llms": ["CHATGPT", "PERPLEXITY"],
  "creditsCost": 24,
  "shareSlug": "prospect-9f3a",
  "selectedCompetitors": ["Acme", "Globex"],
  "personas": [ /* [{ id, name, description }] */ ],
  "recommendations": [ /* [{ category, severity, title, description, action, metric? }] */ ],
  "contentIdeas": [ /* [{ title, angle }] */ ],
  "auditContext": { /* { pages: [{ url, markdownLength }], siteMeta, scannedAt } — page markdown is opt-in via include.pageContent */ },
  "completedAt": "2026-06-20T09:12:00.000Z"
}

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

  • Branch on isComplete, not on status. The frozen content fields (recommendations, contentIdeas, …) only appear when isComplete: true.
  • Read progress while SCANNING to estimate how close the audit is to REVIEWING.
  • REVIEWING needs a decision: confirming or rejecting competitors is handled by a dedicated write flow, not by this read tool.

Related tools

  • list_geo_audits — list every GEO Audit in the workspace (newest first) without polling individual ids.
  • get_page_audit — fetch a Page Audit, a different object.