Skip to main content
Glama

Get a fixed-price quote

get_quote
Read-only

Exact per-vehicle prices from the live fixed price list — airport transfers (OOL/BNE) and Brisbane Cruise Terminal runs (use "Brisbane Cruise Terminal" or "Pinkenba" as the place). Supports optional return trips (trip=return + return_date/return_time); return totals use the operator native return discount. Deterministic — never estimates. If match is "none", give the customer the phone number instead of guessing.

Input Schema

NameRequiredDescriptionDefault
toYesDrop-off place, e.g. "Gold Coast Airport" or a suburb (alias: dropoff)
paxNoPassengers 1-16 (filters vehicles; 12-16 returns the two-vehicle Carnival+Maxi combination priced as a total). Groups over 16 return match "none" with contact details - do not quote them a price.
dateNoYYYY-MM-DD (optional)
fromYesPick-up place, e.g. "Broadbeach" or "OOL" (alias: pickup)
timeNoHH:MM 24h (optional; flags after-hours surcharge)
tripNoone_way (default) or return. When return, also send return_date and return_time.
flightNoFlight number (optional; prefills the booking form)
pickupNoAlias for from (same meaning as request_booking.pickup)
dropoffNoAlias for to (same meaning as request_booking.dropoff)
luggageNoLarge bags (optional; filters vehicles and prefills the booking form)
return_dateNoYYYY-MM-DD return pick-up date (optional; implies trip=return)
return_timeNoHH:MM 24h return pick-up time (optional; implies trip=return)

Output Schema

