Skip to main content
Glama

Read this booking and offer timeline

get_booking_history
Read-onlyIdempotent

Read recorded events for the OAuth-selected booking. Choose this for “what happened to this booking?”, get_booking_status for its current stored state, or get_booking_payment_review for its existing unpaid checkout. get_offer_status instead recovers an original new-offer submission.

Omit bookingKey to read the already-selected booking without asking for its number; an explicit key must still match that selection.

Pagination:

  • Start without after. Copy the entire nextCursor into after with the same bookingKey and limit; timestamp plus ID jointly identify the boundary, including timestamp ties.

  • limit sizes each page, not the complete timeline. Stop at nextCursor=null rather than restarting or inferring a missing booking.

available returns event ID, recorded timestamp and kind (offer, amendment preparation, amendment or cancellation request/outcome), plus observedAt and nextCursor. Newest timestamps come first; ties use ascending IDs. Each page has its own observedAt cutoff, so concurrent records do not form one frozen multi-page snapshot. Empty means no matching visible events.

Correct invalid_request; not_found denies access; unavailable leaves history unverified. Authority is checked before/after. No provider refresh occurs; records alone do not prove payment, refund, dispatch or completion. Reading performs no booking action.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
afterNoOmit for the newest page. For older events, copy the preceding non-null nextCursor unchanged. Stop when nextCursor is null.
limitNoMaximum entries in this page, 1–50; defaults to 20. The selected booking stays unchanged.
bookingKeyNoOmit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / bookingKey / description
      Previous value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access."
    • removedInput schema / required
      Removed value: -[
      -  "bookingKey"
      -]
  2. Changed2 schema fields changed
    • changedInput schema / properties / bookingKey / description
      Previous value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."New value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bookingKey": {
      -        "type": "string"
      -      },
      -      "bookingReference": {
      -        "type": "string"
      -      },
      -      "entries": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "kind": {
      -              "enum": [
      -                "offer_recorded",
      -                "amendment_preparation_recorded",
      -                "amendment_recorded",
      -                "cancellation_requested",
      -                "cancellation_outcome_recorded"
      -              ],
      -              "type": "string"
      -            },
      -            "occurredAt": {
      -              "format": "date-time",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "occurredAt",
      -            "kind"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "nextAction": {
      -        "type": "string"
      -      },
      -      "nextCursor": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "id": {
      -                "description": "Exact ID from nextCursor for stable ordering of events at the same timestamp; it grants no access.",
      -                "maxLength": 256,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "occurredAt": {
      -                "description": "Exact timestamp from the returned nextCursor; copy unchanged for older entries.",
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "occurredAt",
      -              "id"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "observedAt": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "available",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "bookingKey",
      -      "bookingReference",
      -      "observedAt",
      -      "entries",
      -      "nextCursor",
      -      "nextAction"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "status": {
      -        "const": "invalid_request",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "status": {
      -        "const": "not_found",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "status": {
      -        "const": "unavailable",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bookingKey": {
      +        "description": "Internal reservation ID for the one booking selected by the current OAuth grant.",
      +        "type": "string"
      +      },
      +      "bookingReference": {
      +        "description": "Stored visible reference for this booking, falling back to its internal ID; not a supplier offerKey.",
      +        "type": "string"
      +      },
      +      "entries": {
      +        "description": "Recorded offer, amendment and cancellation entries, newest first and then id ascending for equal timestamps. Empty means no matching visible events.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "description": "Stable timeline-entry ID from a stored offer reference or booking event, not a booking ID or retry key.",
      +              "type": "string"
      +            },
      +            "kind": {
      +              "description": "Recorded event category: offer reference, amendment preparation, committed amendment, cancellation request or cancellation outcome. It is not a payment/refund or fulfillment history.",
      +              "enum": [
      +                "offer_recorded",
      +                "amendment_preparation_recorded",
      +                "amendment_recorded",
      +                "cancellation_requested",
      +                "cancellation_outcome_recorded"
      +              ],
      +              "type": "string"
      +            },
      +            "occurredAt": {
      +              "description": "Recorded event timestamp in ISO 8601; used with id for stable pagination.",
      +              "format": "date-time",
      +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "occurredAt",
      +            "kind"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "nextAction": {
      +        "description": "Read-only guidance to inspect booking status and bound action terms; reading history performs no booking action.",
      +        "type": "string"
      +      },
      +      "nextCursor": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "id": {
      +                "description": "Exact ID from nextCursor for stable ordering of events at the same timestamp; it grants no access.",
      +                "maxLength": 256,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "occurredAt": {
      +                "description": "Exact timestamp from the returned nextCursor; copy unchanged for older entries.",
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "occurredAt",
      +              "id"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Copy a non-null cursor unchanged into after for older entries. Null means no older page was observed; it grants no authority."
      +      },
      +      "observedAt": {
      +        "description": "Observation cutoff for this read; only events recorded at or before this timestamp are returned. It is not the booking's last-update time or provider refresh.",
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "available",
      +        "description": "The selected booking's authorized recorded timeline was read successfully.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "bookingKey",
      +      "bookingReference",
      +      "observedAt",
      +      "entries",
      +      "nextCursor",
      +      "nextAction"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "const": "invalid_request",
      +        "description": "Input or pagination cursor does not match this contract.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "const": "not_found",
      +        "description": "The selected booking is inaccessible under current authority, including authority lost during the read; absence is not proved.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "const": "unavailable",
      +        "description": "The timeline could not be read or validated safely; this does not mean the booking is missing.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / after / description
      Previous value: -"Omit for the newest page. For older events, copy the returned nextCursor unchanged."New value: +"Omit for the newest page. For older events, copy the preceding non-null nextCursor unchanged. Stop when nextCursor is null."
    • addedInput schema / properties / bookingKey / description
      Added value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum entries in this page, 1–50; defaults to20. Does not change the authorized booking."New value: +"Maximum entries in this page, 1–50; defaults to 20. The selected booking stays unchanged."
  4. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources