# reschedule_booking

Preview or apply a replacement for a confirmed future booking. First call mode=preview with new params. Show the quote and priceDifference to the customer. After acceptance, call mode=apply with the returned optionId, acceptedTotalMinor, acceptedCurrency and a new idempotencyKey. Original booking is preserved on failure. Changes requiring a deposit adjustment/refund must be arranged with the business.

Canonical: https://bookwise.live/docs/tools/reschedule_booking

Version: 1.1.0
Scope: Directory + business
Authentication: As specified in parameters
Category: Booking management

## Parameters

- **bookingId** (string; required): Parent booking ID from create_hold (holdId), confirm_booking, or list_bookings. Never pass a child allocation ID.
- **accessToken** (string; required): Secret accessToken returned after verification/confirmation or access recovery. Never invent or expose it publicly.
- **params** (object; required): Booking parameters from get_business.bookingParamsSchema. Hotel: checkIn/checkOut YYYY-MM-DD, adults. Restaurant: date, time HH:mm, partySize. Salon: offeringId, date, optional time/staffId. Dates and times use the business timezone.
- **offeringId** (string; optional): Offering ID from list_offerings, belonging to this business.
- **optionId** (string; optional): Exact opaque optionId returned by an availability call or reschedule preview; pass unchanged.
- **mode** ("preview" | "apply"; optional): preview reads the replacement and price; apply changes it only after customer acceptance.
- **acceptedTotalMinor** (integer; optional): Required for apply: exact quote.total.amountMinor from preview, in minor currency units.
- **acceptedCurrency** (string; optional): Required for apply: quote.total.currency from preview, e.g. LKR.
- **idempotencyKey** (string; optional): Generate a UUID per intended mutation. Reuse the same key and identical parameters only when retrying that action.

## Example MCP call

Replace placeholders with returned IDs and saved credentials. Example dates must be replaced with the customer's future dates.

```json
{
  "name": "reschedule_booking",
  "arguments": {
    "bookingId": "<bookingId>",
    "accessToken": "<saved-access-token>",
    "params": {
      "checkIn": "2026-11-14",
      "checkOut": "2026-11-16",
      "adults": 2
    },
    "mode": "preview"
  }
}
```

## Input JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "bookingId": {
      "type": "string",
      "minLength": 1,
      "description": "Parent booking ID from create_hold (holdId), confirm_booking, or list_bookings. Never pass a child allocation ID."
    },
    "accessToken": {
      "type": "string",
      "minLength": 10,
      "description": "Secret accessToken returned after verification/confirmation or access recovery. Never invent or expose it publicly."
    },
    "params": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Booking parameters from get_business.bookingParamsSchema. Hotel: checkIn/checkOut YYYY-MM-DD, adults. Restaurant: date, time HH:mm, partySize. Salon: offeringId, date, optional time/staffId. Dates and times use the business timezone."
    },
    "offeringId": {
      "type": "string",
      "minLength": 1,
      "description": "Offering ID from list_offerings, belonging to this business."
    },
    "optionId": {
      "type": "string",
      "minLength": 1,
      "description": "Exact opaque optionId returned by an availability call or reschedule preview; pass unchanged."
    },
    "mode": {
      "default": "preview",
      "description": "preview reads the replacement and price; apply changes it only after customer acceptance.",
      "type": "string",
      "enum": [
        "preview",
        "apply"
      ]
    },
    "acceptedTotalMinor": {
      "description": "Required for apply: exact quote.total.amountMinor from preview, in minor currency units.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "acceptedCurrency": {
      "description": "Required for apply: quote.total.currency from preview, e.g. LKR.",
      "type": "string",
      "minLength": 3,
      "maxLength": 3
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200,
      "description": "Generate a UUID per intended mutation. Reuse the same key and identical parameters only when retrying that action."
    }
  },
  "required": [
    "bookingId",
    "accessToken",
    "params"
  ]
}
```

## Output JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "bookingId": {
      "type": "string"
    },
    "applied": {
      "type": "boolean"
    },
    "option": {
      "type": "object",
      "properties": {
        "optionId": {
          "type": "string"
        },
        "offeringId": {
          "type": "string"
        },
        "offeringName": {
          "type": "string"
        },
        "start": {
          "type": "string"
        },
        "end": {
          "type": "string"
        },
        "params": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "total": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "priceIsFrom": {
          "type": "boolean"
        },
        "bookingPageUrl": {
          "type": "string"
        }
      },
      "required": [
        "optionId",
        "offeringId",
        "offeringName",
        "start",
        "end",
        "params",
        "total",
        "priceIsFrom",
        "bookingPageUrl"
      ],
      "additionalProperties": false
    },
    "quote": {
      "type": "object",
      "properties": {
        "currency": {
          "type": "string"
        },
        "lines": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "amountMinor": {
                "type": "number"
              },
              "formatted": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              }
            },
            "required": [
              "label",
              "amountMinor",
              "formatted",
              "kind"
            ],
            "additionalProperties": false
          }
        },
        "subtotal": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "fees": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "taxes": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "total": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "depositDue": {
          "type": "object",
          "properties": {
            "amountMinor": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "currency": {
              "type": "string"
            },
            "formatted": {
              "type": "string"
            }
          },
          "required": [
            "amountMinor",
            "currency",
            "formatted"
          ],
          "additionalProperties": false
        },
        "priceIsFrom": {
          "type": "boolean"
        },
        "units": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "cancellation": {
          "type": "object",
          "properties": {
            "freeUntil": {
              "type": [
                "string",
                "null"
              ]
            },
            "summary": {
              "type": "string"
            }
          },
          "required": [
            "freeUntil",
            "summary"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "currency",
        "lines",
        "subtotal",
        "fees",
        "taxes",
        "total",
        "depositDue",
        "priceIsFrom",
        "units",
        "cancellation"
      ],
      "additionalProperties": false
    },
    "priceDifference": {
      "type": "object",
      "properties": {
        "amountMinor": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "currency": {
          "type": "string"
        },
        "formatted": {
          "type": "string"
        }
      },
      "required": [
        "amountMinor",
        "currency",
        "formatted"
      ],
      "additionalProperties": false
    },
    "nextStep": {
      "type": "string"
    }
  },
  "required": [
    "bookingId",
    "applied",
    "option",
    "quote",
    "priceDifference",
    "nextStep"
  ],
  "additionalProperties": false
}
```

## Annotations

```json
{
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
```

On failure, inspect isError and content; domain errors may include structuredContent.code, retryable, details.fields or alternatives. Annotations are behavior hints, not authorization.
