Skip to main content
Glama

Check stay dates and pricing

get_stay_quote

Check dates and total pricing on a published property's public host website. Send its property id, arrival/departure (YYYY-MM-DD) and guests; no guest contact or card details. Availability may be unknown even when a price is returned. Optional startingNightlyPrice is an advertised starting nightly rate, separate from price.total; never multiply it into a stay total or infer dates, party, fees or tax coverage. partyBasis:all_adults means every occupant was priced as an adult; disclose that assumption, since no reader prices child ages yet (children/childAges are retained only). Optional terms carry only the cancellation/payment details the host booking system returned, with provenance; an absent terms object or field is unknown, never free cancellation or no deposit, so tell the traveler to confirm terms with the host. Inspect reason, price.completeness, actual currency, checkedAt and expiresAt. Optional execution:browser requests the experimental selected-home browser agent on reviewed Stays sites and may take up to two minutes including source discovery; omit it for fast automatic execution. Search never starts this agent. Recent matching quotes may be reused until expiry; a pending search check is joined rather than repeated. The host may create an expiring anonymous price draft. A quote never reserves or confirms a booking; held is always false. Unsupported/protected sites return unknown. No host integration or credentials are required. After displaying cards, default to 1–3 short sentences, usually under 60 words unless the traveler requests a detailed comparison: explain a helpful fit or next choice, and include only a material price/availability caveat or a necessary question. Do not repeat result counts, card facts or the home list unless the traveler asks for a textual comparison. Do not narrate tools called or not called, backend mechanics, or your process. Keep operational checks internal; disclose material uncertainty and pricing assumptions plainly when they affect the traveler’s decision.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>",
      "arrival": "<arrival>",
      "departure": "<departure>",
      "guests": "<guests>"
    },
    "name": "get_stay_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYes
guestsYes
arrivalYes
childrenNoHow many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.
currencyNoPreferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing.
childAgesNoEach child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.
departureYes
executionNoSelected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.

Output Schema

NameRequiredDescriptionDefault
heldYes
priceYes
termsNo
guestsYes
nightsYes
reasonYes
arrivalYes
checkedAtYes
departureYes
expiresAtYes
sourceUrlYes
bookingUrlYes
partyBasisNo
propertyIdYes
availabilityYes
minimumNightsYes
roomSelectionNo
startingNightlyPriceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / currency / description
      Added value: +"Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing."
    • removedInput schema / properties / currency / enum
      Removed value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD",
      -  "NZD"
      -]
    • addedInput schema / properties / currency / pattern
      Added value: +"^[A-Z]{3}$"
  2. Changed1 schema field changed
    • changedInput schema / properties / currency / enum
      Previous value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD"
      -]New value: +[
      +  "USD",
      +  "EUR",
      +  "GBP",
      +  "CRC",
      +  "MXN",
      +  "COP",
      +  "PEN",
      +  "BRL",
      +  "AUD",
      +  "NZD"
      +]
  3. Changed3 schema fields changed
    • addedInput schema / properties / childAges
      Added value: +{
      +  "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +  "items": {
      +    "maximum": 17,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "maxItems": 199,
      +  "type": "array"
      +}
    • addedInput schema / properties / children
      Added value: +{
      +  "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +  "maximum": 199,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / terms
      Added value: +{
      +  "properties": {
      +    "cancellation": {
      +      "properties": {
      +        "freeUntil": {
      +          "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"
      +        },
      +        "nonRefundable": {
      +          "type": "boolean"
      +        },
      +        "policyText": {
      +          "maxLength": 2000,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "refundWindows": {
      +          "items": {
      +            "properties": {
      +              "from": {
      +                "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"
      +              },
      +              "refundPercent": {
      +                "maximum": 100,
      +                "minimum": 0,
      +                "type": "number"
      +              },
      +              "until": {
      +                "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": [
      +              "refundPercent"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "payment": {
      +      "properties": {
      +        "balanceDue": {
      +          "properties": {
      +            "amount": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "currency": {
      +              "pattern": "^[A-Z]{3}$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "amount",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        "balanceDueAt": {
      +          "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"
      +        },
      +        "chargedBy": {
      +          "enum": [
      +            "host",
      +            "booking_engine"
      +          ],
      +          "type": "string"
      +        },
      +        "depositAmount": {
      +          "properties": {
      +            "amount": {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "currency": {
      +              "pattern": "^[A-Z]{3}$",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "amount",
      +            "currency"
      +          ],
      +          "type": "object"
      +        },
      +        "depositDueAt": {
      +          "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"
      +        },
      +        "depositPercent": {
      +          "maximum": 100,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "provenance": {
      +      "properties": {
      +        "fetchedAt": {
      +          "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"
      +        },
      +        "rawSourceField": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "reader": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "reader",
      +        "rawSourceField",
      +        "fetchedAt"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "provenance"
      +  ],
      +  "type": "object"
      +}
  4. Changed4 schema fields changed
    • removedOutput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / price / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "breakdown": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "amount": {
      -              "type": "number"
      -            },
      -            "label": {
      -              "maxLength": 160,
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "label",
      -            "amount"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 30,
      -        "type": "array"
      -      },
      -      "completeness": {
      -        "enum": [
      -          "total",
      -          "partial"
      -        ],
      -        "type": "string"
      -      },
      -      "currency": {
      -        "pattern": "^[A-Z]{3}$",
      -        "type": "string"
      -      },
      -      "taxesIncluded": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "total": {
      -        "minimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "currency",
      -      "total",
      -      "breakdown",
      -      "completeness",
      -      "taxesIncluded"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "breakdown": {
      +        "items": {
      +          "properties": {
      +            "amount": {
      +              "type": "number"
      +            },
      +            "label": {
      +              "maxLength": 160,
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "label",
      +            "amount"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 30,
      +        "type": "array"
      +      },
      +      "completeness": {
      +        "enum": [
      +          "total",
      +          "partial"
      +        ],
      +        "type": "string"
      +      },
      +      "currency": {
      +        "pattern": "^[A-Z]{3}$",
      +        "type": "string"
      +      },
      +      "taxesIncluded": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "total": {
      +        "minimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "currency",
      +      "total",
      +      "breakdown",
      +      "completeness",
      +      "taxesIncluded"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / roomSelection
      Added value: +{
      +  "properties": {
      +    "averageNightlyPrice": {
      +      "properties": {
      +        "amount": {
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "currency": {
      +          "pattern": "^[A-Z]{3}$",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "currency",
      +        "amount"
      +      ],
      +      "type": "object"
      +    },
      +    "name": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "ratePlan": {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    "rooms": {
      +      "const": 1,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "rooms"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / startingNightlyPrice / additionalProperties
      Removed value: -false
  5. Changed1 schema field changed
    • changedInput schema / properties / currency / enum
      Previous value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL"
      -]New value: +[
      +  "USD",
      +  "EUR",
      +  "GBP",
      +  "CRC",
      +  "MXN",
      +  "COP",
      +  "PEN",
      +  "BRL",
      +  "AUD"
      +]
  6. Added

TDQS

A4.3/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: availability may be unknown despite a returned price, partyBasis assumptions must be disclosed, absent terms mean unknown, execution can take up to two minutes, quotes may be reused, and a draft may be created. It also explains that a quote never reserves or confirms a booking. readOnlyHint=false is consistent with the possible draft, so there is no contradiction.

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

Conciseness3/5

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

It is front-loaded and the caveats are relevant, but the description is very long and includes response-formatting instructions such as defaulting to 1–3 short sentences, which are not needed to select or invoke the tool. Several sentences could be tightened.

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 high-complexity, open-world quote tool with an output schema, the description covers the key uncertainty, side effects, caching, and execution tradeoffs. Nothing essential for invoking it correctly appears to be 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 coverage is 50%, and the description adds useful meaning for required identifiers, date format, no-contact/no-card constraints, and execution mode. However, it does not add much for children, childAges, or currency beyond what the schema already says, and it mentions startingNightlyPrice and partyBasis, which are not input properties, which can blur the parameter boundary.

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 first sentence gives a specific verb and resource: checking dates and total pricing on a published property's public host website. It also clarifies that search never starts this agent, which helps distinguish it from search and booking/enquiry flows.

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 states the required inputs and notes that no guest contact or card details are needed, and it gives a clear browser-vs-auto choice with a speed tradeoff. It does not explicitly route the agent to get_stay_estimate for rough estimates, so the when-to-use story is not fully complete.

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