Skip to main content
Glama

chucho — Book Direct

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.

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.
currencyNo
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. 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"
      +]
  2. 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: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "cancellation": {
      +      "additionalProperties": false,
      +      "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": {
      +            "additionalProperties": false,
      +            "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": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "balanceDue": {
      +          "additionalProperties": false,
      +          "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": {
      +          "additionalProperties": false,
      +          "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": {
      +      "additionalProperties": false,
      +      "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"
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior5/5

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

With annotations present, the description still adds substantial non-obvious behavior: availability may be unknown even when a price returns; unknown/unsupported sites return unknown; cached quotes are reused until expiry and pending checks are joined; and a quoted price may create an expiring anonymous draft, which is what reconciles the readOnlyHint=false annotation. It also states affirmatively that a quote never reserves a booking and held is always false, plus a concrete latency ceiling.

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?

The content is valuable but delivered as a single undifferentiated block of roughly a dozen sentences, mixing input requirements, output-field interpretation, and caching internals. There is some redundancy, e.g. 'Search never starts this agent' appears in both the description body and the execution parameter description, and the child-age caveat repeats the schema text.

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?

Because an output schema exists, the description needn't explain return shapes, and it still flags which returned fields to inspect (reason, price.completeness, currency, checkedAt, expiresAt) and how to interpret absent terms as unknown rather than free cancellation. For an open-world, non-idempotent quote tool this is close to complete; only the currency parameter's role is left unstated.

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 description coverage is only 38%, so the description must carry weight, and it does: it names id, arrival/departure format (YYYY-MM-DD), guests, and the execution enum's auto-vs-browser meaning including the two-minute cost. It also explains the semantic scope of children/childAges (retained only, no child-age pricing) and partyBasis:all_adults. Currency is never addressed in the description and has no schema description, which is the main remaining gap.

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 opening sentence gives a specific verb and resource: checking dates and total pricing on a published property's public host website, with the required inputs named. It is distinguishable from a generic estimate tool by the 'published property's public host website' scoping, but it never names or contrasts a sibling such as get_stay_estimate, leaving the boundary to inference.

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

Usage Guidelines3/5

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

Guidance is strong on preconditions (no guest contact or card details needed, no host integration or credentials) and on the execution enum trade-off (auto is fast, browser is experimental and can take two minutes). However, it never says when to choose this tool over the nearest sibling like get_stay_estimate, so alternative-selection guidance is only implied.

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.