get_reservation_brief
Retrieve essential reservation details for agents or operators to quickly understand guest context and manage hospitality workflows.
Instructions
Return the minimum useful reservation context for an agent or operator.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reservationId | Yes | ||
| detailLevel | No |
Implementation Reference
- src/tools/get-reservation-brief.ts:57-69 (handler)The handler function that retrieves reservation and listing data from the client, then processes it using buildReservationBrief to produce the tool result.
async ({ reservationId, detailLevel }) => { const reservation = await client.getReservation(reservationId); const listingId = reservation.listingMapId ?? reservation.listingId ?? null; const listing = listingId != null ? await client.getListing(listingId).catch(() => null) : null; return toolResult( buildReservationBrief({ reservation, listing, detailLevel: detailLevel ?? "compact" }) ); } - Schema definition for the input and output of the get_reservation_brief tool.
inputSchema: { reservationId: z.union([z.string(), z.number()]), detailLevel: z.enum(["compact", "full"]).optional() }, outputSchema: { reservationId: z.string().nullable(), listingId: z.string().nullable(), listingName: z.string().nullable(), guestName: z.string(), guestEmail: z.string().nullable(), channel: z.enum(["Airbnb", "Booking.com", "VRBO", "Direct"]), status: z.string().nullable(), arrivalDate: z.string().nullable(), departureDate: z.string().nullable(), occupancy: z .object({ totalGuests: z.number().nullable(), adults: z.number().nullable(), children: z.number().nullable(), infants: z.number().nullable(), pets: z.number().nullable() }) .nullable(), missing: z.array(z.string()), notes: z.array(z.string()), raw: z .object({ reservation: z.record(z.string(), z.unknown()), listing: z.record(z.string(), z.unknown()).nullable() }) .optional() } - src/tools/get-reservation-brief.ts:19-71 (registration)Function responsible for registering the get_reservation_brief tool with the McpServer.
export function registerGetReservationBriefTool(server: McpServer, client: HostawayDataClient) { server.registerTool( "get_reservation_brief", { description: "Return the minimum useful reservation context for an agent or operator.", inputSchema: { reservationId: z.union([z.string(), z.number()]), detailLevel: z.enum(["compact", "full"]).optional() }, outputSchema: { reservationId: z.string().nullable(), listingId: z.string().nullable(), listingName: z.string().nullable(), guestName: z.string(), guestEmail: z.string().nullable(), channel: z.enum(["Airbnb", "Booking.com", "VRBO", "Direct"]), status: z.string().nullable(), arrivalDate: z.string().nullable(), departureDate: z.string().nullable(), occupancy: z .object({ totalGuests: z.number().nullable(), adults: z.number().nullable(), children: z.number().nullable(), infants: z.number().nullable(), pets: z.number().nullable() }) .nullable(), missing: z.array(z.string()), notes: z.array(z.string()), raw: z .object({ reservation: z.record(z.string(), z.unknown()), listing: z.record(z.string(), z.unknown()).nullable() }) .optional() } }, async ({ reservationId, detailLevel }) => { const reservation = await client.getReservation(reservationId); const listingId = reservation.listingMapId ?? reservation.listingId ?? null; const listing = listingId != null ? await client.getListing(listingId).catch(() => null) : null; return toolResult( buildReservationBrief({ reservation, listing, detailLevel: detailLevel ?? "compact" }) ); } ); }