MCPMCP-Tools/SEO-Ranking-Tracking

SEO-Ranking-Tracking

Keyword-Ranking-Tracking, Rasterpunkte, Wettbewerber und KI-Empfehlungen.

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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
keywordIdstringoptional
Focus a single tracked keyword's grid (from get_ranking_overview keywords[]). Omit for aggregated.
monthstringoptional
Report month YYYY-MM (from months[]). Omit for latest.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_overview",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
keywordIdstringerforderlich
Tracked keyword id (from get_ranking_overview keywords[])
rownumbererforderlich
Grid row index (0-based)
colnumbererforderlich
Grid column index (0-based)
monthstringoptional
Report month YYYY-MM (optional; defaults to latest)
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_grid_point",
    "arguments": {
      "locationId": "string",
      "keywordId": "string",
      "row": 0,
      "col": 0
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_competitors",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
clientIdstringoptional
Scope to one client (from list_clients; omit for agency-wide)
tagsstring[]optional
Internal tags — narrow to locations carrying ANY of these (from list_location_tags). Each row also carries its location's tags.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_rollup",
    "arguments": {}
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_recommendations",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ranking_ai_insight",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
namestringerforderlich
The competitor's business name (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_seo_competitor",
    "arguments": {
      "locationId": "string",
      "name": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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).

Parameter
competitorIdstringerforderlich
The id of the competitor to remove (required).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_seo_competitor",
    "arguments": {
      "competitorId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
forcenumberoptional
Pass 1 to force regeneration instead of using the cache.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_seo_keyword_suggestions",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works. Required.
keywordsstring[]erforderlich
Keywords to track (required, up to 25 total per location).
gridSize3 | 5 | 7optional
Grid size (default 7).
distanceKmnumberoptional
Distance between grid points in km (default 1.5).
excludedobject[]optional
Grid points to exclude from measurement, as {row, col} pairs.
rownumberoptional
Row index, 0-indexed.
colnumberoptional
Column index, 0-indexed.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_seo_keywords",
    "arguments": {
      "locationId": "string",
      "keywords": [
        "string"
      ]
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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[]).

Parameter
keywordIdstringerforderlich
The id of the tracked keyword to remove (required, from get_ranking_overview's keywords[]).
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_seo_keyword",
    "arguments": {
      "keywordId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works. Required.
gridSize3 | 5 | 7optional
Grid size.
distanceKmnumberoptional
Distance between grid points in km.
excludedobject[]optional
Grid points to exclude from measurement, as {row, col} pairs.
rownumberoptional
Row index, 0-indexed.
colnumberoptional
Column index, 0-indexed.
includeWaterPointsbooleanoptional
Whether water grid points count toward stats.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_seo_grid_config",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringoptional
Location id — the id from list_locations. Either id shape works. Regenerates every tracked keyword on this location if keywordId is omitted.
keywordIdstringoptional
A single tracked keyword id to regenerate (from get_ranking_overview's keywords[]).
monthstringoptional
A specific past report month YYYY-MM to regenerate. Omit for the current month.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "generate_seo_report",
    "arguments": {}
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works. Required.
preset"lastMonth" | "last3Months" | "last6Months" | "last12Months" | "custom"optional
Date-range preset (default "lastMonth"). Use "custom" with from/to for an arbitrary range.
fromstringoptional
Custom range start (ISO date). Requires to.
tostringoptional
Custom range end (ISO date). Requires from.
keywordsstring[]optional
Limit to these tracked keyword ids (from get_ranking_overview's keywords[]). Omit for all.
sectionsobjectoptional
Which report sections to include, by key (see the tool description for the full key list). Omitted keys use the report's own defaults.
coverPagebooleanoptional
Include the coverPage section.
executiveSummarybooleanoptional
Include the executiveSummary section.
performanceSnapshotbooleanoptional
Include the performanceSnapshot section.
agencyActivityLogbooleanoptional
Include the agencyActivityLog section.
gridRankSnapshotsbooleanoptional
Include the gridRankSnapshots section.
keywordPerformanceTablebooleanoptional
Include the keywordPerformanceTable section.
monthOverMonthTrendbooleanoptional
Include the monthOverMonthTrend section.
competitorLandscapebooleanoptional
Include the competitorLandscape section.
aiRecommendationsbooleanoptional
Include the aiRecommendations section.
notesstringoptional
Free-text notes to include on the report.
locale"en" | "es" | "fr" | "de" | "pt"optional
Language for the rendered report (default "en").
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "download_seo_report",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regenerate_seo_recommendations",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.

MCPMCP-Tools/SEO-Ranking-Tracking/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.

Parameter
locationIdstringerforderlich
Location id — the id from list_locations. Either id shape works.
Beispielanfrage
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regenerate_seo_ai_insight",
    "arguments": {
      "locationId": "string"
    }
  }
}
Beispielantwort
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Die Antwortform dient nur zur Veranschaulichung — der tatsächliche Inhalt hängt vom Tool und Ihren Daten ab.