add_geo_audit_recommendation
add_geo_audit_recommendation MCP tool: add a custom recommendation to a GEO Audit report, same as an owner can by hand.
Updated 2026-09-21
add_geo_audit_recommendation adds a custom recommendation to a GEO Audit report, exactly like an owner can do by hand in the audit UI. It lets an agent enrich a report with its own recommendations programmatically. On a bulk campaign the recommendation lands on the shared template, so every target report gets it. Tenant-scoped write.
When to use
After reading the audit and its existing recommendations (get_geo_audit, list_geo_audit_recommendations), add the recommendations your workflow generated. The new recommendation appears in the audit report alongside the AI-generated ones.
Input
| Field | Type | Description |
|---|---|---|
auditId |
string (CUID) | A single GEO Audit, or a bulk campaign target (which resolves to its campaign). Exactly one of auditId / bulkAuditId. |
bulkAuditId |
string (CUID) | A bulk campaign, from list_bulk_audits. Exactly one of auditId / bulkAuditId. |
category |
enum | technical, content, or distribution. |
severity |
enum | critical, important, or nice-to-have. |
title |
string | 1–160 chars. |
description |
string | 1–1200 chars. |
GEO Audits are workspace-scoped, so this tool takes no projectId. Address a report with auditId or bulkAuditId, never both. On a bulk campaign the change applies to the shared settings template every target report renders, so one call covers the whole batch. Passing a campaign target's auditId resolves to its campaign for the same reason: a target has no settings of its own. The response always echoes the resolved target as auditId / bulkAuditId (one of them null).
Response
Success
{
"success": true,
"auditId": "clx_audit_42",
"reco": {
"id": "cus_ab12cd34",
"category": "content",
"severity": "important",
"title": "Publish a head-to-head comparison page",
"description": "Cover the three competitors named most often by the LLMs."
}
}
The returned reco.id is the handle to remove it later with remove_geo_audit_recommendation.
Errors
{ "success": false, "error": "target_required", "message": "Pass exactly one of auditId (a GEO audit) or bulkAuditId (a bulk campaign)." }
{ "success": false, "error": "audit_not_found", "message": "No GEO audit with this id exists in your workspace. ..." }
{ "success": false, "error": "bulk_audit_not_found", "message": "No bulk campaign with this id exists in your workspace. ..." }
Tips and patterns
- List first with
list_geo_audit_recommendationsto avoid duplicating an existing recommendation. - Keep titles specific. The title is what readers scan; put the action in it (for example "Add FAQ schema to the pricing page").
- Custom recommendations are editable: remove them with
remove_geo_audit_recommendation. There is no update call: remove, then add. - On a campaign, one add serves N reports. Use
bulkAuditId(or any target'sauditId) when the point applies to the whole segment.
Related tools
- list_geo_audit_recommendations: read current recommendations first.
- remove_geo_audit_recommendation: remove a custom recommendation by id.