Skip to main content
Glama

Update Location

updateLocation
DestructiveIdempotent

Update Location

Update display, address, internal notes, and reply settings for a project location.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "updateLocation"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesUnique numeric identifier for this resource.
cityNoCity for the address.
nameNoInternal location name. Accepts a non-empty string. Accepts a string from 3 to 100 characters.
slugNoURL-friendly location identifier. Lowercase letters, digits, and hyphens. Accepts a string from 3 to 100 characters.
notesNoInternal notes about the location. Accepts at most 5000 characters.
stateNoState, province, or region for the address.
address1NoPrimary street address line.
address2NoSecondary street address line, such as suite or apartment.
store_codeNoInternal store identifier for this location.
has_repliesNoWhen false, public replies are disabled for reviews at this location.
postal_codeNoPostal or ZIP code for the address.
display_nameNoPublic-facing location name shown to customers. Accepts a non-empty string. Accepts a string from 3 to 100 characters.

Output Schema

NameRequiredDescriptionDefault
codeNoShort code or application-level status code for this resource.
dataNoResponse payload for the request.
successNoIndicates whether the request completed successfully.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / display_name / description
      Previous value: -"Public-facing location name shown to customers. Accepts a non-empty string."New value: +"Public-facing location name shown to customers. Accepts a non-empty string. Accepts a string from 3 to 100 characters."
    • addedInput schema / properties / has_replies
      Added value: +{
      +  "description": "When false, public replies are disabled for reviews at this location.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / name / description
      Previous value: -"Internal location name. Accepts a non-empty string."New value: +"Internal location name. Accepts a non-empty string. Accepts a string from 3 to 100 characters."
    • addedInput schema / properties / notes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Internal notes about the location. Accepts at most 5000 characters."
      +}
    • changedInput schema / properties / slug / description
      Previous value: -"URL-friendly location identifier. Lowercase letters, digits, and hyphens."New value: +"URL-friendly location identifier. Lowercase letters, digits, and hyphens. Accepts a string from 3 to 100 characters."
    • changedOutput schema / properties / data / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "address": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Address for this resource."
      -      },
      -      "address1": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Primary street address line."
      -      },
      -      "address2": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Secondary street address line, such as suite or apartment."
      -      },
      -      "city": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "City for the address."
      -      },
      -      "display_name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Public display name for this resource."
      -      },
      -      "id": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Unique numeric identifier for this resource."
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Display name for this resource."
      -      },
      -      "postal_code": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Postal or ZIP code for the address."
      -      },
      -      "project_id": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Unique numeric identifier for the project."
      -      },
      -      "slug": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "URL-friendly identifier for this resource."
      -      },
      -      "state": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "State, province, or region for the address."
      -      },
      -      "store_code": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Internal store identifier for this location."
      -      },
      -      "title": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Title or headline for the resource."
      -      },
      -      "uuid": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Stable UUID for this resource."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "address": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Address for this resource."
      +      },
      +      "address1": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Primary street address line."
      +      },
      +      "address2": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Secondary street address line, such as suite or apartment."
      +      },
      +      "city": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "City for the address."
      +      },
      +      "display_name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Public display name for this resource."
      +      },
      +      "has_replies": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When false, public replies are disabled for reviews at this location."
      +      },
      +      "id": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Unique numeric identifier for this resource."
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Display name for this resource."
      +      },
      +      "notes": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Internal notes about the location."
      +      },
      +      "postal_code": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Postal or ZIP code for the address."
      +      },
      +      "project_id": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Unique numeric identifier for the project."
      +      },
      +      "reply_instructions": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Extra instructions for AI replies to reviews at this location."
      +      },
      +      "review_instructions": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Extra instructions for AI review suggestions at this location."
      +      },
      +      "slug": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "URL-friendly identifier for this resource."
      +      },
      +      "state": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "State, province, or region for the address."
      +      },
      +      "store_code": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Internal store identifier for this location."
      +      },
      +      "title": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Title or headline for the resource."
      +      },
      +      "uuid": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Stable UUID for this resource."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. What the description fails to add is the behavior that matters most for a destructive update with 12 optional fields: whether omitted fields are left untouched or cleared, and whether changing the slug breaks existing URLs. Without that, the description adds nothing beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines with the affected field groups front-loaded and no filler. The only waste is restating the tool title ('Update Location') before the substantive sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema documents all parameters. However, for a 12-parameter destructive mutation, the description omits the partial-vs-full update semantics and any permission or side-effect context, which are the gaps an agent would actually need filled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 12 parameters already carries its own constraint text (length ranges, nullability, formats). The description only groups them into display/address/notes/replies categories, which adds light organizational meaning but no syntax or semantic detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (update) and resource (project location) and enumerates the affected field groups: display, address, internal notes, and reply settings. It does not distinguish this tool from similarly named siblings such as updateBranding, updateSettings, or updateReviewLocation, leaving the agent to infer boundaries from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g., needing an existing location id or permissions), and no explicit exclusions pointing to alternatives like createLocation or updateBranding. The agent must infer usage entirely from the name and the field list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources