MCPOutils MCP/Emplacements

Emplacements

Créer, lire, mettre à jour, archiver et vérifier des emplacements, y compris leurs médias.

list_locations

Readlocations:read

List a client's business locations, newest first. This is the starting point for anything about locations: use it to find a location and its id before calling update_location, or to answer questions like "how many active locations does this client have?", "which locations still need verification?", or "show locations tagged test-pipeline". All filters are optional and are combined together (a location must match all of them); tags, categories, and verification each accept multiple values and match any of them. Returns a page of location summaries plus a running `total` and a `nextCursor` — each summary has the location's name, address (street/city/state/postalCode/country as one joined line plus their own fields), phone, website, store code, category, tags, labels, status, verification, how many saved edits haven't synced to publishers yet (pendingChanges), when it was last published, and its client. To page through more, call again passing the returned `nextCursor`. You don't pass an agency — it comes from your credentials.

Paramètres
clientIdstringfacultatif
Limit to a single client's locations (get the id from list_clients). Omit to list across all of the agency's locations.
searchstringfacultatif
Free-text search over the location's name, street address, city, or phone (case-insensitive, partial matches allowed).
status"all" | "active" | "archived" | "archival_pending" | "verification_pending" | "unapproved" | "requires_action"facultatif
A single status bucket. Allowed values: "all", "active" (not archived), "archived", "archival_pending", "verification_pending" (approval pending), "unapproved", "requires_action". Defaults to all.
tagsstring[]facultatif
Internal tags — matches a location that has any of these.
categoriesstring[]facultatif
Category names — matches a location whose general or Google category is any of these.
verification("verified" | "pending" | "unverified" | "unknown")[]facultatif
Google verification state. Allowed values: "verified", "pending", "unverified", "unknown".
createdAfterstringfacultatif
Only locations created on or after this date (e.g. "2026-01-01").
createdBeforestringfacultatif
Only locations created on or before this date.
cursorstringfacultatif
Leave empty for the first page; to get the next page, pass the `nextCursor` from the previous response.
limitnumberfacultatif
How many locations to return per page (1–200, default 50).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_locations",
    "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/Emplacements/list_location_tags

list_location_tags

Readlocations:read

List the distinct internal tags used across a client's locations (or the whole agency's), sorted alphabetically. Use this to DISCOVER which tags exist before filtering by tag — especially when a user names a subset without saying "tag" (e.g. "all my small-store locations"): call this to check whether "small-store" is one of their tags, then pass it as the `tags` filter to list_locations or the rollup tools. Pass clientId to scope to one client, or omit for the agency-wide tag vocabulary. You don't pass an agency — it comes from your credentials.

Paramètres
clientIdstringfacultatif
Limit to one client's tags (get the id from list_clients). Omit for the whole agency's tag vocabulary.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_location_tags",
    "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/Emplacements/get_location_by_id

get_location_by_id

Readlocations:read

Get the full details of a single location by its id. Use this once you know which location you want — typically after list_locations gives you the id — when the list summary isn't enough. Returns everything about that one location: full business profile (name, address, coordinates, phone(s), website, email, description, tagline), categories (general + per-publisher), hours (regular, special, and more-hours), attributes, services, menu, media, social links, service area, any per-publisher overrides, which publishers it's connected to, its verification status, and when it was last edited. IMPORTANT: for a location migrated from the legacy Synup platform, the `id` on the returned location can differ from the id you passed in — both values work everywhere a location id is accepted (here, update_location, etc.), but they won't be equal as strings, so don't use them to test whether two responses refer to the same location. You don't pass an agency — it comes from your credentials, and a location from another agency is never returned. To look up or find a location id first, use list_locations.

Paramètres
locationIdstringobligatoire
The id of the location to fetch (get it from list_locations, or the id returned by create_location).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_location_by_id",
    "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/Emplacements/create_location

create_location

Writelocations:write

Create a new business location under a client. You must provide the client's id (find it with list_clients), the location's business name, its two-letter country code (ISO-3166-1 alpha-2), and SOME category — creation fails without one, even though the schema can't mark it required (pass at least categoryName, from list_categories, or publisherCategories.google, from list_publisher_categories). Everything else — address, phone, website, description — is optional but makes for a better listing. Categories come in two kinds: one general category (look it up with list_categories) and per-publisher categories for Google, Facebook, Apple, and Bing (look them up with list_publisher_categories); resolve those first and pass their ids. Once created, the location is automatically queued for submission to online directories and listings. If latitude/longitude are omitted they're derived from the address. Returns the new location's id. You don't pass an agency — it comes from your credentials.

