hemmabo_booking_checkout
Create a pending booking and generate a Stripe Checkout payment URL when no signed VRP direct booking link is available, after explicit guest confirmation.
Instructions
Create a fallback non-VRP booking and return a host-configured Stripe checkout URL. Use only after explicit user confirmation when no signed VRP direct_booking_url is available; when get_verified_stay_offer returns one, route the guest there instead. Use hemmabo_booking_create to record a pending booking without collecting payment yet.
Behavior: existing bookings are never modified — availability is checked and dates briefly locked first; conflicts fail before anything is created or charged. Success creates exactly one pending booking and one Stripe Checkout Session on the host's connected account, returning paymentUrl, reservationId, and a one-time guestToken (required for status/cancel/reschedule). Only the Stripe webhook confirms the booking; unpaid pending bookings expire automatically. Not idempotent — check hemmabo_booking_status before retrying.
Params: pass quoteId only for the exact propertyId/dates/guests locked by hemmabo_booking_negotiate (valid 15 min); omit to price fresh. channel selects which locked total is used; paymentMode changes only the handoff form, never the price.
Requires Authorization: Bearer token (MCP_API_KEY or OAuth); rate-limited per token.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). | |
| channel | No | Pricing channel selector. 'federation' (default for agent flows): direct host-source total. 'public': standard website rate without agent channel pricing. Omit to use federation. | |
| checkIn | Yes | Arrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability. | |
| quoteId | No | Quote ID string from hemmabo_booking_negotiate (e.g. 'q_abc123'). Optional — omit to calculate a fresh host-source price at checkout. Provide when the guest locked a price within the 15-minute quote window. | |
| checkOut | Yes | Departure date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night. | |
| guestName | Yes | Primary guest full name as plain text (e.g. 'Anna Svensson'). Stored on the booking for host confirmation; use the name the guest provided. | |
| guestEmail | Yes | Primary guest email in RFC 5322 format (e.g. 'anna@example.com'). Used for booking confirmation and host contact; must be deliverable. | |
| guestPhone | No | Primary guest phone in E.164 format with country code (e.g. '+46701234567'). Optional; omit when unknown. Recommended for check-in coordination. | |
| propertyId | Yes | Stable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL. | |
| paymentMode | No | Stripe payment flow. 'checkout_session' (default): returns a browser redirect URL. 'payment_intent': returns client_secret for embedded/agentic payment integrations. Omit to use checkout_session. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mpp | No | Present when paymentMode='payment_intent'. | |
| error | No | Present only when isError=true. | |
| guests | No | ||
| nights | No | ||
| status | No | Booking status (typically 'pending' until payment succeeds). | |
| checkIn | No | ||
| checkOut | No | ||
| currency | Yes | ||
| createdAt | No | ||
| guestToken | No | Per-booking secret (guest_token) for this booking. Present it back as guestToken on hemmabo_booking_status / hemmabo_booking_cancel / hemmabo_booking_reschedule to view or modify this booking; a Bearer token alone is not sufficient. Store it securely and do not show it to the guest. | |
| paymentUrl | No | Stripe Checkout redirect URL. | |
| propertyId | No | ||
| totalPrice | Yes | Final total charged (or to be charged), in minor currency units. | |
| payment_modes | No | Supported payment modes. | |
| reservationId | Yes | Booking UUID. Use for subsequent status/cancel/reschedule calls. |