get_location_listing_overview
Listings overview for one location: publisher sync status, GBP completeness, directory connections, duplicates, what needs fixing. Use for listing health check, directory audit. `citationIndex.inventory` lists today's live listing pages with whether Google Search shows each (indexed / not_indexed / pending / not_checked); pending and not_checked are unknown, never a negative, and `checkedAt`/`indexedAt` are when that evidence was recorded. Each status is the last RECORDED result, not a live check: a page confirmed indexed is not re-checked, so `inventory.latestEvidenceAt` (the newest check or confirmation) can be a confirmation date with no check behind it. `citationIndex.current`/`previous` are weekly snapshots of past inventories (`weekStart` is the week, `recordedAt` when it was written) and are not comparable with today's inventory counts. `mapsVisibility` is Top 3 on Google Maps for ONE keyword (`selectedKeywordId`; pass `keywordId` from `mapsVisibility.keywords` for another, otherwise `selection: "default"` is the newest keyword with a measured scan) from ONE stored scan (`report`): `report.top3` of `report.measured` counted spots were in the top 3, and `competitors[].top3Spots` count over those same spots (businesses share spots, so they don't add up). A spot `outside` the tracked top 20 is not a position; `noData` is a failed spot, not a ranking; `water`/`excluded` spots don't count. `report: null` means no measured scan, never 0%. `newerUnmeasured` is a newer scan that measured nothing countable. Only spots from the CURRENT keyword text and grid count: `withheld` spots (`report.withheldPoints`) came from an earlier setup, and `report.evidence: "unverified"` means a legacy scan whose keyword and grid can't be confirmed. `report.completedAt` is set only when these exact rows are a proven full-grid collection; otherwise only `report.generatedAt` is known: the report's recorded date (set at its first finalization, not moved by later row changes), so neither a collection nor a last-update time, and never a live check. `businessPoint` is the sampled spot CLOSEST to the address, not the address. `scanInProgress` is location-wide and doesn't say which keywords the run covers. Competitor `id` is `id:<place id>` or name+address; `name` may be empty. When you tell the user about listing sync, state it as a percentage only; never quote synced/total counts (e.g. never '39/57' or '39 of 57').
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_location_listing_overview",
"arguments": {
"locationId": "string"
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "..."
}
]
}
}Response shape shown for illustration — the actual content depends on the tool and your data.