Paramètres
clientIdstringobligatoire
The id of the client this location belongs to (required). Find it with list_clients.
namestringobligatoire
The location's business name (required).
countryIsostringobligatoire
The location's country as a two-letter ISO-3166-1 alpha-2 code, e.g. "US" or "GB" (required). Determines which directories the location can be listed in.
streetstringfacultatif
Street address, line 1.
street1stringfacultatif
Street address, line 2.
citystringfacultatif
City.
stateIsostringfacultatif
State or region, as an ISO code (e.g. "CA").
postalCodestringfacultatif
Postal or ZIP code.
phonestringfacultatif
Primary phone number.
additionalPhonesstring[]facultatif
Any additional phone numbers.
websitestringfacultatif
The location's website URL.
categoryIdstringfacultatif
General category id — look it up with list_categories.
categoryNamestringfacultatif
General category display name (from list_categories). At least this or publisherCategories.google is required — creation fails without some category.
publisherCategoriesobjectfacultatif
Per-publisher categories, one per publisher. Each is an { id, name } looked up with list_publisher_categories. At least publisherCategories.google or categoryName is required — creation fails without some category.
googleobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
facebookobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
appleobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
bingobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
additionalCategoriesobject[]facultatif
Up to 9 extra categories, each an { id?, name }.
idstringfacultatif
namestringfacultatif
Category name
descriptionstringfacultatif
A description of the business.
tagsstring[]facultatif
Internal tags for your own organization — not shown publicly.
latitudenumberfacultatif
Latitude. Derived automatically from the address if omitted.
longitudenumberfacultatif
Longitude. Derived automatically from the address if omitted.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_location",
    "arguments": {
      "clientId": "string",
      "name": "string",
      "countryIso": "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/Emplacements/update_location

update_location

Writelocations:write

Update an existing location's business details — including its categories (general, per-publisher primary, and additional), Google Business Profile attributes, and its service/product list. Identify the location by its id (the id returned by create_location). Pass only the fields you want to change — anything you omit is left as-is, and passing a field replaces its current value (pass an empty string to clear a text field, or the full new list to replace a list). The country can't be changed after a location is created. If you change the address without also passing coordinates, latitude/longitude are re-derived automatically. By default your change updates the shared details that every publisher inherits; to change a value for specific publishers only (e.g. a different description on Google vs. Facebook), pass applyToPublishers. Use specialHours for one-off date closures/hours (e.g. "mark this Sunday, Aug 2 2026, as closed") — any calendar date works, not just named holidays; use regularHours/moreHours for the standing weekly schedule and extra hour types. Saved changes are automatically queued to sync out to the connected directories and listings. Returns the updated location. You don't pass an agency — it comes from your credentials.

Paramètres
locationIdstringobligatoire
The id of the location to update (required) — the id returned by create_location.
namestringfacultatif
The location's business name.
descriptionstringfacultatif
The business description.
taglinestringfacultatif
A short tagline/slogan for the business.
storeCodestringfacultatif
Your internal store code / reference for this location.
logoUrlstringfacultatif
URL of the location's logo image.
languageCodestringfacultatif
The primary language of the listing, as a code (e.g. "en").
streetstringfacultatif
Street address, line 1.
street1stringfacultatif
Street address, line 2.
citystringfacultatif
City.
stateIsostringfacultatif
State or region, as an ISO code (e.g. "CA").
postalCodestringfacultatif
Postal or ZIP code.
latitudenumberfacultatif
Latitude. If you change the address without setting coordinates, they're re-derived automatically.
longitudenumberfacultatif
Longitude. If you change the address without setting coordinates, they're re-derived automatically.
phonestringfacultatif
Primary phone number.
additionalPhonesstring[]facultatif
Any additional phone numbers (replaces the existing list).
websitestringfacultatif
The location's website URL.
businessEmailstringfacultatif
A public contact email for the business.
categoryIdstringfacultatif
General category id — look it up with list_categories.
categoryNamestringfacultatif
General category display name (from list_categories).
publisherCategoriesobjectfacultatif
Per-publisher PRIMARY category, one per publisher — each an { id, name } looked up with list_publisher_categories. This is what a publisher actually shows and ranks on; the general category above does not override it. Google's id is a gcid (e.g. "gcid:cookie_shop"). Note the value is stored but only reaches the publisher once that publisher is connected for this location.
googleobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
facebookobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
appleobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
bingobjectfacultatif
idstringfacultatif
The publisher's own category id (from list_publisher_categories)
namestringfacultatif
The category's display name
additionalCategoriesobject[]facultatif
Up to 9 extra categories, each an { id?, name } (replaces the existing list). A bare name is accepted and its id is resolved from the category catalog where one matches.
idstringfacultatif
namestringfacultatif
Category name
attributesobjectfacultatif
Google Business Profile attributes, as a map of attribute id to value — e.g. { "attributes/is_owned_by_women": true, "attributes/wi_fi": "free" }. REPLACES the whole set, so read the current ones with get_location_by_id and pass back everything you want kept. Values are a boolean for yes/no attributes, a string for single-choice ones, or { setValues: [...], unsetValues: [...] } for multi-select. Google only accepts attributes its catalog allows for this location's category and country — unsupported ids are dropped when publishing rather than failing the update. Don't set social-link, menu-URL or payment attributes here; use socialLinks, menuUrl and the payment fields instead.
servicesobject[]facultatif
The services or products this location offers (replaces the existing list). Each entry is { name, description?, price?, currency?, googleServiceTypeId? }. price is a number in the listed currency (e.g. 12.5 with currency "USD"); omit both for services with no set price.
namestringfacultatif
Service or product name (required).
descriptionstringfacultatif
Short description — this is where long-tail keywords belong.
pricenumberfacultatif
Price as a number, in `currency`.
currencystringfacultatif
ISO 4217 currency code, e.g. "USD".
googleServiceTypeIdstringfacultatif
Google's service-type id, when it maps to one of Google's predefined services. There's currently no tool to look these up — omit it and the service is still saved, just without that Google-specific mapping.
ownerNamestringfacultatif
The owner's name.
menuUrlstringfacultatif
URL of the business's menu.
yearEstablishednumberfacultatif
The year the business was established (e.g. 2012).
tagsstring[]facultatif
Internal tags for your own organization — not shown publicly (replaces the existing list).
labelsstring[]facultatif
Internal labels for this location (replaces the existing list).
regularHoursobject[]facultatif
The weekly regular-hours schedule — replaces the existing schedule entirely. Pass one entry per day of the week (7 entries, one for each of MONDAY–SUNDAY).
day"MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY"facultatif
Day of week.
closedbooleanfacultatif
true if closed all day.
periodsobject[]facultatif
Open/close intervals for this day. Omit or leave empty when closed. For 24-hour, use a single period { open: "00:00", close: "24:00" }.
openstringfacultatif
Open time, 24h "HH:MM" (e.g. "09:00").
closestringfacultatif
Close time, 24h "HH:MM" — use "24:00" for midnight/end-of-day.
moreHoursobject[]facultatif
Extra hour types beyond regular hours (delivery, takeout, happy hour, etc.), replaces the existing list. Each entry is { hoursTypeId, label?, days }, where days is the same weekly-schedule shape as regularHours. Common hoursTypeId values: DELIVERY, TAKEOUT, PICKUP, DRIVE_THROUGH, BREAKFAST, LUNCH, DINNER, BRUNCH, HAPPY_HOUR, KITCHEN, ONLINE_SERVICE_HOURS, ACCESS, SENIOR_HOURS.
hoursTypeIdstringfacultatif
The more-hours type id, e.g. "DELIVERY".
labelstringfacultatif
Optional display label for this hours type.
daysobject[]facultatif
Weekly schedule for this hours type, same shape as regularHours.
day"MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY"facultatif
Day of week.
closedbooleanfacultatif
true if closed all day.
periodsobject[]facultatif
Open/close intervals for this day. Omit or leave empty when closed. For 24-hour, use a single period { open: "00:00", close: "24:00" }.
openstringfacultatif
Open time, 24h "HH:MM" (e.g. "09:00").
closestringfacultatif
Close time, 24h "HH:MM" — use "24:00" for midnight/end-of-day.
specialHoursobject[]facultatif
One-off date overrides — holiday closures or a single day's special hours — replaces the existing list. Each entry is { date, closed, open?, close? } where date is any calendar date as "YYYY-MM-DD" (not limited to named holidays — use this for requests like "mark this Sunday, Aug 2 2026, as closed"). When closed is false, pass open/close as 24h "HH:MM".
datestringfacultatif
The date, as "YYYY-MM-DD".
closedbooleanfacultatif
true if closed all day on this date.
openstringfacultatif
Open time, 24h "HH:MM", when not closed.
closestringfacultatif
Close time, 24h "HH:MM", when not closed.
applyToPublishers("google" | "facebook" | "apple" | "bing")[]facultatif
Advanced: change these values for specific publishers only instead of the shared default. Allowed values: "google", "facebook", "apple", "bing". Omit to update the shared details that every publisher inherits.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_location",
    "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/Emplacements/get_location_media

get_location_media

Readlocations:read

Get all of a single location's photos, grouped by category (COVER, LOGO, INTERIOR, etc.), plus the logo URL and a count summary. Use this to see what imagery a location currently has before uploading or deleting. Identify the location by its id (from list_locations or create_location). You don't pass an agency — it comes from your credentials.

Paramètres
locationIdstringobligatoire
The id of the location whose media you want.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_location_media",
    "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/Emplacements/list_location_media

list_location_media

Readlocations:read

List locations together with their photos, newest first. Same filters as list_locations (client, status, tags, categories, verification, search, created range) — use it to answer things like "which locations have no photos?" or "show the media for this client's active locations". Each row has the location's id, name, logo, full media grouped by category, and a photo count. Returns up to 100 per page with a `nextCursor` for more. You don't pass an agency — it comes from your credentials.

Paramètres
clientIdstringfacultatif
Limit to a single client's locations. Omit for all of the agency's locations.
searchstringfacultatif
Free-text search over name, street address, city, or phone.
status"all" | "active" | "archived" | "archival_pending" | "verification_pending" | "unapproved" | "requires_action"facultatif
A single status bucket: "all", "active", "archived", "archival_pending", "verification_pending", "unapproved", "requires_action".
tagsstring[]facultatif
Internal tags — matches a location that has any of these.
categoriesstring[]facultatif
Category names — matches a location whose general or Google category is any of these.
verification("verified" | "pending" | "unverified" | "unknown")[]facultatif
Google verification: "verified", "pending", "unverified", "unknown".
createdAfterstringfacultatif
Only locations created on or after this date (e.g. "2026-01-01").
createdBeforestringfacultatif
Only locations created on or before this date.
cursorstringfacultatif
Leave empty for the first page; pass the previous `nextCursor` for the next page.
limitnumberfacultatif
How many locations per page (1–100, default 100).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_location_media",
    "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/Emplacements/upload_location_media

upload_location_media

Writelocations:write

Add one or more photos to a location, in a given category. Provide each image as a public https URL (we fetch and re-host it) or as base64 bytes. Only images are supported (jpeg, png, gif, webp), max 5 MB each. The LOGO category holds a single logo — uploading to LOGO replaces the current logo. All other categories append. Saved photos are automatically queued to publish to Google. You don't pass an agency — it comes from your credentials.

Paramètres
locationIdstringobligatoire
The id of the location to add photos to.
category"COVER" | "PROFILE" | "LOGO" | "EXTERIOR" | "INTERIOR" | "PRODUCT" | "FOOD_AND_DRINK" | "MENU" | "AT_WORK" | "TEAMS" | "ROOMS" | "COMMON_AREA" | "ADDITIONAL"obligatoire
The photo category. Allowed values: COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, PRODUCT, FOOD_AND_DRINK, MENU, AT_WORK, TEAMS, ROOMS, COMMON_AREA, ADDITIONAL.
imagesobject[]obligatoire
One or more images to add. Each needs a url or base64.
urlstringfacultatif
A public https URL to the image — it is fetched and re-hosted by us.
base64stringfacultatif
The image bytes as base64 (a data: URL prefix is accepted). Use this instead of url when you have the bytes.
labelstringfacultatif
Optional caption/label for the photo.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_location_media",
    "arguments": {
      "locationId": "string",
      "category": "COVER",
      "images": [
        {}
      ]
    }
  }
}
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/Emplacements/delete_location_media

