Skip to main content
Glama

Check Room Availability

check_room_availability
Read-onlyIdempotent

Recheck the selected rate code, price, and inventory before booking. 普通 ToC 酒店查询可匿名,user_key 可选;下单、订单查询、取消和支付需要客户端安全配置的 user_key。 选择报价后、下单前必须用相同入住条件验价;读取 data.room_types[].rateInfos 的当前 rateCode/totalPrice/currencyCode、库存和取消政策。价格或政策变化须用户重新确认;验价不锁库存。 查询失败时先区分参数/鉴权错误和上游暂时失败:修正参数或重新授权后再调用,仅暂时失败可有限重试;不得把错误或空结果改述成成功。

Input Schema

NameRequiredDescriptionDefault
adultsNo每房成人数,不是所有房间合计;相同入住配置应用于每间房。有效入住人数必须大于 0。 省略或 0 默认 1;负数无效。
childrenNo每房儿童数,非负整数;省略或 0 表示无儿童,必须等于 children_ages 数组长度。
hotel_idYesTourMind 酒店 ID,数字字符串;从地点/酒店搜索返回取得,不使用 Google place_id。
user_keyNo由可信本地客户端配置的 TourMind 用户凭证;勿让用户在聊天中粘贴。普通 ToC 查询可省略,订单/支付操作必填;OAuth 与 ToB 不接受此字段。
rate_codeYes不透明报价代码,原样传递;验价使用 query_room_rates 返回值,下单使用 check_room_availability 最新返回值,酒店/日期/入住人数必须一致。
room_countNo相同入住配置的房间数;业务处理器将 0 按 1 间处理,负数无效。查询工具可省略;下单工具原有 MCP Schema 要求此字段存在。
check_in_dateNo入住日期,YYYY-MM-DD。 省略/空字符串默认服务端当前日期的明天。
children_agesNo每房儿童年龄数组,逐个为 0–17 岁整数;数组长度必须等于 children,同一组年龄应用于每间房。省略/null/[] 只适用于 children=0。
check_out_dateNo离店日期,YYYY-MM-DD,必须晚于 check_in_date。 省略/空字符串默认入住次日。

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • changedInput schema / properties / adults / description
      Previous value: -"Number of adults in each room"New value: +"每房成人数,不是所有房间合计;相同入住配置应用于每间房。有效入住人数必须大于 0。 省略或 0 默认 1;负数无效。"
    • changedInput schema / properties / check_in_date / description
      Previous value: -"Check-in date in YYYY-MM-DD format"New value: +"入住日期,YYYY-MM-DD。 省略/空字符串默认服务端当前日期的明天。"
    • changedInput schema / properties / check_out_date / description
      Previous value: -"Check-out date in YYYY-MM-DD format"New value: +"离店日期,YYYY-MM-DD,必须晚于 check_in_date。 省略/空字符串默认入住次日。"
    • changedInput schema / properties / children / description
      Previous value: -"Number of children in each room"New value: +"每房儿童数,非负整数;省略或 0 表示无儿童,必须等于 children_ages 数组长度。"
    • changedInput schema / properties / children_ages / description
      Previous value: -"Ages of the children in each room, each from 0 to 17"New value: +"每房儿童年龄数组,逐个为 0–17 岁整数;数组长度必须等于 children,同一组年龄应用于每间房。省略/null/[] 只适用于 children=0。"
    • changedInput schema / properties / hotel_id / description
      Previous value: -"TourMind hotel identifier"New value: +"TourMind 酒店 ID,数字字符串;从地点/酒店搜索返回取得,不使用 Google place_id。"
    • changedInput schema / properties / rate_code / description
      Previous value: -"Rate code returned by query_room_rates"New value: +"不透明报价代码,原样传递;验价使用 query_room_rates 返回值,下单使用 check_room_availability 最新返回值,酒店/日期/入住人数必须一致。"
    • changedInput schema / properties / room_count / description
      Previous value: -"Number of rooms using the same occupancy"New value: +"相同入住配置的房间数;业务处理器将 0 按 1 间处理,负数无效。查询工具可省略;下单工具原有 MCP Schema 要求此字段存在。"
    • changedInput schema / properties / user_key / description
      Previous value: -"Optional TourMind user key for authenticated ToC access"New value: +"由可信本地客户端配置的 TourMind 用户凭证;勿让用户在聊天中粘贴。普通 ToC 查询可省略,订单/支付操作必填;OAuth 与 ToB 不接受此字段。"
    • addedOutput schema / description
      Added value: +"返回字段说明(不增加校验约束;缺失、零值和 null 按各字段说明解释):\n返回值 [object] 必有字段=ok: 业务响应信封;字段缺失表示没有提供,不能自动补零。数组的 null 与 [] 都不含条目,但 null 不承诺完成了该部分查询。\n返回值.data [object] 必有字段=room_types,total: 原始验价结果,保留 camelCase 的 rateInfos;不同于报价查询的 products。验价不锁库存。\n返回值.data.room_types [array|null]: 验价房型及房价。\n返回值.data.room_types[] [object] 必有字段=roomTypeCode,name,nameCN,bedTypeId,rateInfos\n返回值.data.room_types[].areaRange [string]: 房间面积范围,平方米。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].bedTypeDesc [string]: 床型说明。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].bedTypeDescCN [string]: 床型中文说明。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].bedTypeId [integer]: 内部标准床型 ID;零不能用于推断床型。\n返回值.data.room_types[].bedWidth [string]: 已核实床宽,米;缺失表示未知。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].hasWindow [null|boolean]: 是否有窗;明确 false 表示无窗,缺失/null 表示未知。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].name [string]: 名称。\n返回值.data.room_types[].nameCN [string]: 中文名称。\n返回值.data.room_types[].rateInfos [null|array]: 原始验价报价列表;与查询的 products 结构不同,null/空数组表示没有返回报价。\n返回值.data.room_types[].rateInfos[] [object] 必有字段=roomTypeName,roomTypeNameCN,bedTypeDesc,bedTypeDescCN,bedTypes,bedTypesCN,bedTypeId,rateCode,name,allotment,maxOccupancy,maxChildren,paymentType,currencyCode,totalPrice,discountedPrice,perNightPrice,totalTaxAndFee,mealInfo,refundable,isOTAForbidden,packageRate,dcTag,currencyCodeFX,totalPriceFX,perNightPriceFX,isOnRequest\n返回值.data.room_types[].rateInfos[].allotment [integer]: 本次报价通过库存检查的房间数,当前实现填写请求的 room_count,并非供应商全部剩余库存;不锁库存,不能用它推断最大可订数量。零不表示无限库存。\n返回值.data.room_types[].rateInfos[].bedTypeDesc [string]: 床型说明。\n返回值.data.room_types[].rateInfos[].bedTypeDescCN [string]: 床型中文说明。\n返回值.data.room_types[].rateInfos[].bedTypeId [integer]: 内部标准床型 ID;零不能用于推断床型。\n返回值.data.room_types[].rateInfos[].bedTypes [null|array]: 可选床型说明列表;null 表示未提供。\n返回值.data.room_types[].rateInfos[].bedTypes[] [string]\n返回值.data.room_types[].rateInfos[].bedTypesCN [null|array]: 可选床型中文说明列表;null 表示未提供。\n返回值.data.room_types[].rateInfos[].bedTypesCN[] [string]\n返回值.data.room_types[].rateInfos[].benefits [null|array]: 报价礼遇列表。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].benefits[] [object] 必有字段=label,desc,tags\n返回值.data.room_types[].rateInfos[].benefits[].desc [string]: 说明文本。\n返回值.data.room_types[].rateInfos[].benefits[].label [string]: 礼遇类别:luxury、virtuoso、stay_n_pay_m。\n返回值.data.room_types[].rateInfos[].benefits[].payDays [integer]: 连住优惠计费天数。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].benefits[].stayDays [integer]: 连住天数,仅适用连住优惠。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].benefits[].tags [null|array]: 礼遇细项标签列表。\n返回值.data.room_types[].rateInfos[].benefits[].tags[] [string]\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos [null|array]: 取消罚则时段;缺失/null/空数组不构成可免费取消的承诺。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[] [object] 必有字段=startDateTime,currencyCode\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[].amount [null|number]: 金额,所在对象 currency/currencyCode 的主单位;cancelPolicyInfos 中表示该时段取消费用。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[].currencyCode [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[].endDateTime [string]: 罚则结束时间,保留返回的时区;缺失表示未提供该时段终点。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[].nightCount [null|integer]: 罚款折合晚数,未提供时不按零处理。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].cancelPolicyInfos[].startDateTime [string]: 罚则起始时间,通常 RFC3339 含时区;首段起始时间对应免费取消截止。保留返回的时区;缺时区或无法解析时不猜测。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo [null|object] 必有字段=Total,BaseRate,TaxAndServiceFee,SalesTax,PerRoomBaseRate,HotelFees: 供应商原始计费明细,保留 PascalCase 字段;整数金额为供应商内部计费口径,不直接当成 MCP 展示主单位金额;下单使用 totalPrice/currencyCode。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.BaseRate [integer]: 供应商原始总房费,内部整数计费口径。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.HotelFees [null|array]: 酒店当地额外收取费用,不包含在该计费对象 Total 中;整数金额使用供应商内部口径。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.HotelFees[] [object] 必有字段=desc,amount,currency\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.HotelFees[].amount [integer]: 供应商原始酒店额外费用整数金额,内部计费口径;不能直接当展示元。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.HotelFees[].currency [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.HotelFees[].desc [string]: 说明文本。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.PerRoomBaseRate [integer]: 供应商原始单间房费,内部整数计费口径。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.SalesTax [integer]: 供应商原始销售税,内部整数计费口径。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.TaxAndServiceFee [integer]: 供应商原始税及服务费,内部整数计费口径。\n返回值.data.room_types[].rateInfos[].chargeableRateInfo.Total [integer]: 供应商原始含税总金额,内部整数计费口径;不代替 totalPrice。\n返回值.data.room_types[].rateInfos[].currencyCode [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].currencyCodeFX [string]: 换算展示币种 ISO 4217;空串表示未提供。\n返回值.data.room_types[].rateInfos[].dailyPrices [null|array]: 逐入住日期价格明细。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].dailyPrices[] [object] 必有字段=stayDate,price\n返回值.data.room_types[].rateInfos[].dailyPrices[].price [number]: 该入住日每房价格,所属报价币种主单位;不是全部房间整段入住总价。\n返回值.data.room_types[].rateInfos[].dailyPrices[].stayDate [string]: 入住日期 YYYY-MM-DD。\n返回值.data.room_types[].rateInfos[].dcTag [boolean]: 直签报价标记。\n返回值.data.room_types[].rateInfos[].discountedPrice [number]: 优惠券后金额,currencyCode 主单位;仅大于零表示可用券后价,零不表示免费。\n返回值.data.room_types[].rateInfos[].essentialInformation [null|array]: 供应商重要提示列表;下单前需展示影响入住或费用的条款。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].essentialInformation[] [string]\n返回值.data.room_types[].rateInfos[].isOTAForbidden [boolean]: 该报价是否禁止 OTA 销售。\n返回值.data.room_types[].rateInfos[].isOnRequest [boolean]: true 表示需向供应商申请确认,非即时确认;false 不表示已预留库存。\n返回值.data.room_types[].rateInfos[].maxChildren [integer]: 每房额外儿童上限,独立于成人上限 maxOccupancy;供应商未提供正数上限时当前实现使用请求儿童数。缺失表示未提供,零也不能单独证明酒店不接待儿童,须以实际年龄和人数验价。\n返回值.data.room_types[].rateInfos[].maxDurationForBookingConfirmMinutes [null|integer]: 需申请确认报价的最大等待时间,分钟;仅配置存在时返回,缺失不能自行承诺固定确认时限。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].maxOccupancy [integer]: 每房成人上限,不是成人加儿童的总上限;儿童额外上限见 maxChildren。缺失表示未提供,不能按零处理;零值也不能用于推断可以无限入住,须按实际入住人数验价。\n返回值.data.room_types[].rateInfos[].mealInfo [object] 必有字段=mealType,mealCount,mealChildCount: 餐食类型与成人/儿童份数。\n返回值.data.room_types[].rateInfos[].mealInfo.mealChildCount [integer]: 供应商提供的儿童餐食份数,不代表儿童入住容量;零不能改变已知餐食类型。\n返回值.data.room_types[].rateInfos[].mealInfo.mealCount [integer]: 供应商提供的成人餐食份数,辅助解释 mealType;零不覆盖已知类型,如类型 4 仍为双早。儿童份数另见 mealChildCount。\n返回值.data.room_types[].rateInfos[].mealInfo.mealType [string]: 餐食类型字符串编码:1=不含餐;2=早餐(份数见 meal_count/mealCount);3=1份早餐;4=2份早餐;5=3份早餐;6=4份早餐;7=5份早餐;8=6份早餐;9=7份早餐;10=8份早餐;11=午餐;12=晚餐;13=午餐和晚餐;14=半膳(早餐加午餐或晚餐);15=全膳(早餐、午餐、晚餐);16=一价全包;17=膳食自理(厨房设施,并非自助餐);18=早餐和午餐;19=早餐和晚餐。meal_count/mealCount 补充份数,零值不能覆盖已知餐食类型;空串或未识别编码表示类型未知,不推断为不含餐。\n返回值.data.room_types[].rateInfos[].name [string]: 名称。\n返回值.data.room_types[].rateInfos[].packageRate [boolean]: 是否套餐报价。\n返回值.data.room_types[].rateInfos[].paxRooms [null|array]: 报价中的每组房间入住人数及每日价格。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].paxRooms[] [object] 必有字段=roomCount,adults,children,dailyPriceInfo\n返回值.data.room_types[].rateInfos[].paxRooms[].adults [integer]: 每房成人数。\n返回值.data.room_types[].rateInfos[].paxRooms[].children [integer]: 每房儿童数。\n返回值.data.room_types[].rateInfos[].paxRooms[].childrenAges [null|array]: 每房儿童年龄,0–17 岁,与 children 个数一致;缺失不是年龄为零。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].paxRooms[].childrenAges[] [integer]\n返回值.data.room_types[].rateInfos[].paxRooms[].dailyPriceInfo [null|array]: 入住日期逐日价格明细。\n返回值.data.room_types[].rateInfos[].paxRooms[].dailyPriceInfo[] [object] 必有字段=date,price,taxAndFee\n返回值.data.room_types[].rateInfos[].paxRooms[].dailyPriceInfo[].date [string]: 入住日期 YYYY-MM-DD。\n返回值.data.room_types[].rateInfos[].paxRooms[].dailyPriceInfo[].price [number]: 该入住日每房价格,所属报价币种主单位;不是全部房间整段入住总价。\n返回值.data.room_types[].rateInfos[].paxRooms[].dailyPriceInfo[].taxAndFee [number]: 该日期税费,所属报价币种主单位,不应在含税总价上重复累加。\n返回值.data.room_types[].rateInfos[].paxRooms[].roomCount [integer]: 本组相同入住人数的房间数。\n返回值.data.room_types[].rateInfos[].paymentType [integer]: 报价支付类型:1=预付,5=到店支付;当前生成器返回 1。不是 pay_order.payment_method。\n返回值.data.room_types[].rateInfos[].perNightPrice [number]: 平均每房每晚价,currencyCode 主单位;不是整段入住总价,不含另列 Stripe 手续费。\n返回值.data.room_types[].rateInfos[].perNightPriceFX [number]: 换算后的平均每房每晚展示价,currencyCodeFX 主单位。\n返回值.data.room_types[].rateInfos[].priceDetail [null|object] 必有字段=total,currency,baseRate,dailyBase,inclusions,exclusions: 价格组成;inclusions 已含、exclusions 不含,避免重复计费。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].priceDetail.baseRate [number]: 价格明细基础房费,currency 主单位。\n返回值.data.room_types[].rateInfos[].priceDetail.currency [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].priceDetail.dailyBase [null|array]: 逐日基础房费。\n返回值.data.room_types[].rateInfos[].priceDetail.dailyBase[] [object] 必有字段=stayDate,price\n返回值.data.room_types[].rateInfos[].priceDetail.dailyBase[].price [number]: 该入住日每房价格,所属报价币种主单位;不是全部房间整段入住总价。\n返回值.data.room_types[].rateInfos[].priceDetail.dailyBase[].stayDate [string]: 入住日期 YYYY-MM-DD。\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions [null|array]: 未包含在总价中的费用,可能到店支付。\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions[] [object] 必有字段=type,name,amount,currency\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions[].amount [number]: 金额,所在对象 currency/currencyCode 的主单位;cancelPolicyInfos 中表示该时段取消费用。\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions[].currency [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions[].name [string]: 名称。\n返回值.data.room_types[].rateInfos[].priceDetail.exclusions[].type [integer]: 供应商费用类别整数代码;具体收费含义以同项 name 和金额为准。\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions [null|array]: 已包含在总价中的费用。\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions[] [object] 必有字段=type,name,amount,currency\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions[].amount [number]: 金额,所在对象 currency/currencyCode 的主单位;cancelPolicyInfos 中表示该时段取消费用。\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions[].currency [string]: 金额币种 ISO 4217。\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions[].name [string]: 名称。\n返回值.data.room_types[].rateInfos[].priceDetail.inclusions[].type [integer]: 供应商费用类别整数代码;具体收费含义以同项 name 和金额为准。\n返回值.data.room_types[].rateInfos[].priceDetail.total [number]: 价格明细总额,currency 主单位。\n返回值.data.room_types[].rateInfos[].rateCode [string]: 验价后的不透明报价代码;下单使用这个值。\n返回值.data.room_types[].rateInfos[].recommendedPrice [null|number]: 建议售价,currencyCode 主单位,不是已核实的应付金额。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].refundable [boolean]: 供应商是否标记可退款;true 不等于当前免费取消,还需检查 cancelPolicyInfos 截止时间和费用。\n返回值.data.room_types[].rateInfos[].roomTypeName [string]: 房型名称。\n返回值.data.room_types[].rateInfos[].roomTypeNameCN [string]: 房型中文名称。\n返回值.data.room_types[].rateInfos[].supplierName [string]: 供应商名称。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.room_types[].rateInfos[].totalPrice [number]: 全部房间、整段入住的订单总价,使用对应币种主单位(如 CNY 元),不是分;未包含另列的 Stripe 手续费,酒店到店收取费用以政策及 exclusions 为准。\n返回值.data.room_types[].rateInfos[].totalPriceFX [number]: 全部房间整段入住的换算展示总价,currencyCodeFX 主单位;不替代结算金额。\n返回值.data.room_types[].rateInfos[].totalTaxAndFee [number]: 报价所含税费合计,currencyCode 主单位;并非所有到店费用,避免在总价上重复相加。\n返回值.data.room_types[].roomTypeCode [string]: 房型代码。\n返回值.data.total [integer]: 返回房型数量。\n返回值.error [string]: 业务失败说明,不作为可重试或成功的唯一依据。\n返回值.error_code [string]: 鉴权等机器可读错误码,仅在错误路径提供。\n返回值.ok [boolean]: 业务是否成功。false 时读取 error/reason;工具执行错误也可能通过 MCP isError 返回而没有 structuredContent。\n返回值.reason [string] 取值=[\"invalid_request\",\"hotel_not_found\",\"upstream_timeout\",\"upstream_error\",\"hotel_detail_unavailable\"]: 失败原因:invalid_request=参数无效,hotel_not_found=酒店不存在,upstream_timeout=上游超时,upstream_error=上游失败,hotel_detail_unavailable=酒店详情不可用。成功空结果的 no_matching_live_room 位于 data.reason;批量逐项判断,不把一项失败当成整批失败。\n返回值 的分支 1:\n返回值 必有字段=data\n返回值.ok 取值=[true]\n返回值 的分支 2:\n返回值 必有字段=error,reason\n返回值.ok 取值=[false]\n"
  2. Changed4 schema fields changed
    • changedInput schema / properties / adults / description
      Previous value: -"Number of adults per room"New value: +"Number of adults in each room"
    • addedInput schema / properties / children
      Added value: +{
      +  "description": "Number of children in each room",
      +  "type": "integer"
      +}
    • addedInput schema / properties / children_ages
      Added value: +{
      +  "description": "Ages of the children in each room, each from 0 to 17",
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedInput schema / properties / room_count / description
      Previous value: -"Number of rooms"New value: +"Number of rooms using the same occupancy"
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavior: price verification does not lock inventory, price or policy changes require user reconfirmation, and errors must not be restated as success. It also explains the auth boundary for user_key, adding meaningful context beyond readOnly/idempotent hints.

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 purpose is front-loaded and the later sentences generally earn their place by covering auth, verification, output-field reading, reconfirmation, and error handling. The mixed English/Chinese structure and dense semicolon-separated clauses make it slightly less crisp than it could be.

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?

Given the complexity of a pre-booking verification tool with nine parameters, rich annotations, and an output schema, the description covers when to use it, auth requirements, what to read from the response, reconfirmation rules, no inventory lock, and error handling. Nothing critical for correct use appears 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 all nine parameters are already well documented in the schema. The description reinforces that user_key is optional for ordinary ToC queries and that the same stay conditions must be used, but it does not add syntax or format details beyond the structured fields.

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: recheck the selected rate code, price, and inventory before booking. It distinguishes this verification step from initial rate searching and from booking by tying it to a selected quote and the pre-booking stage.

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 when this must be used: after selecting a quote and before placing an order, with the same stay conditions. It also gives clear conditions for reconfirmation and retry behavior, which directly guides correct invocation.

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.