Skip to main content
Glama

Edit a bookable service

update_booking_service
DestructiveIdempotent

Change a service (serviceId from get_booking_settings); only the fields you pass change. charge "" stops charging online; active false hides it without deleting it. partyMode "seats" (activities) / "tables" (restaurants) / "none", with partyMin/partyMax people per booking; slotStepMin null goes back to the workspace step. Changes are public at once: confirm prices and charges with the user.

Input Schema

NameRequiredDescriptionDefault
nameNoUp to 80 characters.
priceNoPrice as shown to customers, free text up to 40 characters. Empty removes it.
activeNofalse hides it from booking without deleting it.
chargeNoAmount charged online when booking, e.g. "25" or "19.99", in the bookings currency. Needs Stripe connected. "" stops charging. Omit to leave it as is.
categoryNoGroups services on the public page. Up to 40 characters.
imageUrlNoPublic http(s) URL of a photo for the public page.
partyMaxNoMost people per booking with seats/tables (partyMin-500). Above 1, customers are asked how many.
partyMinNoFewest people per booking with seats/tables (1-500). Default 1.
partyModeNo"none" normal appointments (one booking = one spot); "seats" activities, tours, classes, tastings (a booking of N people takes N spots; the charge is per person); "tables" restaurants (each resource is a table type, its spots = how many tables of that type; a booking takes one table that fits the party).
serviceIdYesThe service, from get_booking_settings.
videoLinkNohttps link of the business's own video room, with videoMode "link".
videoModeNo"none" in person, "meet" a Google Meet link per booking, "link" the business's own video room (videoLink).
descriptionNoUp to 500 characters.
durationMinNoMinutes, 5-720.
resourceIdsNoPeople/rooms that do it (ids from get_booking_settings). [] = anyone.
slotStepMinNoOwn slot step for this service in minutes (10, 15, 20, 30, 45, 60, 75, 90, 105, 120, 150, 180, 240), e.g. 90 for restaurant sittings. null = the workspace rule.
workspaceIdNoDefaults to the workspace this connection is scoped to.
bufferAfterMinNoFree minutes kept after (cleaning, travel), 0-240.
idempotencyKeyNoOptional. A unique id for this action (16-128 chars: letters, digits, _ : . -). If you are unsure whether a call went through (timeout, network error), repeat it with the SAME idempotencyKey and the same arguments: you get the original result and nothing is done twice.
bufferBeforeMinNoFree minutes kept before, 0-240.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / partyMax
      Added value: +{
      +  "description": "Most people per booking with seats/tables (partyMin-500). Above 1, customers are asked how many.",
      +  "type": "number"
      +}
    • addedInput schema / properties / partyMin
      Added value: +{
      +  "description": "Fewest people per booking with seats/tables (1-500). Default 1.",
      +  "type": "number"
      +}
    • addedInput schema / properties / partyMode
      Added value: +{
      +  "description": "\"none\" normal appointments (one booking = one spot); \"seats\" activities, tours, classes, tastings (a booking of N people takes N spots; the charge is per person); \"tables\" restaurants (each resource is a table type, its spots = how many tables of that type; a booking takes one table that fits the party).",
      +  "enum": [
      +    "none",
      +    "seats",
      +    "tables"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / slotStepMin
      Added value: +{
      +  "description": "Own slot step for this service in minutes (10, 15, 20, 30, 45, 60, 75, 90, 105, 120, 150, 180, 240), e.g. 90 for restaurant sittings. null = the workspace rule.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  2. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true; the description adds genuinely new context beyond them – that changes are published immediately and that price/charge values should be user-confirmed. It also documents per-field side effects (charge "" stops online charging, active false hides rather than deletes). It stops short of saying what happens to already-booked appointments, which is the key unknown for a destructive edit.

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?

Three dense sentences, front-loaded with the action and the serviceId source, with the safety warning placed last for emphasis. It is efficiently sized, though the middle sentence packs several field semantics into one clause chain that is slightly harder to parse.

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

Completeness4/5

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

For a 20-parameter mutation with no output schema and rich annotations, the description covers partial-update semantics, the public-visibility consequence, and the enum-driven fields. What remains uncovered – effect on existing bookings, behavior on an invalid serviceId – is minor but not fully addressed.

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?

With 100% schema description coverage the schema already explains every parameter, including the charge/partyMode/slotStepMin semantics the description restates. The description's marginal value is limited to pairing partyMode with partyMin/partyMax and hinting that slotStepMin null reverts to the workspace rule, which the schema also states. Baseline 3 applies when structured fields do the heavy lifting.

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

Purpose5/5

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

States a specific verb (change) and resource (a bookable service) and immediately identifies where serviceId comes from (get_booking_settings). The resource noun distinguishes it from update_booking_settings and update_booking_resource, and the partial-update clause signals how it differs from create_booking_service.

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

Usage Guidelines4/5

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

Clear on usage context: only fields passed change, serviceId comes from get_booking_settings, and changes go public immediately so prices/charges should be confirmed with the user. It does not explicitly point at alternatives (delete_booking_service, update_booking_settings), so the routing is implied rather than stated.

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