delete_location_media

Writelocations:write

Remove photos from a location. Pass `urls` to delete specific photos, or `category` to clear a whole category. The logo cannot be deleted — upload a new LOGO image to replace it instead. This removes the photos in the app; note it does not delete them from Google. You don't pass an agency — it comes from your credentials.

Paramètres
locationIdstringobligatoire
The id of the location to remove photos from.
urlsstring[]facultatif
Specific photo URLs to remove (from get_location_media).
category"COVER" | "PROFILE" | "EXTERIOR" | "INTERIOR" | "PRODUCT" | "FOOD_AND_DRINK" | "MENU" | "AT_WORK" | "TEAMS" | "ROOMS" | "COMMON_AREA" | "ADDITIONAL"facultatif
Clear every photo in this category. Allowed values: COVER, PROFILE, EXTERIOR, INTERIOR, PRODUCT, FOOD_AND_DRINK, MENU, AT_WORK, TEAMS, ROOMS, COMMON_AREA, ADDITIONAL.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_location_media",
    "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/Emplacements/archive_location

archive_location

Writelocations:write

SCHEDULE a location to be archived at the end of the current billing period, or restore an archived one. Archiving is deferred, not immediate: the location stays fully active — and still counts against the plan's location limit — until the period the customer has already paid for ends, then it is archived automatically and stops being billed. Because the slot is still occupied, scheduling does NOT free room to add another location until after it archives. Pass archived: false to restore an already-archived location. Use cancel_scheduled_archive to call off a pending archival.

