MCPOutils MCP/Suivi du positionnement SEO

Suivi du positionnement SEO

Suivi du classement des mots-clés, points de grille, concurrents et recommandations IA.

get_ranking_overview

Readlistings:read

How this location ranks on Google (Google Maps / local-pack rank tracker) — Local-search Ranking Analytics OVERVIEW for a single location. Requires locationId. Returns: tracked keywords with their current avg grid rank; the available report months; the grid (per-point ranks) for the active/aggregated keyword; grid stats (top3Pct, top10Pct, avgRank); stat cards (best & worst keyword by avg rank, biggest gainer & dropper month-over-month, count of keywords not ranking); and the map center. Optional keywordId (focus one keyword's grid) and month (a specific report month) — omit for the aggregated latest view. Backs the SEO → Ranking Analytics 'Overview' tab.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
keywordIdstringfacultatif
Focus a single tracked keyword's grid (from get_ranking_overview keywords[]). Omit for aggregated.
monthstringfacultatif
Report month YYYY-MM (from months[]). Omit for latest.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_overview",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_ranking_grid_point

get_ranking_grid_point

Readlistings:read

Drill into ONE grid cell of the rank map: the businesses ranked at that point for a keyword (rank, name, rating, review count, category, address, website, and whether it's you). Requires locationId, keywordId (from get_ranking_overview), and the cell's row + col (0-indexed grid coordinates). Optional month (defaults to latest). This is the 'click a grid point' drill-down.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
keywordIdstringobligatoire
Tracked keyword id (from get_ranking_overview keywords[])
rownumberobligatoire
Grid row index (0-based)
colnumberobligatoire
Grid column index (0-based)
monthstringfacultatif
Report month YYYY-MM (optional; defaults to latest)
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_grid_point",
    "arguments": {
      "locationId": "string",
      "keywordId": "string",
      "row": 0,
      "col": 0
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_ranking_competitors

get_ranking_competitors

Readlistings:read

Who's beating this location on Google (Google Maps ranking) — Competitor DOMINANCE LEADERBOARD for a location's local-search grid. Requires locationId. Returns each competitor (and you, flagged isYou) with: rating, review count, avg grid rank, % of grid points in the top 3 (top3Pct), grid points covered, category, website, a per-keyword top-3 breakdown, and (when resolved) feature & hours comparison vs you. Backs the SEO → Ranking Analytics 'Competitors' tab leaderboard.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_competitors",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_ranking_rollup

get_ranking_rollup

Readlistings:read

Google ranking across locations — Multi-location Ranking roll-up across a client's (or the whole agency's) locations: per-location avg grid rank, top3Pct, top10Pct, best keyword, and the location's tags. Optional clientId scopes to one client; omit for agency-wide. Optional tags narrows to locations carrying ANY of the given internal tags (from list_location_tags). Aggregated from stored ranking reports.

Paramètres
clientIdstringfacultatif
Scope to one client (from list_clients; omit for agency-wide)
tagsstring[]facultatif
Internal tags — narrow to locations carrying ANY of these (from list_location_tags). Each row also carries its location's tags.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_rollup",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_ranking_recommendations

get_ranking_recommendations

Readlistings:read

Sydekick 'Next Recommendations' for improving a location's local-search ranking (computed on first request, then cached). Requires locationId. Returns generatedAt and a list of recommendations — each with impact (high/medium/low), the Google Business Profile (GBP) field, title, reasoning, expected impact, a todo checklist, and the suggested Synup action. Backs the 'Next Recommendations' tab. Note: first call may take longer if it needs to generate.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_recommendations",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_ranking_ai_insight

get_ranking_ai_insight

Readlistings:read

Sydekick Insight for a location's ranking performance (computed on first request, then cached). Requires locationId. Returns generatedAt, keyword/coverage gaps (with priority), geographic weaknesses (zones where you rank poorly + who dominates), anomalies (with severity + likely cause), and a rating insight (review target). Backs the 'Sydekick Insight' tab. Note: first call may take longer if it needs to generate.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_ai_insight",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/add_seo_competitor

add_seo_competitor

Writelistings:write

Add a competitor to track on a location's local-search ranking grid, by business name (resolved to a Google place near the location when possible). Tracking a competitor here also makes it available to the Reviews and AEO modules for the same location (competitors are shared across modules). Re-adding a previously-removed competitor re-activates it. Requires locationId and name.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
namestringobligatoire
The competitor's business name (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_seo_competitor",
    "arguments": {
      "locationId": "string",
      "name": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/remove_seo_competitor

remove_seo_competitor

Writelistings:write

Stop tracking a competitor. This archives it (soft delete) — historical ranking data already collected for it is retained. Since competitors are shared across modules, this also removes it from Reviews/AEO for the same location. Identify it by its competitorId (from get_ranking_competitors or add_seo_competitor).

Paramètres
competitorIdstringobligatoire
The id of the competitor to remove (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_seo_competitor",
    "arguments": {
      "competitorId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/get_seo_keyword_suggestions

get_seo_keyword_suggestions

Readlistings:read

Get Sydekick-suggested keywords worth tracking for a location's local-search ranking (computed on first request, then cached — pass force to regenerate). This only suggests — it does NOT start tracking them; pass the ones you want to add_seo_keywords. Requires locationId.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
forcenumberfacultatif
Pass 1 to force regeneration instead of using the cache.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_seo_keyword_suggestions",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/add_seo_keywords

add_seo_keywords

Writelistings:write

Start tracking one or more keywords on a location's local-search ranking grid (geo-grid rank tracker). Up to 25 keywords total per location — extras beyond the cap are silently dropped. Re-adding an already-tracked keyword just re-activates it. Requires the location to have latitude/longitude set (throws otherwise). Optionally set gridSize (3, 5, or 7 — default 7) and distanceKm (default 1.5) the first time you configure a location's grid. excluded skips specific grid points from measurement (e.g. a lake, a rival's territory) — pass the (row, col) cells to exclude, 0-indexed from the grid's top-left.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works. Required.
keywordsstring[]obligatoire
Keywords to track (required, up to 25 total per location).
gridSize3 | 5 | 7facultatif
Grid size (default 7).
distanceKmnumberfacultatif
Distance between grid points in km (default 1.5).
excludedobject[]facultatif
Grid points to exclude from measurement, as {row, col} pairs.
rownumberfacultatif
Row index, 0-indexed.
colnumberfacultatif
Column index, 0-indexed.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_seo_keywords",
    "arguments": {
      "locationId": "string",
      "keywords": [
        "string"
      ]
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/remove_seo_keyword

remove_seo_keyword

Writelistings:write

Stop tracking a keyword on a location's ranking grid. PERMANENTLY DELETES its historical reports and every grid-cell rank point ever recorded for it — there is no undo and no archive; re-adding the same keyword later starts its history over from zero. Identify it by its keywordId (from get_ranking_overview's keywords[]).

Paramètres
keywordIdstringobligatoire
The id of the tracked keyword to remove (required, from get_ranking_overview's keywords[]).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_seo_keyword",
    "arguments": {
      "keywordId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/update_seo_grid_config

update_seo_grid_config

Writelistings:write

Update a location's rank-grid measurement config: grid size, distance between points, excluded grid points, or whether water points count toward stats (includeWaterPoints — water cells are always scraped either way; this only controls whether they're counted and shown). Pass only the fields you want to change. Config set here takes effect going forward, same as passing gridSize/distanceKm/excluded to add_seo_keywords the first time a location's grid is configured.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works. Required.
gridSize3 | 5 | 7facultatif
Grid size.
distanceKmnumberfacultatif
Distance between grid points in km.
excludedobject[]facultatif
Grid points to exclude from measurement, as {row, col} pairs.
rownumberfacultatif
Row index, 0-indexed.
colnumberfacultatif
Column index, 0-indexed.
includeWaterPointsbooleanfacultatif
Whether water grid points count toward stats.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_seo_grid_config",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/generate_seo_report

generate_seo_report

Writelistings:write

Trigger (re)generation of ranking-grid reports in the background — either for one tracked keyword, every keyword on a location, or a specific past month. This queues the scrape/compute job and returns immediately (generating:true); poll get_ranking_overview afterward to see the result once it lands. Pass keywordId, or locationId (to regenerate every keyword on that location), or both.

Paramètres
locationIdstringfacultatif
Location id — the id from list_locations. Either id shape works. Regenerates every tracked keyword on this location if keywordId is omitted.
keywordIdstringfacultatif
A single tracked keyword id to regenerate (from get_ranking_overview's keywords[]).
monthstringfacultatif
A specific past report month YYYY-MM to regenerate. Omit for the current month.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "generate_seo_report",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/download_seo_report

download_seo_report

Readlistings:read

Build the branded, section-configurable SEO ranking report — the same "Download Report" action in the app. Returns rendered HTML, not a binary PDF file: there's no headless-Chrome renderer available server-side, so turning this into an actual PDF (as the app's own UI does, client-side) is on the caller. preset controls the date window (e.g. "lastMonth"; pass from/to instead for a custom range). sections lets you include/exclude report sections by key: coverPage, executiveSummary, performanceSnapshot, agencyActivityLog, gridRankSnapshots, keywordPerformanceTable, monthOverMonthTrend, competitorLandscape, aiRecommendations — omitted keys use the report's own defaults. Distinct from generate_seo_report, which only enqueues a background rank-grid scan and returns no document.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works. Required.
preset"lastMonth" | "last3Months" | "last6Months" | "last12Months" | "custom"facultatif
Date-range preset (default "lastMonth"). Use "custom" with from/to for an arbitrary range.
fromstringfacultatif
Custom range start (ISO date). Requires to.
tostringfacultatif
Custom range end (ISO date). Requires from.
keywordsstring[]facultatif
Limit to these tracked keyword ids (from get_ranking_overview's keywords[]). Omit for all.
sectionsobjectfacultatif
Which report sections to include, by key (see the tool description for the full key list). Omitted keys use the report's own defaults.
coverPagebooleanfacultatif
Include the coverPage section.
executiveSummarybooleanfacultatif
Include the executiveSummary section.
performanceSnapshotbooleanfacultatif
Include the performanceSnapshot section.
agencyActivityLogbooleanfacultatif
Include the agencyActivityLog section.
gridRankSnapshotsbooleanfacultatif
Include the gridRankSnapshots section.
keywordPerformanceTablebooleanfacultatif
Include the keywordPerformanceTable section.
monthOverMonthTrendbooleanfacultatif
Include the monthOverMonthTrend section.
competitorLandscapebooleanfacultatif
Include the competitorLandscape section.
aiRecommendationsbooleanfacultatif
Include the aiRecommendations section.
notesstringfacultatif
Free-text notes to include on the report.
locale"en" | "es" | "fr" | "de" | "pt"facultatif
Language for the rendered report (default "en").
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "download_seo_report",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/regenerate_seo_recommendations

regenerate_seo_recommendations

Writelistings:write

Force-regenerate the Sydekick 'Next Recommendations' for a location instead of using the cached version (get_ranking_recommendations reads the cache; use this when the underlying data has clearly changed, e.g. after a big profile update). Requires locationId.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regenerate_seo_recommendations",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Suivi du positionnement SEO/regenerate_seo_ai_insight

regenerate_seo_ai_insight

Writelistings:write

Force-regenerate the Sydekick Insight for a location's ranking performance instead of using the cached version (get_ranking_ai_insight reads the cache). Requires locationId.

Paramètres
locationIdstringobligatoire
Location id — the id from list_locations. Either id shape works.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regenerate_seo_ai_insight",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.