list_recommendations
list_recommendations MCP tool: the actions that would get a project cited by AI engines, ranked by impact. Sources to get on, local profile and zones, prompts to conquer.
Updated 2026-10-05
list_recommendations returns the actions that would get a project cited by AI engines, ranked by impact. It is the MCP view of the Action plan in the dashboard: the same list, the same order, the same decisions.
Two kinds of rows come back. A source row is a page AI engines rely on when they recommend your competitors and never you: a directory to join, a ranking to ask into, or a Reddit thread to answer. A local row, for projects with customers on site, is about the map: reviews, profile category, website, or a zone to conquer.
One row per action, even when several prompts share it. A ranking that backs your competitors on twelve prompts is one row with twelve promptIds, not twelve rows.
When to use
Start here when an agent is asked "what should I do to get cited?". The default answer is the list of actions still to do, best first. Then open the plan of a prompt or a zone with get_recommendation to see every step with its evidence, and close the loop with set_recommendation_status once an action is done.
The summary already answers the next question, "which prompts should I work on?", without a second call: the prompts where at least one engine never cites the brand, least visible first.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query. |
cursor |
string | - | Opaque pagination cursor from a prior pageInfo.nextCursor. |
limit |
integer | 20 | 1 to 100. |
filters.types |
enum[] | all | source, local. |
filters.status |
enum[] | ["todo"] |
todo, done, excluded. Local rows are only listed while to do. |
filters.promptIds |
string[] (CUID) | - | Only actions that touch these prompts. |
filters.llms |
enum[] | - | Only actions seen on these engines. |
sortBy |
enum | score_desc |
score_desc (confirmed first, then impact), prompts_desc. |
Response
{
"data": [
{
"id": "source:https://www.semrush.com/blog/best-ai-visibility-tools",
"type": "source",
"action": "ranking",
"domain": "semrush.com",
"url": "https://www.semrush.com/blog/best-ai-visibility-tools",
"pageTitle": "The 9 Best AI Visibility Tools in 2026",
"competitors": ["Otterly AI", "Profound", "Peec AI"],
"publisher": "Semrush",
"backlinkPrice": null,
"promptIds": ["clp1...", "clp2..."],
"llms": ["CHATGPT", "GEMINI"],
"score": 41,
"confirmed": true,
"status": "todo",
"doneAt": null
}
],
"pageInfo": { "hasMore": true, "nextCursor": "20", "totalCount": 31 },
"summary": {
"localEnabled": false,
"promptsToConquer": [
{ "promptId": "clp1...", "text": "best ai visibility tool for freelancers", "visibility": 0, "absentLlms": ["CHATGPT", "GEMINI"], "steps": 7, "done": 2 }
],
"promptsToConquerCount": 17,
"zones": []
}
}
action is directory (sign up, done once for the whole domain), ranking (ask to be added to that exact page) or reddit (answer the thread). publisher names the competitor that publishes its own comparison: the page is still worth asking, but expect a lower answer rate. backlinkPrice is set when the site sells links in the project's backlink catalog, the paid alternative to asking.
For a local row, action is the recommendation type (reviews_count, rating, category, website, not_in_map, never_in_map, zone, page) and params carries its figures (review gap, zone name, presence).
Tips and patterns
- Business sites and information articles never appear: there is nothing to act on. Pages not yet classified appear once the classifier has judged them, usually after the next scan.
idis stable across scans and is whatset_recommendation_statusexpects.- A source done or excluded once is done or excluded in every plan that shares it, local zones included.
- Pass
filters.status: ["done"]to report on what was done and when (doneAt). - Pair
backlinkPricewithlist_backlink_opportunitiesto compare offers before buying.
Related tools
get_recommendation: the step-by-step plan of one prompt or zoneset_recommendation_status: mark an action done, excluded, or back to dolist_competitor_sources: every domain citing a given competitor