Paramètres
locationIdstringobligatoire
The id of the location to schedule/restore (required).
archivedbooleanobligatoire
true to schedule archival at period end, false to restore (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "archive_location",
    "arguments": {
      "locationId": "string",
      "archived": true
    }
  }
}
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/Emplacements/cancel_scheduled_archive

cancel_scheduled_archive

Writelocations:write

Call off a pending archival, so a location scheduled to archive at the end of the billing period carries on as normal. Only works while the archival is still pending — once the period has ended and the location is actually archived, use archive_location with archived: false to restore it instead.

Paramètres
locationIdstringobligatoire
The id of the location whose pending archival should be cancelled (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cancel_scheduled_archive",
    "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/Emplacements/publish_location

publish_location

Writelocations:write

Push a location's current business details out to its connected Google Business Profile. Use this after update_location if you want to force an immediate sync rather than waiting for the automatic queue. Idempotent — safe to call repeatedly. Returns the push result including any per-field errors Google reported — or, if the location has no Google account connected, `{ skipped: "<reason>" }` instead (nothing to push to, not an error).

Paramètres
locationIdstringobligatoire
The id of the location to publish (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "publish_location",
    "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/Emplacements/bulk_update_locations

bulk_update_locations

Writelocations:write

Apply the same profile patch, publisher overrides, and/or tag add/remove to many locations at once, optionally publishing each to Google afterward. Useful for changes like "add the tag 'holiday-hours-2026' to these 40 locations" or "turn off online ordering everywhere in this client". Capped at 100 locations per call — extra ids beyond that are silently skipped (check the returned `skipped` count). Tags are merged per-location (added/removed against each location's existing tags), never wholesale replaced. Returns a per-location result so partial failures are visible.

Paramètres
locationIdsstring[]obligatoire
The locations to update (required, up to 100).
patchobjectfacultatif
Base profile fields to set on every location, same shape as update_location's fields (e.g. { description, phone, tags }), including hours (regularHours, moreHours, specialHours — e.g. to close every location in a client on the same date) and services. Omit fields you don't want to change. NOTE: `attributes` here must be the stored array form `[{ id, value }]`, NOT update_location's { id: value } map — this patch is passed through as given. For a change to ONE location prefer update_location, which validates and converts each field.
overridesobjectfacultatif
Per-publisher overrides to apply to every location, keyed by publisher (google/facebook/apple/bing), each an object of profile fields.
addTagsstring[]facultatif
Internal tags to add to every location (merged with each location's existing tags).
removeTagsstring[]facultatif
Internal tags to remove from every location.
publishbooleanfacultatif
If true, push each updated location to Google immediately afterward.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "bulk_update_locations",
    "arguments": {
      "locationIds": [
        "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/Emplacements/get_location_verification_status

get_location_verification_status

Readlocations:read

Check a location's Google verification status and available verification methods. Returns connected:false if no Google account is linked. When connected, returns the current verification state (verified / pending / status) and the verification options Google currently offers for this listing (email, phone call, SMS, postcard, etc.) — use these to choose a method for verify_location.

Paramètres
locationIdstringobligatoire
The id of the location to check (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_location_verification_status",
    "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/Emplacements/verify_location

verify_location

Writelocations:write

Start or complete Google verification for a location. To start: pass method (from get_location_verification_status's options — e.g. "EMAIL", "PHONE_CALL", "SMS", "ADDRESS") plus whichever of emailAddress/phoneNumber/mailerContact that method needs. To complete a pending verification once the PIN arrives: pass pin instead. The location must already be connected to a Google account (get_location_verification_status returns connected:false otherwise).

Paramètres
locationIdstringobligatoire
The id of the location to verify (required).
methodstringfacultatif
Verification method to start (from get_location_verification_status's options).
emailAddressstringfacultatif
Email address to send the verification to, for method EMAIL.
phoneNumberstringfacultatif
Phone number to call/text, for method PHONE_CALL or SMS.
mailerContactstringfacultatif
Contact name for a mailed postcard, for method ADDRESS.
pinstringfacultatif
The PIN received via the chosen method — pass this alone to complete a pending verification.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "verify_location",
    "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.