MCPMCP Tools/Locations/create_location

create_location

Writelocations:write

Create a new business location — or, with kind="website", a website entity — under a client or on its own. Pass the client's id (find it with list_clients) to add it to that client, or omit clientId to add it without a client. You must provide 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.

Parameters
clientIdstringoptional
The id of the client this location belongs to (find it with list_clients). Omit to add the location without a client. Accepts the database ID or public cli- ID. IDs must belong to the authenticated agency and permitted client.
kind"location" | "website"optional
"location" (default) is a physical business listing. "website" is a website entity — a brand's site tracked for reviews, SEO, AEO and social — created from a name and `website` URL alone: no address, category or country is needed, it isn't a billable location, and it is only available to workspaces with website entities enabled.
namestringrequired
The location's business name (required).
countryIsostringoptional
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.
streetstringoptional
Street address, line 1.
street1stringoptional
Street address, line 2.
citystringoptional
City.
stateIsostringoptional
State or region, as an ISO code (e.g. "CA").
postalCodestringoptional
Postal or ZIP code.
serviceAreaobjectoptional
Service-area settings — for a business that serves customers at their location. businessType CUSTOMER_LOCATION_ONLY hides the street address on Google (a pure service-area business; the street is never sent there); CUSTOMER_AND_BUSINESS_LOCATION shows the address plus the areas served. places is up to 20 areas, each { name, placeId? }; Google only accepts places with their Google Place ID, so pass placeId for every place you want on Google.
businessType"CUSTOMER_LOCATION_ONLY" | "CUSTOMER_AND_BUSINESS_LOCATION"optional
Service-area type.
placesobject[]optional
Areas served (max 20).
namestringoptional
Place name, e.g. "Austin, TX, USA".
placeIdstringoptional
Google Place ID of the area.
publisherServiceAreasobjectoptional
A different service area per publisher, stored as that publisher's own value; a publisher left out uses serviceArea. Each key is a serviceArea object (same shape).
googleobjectoptional
Service-area settings — for a business that serves customers at their location. businessType CUSTOMER_LOCATION_ONLY hides the street address on Google (a pure service-area business; the street is never sent there); CUSTOMER_AND_BUSINESS_LOCATION shows the address plus the areas served. places is up to 20 areas, each { name, placeId? }; Google only accepts places with their Google Place ID, so pass placeId for every place you want on Google.
businessType"CUSTOMER_LOCATION_ONLY" | "CUSTOMER_AND_BUSINESS_LOCATION"optional
Service-area type.
placesobject[]optional
Areas served (max 20).
namestringoptional
Place name, e.g. "Austin, TX, USA".
placeIdstringoptional
Google Place ID of the area.
facebookobjectoptional
Service-area settings — for a business that serves customers at their location. businessType CUSTOMER_LOCATION_ONLY hides the street address on Google (a pure service-area business; the street is never sent there); CUSTOMER_AND_BUSINESS_LOCATION shows the address plus the areas served. places is up to 20 areas, each { name, placeId? }; Google only accepts places with their Google Place ID, so pass placeId for every place you want on Google.
businessType"CUSTOMER_LOCATION_ONLY" | "CUSTOMER_AND_BUSINESS_LOCATION"optional
Service-area type.
placesobject[]optional
Areas served (max 20).
namestringoptional
Place name, e.g. "Austin, TX, USA".
placeIdstringoptional
Google Place ID of the area.
appleobjectoptional
Service-area settings — for a business that serves customers at their location. businessType CUSTOMER_LOCATION_ONLY hides the street address on Google (a pure service-area business; the street is never sent there); CUSTOMER_AND_BUSINESS_LOCATION shows the address plus the areas served. places is up to 20 areas, each { name, placeId? }; Google only accepts places with their Google Place ID, so pass placeId for every place you want on Google.
businessType"CUSTOMER_LOCATION_ONLY" | "CUSTOMER_AND_BUSINESS_LOCATION"optional
Service-area type.
placesobject[]optional
Areas served (max 20).
namestringoptional
Place name, e.g. "Austin, TX, USA".
placeIdstringoptional
Google Place ID of the area.
bingobjectoptional
Service-area settings — for a business that serves customers at their location. businessType CUSTOMER_LOCATION_ONLY hides the street address on Google (a pure service-area business; the street is never sent there); CUSTOMER_AND_BUSINESS_LOCATION shows the address plus the areas served. places is up to 20 areas, each { name, placeId? }; Google only accepts places with their Google Place ID, so pass placeId for every place you want on Google.
businessType"CUSTOMER_LOCATION_ONLY" | "CUSTOMER_AND_BUSINESS_LOCATION"optional
Service-area type.
placesobject[]optional
Areas served (max 20).
namestringoptional
Place name, e.g. "Austin, TX, USA".
placeIdstringoptional
Google Place ID of the area.
socialLinksobjectoptional
Social profile URLs. Only the keys you pass change; pass null for a key to clear it. Published to Google as url_* attributes and to Bing/Apple's social fields — don't send those as attributes.
facebookoptional
Facebook page URL.
instagramoptional
Instagram URL.
twitteroptional
X/Twitter URL.
linkedinoptional
LinkedIn URL.
youtubeoptional
YouTube URL.
tiktokoptional
TikTok URL.
pinterestoptional
Pinterest URL.
paymentMethodsstring[]optional
Payment methods accepted, e.g. "Visa", "American Express", "Cash only" (replaces the existing list; [] clears it). Published to Google as pay_* attributes, and to Apple and Bing.
phonestringoptional
Primary phone number.
additionalPhonesstring[]optional
Any additional phone numbers.
websitestringoptional
The location's website URL.
categoryIdstringoptional
General category id — look it up with list_categories.
categoryNamestringoptional
General category display name (from list_categories). At least this or publisherCategories.google is required — creation fails without some category.
publisherCategoriesobjectoptional
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.
googleobjectoptional
idstringoptional
The publisher's own category id (from list_publisher_categories)
namestringoptional
The category's display name
facebookobjectoptional
idstringoptional
The publisher's own category id (from list_publisher_categories)
namestringoptional
The category's display name
appleobjectoptional
idstringoptional
The publisher's own category id (from list_publisher_categories)
namestringoptional
The category's display name
bingobjectoptional
idstringoptional
The publisher's own category id (from list_publisher_categories)
namestringoptional
The category's display name
additionalCategoriesobject[]optional
Up to 9 extra categories, each an { id?, name }.
idstringoptional
namestringoptional
Category name
descriptionstringoptional
A description of the business.
tagsstring[]optional
Internal tags for your own organization — not shown publicly.
customFieldsobjectoptional
Values for the agency's custom location fields, as { fieldKey: value } (keys from list_custom_field_definitions; values are validated against each field's type). Same shape set_custom_field_value takes one at a time.
latitudenumberoptional
Latitude. Derived automatically from the address if omitted.
longitudenumberoptional
Longitude. Derived automatically from the address if omitted.
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_location",
    "arguments": {
      "name": "string"
    }
  }
}
Example response
{
  "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.