remove_geo_audit_recommendation
remove_geo_audit_recommendation MCP tool: remove a custom recommendation from a GEO Audit by its id.
Updated 2026-09-21
remove_geo_audit_recommendation removes a recommendation from a report. A custom one (added via add_geo_audit_recommendation or by hand) is deleted. A generated one is frozen JSON, so it is removed from the report by hiding it, the same thing the app's own toggle does, and reversible. Works on a single GEO Audit and on a bulk campaign. Tenant-scoped write.
When to use
To drop a recommendation you don't want in the report: a custom one you added (pass its customRecoId) or a generated one that missed the mark (pass its hash). Both come from list_geo_audit_recommendations.
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. |
customRecoId |
string | The id of a custom recommendation (from custom[].id). Deletes it. |
hash |
string | The hash of a generated recommendation (from generated[].hash). Removes it from the report by hiding it. |
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", "bulkAuditId": null, "removed": "custom_deleted" }
removed says what actually happened: custom_deleted (a custom item was deleted) or generated_hidden (a generated item was hidden). A reference matching neither a custom id nor a generated hash returns item_not_found rather than a silent no-op.
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.
list_geo_audit_recommendationsgives you both handles:custom[].idandgenerated[].hash. - Hiding is reversible.
set_geo_audit_recommendation_visibilitywithhidden: falseputs a generated recommendation back. A deleted custom one is gone for good: re-add it. - Read
removedinstead of assuming: it tells you whether you deleted a custom item or hid a generated one.
Related tools
- list_geo_audit_recommendations: find the custom recommendation id.
- add_geo_audit_recommendation: add a custom recommendation.