Skip to main content
Glama

Search Location

search_location
Read-onlyIdempotent

Resolve a region, point of interest, landmark, shopping mall, or hotel name to TourMind regions, hotels, or coordinates. 普通 ToC 酒店查询可匿名,user_key 可选;下单、订单查询、取消和支付需要客户端安全配置的 user_key。 先用此工具解析用户地点/酒店名,再用返回的 ID 或坐标搜索酒店;不得编造 ID。 查询失败时先区分参数/鉴权错误和上游暂时失败:修正参数或重新授权后再调用,仅暂时失败可有限重试;不得把错误或空结果改述成成功。

Input Schema

NameRequiredDescriptionDefault
keywordYes地点或酒店名称。search_location 必填非空白文本;search_hotels 中关键词模式优先于 region_id,坐标模式优先于关键词。
user_keyNo由可信本地客户端配置的 TourMind 用户凭证;勿让用户在聊天中粘贴。普通 ToC 查询可省略,订单/支付操作必填;OAuth 与 ToB 不接受此字段。

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / keyword / description
      Previous value: -"Region, point of interest, landmark, shopping mall, or hotel name"New value: +"地点或酒店名称。search_location 必填非空白文本;search_hotels 中关键词模式优先于 region_id,坐标模式优先于关键词。"
    • 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] 必有字段=regions,hotels,place: 地点匹配;各类别可能为空,不编造 ID 或坐标。\n返回值.data.hotels [array|null]: 酒店列表,无结果时为 null。\n返回值.data.hotels[] [object] 必有字段=hotel_id,name: 匹配酒店,非实时可售性结果。\n返回值.data.hotels[].address [string]: 地址。\n返回值.data.hotels[].country [string]: 国家。\n返回值.data.hotels[].hotel_id [integer]: 酒店 ID,调用其他工具时使用字符串。\n返回值.data.hotels[].name [string]: 酒店名。\n返回值.data.hotels[].name_cn [string]: 酒店中文名。\n返回值.data.hotels[].region_id [string]: 区域 ID。\n返回值.data.hotels[].region_name [string]: 区域名。\n返回值.data.hotels[].star_rating [integer]: 酒店星级;缺失表示未知。\n返回值.data.place [object|null] 必有字段=place_id,name,latitude,longitude,source,recommended_radius_km,search_scope: 首个匹配 POI;null 表示没有提供 POI,可使用 regions/hotels。\n返回值.data.place.formatted_address [string]: 地点完整地址。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.place.latitude [number]: 纬度,单位度;详情返回数字字符串,搜索返回 number。\n返回值.data.place.longitude [number]: 经度,单位度;详情返回数字字符串,搜索返回 number。\n返回值.data.place.name [string]: 名称。\n返回值.data.place.place_id [string]: Google 地点标识,不是 TourMind hotel_id/region_id。\n返回值.data.place.recommended_radius_km [number]: 建议搜索半径,公里;调用搜索时需要显式传 radius_km,不是搜索服务默认值。\n返回值.data.place.search_scope [string]: 地点与推荐半径的文字说明。\n返回值.data.place.source [string]: 坐标来源,当前为 google。\n返回值.data.place.types [null|array]: Google 地点类别列表。 缺失表示本次未提供;不可自动当成零、false 或空字符串。\n返回值.data.place.types[] [string]\n返回值.data.regions [array|null]: 行政区域列表,无结果时为 null。\n返回值.data.regions[] [object] 必有字段=region_id,name: 匹配行政区域,使用返回 ID 继续搜索。\n返回值.data.regions[].country [string]: 国家名称。\n返回值.data.regions[].full_name [string]: 完整区域路径。\n返回值.data.regions[].full_name_cn [string]: 中文完整区域路径。\n返回值.data.regions[].hotel_count [integer]: 区域酒店数;缺失表示未提供,不能当成零。\n返回值.data.regions[].latitude [number]: 纬度,度。\n返回值.data.regions[].longitude [number]: 经度,度。\n返回值.data.regions[].name [string]: 区域名称。\n返回值.data.regions[].name_cn [string]: 中文名称。\n返回值.data.regions[].region_id [integer]: 区域 ID,传回 region_id 时用字符串。\n返回值.data.regions[].region_type [string]: 地区类型,由地域服务提供。\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. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, and the description adds substantial context beyond them: anonymous ToC queries work without user_key, while booking/order/cancel/payment operations require a client-configured user_key. It also discloses the error taxonomy and retry policy, which annotations cannot express.

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 tool's own behavior is front-loaded and the key sequencing rule appears early. The auth paragraph spends several clauses on booking/order/payment operations that this read-only tool never performs, which is slightly off-target but still fast to scan.

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?

With an output schema present, return values need no explanation, and the description covers the remaining agent-critical points: required sequencing with search_hotels, the no-fabricated-IDs constraint, auth requirements, and how to handle failures. Nothing essential to invoking it correctly is 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 100%, so the schema already documents both parameters in detail (non-blank keyword, user_key sourcing and when it is required). The description restates the user_key optionality for ToC lookups, which is marginally useful but largely duplicates the schema, so it lands at the baseline 3.

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 (resolve) plus the exact resource types (region, POI, landmark, mall, hotel name) and the output form (TourMind regions, hotels, coordinates). The follow-up sentence explicitly separates this from search_hotels by stating this tool resolves names first and search_hotels consumes the resulting IDs/coordinates.

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 states the intended sequence ('use this tool first to resolve the location/hotel name, then search hotels with the returned ID or coordinates'), forbids fabricating IDs, and gives explicit failure-handling guidance (distinguish parameter/auth errors from transient upstream failures; retry only transient ones a limited number of times).

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.