Skip to main content
Glama

Request a booking

request_booking

Lodge a booking. On success this returns a secure checkout_url: give it to the customer to pay directly (their card, never through you). No payment is ever taken through this tool itself. A pickup on a closed day or inside a blackout window is refused (accepted:false) before anything is lodged. Stops on the way (up to 4 each way): stops, and return_stops on a return, the same as the get_quote you quoted; the booking is made at the booking form's own total with the stops in it. Requires agent_key (contact admin@cgctransfers.com.au to obtain one).

Input Schema

NameRequiredDescriptionDefault
paxYes
dateYesYYYY-MM-DD
nameYesPassenger name
timeYesHH:MM 24h
emailYesPassenger email (pay link goes here)
notesNo
phoneYesPassenger phone
stopsNoOptional: stops on the way, in order, up to 4, each a street address or a hotel or venue name with its suburb; use the same stops as the get_quote you quoted. One way, this is the booking form's Multi-stop; on a return these are the stops on the way there (its Multi-stop return). The booking carries the stops and is made at the booking form's own total.
flightNo
pickupYes
dropoffYes
luggageNoOptional. Large suitcases. If left out, assumed to be what the chosen vehicle holds (never more than one per passenger).
vehicleNoVehicle choice; defaults to sedan. crafter = VW Crafter (up to 11 passengers), one van for a group too big for one Carnival; crafter-trailer = the same van towing a luggage trailer, for a big group with more luggage than the van takes (get_quote with pax gives the live seat, child-seat and luggage limits). Any other value is refused (accepted:false, "Unknown vehicle"), never booked as a different vehicle.
carry_onNoOptional. Carry-on bags.
platformNoWhich channel this booking comes from (attribution)
seat_qtyNoChild seats by type, priced into the booking and pay link ($35 each): {seat index: quantity}. Indices follow the booking form list: 0 rear-facing 0-3yrs, 1 forward-facing 6mths-3yrs, 2 harnessed booster 3-6yrs, 3 booster with adult seatbelt 6yrs+.
agent_keyYesIssued gateway key
oversizedNoOptional. Surfboard, golf bag, bike box, full-size pram or similar (takes the space of three large bags, so sedans drop out).
meet_greetNoOptional. Add the Brisbane Airport in-terminal meet and greet ($49). Gold Coast Airport pickups include it already.
child_seatsNoChild seats required ($35 each, supplied and fitted). Prefer seat_qty, which prices the seats into the booking and pay link.
heard_aboutNoOptional. How the customer heard about CGC, from their own answer: one of the booking form's 'How did you hear about us?' options, exactly as written (Google search; Google ad; Bing / Microsoft search; ChatGPT; Claude; Other AI assistant (Gemini, Copilot, etc.); Booked with you before; Friend or family recommended you; Hotel / accommodation recommended you; Facebook / Instagram / social media; Other). Leave out if they didn't say. Never guess, and never pick an AI option just because the booking comes through an AI.
heard_otherNoOptional. The customer's own words, up to 100 characters (e.g. 'saw your van at the airport'). The booking keeps them with an 'Other' answer.
return_dateNoOptional, YYYY-MM-DD. With return_time, books the return leg on the same reservation (5% return discount applies).
return_timeNoOptional, HH:MM 24h, in 5-minute steps. Required if return_date is given.
return_stopsNoOptional, only with return_date and return_time: stops on the way back, in order, up to 4, same rules as stops. Not copied from stops: leave out for none.
return_pickupNoOptional, only with return_date and return_time: where the return trip picks up, if not the first trip's drop-off (in to one hotel, back from another). Defaults to the first trip reversed. With different return addresses each trip is priced at its own fare and the return discount comes off the cheaper trip, as on the booking form; use the same return_pickup and return_dropoff as the get_quote you quoted.
return_dropoffNoOptional, only with return_date and return_time: where the return trip drops off, if not the first trip's pickup. Defaults to the first trip reversed.
terms_acceptedYesREQUIRED, must be true. Confirms the customer has been shown and has accepted the booking terms at https://cgctransfers.com.au/bookingtermsandconditions/ -- do not set this without an explicit yes from the customer.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / heard_about
      Added value: +{
      +  "description": "Optional. How the customer heard about CGC, from their own answer: one of the booking form's 'How did you hear about us?' options, exactly as written (Google search; Google ad; Bing / Microsoft search; ChatGPT; Claude; Other AI assistant (Gemini, Copilot, etc.); Booked with you before; Friend or family recommended you; Hotel / accommodation recommended you; Facebook / Instagram / social media; Other). Leave out if they didn't say. Never guess, and never pick an AI option just because the booking comes through an AI.",
      +  "type": "string"
      +}
    • addedInput schema / properties / heard_other
      Added value: +{
      +  "description": "Optional. The customer's own words, up to 100 characters (e.g. 'saw your van at the airport'). The booking keeps them with an 'Other' answer.",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / return_stops
      Added value: +{
      +  "description": "Optional, only with return_date and return_time: stops on the way back, in order, up to 4, same rules as stops. Not copied from stops: leave out for none.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
    • addedInput schema / properties / stops
      Added value: +{
      +  "description": "Optional: stops on the way, in order, up to 4, each a street address or a hotel or venue name with its suburb; use the same stops as the get_quote you quoted. One way, this is the booking form's Multi-stop; on a return these are the stops on the way there (its Multi-stop return). The booking carries the stops and is made at the booking form's own total.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / return_dropoff
      Added value: +{
      +  "description": "Optional, only with return_date and return_time: where the return trip drops off, if not the first trip's pickup. Defaults to the first trip reversed.",
      +  "type": "string"
      +}
    • addedInput schema / properties / return_pickup
      Added value: +{
      +  "description": "Optional, only with return_date and return_time: where the return trip picks up, if not the first trip's drop-off (in to one hotel, back from another). Defaults to the first trip reversed. With different return addresses each trip is priced at its own fare and the return discount comes off the cheaper trip, as on the booking form; use the same return_pickup and return_dropoff as the get_quote you quoted.",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / vehicle / description
      Previous value: -"Vehicle choice; defaults to sedan. crafter = VW Crafter, one van for a group too big for one Carnival; crafter-trailer = the same van towing a luggage trailer, for a big group with more luggage than the van takes (get_quote with pax gives the live seat, child-seat and luggage limits). Any other value is refused (accepted:false, \"Unknown vehicle\"), never booked as a different vehicle."New value: +"Vehicle choice; defaults to sedan. crafter = VW Crafter (up to 11 passengers), one van for a group too big for one Carnival; crafter-trailer = the same van towing a luggage trailer, for a big group with more luggage than the van takes (get_quote with pax gives the live seat, child-seat and luggage limits). Any other value is refused (accepted:false, \"Unknown vehicle\"), never booked as a different vehicle."
  5. Changed2 schema fields changed
    • changedInput schema / properties / vehicle / description
      Previous value: -"Vehicle choice; defaults to sedan"New value: +"Vehicle choice; defaults to sedan. crafter = VW Crafter, one van for a group too big for one Carnival; crafter-trailer = the same van towing a luggage trailer, for a big group with more luggage than the van takes (get_quote with pax gives the live seat, child-seat and luggage limits). Any other value is refused (accepted:false, \"Unknown vehicle\"), never booked as a different vehicle."
    • changedInput schema / properties / vehicle / enum
      Previous value: -[
      -  "sedan",
      -  "carnival",
      -  "carnival-rav",
      -  "2-carnivals"
      -]New value: +[
      +  "sedan",
      +  "carnival",
      +  "carnival-rav",
      +  "2-carnivals",
      +  "crafter",
      +  "crafter-trailer"
      +]
  6. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this is a non-readonly, open-world, non-idempotent write with destructiveHint=false. The description adds meaningful behavior beyond that: no payment is taken through the tool, a secure checkout_url is returned, refusals happen before lodging, and agent_key is required.

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 most important facts are front-loaded: what it does, the checkout_url return, and that payment is not taken through the tool. The paragraph is dense but appropriately sized for a complex 28-parameter booking tool, with little obvious repetition.

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?

With no output schema, the description explains the key return value (checkout_url) and important refusal behavior. For a complex booking mutation, it is largely complete, though it could say more about duplicate submissions or other failure modes beyond closed days and blackout windows.

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 82%, so the schema already carries most parameter meaning. The description adds useful context for stops/return_stops matching the quoted get_quote and for obtaining agent_key, but does not clarify many of the 28 parameters beyond what the schema provides.

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

Purpose4/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: 'Lodge a booking', and explains that success returns a checkout_url. It references get_quote for the quoted stops, but does not explicitly distinguish this tool from check_availability or get_service_info, so sibling differentiation is only partial.

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?

It gives clear context for use: after a get_quote, with an agent_key, and notes that closed-day or blackout-window pickups are refused. It does not explicitly state when to use check_availability or get_service_info instead, but the booking-specific guidance is strong.

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