NameRequiredDescriptionDefault
toNo
codeNo
fromNo
tripNo
emailNo
errorNo
matchNo
phoneNo
routeNo
termsNo
reasonNo
returnNo
max_paxNo
messageNo
optionsNo
suggestNo
websiteNo
book_urlNo
currencyNo
surchargesNo
retry_afterNo
valid_as_ofNo
unavailable_noteNo
unavailable_vehiclesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / flight
      Added value: +{
      +  "description": "Flight number (optional; prefills the booking form)",
      +  "type": "string"
      +}
    • addedInput schema / properties / luggage
      Added value: +{
      +  "description": "Large bags (optional; filters vehicles and prefills the booking form)",
      +  "type": "integer"
      +}
    • addedInput schema / properties / return_date
      Added value: +{
      +  "description": "YYYY-MM-DD return pick-up date (optional; implies trip=return)",
      +  "type": "string"
      +}
    • addedInput schema / properties / return_time
      Added value: +{
      +  "description": "HH:MM 24h return pick-up time (optional; implies trip=return)",
      +  "type": "string"
      +}
    • addedInput schema / properties / trip
      Added value: +{
      +  "description": "one_way (default) or return. When return, also send return_date and return_time.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / options / items / properties / outbound_aud
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / options / items / properties / return_aud
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / return
      Added value: +{
      +  "properties": {
      +    "date": {
      +      "type": "string"
      +    },
      +    "match": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "route": {
      +      "type": "object"
      +    },
      +    "time": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / trip
      Added value: +{
      +  "enum": [
      +    "one_way",
      +    "return"
      +  ],
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / dropoff
      Added value: +{
      +  "description": "Alias for to (same meaning as request_booking.dropoff)",
      +  "type": "string"
      +}
    • changedInput schema / properties / from / description
      Previous value: -"Pick-up place, e.g. \"Broadbeach\" or \"OOL\""New value: +"Pick-up place, e.g. \"Broadbeach\" or \"OOL\" (alias: pickup)"
    • addedInput schema / properties / pickup
      Added value: +{
      +  "description": "Alias for from (same meaning as request_booking.pickup)",
      +  "type": "string"
      +}
    • changedInput schema / properties / to / description
      Previous value: -"Drop-off place, e.g. \"Gold Coast Airport\" or a suburb"New value: +"Drop-off place, e.g. \"Gold Coast Airport\" or a suburb (alias: dropoff)"
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "required": [
      +        "match"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "code",
      +        "message"
      +      ]
      +    }
      +  ],
      +  "description": "The live fixed-price list result, passed through from the booking site. match fixed_route = options carries per-vehicle prices; none / blocked / unavailable = no price, give the customer the contact details or message. If the quote service itself refused (e.g. rate limit) the object carries error instead of match.",
      +  "properties": {
      +    "book_url": {
      +      "type": "string"
      +    },
      +    "code": {
      +      "type": "string"
      +    },
      +    "currency": {
      +      "type": "string"
      +    },
      +    "email": {
      +      "type": "string"
      +    },
      +    "error": {
      +      "type": "string"
      +    },
      +    "from": {
      +      "type": "string"
      +    },
      +    "match": {
      +      "enum": [
      +        "fixed_route",
      +        "none",
      +        "blocked",
      +        "unavailable"
      +      ],
      +      "type": "string"
      +    },
      +    "max_pax": {
      +      "type": "integer"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "options": {
      +      "items": {
      +        "properties": {
      +          "combo": {
      +            "type": "boolean"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "max_pax": {
      +            "type": "integer"
      +          },
      +          "per": {
      +            "enum": [
      +              "vehicle",
      +              "total"
      +            ],
      +            "type": "string"
      +          },
      +          "price_aud": {
      +            "type": "number"
      +          },
      +          "vehicle": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "vehicle",
      +          "label",
      +          "max_pax",
      +          "price_aud",
      +          "per"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "phone": {
      +      "type": "string"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "retry_after": {
      +      "type": "integer"
      +    },
      +    "route": {
      +      "properties": {
      +        "airport": {
      +          "type": "string"
      +        },
      +        "from": {
      +          "type": "string"
      +        },
      +        "to": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "suggest": {
      +      "type": "string"
      +    },
      +    "surcharges": {
      +      "items": {
      +        "properties": {
      +          "applies": {
      +            "type": "boolean"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "applies"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "terms": {
      +      "type": "string"
      +    },
      +    "to": {
      +      "type": "string"
      +    },
      +    "unavailable_note": {
      +      "type": "string"
      +    },
      +    "unavailable_vehicles": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "valid_as_of": {
      +      "type": "string"
      +    },
      +    "website": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / pax / description
      Previous value: -"Passengers 1-11 (filters vehicles)"New value: +"Passengers 1-16 (filters vehicles; 12-16 returns the two-vehicle Carnival+Maxi combination priced as a total). Groups over 16 return match \"none\" with contact details - do not quote them a price."
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly=true, destructive=false, openWorld=true, so the safety profile is covered; the description adds real behavioral detail on top — determinism (never estimates), that return totals apply the operator's native return discount, and what to do when no match is found. It doesn't discuss price validity windows or the shape of a 'match: none' response, which would have pushed it higher.

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?

Front-loaded with the core promise (exact prices, live list, deterministic) before edge-case handling. The long em-dash-laden first sentence packs several distinct concerns (regions, place naming, returns, discounts) and could be split, but no sentence is filler.

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?

For a read-only, 12-parameter quote tool with full schema descriptions and an output schema, the description covers what the schema cannot: determinism, region scope, return-trip pricing behavior, and the no-match protocol. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema lacks: the accepted place strings for the cruise terminal ('Brisbane Cruise Terminal' or 'Pinkenba') and the trip=return + return_date/return_time pairing convention. That is genuine semantic guidance beyond the parameter docs.

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?

States a specific verb and resource (exact per-vehicle prices from the live fixed price list) plus the scope it covers: OOL/BNE airport transfers and Brisbane Cruise Terminal runs. The 'deterministic — never estimates' clause separates it from any fuzzy availability/enquiry sibling without needing to open a schema.

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?

Gives clear conditions for use (fixed-price airport and cruise terminal transfers, optional return trips) and an explicit fallback for the negative case: 'If match is "none", give the customer the phone number instead of guessing.' It stops short of naming check_availability or request_booking as alternatives when a quote isn't the right call, so routing between siblings is left partly implicit.

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