list_geo_audit_content_ideas
list_geo_audit_content_ideas MCP tool: a report's generated content ideas (with hash and hidden flag) and the custom ones added on top.
Updated 2026-09-21
list_geo_audit_content_ideas returns the content ideas of a report: the article angles the AI generated when the audit completed, and the custom ones an owner (or an agent) added on top. It works on a single GEO Audit and on a bulk campaign, whose ideas are the segment-level ones every target report renders.
When to use
Before editing a report's content ideas through the MCP, list them so you don't duplicate an existing angle and so you have the handle you need: a custom idea's id, or a generated idea's hash. Read-only, tenant-scoped.
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. |
GEO Audits are workspace-scoped, so this tool takes no projectId. Address a report with auditId or bulkAuditId, never both. Passing a campaign target's auditId resolves to its campaign: a target has no ideas of its own, it renders the segment's. The response echoes the resolved target as auditId / bulkAuditId (one of them null).
Response
{
"success": true,
"auditId": "clx_audit_42",
"bulkAuditId": null,
"generated": [
{
"title": "How to choose a plumber in Lyon",
"angle": "Buyer guide answering the comparison prompts the LLMs get asked",
"hash": "9f8e7d6c",
"hidden": false
}
],
"custom": [
{ "id": "idea_ab12cd34", "title": "Our pricing, explained", "angle": "Transparency page the models can quote" }
]
}
Field notes:
generatedideas are frozen at audit completion and have no stored id. Each carries a deterministichash(derived from the title) and ahiddenflag reflecting the report's visibility settings.customideas each have a stableid(the handle to delete them).- An idea is
{title, angle}: the article and what it argues.
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 before you add to avoid two ideas that are the same article.
- Custom items carry an
id, generated ones ahash.remove_geo_audit_content_ideatakes either: theiddeletes a custom idea, thehashremoves a generated one from the report by hiding it. - Pair with
list_geo_audit_recommendations, which works exactly the same way on the report's other editable list.
Related tools
- add_geo_audit_content_idea: add a custom idea.
- remove_geo_audit_content_idea: delete a custom idea or hide a generated one.
- set_geo_audit_content_idea_visibility: show or hide a generated idea.
- list_geo_audit_recommendations: the same thing for the report's recommendations.