Skip to main content
Glama

Cancel Booking

cancel_booking
Idempotent

Prepare a hotel cancellation for completion on a secure 1Stay page. Verifies the guest's first name, last name, and hotel confirmation number, then returns the hotel policy classification and any cancellation deadline recorded with the reservation, plus a short-lived cancellation_url. 1Stay does not estimate a refund, credit, penalty, or hotel charge. Calling this tool never cancels the reservation. The guest must review the terms and select Cancel reservation on the secure page. A later verified booking-status lookup reporting status cancelled is the authoritative confirmation that the reservation was cancelled.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
last_nameYesGuest last name on the reservation
first_nameYesGuest first name on the reservation
confirmation_numberYesHotel confirmation number

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYes
bookingNo
messageYes
cancellationNo
cancellation_urlNo
cancellation_url_expires_atNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / booking / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / cancellation / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/properties/booking"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / confirmation_number
      Removed value: -{
      -  "type": "string"
      -}
  2. Changed5 schema fields changed
    • changedInput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / properties / booking / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / cancellation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "propertyNames": {
      -      "type": "string"
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/properties/booking"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed5 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / booking / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / cancellation / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/properties/booking"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. Changed6 schema fields changed
    • removedInput schema / properties / cancellation_token
      Removed value: -{
      -  "description": "Absent for the cancellation-terms preview; present for execution. Single-use and expires in approximately 10 minutes.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / cancellation_token
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / cancellation_token_expires_at
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / cancellation_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / cancellation_url_expires_at
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "CONFIRMATION_REQUIRED",
      -  "cancelled"
      -]New value: +[
      +  "ACTION_REQUIRED",
      +  "already_cancelled"
      +]
  5. Changed2 schema fields changed
    • changedInput schema / properties / cancellation_token / description
      Previous value: -"Leave empty on the first call to preview the cancellation terms (penalty, refund, deadline) and receive a cancellation_token. Call again with that token to actually cancel. Single-use; expires in ~10 minutes."New value: +"Absent for the cancellation-terms preview; present for execution. Single-use and expires in approximately 10 minutes."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "booking": {
      +      "additionalProperties": {},
      +      "type": "object"
      +    },
      +    "cancellation": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/properties/booking"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "cancellation_token": {
      +      "type": "string"
      +    },
      +    "cancellation_token_expires_at": {
      +      "type": "string"
      +    },
      +    "confirmation_number": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "enum": [
      +        "CONFIRMATION_REQUIRED",
      +        "cancelled"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "message"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / cancellation_token
      Added value: +{
      +  "description": "Leave empty on the first call to preview the cancellation terms (penalty, refund, deadline) and receive a cancellation_token. Call again with that token to actually cancel. Single-use; expires in ~10 minutes.",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-destructive and idempotent behavior, but the description adds valuable context: it returns a short-lived cancellation URL, does not estimate any refund/penalty, and never cancels the reservation directly. It also clarifies that the guest must manually confirm on the secure page. This goes beyond what annotations state, though it could mention rate limits or security specifics.

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?

The description is a single, information-dense paragraph of six sentences, each serving a purpose: purpose, verification and output, caveat about no estimates, explicit statement that it never cancels, guest action required, and authoritative confirmation. There is no redundancy, though it could be slightly more scannable with bullet points, but it earns its length.

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

Completeness5/5

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

The tool is a preparatory, non-destructive step, and the description covers all necessary context: the verification process, the output (policy, deadline, URL), the non-estimation of charges, the non-cancellation behavior, the required guest action, and how to confirm actual cancellation via a later status lookup. With an output schema present, return values need no further explanation.

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?

The input schema already covers 100% of the parameter descriptions (first_name, last_name, confirmation_number). The description only re-echoes these fields when saying it 'verifies' them, adding no new semantics or formatting rules. Per the rubric, a baseline of 3 is appropriate when the schema fully documents parameters.

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?

The description opens with a specific verb and resource: 'Prepare a hotel cancellation for completion on a secure 1Stay page.' It clearly distinguishes the tool from siblings like book_hotel or lookup_booking by focusing on cancellation preparation, and it explicitly states it never actually cancels, which avoids confusion with a cancellation-confirmation tool.

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?

The description gives clear context for when this tool should be used: to initiate a cancellation flow by generating a cancellation URL. It implicitly contrasts with a 'booking-status lookup' as the authoritative confirmation step, guiding the agent to use lookup tools for final status. However, it does not explicitly name a sibling tool as an alternative, which would strengthen the guidance.

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.