search_google_hotels_property
Search for hotel property details on Google, including availability, pricing, and room options based on check-in/out dates and guest information.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| property_token | Yes | 物业令牌 | |
| check_in_date | Yes | 入住日期 | |
| check_out_date | Yes | 退房日期 | |
| gl | No | 地理位置 | |
| hl | No | 语言 | |
| currency | No | 货币 | |
| adults | No | 成人数量 | |
| children | No | 儿童数量 | |
| children_ages | No | 儿童年龄 |
Implementation Reference
- src/index.js:297-320 (handler)Handler function for the 'search_google_hotels_property' tool. Constructs API parameters using required and optional inputs, calls makeSearchapiRequest to fetch hotel property details from Google via searchapi.io, and returns the JSON-formatted result.async (args) => { const params = { engine: 'google_hotels_property', property_token: args.property_token, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'adults', 'children', 'children_ages' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
- src/index.js:286-296 (schema)Zod schema defining the input parameters for the tool, including required property_token, check_in_date, check_out_date, and optional parameters like gl, hl, etc.{ property_token: z.string().describe('物业令牌'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), children_ages: z.string().optional().describe('儿童年龄') },
- src/index.js:285-321 (registration)Registration of the tool using server.tool(), including name, schema, and inline handler.'search_google_hotels_property', { property_token: z.string().describe('物业令牌'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), children_ages: z.string().optional().describe('儿童年龄') }, async (args) => { const params = { engine: 'google_hotels_property', property_token: args.property_token, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'adults', 'children', 'children_ages' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } );
- src/index.js:29-57 (helper)Shared helper function that sends HTTP GET requests to the searchapi.io API with the provided parameters and API key, handles errors, and returns the response data.async function makeSearchapiRequest(params) { // 确保API Key被添加到参数中 params.api_key = SEARCHAPI_API_KEY; try { const response = await axios.get(SEARCHAPI_URL, { params, timeout: 30000 // 30秒超时 }); return response.data; } catch (error) { let errorDetail = null; if (error.response) { try { errorDetail = error.response.data; } catch (e) { errorDetail = error.response.statusText; } } const errorMessage = `调用searchapi.io时出错: ${error.message}`; if (errorDetail) { return { error: `${errorMessage}, 详情: ${JSON.stringify(errorDetail)}` }; } return { error: errorMessage }; } }