Skip to main content
Glama

get_booking

Read-only

Retrieve a single event booking by ID from your Checkout Page account. Pass livemode: false to read test-mode records.

Use list_bookings first if you need to discover a booking ID by customer email, customer name, event title, or order ID. Checkout payments are a separate record type — use list_payments for those.

If the booking ID does not exist for the authenticated seller, returns a 404 error: "Booking not found".

Ticket capacity and ticketGroupCapacity are historical snapshots from booking time and do not reflect current availability — do not use them for inventory calculations.

A booking with isComplimentary: true was issued by the merchant at no charge: it is status: paid with amount, amountPaid and amountDue of 0, while the ticket lines keep their face value and complimentaryDiscountAmount holds the amount forgone.

archivedAt is set when the merchant archived the booking to hide it from their default bookings list. Archiving changes nothing else: the payment, tickets and orderStatus are as shown.

Example uses:

  • "Fetch booking 6812fe6e9f39b6760576f01c"

  • "Show me the full details of this booking"

  • "Which tickets were purchased on this booking?"

This tool is read-only. Ticket transfers, cancellations, and refunds must be performed in the Checkout Page dashboard.

Input Schema

NameRequiredDescriptionDefault
livemodeNoSet to false to read test-mode records (created while a page was in test mode). Defaults to live records.
bookingIdYesThe ID of the booking to retrieve. Use `list_bookings` first if you need to discover the booking ID by email, name, customer, event, or date range. Payments for checkout pages have their own IDs and are not retrievable here.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedOutput schema / properties / data / properties / attendeeStatus
      Removed value: -{
      -  "description": "Attendee details: `complete` (every ticket has an attendee), `missing` (some tickets don't yet), `flagged` (one or more attendees flagged for the seller to review) or `optional` (the customer isn't asked, so the seller adds attendees if they want to). Absent while a booking has no attendee details to track.",
      -  "enum": [
      -    "complete",
      -    "missing",
      -    "flagged",
      -    "optional"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / data / properties / attendees
      Removed value: -{
      -  "description": "The attendees added so far, one per ticket, on events that collect attendee details. A ticket without an attendee has no entry.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "answers": {
      -        "description": "The attendee's answers to the event's attendee questions, in the same shape as the booking's `fields`. `reference` matches the question's reference. Name and email are not repeated here.",
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "element": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "checkbox",
      -                    "quantity",
      -                    "multiple-choice",
      -                    "select",
      -                    "multi-select",
      -                    "po-number",
      -                    "text",
      -                    "textarea",
      -                    "number",
      -                    "date-time",
      -                    "date",
      -                    "time",
      -                    "address",
      -                    "email",
      -                    "tax-id",
      -                    "phone",
      -                    "country"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "fieldId": {
      -              "description": "Unique field ID.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "label": {
      -              "description": "Label shown for the field.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "meta": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "reference": {
      -              "description": "Reference key for the field.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "type": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "",
      -                    "company-name",
      -                    "po-number",
      -                    "name",
      -                    "first-name",
      -                    "last-name",
      -                    "email",
      -                    "billing-email",
      -                    "phone",
      -                    "address-line1",
      -                    "address-city",
      -                    "address-country",
      -                    "address-line2",
      -                    "address-postal_code",
      -                    "address-state",
      -                    "shipping-name",
      -                    "shipping-phone",
      -                    "shipping-address-line1",
      -                    "shipping-address-city",
      -                    "shipping-address-country",
      -                    "shipping-address-line2",
      -                    "shipping-address-postal_code",
      -                    "shipping-address-state",
      -                    "tax-id"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "value": {
      -              "description": "Submitted value for the field.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "values": {
      -              "anyOf": [
      -                {
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Chosen option values of a multi-select field (an option without a value is named by its label), in the order the options are defined. `value` holds the same values joined with \", \". The matching labels, as they were when the answer was written, are in `meta.selectedOptionLabels` and joined in `meta.selectedOptionLabel`. Absent on every other field type."
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "email": {
      -        "description": "The attendee's email address.",
      -        "type": "string"
      -      },
      -      "flagged": {
      -        "description": "True when the event's email domain rule flagged this attendee for the seller to review. It stays true after review; see `reviewedAt`.",
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "description": "The attendee's name.",
      -        "type": "string"
      -      },
      -      "position": {
      -        "description": "Attendee number, 1 for the first ticket, in the order the event lists its ticket types.",
      -        "type": "number"
      -      },
      -      "reviewedAt": {
      -        "description": "ISO-8601 UTC timestamp the seller marked this flagged attendee as reviewed. The booking counts as `flagged` while any flagged attendee has none.",
      -        "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"
      -      },
      -      "ticketId": {
      -        "description": "ID of the attendee's ticket. Absent until the booking's tickets are created, which happens once it's paid or confirmed.",
      -        "type": "string"
      -      },
      -      "ticketTypeId": {
      -        "description": "ID of the ticket type this attendee holds.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "position",
      -      "ticketTypeId"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
  2. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / attendeeStatus
      Added value: +{
      +  "description": "Attendee details: `complete` (every ticket has an attendee), `missing` (some tickets don't yet), `flagged` (one or more attendees flagged for the seller to review) or `optional` (the customer isn't asked, so the seller adds attendees if they want to). Absent while a booking has no attendee details to track.",
      +  "enum": [
      +    "complete",
      +    "missing",
      +    "flagged",
      +    "optional"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / data / properties / attendees
      Added value: +{
      +  "description": "The attendees added so far, one per ticket, on events that collect attendee details. A ticket without an attendee has no entry.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "answers": {
      +        "description": "The attendee's answers to the event's attendee questions, in the same shape as the booking's `fields`. `reference` matches the question's reference. Name and email are not repeated here.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "element": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "checkbox",
      +                    "quantity",
      +                    "multiple-choice",
      +                    "select",
      +                    "multi-select",
      +                    "po-number",
      +                    "text",
      +                    "textarea",
      +                    "number",
      +                    "date-time",
      +                    "date",
      +                    "time",
      +                    "address",
      +                    "email",
      +                    "tax-id",
      +                    "phone",
      +                    "country"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "fieldId": {
      +              "description": "Unique field ID.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "label": {
      +              "description": "Label shown for the field.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "meta": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "reference": {
      +              "description": "Reference key for the field.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "",
      +                    "company-name",
      +                    "po-number",
      +                    "name",
      +                    "first-name",
      +                    "last-name",
      +                    "email",
      +                    "billing-email",
      +                    "phone",
      +                    "address-line1",
      +                    "address-city",
      +                    "address-country",
      +                    "address-line2",
      +                    "address-postal_code",
      +                    "address-state",
      +                    "shipping-name",
      +                    "shipping-phone",
      +                    "shipping-address-line1",
      +                    "shipping-address-city",
      +                    "shipping-address-country",
      +                    "shipping-address-line2",
      +                    "shipping-address-postal_code",
      +                    "shipping-address-state",
      +                    "tax-id"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "value": {
      +              "description": "Submitted value for the field.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "values": {
      +              "anyOf": [
      +                {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Chosen option values of a multi-select field (an option without a value is named by its label), in the order the options are defined. `value` holds the same values joined with \", \". The matching labels, as they were when the answer was written, are in `meta.selectedOptionLabels` and joined in `meta.selectedOptionLabel`. Absent on every other field type."
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "email": {
      +        "description": "The attendee's email address.",
      +        "type": "string"
      +      },
      +      "flagged": {
      +        "description": "True when the event's email domain rule flagged this attendee for the seller to review. It stays true after review; see `reviewedAt`.",
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "description": "The attendee's name.",
      +        "type": "string"
      +      },
      +      "position": {
      +        "description": "Attendee number, 1 for the first ticket, in the order the event lists its ticket types.",
      +        "type": "number"
      +      },
      +      "reviewedAt": {
      +        "description": "ISO-8601 UTC timestamp the seller marked this flagged attendee as reviewed. The booking counts as `flagged` while any flagged attendee has none.",
      +        "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"
      +      },
      +      "ticketId": {
      +        "description": "ID of the attendee's ticket. Absent until the booking's tickets are created, which happens once it's paid or confirmed.",
      +        "type": "string"
      +      },
      +      "ticketTypeId": {
      +        "description": "ID of the ticket type this attendee holds.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "position",
      +      "ticketTypeId"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / canceledByApiKey
      Added value: +{
      +  "description": "ID of the API key that canceled this, when it was canceled through the seller API. The key may have been deleted since; `canceledByApiKeyName` keeps its name.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / properties / canceledByApiKeyName
      Added value: +{
      +  "description": "Name of the API key that canceled this, as it was at the time. Kept when the key is deleted later.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / archivedAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "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"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "When the merchant archived this, hiding it from their default bookings list in the dashboard. Archiving changes nothing else: the payment, tickets and `orderStatus` stay as they were. Absent unless archived.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / data / properties / archivedBy
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The userId of the team member who archived this. Absent unless archived.",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • changedOutput schema / properties / data / properties / orderStatus / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "active",
      -      "canceled",
      -      "archived"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "active",
      +      "canceled"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / data / properties / orderStatus / description
      Previous value: -"Order lifecycle status. Valid values are active, canceled, archived."New value: +"Order lifecycle status. Valid values are active, canceled."
  6. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / paidAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "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"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "When the payment was paid in full. For an invoice or cash payment this is when the merchant recorded the payment, which can be long after `createdAt`. Empty until fully paid, including a deposit with a balance still due."
      +}
  7. Changed1 schema field changed
    • addedOutput schema / properties / data / properties / processingFeeContribution
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amount": {
      +          "description": "Contribution in the smallest currency unit.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fixedAmount": {
      +          "description": "The fixed part.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "description": "Name shown on the receipt, frozen at payment.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "percentage": {
      +          "description": "Percentage used for the contribution.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "percentageAmount": {
      +          "description": "The part from the percentage.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "What the customer chose to add to cover the processing fee, worked out on the total with tax. Not one of `fees`."
      +}
  8. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / fees / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "amount": {
      -          "description": "Fee amount in the smallest currency unit.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "name": {
      -          "description": "Fee name.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "percentage": {
      -          "description": "Fee percentage when applicable.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amount": {
      +          "description": "Fee amount in the smallest currency unit. For a fee with both a percentage and a fixed amount, the sum of `percentageAmount` and `fixedAmount`.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fixedAmount": {
      +          "description": "The fixed part of `amount`, in the smallest currency unit, already multiplied by quantity or tickets when the fee multiplies. Only set on a fee with both a percentage and a fixed amount.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "description": "Fee name.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "percentage": {
      +          "description": "Fee percentage when applicable.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "percentageAmount": {
      +          "description": "The part of `amount` from the percentage, in the smallest currency unit. Only set on a fee with both a percentage and a fixed amount. Can be 0, e.g. when a 100% coupon leaves nothing for the percentage to apply to.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  9. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Despite annotations already marking the tool read-only, the description adds substantial behavioral context: 404 behavior for missing bookings, test-mode semantics via `livemode`, caveats that ticket capacities are historical snapshots, complimentary-booking semantics, and archived-booking semantics. It also clarifies that mutations must happen in the dashboard, matching the read-only annotations.

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

Conciseness5/5

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

The purpose is front-loaded, followed by alternatives, error behavior, field caveats, examples, and mutation limitations in a logical order. The extra detail is dense but warranted for a booking retrieval tool with non-obvious data semantics.

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?

With annotations, a complete input schema, and an output schema, the description covers the remaining behavioral gaps an agent needs: when to use it, test-mode handling, missing-ID behavior, and misleading field caveats such as historical capacity snapshots. Nothing essential for correct invocation is missing.

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 both parameters are already well documented in the input schema. The description reinforces `livemode` test-mode behavior and booking ID discovery via `list_bookings`, but it does not add much parameter-specific detail beyond what the schema already provides.

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 states a specific verb and resource: retrieve a single event booking by ID from a Checkout Page account. It also distinguishes this tool from `list_bookings` and `list_payments`, so an agent can select it confidently among siblings.

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

Usage Guidelines5/5

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

It explicitly says to use `list_bookings` first when discovering a booking ID by customer email, name, event title, or order ID, and directs checkout payment lookups to `list_payments`. This gives clear when-to-use and when-to-use-an-alternative 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.

Resources