Samuelz Chauffeur Booking
Server Details
Public chauffeur information, policies and anonymous price previews for Munich and MUC. On explicit customer request, prepare a binding unpaid offer using email OR E.164 phone, without an account. Customers review bound terms and explicitly confirm in Samuelz checkout. The same endpoint provides OAuth-protected booking status, payment review, history, and amendment/cancellation workflows. Booking data and actions require authorized customer access; changes and cancellations require the applicable object-bound consent. Tool discovery is public. Quotes do not guarantee availability, and MCP does not take payment.
- Status
- Healthy
- Uptime
- 99.5% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
The three booking-read tools (get_booking_status, get_booking_history, get_booking_payment_review) could superficially overlap, but each description explicitly carves out its scope and cross-references the others. The prepare_* tools are cleanly split by action (change vs cancellation), and quote_ride vs prepare_offer vs get_offer_status are well separated by intent. Only minor boundary judgment is needed between the read tools.
Names follow a clear verb_noun pattern: get_* for reads (booking_history, booking_payment_review, booking_status, customer_policy, offer_status, service_options), prepare_* for proposal flows (booking_cancellation, booking_change, offer), and quote_ride. The verb families are used consistently and predictably.
Ten tools is well within the ideal 3-15 range and each earns its place, covering reads, policy/scope discovery, pricing, and the offer/change/cancellation preparation lifecycle. Nothing appears redundant or padded.
The surface covers discovery (service options, policy), pricing (quote_ride), offers (prepare/get_offer_status), and booking review/change/cancellation, plus status, history and payment reads. The only apparent gap is a direct commit/confirm tool, but actions are intentionally routed through external consent links, so this is a minor, by-design limitation.
Available Tools
10 toolsget_booking_historyRead this booking and offer timelineRead-onlyIdempotentInspect
Read recorded events for the OAuth-selected booking. Choose this for “what happened to this booking?”, get_booking_status for its current stored state, or get_booking_payment_review for its existing unpaid checkout. get_offer_status instead recovers an original new-offer submission.
Omit bookingKey to read the already-selected booking without asking for its number; an explicit key must still match that selection.
Pagination:
Start without after. Copy the entire nextCursor into after with the same bookingKey and limit; timestamp plus ID jointly identify the boundary, including timestamp ties.
limit sizes each page, not the complete timeline. Stop at nextCursor=null rather than restarting or inferring a missing booking.
available returns event ID, recorded timestamp and kind (offer, amendment preparation, amendment or cancellation request/outcome), plus observedAt and nextCursor. Newest timestamps come first; ties use ascending IDs. Each page has its own observedAt cutoff, so concurrent records do not form one frozen multi-page snapshot. Empty means no matching visible events.
Correct invalid_request; not_found denies access; unavailable leaves history unverified. Authority is checked before/after. No provider refresh occurs; records alone do not prove payment, refund, dispatch or completion. Reading performs no booking action.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Omit for the newest page. For older events, copy the preceding non-null nextCursor unchanged. Stop when nextCursor is null. | |
| limit | No | Maximum entries in this page, 1–50; defaults to 20. The selected booking stays unchanged. | |
| bookingKey | No | Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_booking_payment_reviewReview payment for this existing bookingRead-onlyIdempotentInspect
Open the existing unpaid checkout for the OAuth-selected guest booking. Choose this for “let me review/pay this existing offer”, get_booking_status for recorded payment flags, or get_offer_status for original-submission recovery. This retrieves a review destination rather than a general status or new-price result; prepare_offer creates a new ride offer.
Omit bookingKey (arguments {}) to review the already-selected booking; no repeated identifier is needed. If supplied, it must be that same booking's ID/reference. The server separately matches its original intake receipt and explicit guest payment-review consent; an identifier supplies neither. Linked-customer and status-only grants cannot use this review. not_found denies access without proving absence.
prepared supplies the existing private checkoutUrl with bound amount, expiry and terms. The customer reviews, explicitly confirms and pays on that page; afterward reread get_booking_status. Paid/refunded/closed bookings return recorded state without a link. For ambiguous/conflict/expired/unavailable follow returned guidance, never create a replacement offer to bypass denial. Authority/revocation are rechecked. No new checkout, charge, message or provider refresh occurs.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingKey | No | Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_booking_statusRead an existing own bookingRead-onlyIdempotentInspect
Read the OAuth-selected booking's current stored state: booking/payment status and assignment flags. Choose this for “what is my booking's recorded state?”, get_booking_history for “what happened?”, or get_booking_payment_review for “open this booking's existing unpaid checkout”. get_offer_status instead recovers an original prepare_offer submission using its intake proof.
At the OAuth endpoint, omit bookingKey (arguments {}) to use the already-selected booking. If supplied, use its ID or visible bookingReference, never supplier offerKey or a URL fragment. The private app-session endpoint still requires an explicit bookingKey. For a fictional reference: {"bookingKey":"WEB-EXAMPLE"}. Changing this identifier cannot change OAuth selection; prepared offer results contain links rather than booking IDs.
Authority is checked each call. not_found denies access without proving absence; unavailable leaves state unverified. This read does not refresh providers: stored payment, assignment and completion flags are not fresh proof of payment, dispatch or fulfillment. No booking or payment action occurs.
| Name | Required | Description | Default |
|---|---|---|---|
| bookingKey | No | Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_customer_policyPublished customer termsRead-onlyIdempotentInspect
Read current account/guest eligibility and pickup lead-time rules for a new offer. Call after get_service_options and before quote_ride or prepare_offer. This tool answers purchase eligibility, not price, capacity, or authority to amend/cancel an existing booking.
Selection and timing:
Retain the selected offerKey across the workflow; locale changes language without changing location. A different offerKey requires a fresh policy read.
Interpret intended pickup in returned timeZone; compare the interval from now with terms.minimumLeadTimeMinutes. A fictional 120-minute minimum excludes pickup 90 minutes away without implying vehicle unavailability.
available returns account requirements, guest-booking rules, lead-time terms, timeZone and observedAt. observedAt dates this policy read, not an expiry or capacity hold. Revalidate before preparation; unavailable leaves eligibility unverified. The customer reviews bound offer terms and confirms in checkout; confirmation requires provider-confirmed full payment. Reading policy creates no booking.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Use the customer's requested language for text and booking links: en by default, de for German. Preserve it on retries; pickup times stay in the provider time zone. | en |
| offerKey | No | Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_offer_statusRead prepared offer statusRead-onlyIdempotentInspect
Recover the stored outcome of exactly one prepare_offer submission. Choose this for “did my original offer submission finish?” or recovery after checkout, using its original submissionId/resumeToken. It cannot quote a new ride, create another offer, read policy/capabilities, or resume an amendment. get_booking_status uses separate OAuth selection to read an existing booking.
Both values belong to one original intake; mixing submissions cannot recover an intent. The pair is neither supplier offerKey nor a login grant. Unchanged retries preserve language and extend neither the 24-hour proof lifetime nor the separate offer expiry.
prepared returns private checkout/review links; available returns booking identifiers and recorded outcome. Wait retryAfterSeconds on pending. Inspect ambiguous/conflict before retrying preparation. not_found denies proof access; unavailable leaves recovery unverified and says nothing about vehicle availability. No booking action occurs.
| Name | Required | Description | Default |
|---|---|---|---|
| resumeToken | Yes | Caller-generated private 64-character hexadecimal secret for this submission (32 random bytes). Keep its original submissionId pair. The stored resume proof expires 24 hours after first claimed intake; unchanged retries do not renew it. This is separate from offer.expiresAt and is not an account credential. | |
| submissionId | Yes | Caller-generated UUID for one explicitly requested offer intent. Keep the same submissionId/resumeToken and unchanged facts for retries and status; a new explicit intent needs a new pair. This is not a bookingKey. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_service_optionsChauffeur service optionsRead-onlyIdempotentInspect
Read supported ride services, required facts and the selected service location's timeZone. Call before collecting a new ride; follow with get_customer_policy for eligibility, quote_ride for price, then prepare_offer only for an explicitly requested offer.
Omitting offerKey selects the published default. Otherwise retain the same known published key across policy, pricing and preparation; a key must still match the current publication/catalog. locale selects translated labels and links independently: changing de to en keeps the location, whereas changing offerKey requires rereading timeZone before interpreting a clock time.
available reports capabilities and collection requirements, not vehicle inventory or held capacity. This uncached read consumes no quote admission; reread before quoting. Correct invalid_request facts; unavailable leaves service scope unverified.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Use the customer's requested language for text and booking links: en by default, de for German. Preserve it on retries; pickup times stay in the provider time zone. | en |
| offerKey | No | Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
prepare_booking_cancellationReview cancellation of this bookingRead-onlyIdempotentInspect
Return a private cancellation-review link for the OAuth-selected existing booking. Choose this to cancel that booking, prepare_booking_change for an amendment, or prepare_offer for a new ride; get_booking_status only reads stored state.
bookingKey must identify the selected booking and cannot switch OAuth selection. Generate onceKey once for this booking/cancellation intent, retain it for unchanged retries, and never substitute an amendment's key. The key travels with the booking/action in the URL for later consent; retrieving the link does not persist or execute cancellation.
consent_required returns consentUrl. Open it in the original signed-in session; the customer reviews amount/terms and separately consents/confirms there. Then read get_booking_status and get_booking_history; recorded events are not fresh refund proof. Correct invalid_request; not_found denies access; unavailable leaves review unverified. Authority is checked before/after. No cancellation, refund, payment or message occurs in this call.
| Name | Required | Description | Default |
|---|---|---|---|
| onceKey | Yes | Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent. | |
| bookingKey | Yes | Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
prepare_booking_changeReview a booking changeRead-onlyIdempotentInspect
Return a private amendment-review link for the OAuth-selected existing booking. Choose this to change that ride, prepare_booking_cancellation to cancel it, or prepare_offer to create a new ride. quote_ride prices a new request without amending a booking.
amendment is a complete proposal, not a patch: changing pickup time still requires the unchanged pickup, destination, date, passengers and trip type. Use the selected service location's timeZone. bookingKey cannot switch OAuth selection. Reuse onceKey only for the same booking/action/exact proposal; changed facts need a fresh key and customer review. The key and full proposal travel in the URL for later consent, not an executed amendment.
consent_required returns consentUrl. Open it in the original signed-in session; the customer reviews current offer/terms/proposal and separately consents/confirms there. Read the later outcome with get_booking_status and get_booking_history, not get_offer_status. Correct invalid_request; not_found denies access; unavailable leaves review unverified. Authority is checked before/after. Link retrieval neither stores the proposal nor grants execution authority, and performs no amendment, refund, payment or message.
| Name | Required | Description | Default |
|---|---|---|---|
| onceKey | Yes | Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent. | |
| amendment | Yes | Full proposed ride request in the existing quote-input shape, including all required ride fields. Review these exact facts in the linked original signed-in session before separate action consent and confirmation. | |
| bookingKey | Yes | Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
prepare_offerPrepare an unpaid chauffeur offerIdempotentInspect
Create one unpaid reservation and binding offer for an explicitly requested new ride. Price-only questions use quote_ride; amendments use prepare_booking_change. Preparation needs no account; private booking access requires separate authorization.
Keep one intent:
Generate submissionId/resumeToken once and retain the pair with the original ride, contact, locale, offerKey and supplied partner capability.
A different recipient or language conflicts with the intent; it does not update the offer. Contact identifies a reachable recipient, not a private booking grant.
Complete or recover:
prepared: open the private checkoutUrl. The customer reviews amount, expiry and full terms, then explicitly confirms and pays there; this call neither charges nor confirms.
pending/rate_limited: wait retryAfterSeconds, then recover with get_offer_status and the original pair.
ambiguous/conflict: inspect the original submission; never replace its pair to bypass it.
available: use returned booking IDs/reference only within the separately authorized booking lifecycle.
get_offer_status reads this submission's subsequent recorded outcome. The resume proof lasts 24 hours from first claimed intake; retries extend neither it nor offer.expiresAt. Keep links and proof private.
| Name | Required | Description | Default |
|---|---|---|---|
| ride | Yes | Ride facts with distinct pickup/destination and valid local dates/times. Return requires returnDate/returnTime after pickup; one_way omits both. Hourly requires one_way and hours; transfers omit hours. | |
| locale | No | Use the customer's requested language for text and booking links: en by default, de for German. Preserve it on retries; pickup times stay in the provider time zone. | en |
| contact | Yes | Customer/booker contact for this explicitly requested offer: email OR E.164 phone is required. Contact does not authorize private booking/history access. | |
| offerKey | No | Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access. | |
| resumeToken | Yes | Caller-generated private 64-character hexadecimal secret for this submission (32 random bytes). Keep its original submissionId pair. The stored resume proof expires 24 hours after first claimed intake; unchanged retries do not renew it. This is separate from offer.expiresAt and is not an account credential. | |
| submissionId | Yes | Caller-generated UUID for one explicitly requested offer intent. Keep the same submissionId/resumeToken and unchanged facts for retries and status; a new explicit intent needs a new pair. This is not a bookingKey. | |
| offerRequested | Yes | Must be true only after the customer explicitly requests an offer; a price question alone is insufficient consent. | |
| specialRequests | No | Optional ride requirements, at most 500 characters. Additional stops or unusual requirements may require review; do not include contact details in a quote. | |
| firstTouchTrackingToken | No | Optional existing server-issued first-touch UUID token for this tenant and consented attribution. Omit if none; never invent a token or source. | |
| distributionPartnerCapability | No | Optional existing opaque dp_live_ capability issued to an approved distribution partner. Omit for normal customers; do not create or guess one. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
quote_rideChauffeur price previewRead-onlyInspect
Preview price for complete ride facts without contact details. Choose this for “what would this new ride cost?”, prepare_offer for “create the requested new offer”, and prepare_booking_change for review of an existing booking's amendment. get_offer_status only recovers an already submitted intent and cannot calculate a new price.
Use the same offerKey and its get_service_options timeZone. Return service needs a later return pickup; hourly service needs one_way plus duration. Vehicle preference and specialRequests share a 500-character combined note limit including label/separator: separately valid values can exceed it together. Preserve volunteered requirements; ask rather than truncate.
quoted returns price, tax and inclusions by leg without reserving capacity. Route/pricing reads consume quote admission; prices may change. Revalidate before preparation. Wait retryAfterSeconds on rate_limited; follow review_required guidance. No offer, reservation, charge or message is created.
| Name | Required | Description | Default |
|---|---|---|---|
| ride | Yes | Ride facts with distinct pickup/destination and valid local dates/times. Return requires returnDate/returnTime after pickup; one_way omits both. Hourly requires one_way and hours; transfers omit hours. | |
| locale | No | Use the customer's requested language for text and booking links: en by default, de for German. Preserve it on retries; pickup times stay in the provider time zone. | en |
| offerKey | No | Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access. | |
| specialRequests | No | Optional ride requirements, at most 500 characters. Additional stops or unusual requirements may require review; do not include contact details in a quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
get_booking_history2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access." - removed
Input schema / requiredRemoved value: -[ - "bookingKey" -]
- Changed
get_booking_payment_review2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access." - removed
Input schema / requiredRemoved value: -[ - "bookingKey" -]
- Changed
get_booking_status2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access." - removed
Input schema / requiredRemoved value: -[ - "bookingKey" -]
3 tool updates
- Changed
prepare_booking_change1 field changed- changed
Input schema / properties / amendment / properties / ride / properties / time / descriptionPrevious value: -"Local pickup time in 24-hour HH:mm format, in the provider timeZone (Samuelz: Europe/Berlin); not UTC or an offset timestamp."New value: +"Local pickup time in 24-hour HH:mm format, in the configured timeZone returned by get_service_options for the same offerKey; not UTC or an offset timestamp."
- Changed
prepare_offer1 field changed- changed
Input schema / properties / ride / properties / time / descriptionPrevious value: -"Local pickup time in 24-hour HH:mm format, in the provider timeZone (Samuelz: Europe/Berlin); not UTC or an offset timestamp."New value: +"Local pickup time in 24-hour HH:mm format, in the configured timeZone returned by get_service_options for the same offerKey; not UTC or an offset timestamp."
- Changed
quote_ride1 field changed- changed
Input schema / properties / ride / properties / time / descriptionPrevious value: -"Local pickup time in 24-hour HH:mm format, in the provider timeZone (Samuelz: Europe/Berlin); not UTC or an offset timestamp."New value: +"Local pickup time in 24-hour HH:mm format, in the configured timeZone returned by get_service_options for the same offerKey; not UTC or an offset timestamp."
1 tool update
- Changed
get_customer_policy1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "description": "Input does not match this operation's contract; correct the facts before retrying.", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "description": "Reading policy does not create or confirm a booking.", - "type": "boolean" - }, - "bookingUrl": { - "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", - "format": "uri", - "type": "string" - }, - "observedAt": { - "description": "Observation timestamp of the minimum-lead-time policy read; no validity window is promised.", - "type": "string" - }, - "revalidationRequired": { - "const": true, - "description": "Re-read and revalidate current policy before offer preparation/confirmation.", - "type": "boolean" - }, - "scope": { - "const": "booking_preparation", - "description": "These rules cover preparation of a customer offer/booking, not action authority.", - "type": "string" - }, - "status": { - "const": "available", - "description": "Current booking-preparation policy was read; no booking is confirmed.", - "type": "string" - }, - "terms": { - "additionalProperties": false, - "description": "Current published account, guest-booking, lead-time and confirmation rules.", - "properties": { - "accountRequired": { - "description": "Whether current purchase policy requires an account.", - "type": "boolean" - }, - "bookerForGuestAllowed": { - "description": "Whether current policy allows a booker to request service for another guest.", - "type": "boolean" - }, - "bookingConfirmation": { - "const": "after_confirmed_full_payment", - "description": "Confirmation requires provider-confirmed full payment; an offer link alone is insufficient.", - "type": "string" - }, - "minimumLeadTimeMinutes": { - "description": "Current minimum time before pickup, expressed in minutes.", - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "serviceSpecificTerms": { - "const": "review_the_current_offer_before_confirmation", - "description": "Review the complete terms bound to the current offer before confirming.", - "type": "string" - } - }, - "required": [ - "minimumLeadTimeMinutes", - "accountRequired", - "bookerForGuestAllowed", - "bookingConfirmation", - "serviceSpecificTerms" - ], - "type": "object" - }, - "timeZone": { - "description": "Configured local time zone for the selected provider/service location.", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "timeZone", - "observedAt", - "scope", - "revalidationRequired", - "terms", - "bookingConfirmed" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "Reading policy does not create or confirm a booking.", + "type": "boolean" + }, + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "observedAt": { + "description": "ISO 8601 UTC timestamp when the current minimum-lead-time policy was read, not its expiry or a guarantee of future validity.", + "type": "string" + }, + "revalidationRequired": { + "const": true, + "description": "Re-read and revalidate current policy before offer preparation/confirmation.", + "type": "boolean" + }, + "scope": { + "const": "booking_preparation", + "description": "These rules cover preparation of a customer offer/booking, not action authority.", + "type": "string" + }, + "status": { + "const": "available", + "description": "Current booking-preparation policy was read; no booking is confirmed.", + "type": "string" + }, + "terms": { + "additionalProperties": false, + "description": "Current published account, guest-booking, lead-time and confirmation rules.", + "properties": { + "accountRequired": { + "description": "Whether current purchase policy requires an account.", + "type": "boolean" + }, + "bookerForGuestAllowed": { + "description": "Whether current policy allows a booker to request service for another guest.", + "type": "boolean" + }, + "bookingConfirmation": { + "const": "after_confirmed_full_payment", + "description": "Confirmation requires provider-confirmed full payment; an offer link alone is insufficient.", + "type": "string" + }, + "minimumLeadTimeMinutes": { + "description": "Current minimum time before pickup, expressed in minutes.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "serviceSpecificTerms": { + "const": "review_the_current_offer_before_confirmation", + "description": "Review the complete terms bound to the current offer before confirming.", + "type": "string" + } + }, + "required": [ + "minimumLeadTimeMinutes", + "accountRequired", + "bookerForGuestAllowed", + "bookingConfirmation", + "serviceSpecificTerms" + ], + "type": "object" + }, + "timeZone": { + "description": "Configured local time zone for the selected provider/service location.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "timeZone", + "observedAt", + "scope", + "revalidationRequired", + "terms", + "bookingConfirmed" + ], + "type": "object" + } +]
10 tool updates
- Changed
get_booking_history2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."New value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "bookingKey": { - "type": "string" - }, - "bookingReference": { - "type": "string" - }, - "entries": { - "items": { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "kind": { - "enum": [ - "offer_recorded", - "amendment_preparation_recorded", - "amendment_recorded", - "cancellation_requested", - "cancellation_outcome_recorded" - ], - "type": "string" - }, - "occurredAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "id", - "occurredAt", - "kind" - ], - "type": "object" - }, - "type": "array" - }, - "nextAction": { - "type": "string" - }, - "nextCursor": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "id": { - "description": "Exact ID from nextCursor for stable ordering of events at the same timestamp; it grants no access.", - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "occurredAt": { - "description": "Exact timestamp from the returned nextCursor; copy unchanged for older entries.", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - } - }, - "required": [ - "occurredAt", - "id" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "observedAt": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - "status": { - "const": "available", - "type": "string" - } - }, - "required": [ - "status", - "bookingKey", - "bookingReference", - "observedAt", - "entries", - "nextCursor", - "nextAction" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "not_found", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "bookingKey": { + "description": "Internal reservation ID for the one booking selected by the current OAuth grant.", + "type": "string" + }, + "bookingReference": { + "description": "Stored visible reference for this booking, falling back to its internal ID; not a supplier offerKey.", + "type": "string" + }, + "entries": { + "description": "Recorded offer, amendment and cancellation entries, newest first and then id ascending for equal timestamps. Empty means no matching visible events.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "description": "Stable timeline-entry ID from a stored offer reference or booking event, not a booking ID or retry key.", + "type": "string" + }, + "kind": { + "description": "Recorded event category: offer reference, amendment preparation, committed amendment, cancellation request or cancellation outcome. It is not a payment/refund or fulfillment history.", + "enum": [ + "offer_recorded", + "amendment_preparation_recorded", + "amendment_recorded", + "cancellation_requested", + "cancellation_outcome_recorded" + ], + "type": "string" + }, + "occurredAt": { + "description": "Recorded event timestamp in ISO 8601; used with id for stable pagination.", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "id", + "occurredAt", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "nextAction": { + "description": "Read-only guidance to inspect booking status and bound action terms; reading history performs no booking action.", + "type": "string" + }, + "nextCursor": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "description": "Exact ID from nextCursor for stable ordering of events at the same timestamp; it grants no access.", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "occurredAt": { + "description": "Exact timestamp from the returned nextCursor; copy unchanged for older entries.", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" + } + }, + "required": [ + "occurredAt", + "id" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Copy a non-null cursor unchanged into after for older entries. Null means no older page was observed; it grants no authority." + }, + "observedAt": { + "description": "Observation cutoff for this read; only events recorded at or before this timestamp are returned. It is not the booking's last-update time or provider refresh.", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" + }, + "status": { + "const": "available", + "description": "The selected booking's authorized recorded timeline was read successfully.", + "type": "string" + } + }, + "required": [ + "status", + "bookingKey", + "bookingReference", + "observedAt", + "entries", + "nextCursor", + "nextAction" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input or pagination cursor does not match this contract.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "not_found", + "description": "The selected booking is inaccessible under current authority, including authority lost during the read; absence is not proved.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unavailable", + "description": "The timeline could not be read or validated safely; this does not mean the booking is missing.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } +]
- Changed
get_booking_payment_review2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."New value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself." - changed
Output schema / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "enum": [ - "invalid_request", - "not_found", - "unavailable", - "ambiguous", - "conflict", - "expired" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingChanged": { - "const": false, - "type": "boolean" - }, - "nextAction": { - "type": "string" - }, - "payment": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "status": { - "const": "available", - "type": "string" - } - }, - "required": [ - "status", - "payment", - "bookingChanged", - "nextAction" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "type": "boolean" - }, - "checkoutUrl": { - "format": "uri", - "type": "string" - }, - "nextAction": { - "type": "string" - }, - "offer": { - "additionalProperties": false, - "properties": { - "completeTermsBound": { - "const": true, - "type": "boolean" - }, - "currency": { - "const": "EUR", - "type": "string" - }, - "customerConfirmationRequired": { - "const": true, - "type": "boolean" - }, - "expiresAt": { - "type": "string" - }, - "grossTotalCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "grossTotalCents", - "expiresAt", - "customerConfirmationRequired", - "completeTermsBound" - ], - "type": "object" - }, - "status": { - "const": "prepared", - "type": "string" - }, - "termsUrl": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "status", - "bookingConfirmed", - "checkoutUrl", - "termsUrl", - "offer", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "description": "Review failure: invalid_request rejects input; not_found denies current object/proof access; unavailable cannot safely supply the review; ambiguous means evidence is incomplete or non-unique; conflict means stored offer facts disagree; expired means the bound offer has expired.", + "enum": [ + "invalid_request", + "not_found", + "unavailable", + "ambiguous", + "conflict", + "expired" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingChanged": { + "const": false, + "description": "This read did not change the booking.", + "type": "boolean" + }, + "nextAction": { + "description": "Read-only guidance for the returned recorded state; do not start another payment.", + "type": "string" + }, + "payment": { + "additionalProperties": false, + "description": "The selected booking's recorded payment state.", + "properties": { + "recordedStatus": { + "description": "Stored reservation payment status; no new payment-provider confirmation.", + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "status": { + "const": "available", + "description": "Recorded payment state is returned without another payment link for an already-paid, refunded or closed booking.", + "type": "string" + } + }, + "required": [ + "status", + "payment", + "bookingChanged", + "nextAction" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "Returning the existing review link does not confirm the booking.", + "type": "boolean" + }, + "checkoutUrl": { + "description": "Existing private offer-review page; open it to review terms and explicitly confirm and pay through the existing flow. Treat the link as private.", + "format": "uri", + "type": "string" + }, + "nextAction": { + "description": "Guidance to open the existing review page and review the bound offer; this read performs no payment.", + "type": "string" + }, + "offer": { + "additionalProperties": false, + "description": "Existing offer amount, expiry and confirmation/terms requirements.", + "properties": { + "completeTermsBound": { + "const": true, + "description": "Complete service and legal terms were verified as bound to this offer.", + "type": "boolean" + }, + "currency": { + "const": "EUR", + "description": "Currency of the existing bound offer amount: EUR.", + "type": "string" + }, + "customerConfirmationRequired": { + "const": true, + "description": "The customer must explicitly review and confirm the offer on its existing page.", + "type": "boolean" + }, + "expiresAt": { + "description": "Stored offer expiry timestamp from offer_expires_at. It is separate from the submission resume-token expiry; an expired offer cannot be confirmed.", + "type": "string" + }, + "grossTotalCents": { + "description": "Verified gross total of the existing offer in EUR cents, including applicable tax.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "grossTotalCents", + "expiresAt", + "customerConfirmationRequired", + "completeTermsBound" + ], + "type": "object" + }, + "status": { + "const": "prepared", + "description": "The existing unpaid offer and bound review link were verified for review; no new Checkout Session or payment was created.", + "type": "string" + }, + "termsUrl": { + "description": "The same existing offer page containing the complete bound terms to review before confirmation.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "status", + "bookingConfirmed", + "checkoutUrl", + "termsUrl", + "offer", + "nextAction" + ], + "type": "object" + } +]
- Changed
get_booking_status2 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."New value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "booking": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "bookingKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "bookingReference": { - "minLength": 1, - "type": "string" - }, - "fulfillment": { - "additionalProperties": false, - "properties": { - "chauffeurAssignmentRecorded": { - "type": "boolean" - }, - "completionRecorded": { - "type": "boolean" - }, - "vehicleAssignmentRecorded": { - "type": "boolean" - } - }, - "required": [ - "chauffeurAssignmentRecorded", - "vehicleAssignmentRecorded", - "completionRecorded" - ], - "type": "object" - }, - "payment": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "status": { - "const": "available", - "type": "string" - } - }, - "required": [ - "status", - "bookingKey", - "bookingReference", - "booking", - "payment", - "fulfillment" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "login_required", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "not_found", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "booking": { + "additionalProperties": false, + "description": "Booking state read from the stored reservation; it may lag provider events.", + "properties": { + "recordedStatus": { + "description": "Stored reservation status string. It is not a new provider confirmation.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "bookingKey": { + "description": "Internal reservation ID for this selected booking. Returned in the available branch of get_offer_status/prepare_offer or an authorized booking read, not in prepared. It grants no access by itself.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "bookingReference": { + "description": "Stored customer-visible reservation reference, falling back to bookingKey when absent. Customer OAuth accepts it only for its already-selected booking; it is not the supplier offerKey.", + "minLength": 1, + "type": "string" + }, + "fulfillment": { + "additionalProperties": false, + "description": "Flags derived from stored assignments and status, not live fulfillment confirmation.", + "properties": { + "chauffeurAssignmentRecorded": { + "description": "True when a chauffeur ID is stored on the reservation; it does not confirm dispatch or acceptance.", + "type": "boolean" + }, + "completionRecorded": { + "description": "True only when the stored reservation status is completed; no fresh service-completion check is made.", + "type": "boolean" + }, + "vehicleAssignmentRecorded": { + "description": "True when a vehicle ID is stored on the reservation; it does not confirm availability or execution.", + "type": "boolean" + } + }, + "required": [ + "chauffeurAssignmentRecorded", + "vehicleAssignmentRecorded", + "completionRecorded" + ], + "type": "object" + }, + "payment": { + "additionalProperties": false, + "description": "Recorded payment state from this booking, without a payment-provider refresh.", + "properties": { + "recordedStatus": { + "description": "Stored reservation payment-status string; no payment or refund is initiated or newly confirmed.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "status": { + "const": "available", + "description": "The selected booking was accessible and its stored fields passed validation; no provider refresh occurred.", + "type": "string" + } + }, + "required": [ + "status", + "bookingKey", + "bookingReference", + "booking", + "payment", + "fulfillment" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match the booking-read contract.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "login_required", + "description": "The original signed-in session must be established or renewed before reading.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "not_found", + "description": "The selected booking is not accessible under current authority; this does not prove it is absent.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "unavailable", + "description": "The stored booking could not be read or validated safely; this is not vehicle-availability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } +]
- Changed
get_customer_policy2 fields changed- changed
Input schema / properties / offerKey / descriptionPrevious value: -"Optional existing published provider offer key. Selects its configured service location; not booking authority."New value: +"Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "type": "boolean" - }, - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "observedAt": { - "type": "string" - }, - "revalidationRequired": { - "const": true, - "type": "boolean" - }, - "scope": { - "const": "booking_preparation", - "type": "string" - }, - "status": { - "const": "available", - "type": "string" - }, - "terms": { - "additionalProperties": false, - "properties": { - "accountRequired": { - "type": "boolean" - }, - "bookerForGuestAllowed": { - "type": "boolean" - }, - "bookingConfirmation": { - "const": "after_confirmed_full_payment", - "type": "string" - }, - "minimumLeadTimeMinutes": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "serviceSpecificTerms": { - "const": "review_the_current_offer_before_confirmation", - "type": "string" - } - }, - "required": [ - "minimumLeadTimeMinutes", - "accountRequired", - "bookerForGuestAllowed", - "bookingConfirmation", - "serviceSpecificTerms" - ], - "type": "object" - }, - "timeZone": { - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "timeZone", - "observedAt", - "scope", - "revalidationRequired", - "terms", - "bookingConfirmed" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "Reading policy does not create or confirm a booking.", + "type": "boolean" + }, + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "observedAt": { + "description": "Observation timestamp of the minimum-lead-time policy read; no validity window is promised.", + "type": "string" + }, + "revalidationRequired": { + "const": true, + "description": "Re-read and revalidate current policy before offer preparation/confirmation.", + "type": "boolean" + }, + "scope": { + "const": "booking_preparation", + "description": "These rules cover preparation of a customer offer/booking, not action authority.", + "type": "string" + }, + "status": { + "const": "available", + "description": "Current booking-preparation policy was read; no booking is confirmed.", + "type": "string" + }, + "terms": { + "additionalProperties": false, + "description": "Current published account, guest-booking, lead-time and confirmation rules.", + "properties": { + "accountRequired": { + "description": "Whether current purchase policy requires an account.", + "type": "boolean" + }, + "bookerForGuestAllowed": { + "description": "Whether current policy allows a booker to request service for another guest.", + "type": "boolean" + }, + "bookingConfirmation": { + "const": "after_confirmed_full_payment", + "description": "Confirmation requires provider-confirmed full payment; an offer link alone is insufficient.", + "type": "string" + }, + "minimumLeadTimeMinutes": { + "description": "Current minimum time before pickup, expressed in minutes.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "serviceSpecificTerms": { + "const": "review_the_current_offer_before_confirmation", + "description": "Review the complete terms bound to the current offer before confirming.", + "type": "string" + } + }, + "required": [ + "minimumLeadTimeMinutes", + "accountRequired", + "bookerForGuestAllowed", + "bookingConfirmation", + "serviceSpecificTerms" + ], + "type": "object" + }, + "timeZone": { + "description": "Configured local time zone for the selected provider/service location.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "timeZone", + "observedAt", + "scope", + "revalidationRequired", + "terms", + "bookingConfirmed" + ], + "type": "object" + } +]
- Changed
get_offer_status3 fields changed- changed
Input schema / properties / resumeToken / descriptionPrevious value: -"Private 64-character hexadecimal secret generated for this submission. Reuse its original pair with submissionId for retries and status; never substitute account credentials."New value: +"Caller-generated private 64-character hexadecimal secret for this submission (32 random bytes). Keep its original submissionId pair. The stored resume proof expires 24 hours after first claimed intake; unchanged retries do not renew it. This is separate from offer.expiresAt and is not an account credential." - changed
Input schema / properties / submissionId / descriptionPrevious value: -"Identifies one offer intent. Generate a UUID for a requested new offer; keep it with the same resumeToken for unchanged retries and status."New value: +"Caller-generated UUID for one explicitly requested offer intent. Keep the same submissionId/resumeToken and unchanged facts for retries and status; a new explicit intent needs a new pair. This is not a bookingKey." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retryAfterSeconds": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "status": { - "const": "pending", - "type": "string" - } - }, - "required": [ - "status", - "retryAfterSeconds" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retryAfterSeconds": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "status": { - "const": "rate_limited", - "type": "string" - } - }, - "required": [ - "status", - "retryAfterSeconds" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "enum": [ - "conflict", - "ambiguous", - "not_found" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "booking": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "bookingKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "bookingReference": { - "minLength": 1, - "type": "string" - }, - "customerPortalUrl": { - "format": "uri", - "type": "string" - }, - "fulfillment": { - "additionalProperties": false, - "properties": { - "chauffeurAssignmentRecorded": { - "type": "boolean" - }, - "completionRecorded": { - "type": "boolean" - }, - "vehicleAssignmentRecorded": { - "type": "boolean" - } - }, - "required": [ - "chauffeurAssignmentRecorded", - "vehicleAssignmentRecorded", - "completionRecorded" - ], - "type": "object" - }, - "payment": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "status": { - "const": "available", - "type": "string" - } - }, - "required": [ - "status", - "bookingKey", - "bookingReference", - "booking", - "payment", - "fulfillment", - "customerPortalUrl" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "message": { - "type": "string" - }, - "review": { - "additionalProperties": false, - "properties": { - "availabilityConfirmed": { - "const": false, - "type": "boolean" - }, - "code": { - "enum": [ - "additional_requirements_review", - "model_guarantee_review", - "address_review", - "service_scope_review", - "booking_window_review", - "route_review" - ], - "type": "string" - }, - "customerContactRequired": { - "const": false, - "type": "boolean" - }, - "nextAction": { - "const": "review_requirements", - "type": "string" - } - }, - "required": [ - "code", - "customerContactRequired", - "availabilityConfirmed", - "nextAction" - ], - "type": "object" - }, - "status": { - "const": "review_required", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "message", - "review" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "expired", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "type": "boolean" - }, - "checkoutUrl": { - "format": "uri", - "type": "string" - }, - "customerPortalUrl": { - "format": "uri", - "type": "string" - }, - "nextAction": { - "type": "string" - }, - "offer": { - "additionalProperties": false, - "properties": { - "completeTermsBound": { - "const": true, - "type": "boolean" - }, - "currency": { - "const": "EUR", - "type": "string" - }, - "customerConfirmationRequired": { - "const": true, - "type": "boolean" - }, - "expiresAt": { - "type": "string" - }, - "grossTotalCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "grossTotalCents", - "expiresAt", - "customerConfirmationRequired", - "completeTermsBound" - ], - "type": "object" - }, - "status": { - "const": "prepared", - "type": "string" - }, - "termsUrl": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "status", - "bookingConfirmed", - "checkoutUrl", - "termsUrl", - "offer", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "retryAfterSeconds": { + "description": "Wait at least this many seconds, then use the same original submissionId/resumeToken pair for status or unchanged retry.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "status": { + "const": "pending", + "description": "The original offer-intent execution is still pending; no completed offer result is available.", + "type": "string" + } + }, + "required": [ + "status", + "retryAfterSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "retryAfterSeconds": { + "description": "Wait at least this many seconds before retrying the unchanged submissionId/resumeToken and facts.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "status": { + "const": "rate_limited", + "description": "Offer preparation admission was rate-limited; retry only the unchanged explicit offer intent.", + "type": "string" + } + }, + "required": [ + "status", + "retryAfterSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "description": "conflict means stored intent/offer facts disagree; ambiguous means execution or bound evidence cannot safely be resolved; not_found denies access to the original submission proof. Inspect status rather than blindly creating another offer.", + "enum": [ + "conflict", + "ambiguous", + "not_found" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "booking": { + "additionalProperties": false, + "description": "Booking state read from the stored reservation; it may lag provider events.", + "properties": { + "recordedStatus": { + "description": "Stored reservation status string. It is not a new provider confirmation.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "bookingKey": { + "description": "Internal reservation ID for this selected booking. Returned in the available branch of get_offer_status/prepare_offer or an authorized booking read, not in prepared. It grants no access by itself.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "bookingReference": { + "description": "Stored customer-visible reservation reference, falling back to bookingKey when absent. Customer OAuth accepts it only for its already-selected booking; it is not the supplier offerKey.", + "minLength": 1, + "type": "string" + }, + "customerPortalUrl": { + "description": "Private customer-login entry for the original submission proof. This available branch also returns this booking's ID/reference; no history or write authority is granted.", + "format": "uri", + "type": "string" + }, + "fulfillment": { + "additionalProperties": false, + "description": "Flags derived from stored assignments and status, not live fulfillment confirmation.", + "properties": { + "chauffeurAssignmentRecorded": { + "description": "True when a chauffeur ID is stored on the reservation; it does not confirm dispatch or acceptance.", + "type": "boolean" + }, + "completionRecorded": { + "description": "True only when the stored reservation status is completed; no fresh service-completion check is made.", + "type": "boolean" + }, + "vehicleAssignmentRecorded": { + "description": "True when a vehicle ID is stored on the reservation; it does not confirm availability or execution.", + "type": "boolean" + } + }, + "required": [ + "chauffeurAssignmentRecorded", + "vehicleAssignmentRecorded", + "completionRecorded" + ], + "type": "object" + }, + "payment": { + "additionalProperties": false, + "description": "Recorded payment state from this booking, without a payment-provider refresh.", + "properties": { + "recordedStatus": { + "description": "Stored reservation payment-status string; no payment or refund is initiated or newly confirmed.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "status": { + "const": "available", + "description": "The selected booking was accessible and its stored fields passed validation; no provider refresh occurred.", + "type": "string" + } + }, + "required": [ + "status", + "bookingKey", + "bookingReference", + "booking", + "payment", + "fulfillment", + "customerPortalUrl" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "message": { + "description": "Customer-language explanation of the required review.", + "type": "string" + }, + "review": { + "additionalProperties": false, + "description": "Structured reason and safe next step for requirements review.", + "properties": { + "availabilityConfirmed": { + "const": false, + "description": "This review result does not confirm availability.", + "type": "boolean" + }, + "code": { + "description": "Reason for further requirements, model, address, service-scope, booking-window or route review; not vehicle-unavailability evidence.", + "enum": [ + "additional_requirements_review", + "model_guarantee_review", + "address_review", + "service_scope_review", + "booking_window_review", + "route_review" + ], + "type": "string" + }, + "customerContactRequired": { + "const": false, + "description": "No customer contact is required for this price/requirements review.", + "type": "boolean" + }, + "nextAction": { + "const": "review_requirements", + "description": "Review the stated requirements before proceeding; do not infer acceptance or confirmed availability.", + "type": "string" + } + }, + "required": [ + "code", + "customerContactRequired", + "availabilityConfirmed", + "nextAction" + ], + "type": "object" + }, + "status": { + "const": "review_required", + "description": "Offer preparation requires review of the ride facts/requirements; availability is not confirmed.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "message", + "review" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "expired", + "description": "The existing bound offer has expired; this does not extend or describe the separate resume-proof lifetime.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "Offer preparation does not confirm a booking or charge the customer.", + "type": "boolean" + }, + "checkoutUrl": { + "description": "Private bound offer-review page to review complete terms and explicitly confirm using the existing flow. Treat this offer link as private.", + "format": "uri", + "type": "string" + }, + "customerPortalUrl": { + "description": "Existing private customer-login entry with the original submissionId/resumeToken in its fragment. Keep it private; current session/proof authority is still required.", + "format": "uri", + "type": "string" + }, + "nextAction": { + "description": "Guidance to open checkoutUrl, review the bound terms and explicitly confirm; no confirmation occurred in this call.", + "type": "string" + }, + "offer": { + "additionalProperties": false, + "description": "Existing offer amount, expiry and confirmation/terms requirements.", + "properties": { + "completeTermsBound": { + "const": true, + "description": "Complete service/legal terms were verified as bound to this offer.", + "type": "boolean" + }, + "currency": { + "const": "EUR", + "description": "Currency of the bound offer: EUR.", + "type": "string" + }, + "customerConfirmationRequired": { + "const": true, + "description": "The customer must explicitly review and confirm the offer on its page.", + "type": "boolean" + }, + "expiresAt": { + "description": "Stored offer expiry timestamp from offer_expires_at. Separate from the 24-hour submission resume-proof lifetime; re-review an expired or revised offer.", + "type": "string" + }, + "grossTotalCents": { + "description": "Bound offer gross total in EUR cents, including applicable tax.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "grossTotalCents", + "expiresAt", + "customerConfirmationRequired", + "completeTermsBound" + ], + "type": "object" + }, + "status": { + "const": "prepared", + "description": "The existing unpaid draft and its bound offer links are ready for customer review; this branch does not return bookingKey/bookingReference.", + "type": "string" + }, + "termsUrl": { + "description": "The same offer page with complete bound service/legal terms.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "status", + "bookingConfirmed", + "checkoutUrl", + "termsUrl", + "offer", + "nextAction" + ], + "type": "object" + } +]
- Changed
get_service_options2 fields changed- changed
Input schema / properties / offerKey / descriptionPrevious value: -"Optional existing published provider offer key. Selects its configured service location; not booking authority."New value: +"Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "hourlyRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "additionalProperties": false, - "properties": { - "countryCode": { - "type": "string" - }, - "key": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "key", - "countryCode", - "label" - ], - "type": "object" - }, - "nextAction": { - "type": "string" - }, - "provider": { - "type": "string" - }, - "requiredRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "returnRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "services": { - "items": { - "additionalProperties": false, - "properties": { - "availability": { - "const": "requires_offer_review", - "type": "string" - }, - "key": { - "type": "string" - }, - "tripTypes": { - "items": { - "enum": [ - "one_way", - "return" - ], - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "key", - "tripTypes", - "availability" - ], - "type": "object" - }, - "type": "array" - }, - "status": { - "const": "available", - "type": "string" - }, - "timeZone": { - "type": "string" - } - }, - "required": [ - "status", - "provider", - "timeZone", - "bookingUrl", - "services", - "requiredRideFacts", - "returnRideFacts", - "hourlyRideFacts", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "hourlyRideFacts": { + "description": "Additional hourly-service fields and required service/trip-type values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "additionalProperties": false, + "description": "Location configured for the supplied published offerKey; omitted for the default service scope.", + "properties": { + "countryCode": { + "description": "Country code configured for this service location.", + "type": "string" + }, + "key": { + "description": "Configured service-location key selected by the published supplier offerKey.", + "type": "string" + }, + "label": { + "description": "Location label in the requested language.", + "type": "string" + } + }, + "required": [ + "key", + "countryCode", + "label" + ], + "type": "object" + }, + "nextAction": { + "description": "Guidance to collect complete ride facts and request a price preview; no contact details are required for quoting.", + "type": "string" + }, + "provider": { + "description": "Published display name of the service provider.", + "type": "string" + }, + "requiredRideFacts": { + "description": "Ride fields to collect before quoting a transfer.", + "items": { + "type": "string" + }, + "type": "array" + }, + "returnRideFacts": { + "description": "Additional return-trip fields to collect for an outbound and later return pickup.", + "items": { + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "Published service definitions and supported trip types.", + "items": { + "additionalProperties": false, + "properties": { + "availability": { + "const": "requires_offer_review", + "description": "Availability/acceptance still require review of an actual offer.", + "type": "string" + }, + "key": { + "description": "Published service identifier, such as transfer or hourly service.", + "type": "string" + }, + "tripTypes": { + "description": "Trip types supported by this service definition; not confirmed availability.", + "items": { + "enum": [ + "one_way", + "return" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "key", + "tripTypes", + "availability" + ], + "type": "object" + }, + "type": "array" + }, + "status": { + "const": "available", + "description": "Published service information is readable; no price, acceptance or availability is confirmed.", + "type": "string" + }, + "timeZone": { + "description": "Configured local provider time zone for ride dates and pickup times.", + "type": "string" + } + }, + "required": [ + "status", + "provider", + "timeZone", + "bookingUrl", + "services", + "requiredRideFacts", + "returnRideFacts", + "hourlyRideFacts", + "nextAction" + ], + "type": "object" + } +]
- Changed
prepare_booking_cancellation3 fields changed- changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy a returned ID or reference for that same booking; it grants no access to another booking."New value: +"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking." - changed
Input schema / properties / onceKey / descriptionPrevious value: -"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. It grants no execution authority."New value: +"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "consentUrl": { - "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=", - "type": "string" - }, - "status": { - "const": "consent_required", - "type": "string" - } - }, - "required": [ - "status", - "consentUrl" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "enum": [ - "invalid_request", - "not_found", - "unavailable" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "consentUrl": { + "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and proposed facts. Current authority is rechecked, then the existing flow requires separate visible action consent and confirmation; the link itself grants no authority.", + "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=", + "type": "string" + }, + "status": { + "const": "consent_required", + "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.", + "type": "string" + } + }, + "required": [ + "status", + "consentUrl" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "description": "invalid_request rejects malformed selection/action facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.", + "enum": [ + "invalid_request", + "not_found", + "unavailable" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } +]
- Changed
prepare_booking_change4 fields changed- changed
Input schema / properties / amendment / properties / offerKey / descriptionPrevious value: -"Optional existing published provider offer key. Selects its configured service location; not booking authority."New value: +"Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access." - changed
Input schema / properties / bookingKey / descriptionPrevious value: -"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy a returned ID or reference for that same booking; it grants no access to another booking."New value: +"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking." - changed
Input schema / properties / onceKey / descriptionPrevious value: -"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. It grants no execution authority."New value: +"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "consentUrl": { - "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=", - "type": "string" - }, - "status": { - "const": "consent_required", - "type": "string" - } - }, - "required": [ - "status", - "consentUrl" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "enum": [ - "invalid_request", - "not_found", - "unavailable" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "consentUrl": { + "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and proposed facts. Current authority is rechecked, then the existing flow requires separate visible action consent and confirmation; the link itself grants no authority.", + "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=", + "type": "string" + }, + "status": { + "const": "consent_required", + "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.", + "type": "string" + } + }, + "required": [ + "status", + "consentUrl" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "description": "invalid_request rejects malformed selection/action facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.", + "enum": [ + "invalid_request", + "not_found", + "unavailable" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } +]
- Changed
prepare_offer4 fields changed- changed
Input schema / properties / offerKey / descriptionPrevious value: -"Optional existing published provider offer key. Selects its configured service location; not booking authority."New value: +"Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access." - changed
Input schema / properties / resumeToken / descriptionPrevious value: -"Private 64-character hexadecimal secret generated for this submission. Reuse its original pair with submissionId for retries and status; never substitute account credentials."New value: +"Caller-generated private 64-character hexadecimal secret for this submission (32 random bytes). Keep its original submissionId pair. The stored resume proof expires 24 hours after first claimed intake; unchanged retries do not renew it. This is separate from offer.expiresAt and is not an account credential." - changed
Input schema / properties / submissionId / descriptionPrevious value: -"Identifies one offer intent. Generate a UUID for a requested new offer; keep it with the same resumeToken for unchanged retries and status."New value: +"Caller-generated UUID for one explicitly requested offer intent. Keep the same submissionId/resumeToken and unchanged facts for retries and status; a new explicit intent needs a new pair. This is not a bookingKey." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retryAfterSeconds": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "status": { - "const": "pending", - "type": "string" - } - }, - "required": [ - "status", - "retryAfterSeconds" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "retryAfterSeconds": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "status": { - "const": "rate_limited", - "type": "string" - } - }, - "required": [ - "status", - "retryAfterSeconds" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "enum": [ - "conflict", - "ambiguous", - "not_found" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "booking": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "bookingKey": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "bookingReference": { - "minLength": 1, - "type": "string" - }, - "customerPortalUrl": { - "format": "uri", - "type": "string" - }, - "fulfillment": { - "additionalProperties": false, - "properties": { - "chauffeurAssignmentRecorded": { - "type": "boolean" - }, - "completionRecorded": { - "type": "boolean" - }, - "vehicleAssignmentRecorded": { - "type": "boolean" - } - }, - "required": [ - "chauffeurAssignmentRecorded", - "vehicleAssignmentRecorded", - "completionRecorded" - ], - "type": "object" - }, - "payment": { - "additionalProperties": false, - "properties": { - "recordedStatus": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "recordedStatus" - ], - "type": "object" - }, - "status": { - "const": "available", - "type": "string" - } - }, - "required": [ - "status", - "bookingKey", - "bookingReference", - "booking", - "payment", - "fulfillment", - "customerPortalUrl" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "message": { - "type": "string" - }, - "review": { - "additionalProperties": false, - "properties": { - "availabilityConfirmed": { - "const": false, - "type": "boolean" - }, - "code": { - "enum": [ - "additional_requirements_review", - "model_guarantee_review", - "address_review", - "service_scope_review", - "booking_window_review", - "route_review" - ], - "type": "string" - }, - "customerContactRequired": { - "const": false, - "type": "boolean" - }, - "nextAction": { - "const": "review_requirements", - "type": "string" - } - }, - "required": [ - "code", - "customerContactRequired", - "availabilityConfirmed", - "nextAction" - ], - "type": "object" - }, - "status": { - "const": "review_required", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "message", - "review" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "status": { - "const": "expired", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "type": "boolean" - }, - "checkoutUrl": { - "format": "uri", - "type": "string" - }, - "customerPortalUrl": { - "format": "uri", - "type": "string" - }, - "nextAction": { - "type": "string" - }, - "offer": { - "additionalProperties": false, - "properties": { - "completeTermsBound": { - "const": true, - "type": "boolean" - }, - "currency": { - "const": "EUR", - "type": "string" - }, - "customerConfirmationRequired": { - "const": true, - "type": "boolean" - }, - "expiresAt": { - "type": "string" - }, - "grossTotalCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "grossTotalCents", - "expiresAt", - "customerConfirmationRequired", - "completeTermsBound" - ], - "type": "object" - }, - "status": { - "const": "prepared", - "type": "string" - }, - "termsUrl": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "status", - "bookingConfirmed", - "checkoutUrl", - "termsUrl", - "offer", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "retryAfterSeconds": { + "description": "Wait at least this many seconds, then use the same original submissionId/resumeToken pair for status or unchanged retry.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "status": { + "const": "pending", + "description": "The original offer-intent execution is still pending; no completed offer result is available.", + "type": "string" + } + }, + "required": [ + "status", + "retryAfterSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "retryAfterSeconds": { + "description": "Wait at least this many seconds before retrying the unchanged submissionId/resumeToken and facts.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "status": { + "const": "rate_limited", + "description": "Offer preparation admission was rate-limited; retry only the unchanged explicit offer intent.", + "type": "string" + } + }, + "required": [ + "status", + "retryAfterSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "description": "conflict means stored intent/offer facts disagree; ambiguous means execution or bound evidence cannot safely be resolved; not_found denies access to the original submission proof. Inspect status rather than blindly creating another offer.", + "enum": [ + "conflict", + "ambiguous", + "not_found" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "booking": { + "additionalProperties": false, + "description": "Booking state read from the stored reservation; it may lag provider events.", + "properties": { + "recordedStatus": { + "description": "Stored reservation status string. It is not a new provider confirmation.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "bookingKey": { + "description": "Internal reservation ID for this selected booking. Returned in the available branch of get_offer_status/prepare_offer or an authorized booking read, not in prepared. It grants no access by itself.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "bookingReference": { + "description": "Stored customer-visible reservation reference, falling back to bookingKey when absent. Customer OAuth accepts it only for its already-selected booking; it is not the supplier offerKey.", + "minLength": 1, + "type": "string" + }, + "customerPortalUrl": { + "description": "Private customer-login entry for the original submission proof. This available branch also returns this booking's ID/reference; no history or write authority is granted.", + "format": "uri", + "type": "string" + }, + "fulfillment": { + "additionalProperties": false, + "description": "Flags derived from stored assignments and status, not live fulfillment confirmation.", + "properties": { + "chauffeurAssignmentRecorded": { + "description": "True when a chauffeur ID is stored on the reservation; it does not confirm dispatch or acceptance.", + "type": "boolean" + }, + "completionRecorded": { + "description": "True only when the stored reservation status is completed; no fresh service-completion check is made.", + "type": "boolean" + }, + "vehicleAssignmentRecorded": { + "description": "True when a vehicle ID is stored on the reservation; it does not confirm availability or execution.", + "type": "boolean" + } + }, + "required": [ + "chauffeurAssignmentRecorded", + "vehicleAssignmentRecorded", + "completionRecorded" + ], + "type": "object" + }, + "payment": { + "additionalProperties": false, + "description": "Recorded payment state from this booking, without a payment-provider refresh.", + "properties": { + "recordedStatus": { + "description": "Stored reservation payment-status string; no payment or refund is initiated or newly confirmed.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "recordedStatus" + ], + "type": "object" + }, + "status": { + "const": "available", + "description": "The selected booking was accessible and its stored fields passed validation; no provider refresh occurred.", + "type": "string" + } + }, + "required": [ + "status", + "bookingKey", + "bookingReference", + "booking", + "payment", + "fulfillment", + "customerPortalUrl" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "message": { + "description": "Customer-language explanation of the required review.", + "type": "string" + }, + "review": { + "additionalProperties": false, + "description": "Structured reason and safe next step for requirements review.", + "properties": { + "availabilityConfirmed": { + "const": false, + "description": "This review result does not confirm availability.", + "type": "boolean" + }, + "code": { + "description": "Reason for further requirements, model, address, service-scope, booking-window or route review; not vehicle-unavailability evidence.", + "enum": [ + "additional_requirements_review", + "model_guarantee_review", + "address_review", + "service_scope_review", + "booking_window_review", + "route_review" + ], + "type": "string" + }, + "customerContactRequired": { + "const": false, + "description": "No customer contact is required for this price/requirements review.", + "type": "boolean" + }, + "nextAction": { + "const": "review_requirements", + "description": "Review the stated requirements before proceeding; do not infer acceptance or confirmed availability.", + "type": "string" + } + }, + "required": [ + "code", + "customerContactRequired", + "availabilityConfirmed", + "nextAction" + ], + "type": "object" + }, + "status": { + "const": "review_required", + "description": "Offer preparation requires review of the ride facts/requirements; availability is not confirmed.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "message", + "review" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "status": { + "const": "expired", + "description": "The existing bound offer has expired; this does not extend or describe the separate resume-proof lifetime.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "Offer preparation does not confirm a booking or charge the customer.", + "type": "boolean" + }, + "checkoutUrl": { + "description": "Private bound offer-review page to review complete terms and explicitly confirm using the existing flow. Treat this offer link as private.", + "format": "uri", + "type": "string" + }, + "customerPortalUrl": { + "description": "Existing private customer-login entry with the original submissionId/resumeToken in its fragment. Keep it private; current session/proof authority is still required.", + "format": "uri", + "type": "string" + }, + "nextAction": { + "description": "Guidance to open checkoutUrl, review the bound terms and explicitly confirm; no confirmation occurred in this call.", + "type": "string" + }, + "offer": { + "additionalProperties": false, + "description": "Existing offer amount, expiry and confirmation/terms requirements.", + "properties": { + "completeTermsBound": { + "const": true, + "description": "Complete service/legal terms were verified as bound to this offer.", + "type": "boolean" + }, + "currency": { + "const": "EUR", + "description": "Currency of the bound offer: EUR.", + "type": "string" + }, + "customerConfirmationRequired": { + "const": true, + "description": "The customer must explicitly review and confirm the offer on its page.", + "type": "boolean" + }, + "expiresAt": { + "description": "Stored offer expiry timestamp from offer_expires_at. Separate from the 24-hour submission resume-proof lifetime; re-review an expired or revised offer.", + "type": "string" + }, + "grossTotalCents": { + "description": "Bound offer gross total in EUR cents, including applicable tax.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "grossTotalCents", + "expiresAt", + "customerConfirmationRequired", + "completeTermsBound" + ], + "type": "object" + }, + "status": { + "const": "prepared", + "description": "The existing unpaid draft and its bound offer links are ready for customer review; this branch does not return bookingKey/bookingReference.", + "type": "string" + }, + "termsUrl": { + "description": "The same offer page with complete bound service/legal terms.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "status", + "bookingConfirmed", + "checkoutUrl", + "termsUrl", + "offer", + "nextAction" + ], + "type": "object" + } +]
- Changed
quote_ride2 fields changed- changed
Input schema / properties / offerKey / descriptionPrevious value: -"Optional existing published provider offer key. Selects its configured service location; not booking authority."New value: +"Optional existing published provider/supplier offer key. Selects its configured service location; it is not a customer bookingKey or bookingReference and grants no booking access." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "retryAfterSeconds": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "status": { - "const": "rate_limited", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "retryAfterSeconds" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "message": { - "type": "string" - }, - "review": { - "additionalProperties": false, - "properties": { - "availabilityConfirmed": { - "const": false, - "type": "boolean" - }, - "code": { - "enum": [ - "additional_requirements_review", - "model_guarantee_review", - "address_review", - "service_scope_review", - "booking_window_review", - "route_review" - ], - "type": "string" - }, - "customerContactRequired": { - "const": false, - "type": "boolean" - }, - "nextAction": { - "const": "review_requirements", - "type": "string" - } - }, - "required": [ - "code", - "customerContactRequired", - "availabilityConfirmed", - "nextAction" - ], - "type": "object" - }, - "status": { - "const": "review_required", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "message" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingConfirmed": { - "const": false, - "type": "boolean" - }, - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "nextAction": { - "type": "string" - }, - "quote": { - "additionalProperties": false, - "properties": { - "billableHoursPerServiceLine": { - "exclusiveMinimum": 0, - "type": "number" - }, - "calculatedAt": { - "type": "string" - }, - "currency": { - "type": "string" - }, - "grossTotalCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "parkingIncluded": { - "type": "boolean" - }, - "pricesIncludeVat": { - "type": "boolean" - }, - "revalidationRequired": { - "const": true, - "type": "boolean" - }, - "serviceLines": { - "items": { - "additionalProperties": false, - "properties": { - "direction": { - "enum": [ - "outbound", - "return" - ], - "type": "string" - }, - "grossAmountCents": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "direction", - "grossAmountCents" - ], - "type": "object" - }, - "type": "array" - }, - "tollsIncluded": { - "type": "boolean" - }, - "vatRateBasisPoints": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "vehicleCount": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - } - }, - "required": [ - "currency", - "grossTotalCents", - "pricesIncludeVat", - "vatRateBasisPoints", - "parkingIncluded", - "tollsIncluded", - "vehicleCount", - "billableHoursPerServiceLine", - "serviceLines", - "calculatedAt", - "revalidationRequired" - ], - "type": "object" - }, - "status": { - "const": "quoted", - "type": "string" - } - }, - "required": [ - "status", - "bookingUrl", - "bookingConfirmed", - "quote", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "description": "Input does not match this operation's contract; correct the facts before retrying.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "description": "The requested information could not be supplied safely; this is not vehicle-unavailability evidence.", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "retryAfterSeconds": { + "description": "Wait at least this many seconds before retrying the same quote request.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "status": { + "const": "rate_limited", + "description": "Quote admission is currently rate-limited; no quote was returned.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "retryAfterSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "message": { + "description": "Customer-language explanation of the required review.", + "type": "string" + }, + "review": { + "additionalProperties": false, + "description": "Structured review reason and next step when supplied; not an availability confirmation.", + "properties": { + "availabilityConfirmed": { + "const": false, + "description": "This review result does not confirm availability.", + "type": "boolean" + }, + "code": { + "description": "Reason for further requirements, model, address, service-scope, booking-window or route review; not vehicle-unavailability evidence.", + "enum": [ + "additional_requirements_review", + "model_guarantee_review", + "address_review", + "service_scope_review", + "booking_window_review", + "route_review" + ], + "type": "string" + }, + "customerContactRequired": { + "const": false, + "description": "No customer contact is required for this price/requirements review.", + "type": "boolean" + }, + "nextAction": { + "const": "review_requirements", + "description": "Review the stated requirements before proceeding; do not infer acceptance or confirmed availability.", + "type": "string" + } + }, + "required": [ + "code", + "customerContactRequired", + "availabilityConfirmed", + "nextAction" + ], + "type": "object" + }, + "status": { + "const": "review_required", + "description": "The ride facts or requirements require further review; no availability conclusion is made.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "message" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingConfirmed": { + "const": false, + "description": "A quote does not confirm or create a booking.", + "type": "boolean" + }, + "bookingUrl": { + "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.", + "format": "uri", + "type": "string" + }, + "nextAction": { + "description": "Guidance to proceed only to an explicitly requested offer after reviewing the preview.", + "type": "string" + }, + "quote": { + "additionalProperties": false, + "description": "Calculated price preview and tax/inclusion breakdown; no reservation or availability confirmation.", + "properties": { + "billableHoursPerServiceLine": { + "description": "Billable hours used for each calculated service line.", + "exclusiveMinimum": 0, + "type": "number" + }, + "calculatedAt": { + "description": "Timestamp of this preview calculation, not a guaranteed price-validity window.", + "type": "string" + }, + "currency": { + "description": "Currency of the price preview.", + "type": "string" + }, + "grossTotalCents": { + "description": "Gross total of the preview in the returned currency's minor units (EUR cents).", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "parkingIncluded": { + "description": "Whether parking costs are included in the preview.", + "type": "boolean" + }, + "pricesIncludeVat": { + "description": "Whether the returned price includes VAT.", + "type": "boolean" + }, + "revalidationRequired": { + "const": true, + "description": "Revalidate price and terms before preparing or confirming an offer.", + "type": "boolean" + }, + "serviceLines": { + "description": "Price breakdown by outbound/return service line.", + "items": { + "additionalProperties": false, + "properties": { + "direction": { + "description": "The outbound or return leg priced by this service line.", + "enum": [ + "outbound", + "return" + ], + "type": "string" + }, + "grossAmountCents": { + "description": "Gross price for this service line in the returned currency's minor units.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "direction", + "grossAmountCents" + ], + "type": "object" + }, + "type": "array" + }, + "tollsIncluded": { + "description": "Whether toll costs are included in the preview.", + "type": "boolean" + }, + "vatRateBasisPoints": { + "description": "VAT rate in basis points: 10000 basis points equal 100 percent.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "vehicleCount": { + "description": "Vehicle count used in this price calculation, not confirmed vehicle availability.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + }, + "required": [ + "currency", + "grossTotalCents", + "pricesIncludeVat", + "vatRateBasisPoints", + "parkingIncluded", + "tollsIncluded", + "vehicleCount", + "billableHoursPerServiceLine", + "serviceLines", + "calculatedAt", + "revalidationRequired" + ], + "type": "object" + }, + "status": { + "const": "quoted", + "description": "A price preview was calculated; it must be revalidated before an actual offer.", + "type": "string" + } + }, + "required": [ + "status", + "bookingUrl", + "bookingConfirmed", + "quote", + "nextAction" + ], + "type": "object" + } +]
5 tool updates
- Changed
get_booking_history3 fields changed- changed
Input schema / properties / after / descriptionPrevious value: -"Omit for the newest page. For older events, copy the returned nextCursor unchanged."New value: +"Omit for the newest page. For older events, copy the preceding non-null nextCursor unchanged. Stop when nextCursor is null." - added
Input schema / properties / bookingKey / descriptionAdded value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself." - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum entries in this page, 1–50; defaults to20. Does not change the authorized booking."New value: +"Maximum entries in this page, 1–50; defaults to 20. The selected booking stays unchanged."
- Changed
get_booking_payment_review1 field changed- added
Input schema / properties / bookingKey / descriptionAdded value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."
- Changed
get_booking_status1 field changed- added
Input schema / properties / bookingKey / descriptionAdded value: +"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Use a value returned for that same booking; the identifier grants no access by itself."
- Changed
prepare_booking_cancellation2 fields changed- added
Input schema / properties / bookingKey / descriptionAdded value: +"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy a returned ID or reference for that same booking; it grants no access to another booking." - added
Input schema / properties / onceKey / descriptionAdded value: +"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. It grants no execution authority."
- Changed
prepare_booking_change3 fields changed- added
Input schema / properties / amendment / descriptionAdded value: +"Full proposed ride request in the existing quote-input shape, including all required ride fields. Review these exact facts in the linked original signed-in session before separate action consent and confirmation." - added
Input schema / properties / bookingKey / descriptionAdded value: +"Internal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy a returned ID or reference for that same booking; it grants no access to another booking." - added
Input schema / properties / onceKey / descriptionAdded value: +"Caller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. It grants no execution authority."
5 tool updates
- Added
get_booking_history - Added
get_booking_payment_review - Added
get_booking_status - Added
prepare_booking_cancellation - Added
prepare_booking_change
1 tool update
- Changed
prepare_offer1 field changed- changed
Input schema / properties / contact / properties / email / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
4 tool updates
- Changed
get_customer_policy1 field changed- added
Input schema / properties / offerKeyAdded value: +{ + "description": "Optional existing published provider offer key. Selects its configured service location; not booking authority.", + "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$", + "type": "string" +}
- Changed
get_service_options2 fields changed- added
Input schema / properties / offerKeyAdded value: +{ + "description": "Optional existing published provider offer key. Selects its configured service location; not booking authority.", + "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$", + "type": "string" +} - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "status": { - "const": "invalid_request", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "status": { - "const": "unavailable", - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "bookingUrl": { - "format": "uri", - "type": "string" - }, - "hourlyRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "nextAction": { - "type": "string" - }, - "provider": { - "type": "string" - }, - "requiredRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "returnRideFacts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "services": { - "items": { - "additionalProperties": false, - "properties": { - "availability": { - "const": "requires_offer_review", - "type": "string" - }, - "key": { - "type": "string" - }, - "tripTypes": { - "items": { - "enum": [ - "one_way", - "return" - ], - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "key", - "tripTypes", - "availability" - ], - "type": "object" - }, - "type": "array" - }, - "status": { - "const": "available", - "type": "string" - }, - "timeZone": { - "type": "string" - } - }, - "required": [ - "status", - "provider", - "timeZone", - "bookingUrl", - "services", - "requiredRideFacts", - "returnRideFacts", - "hourlyRideFacts", - "nextAction" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "status": { + "const": "invalid_request", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "format": "uri", + "type": "string" + }, + "status": { + "const": "unavailable", + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "bookingUrl": { + "format": "uri", + "type": "string" + }, + "hourlyRideFacts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "additionalProperties": false, + "properties": { + "countryCode": { + "type": "string" + }, + "key": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "key", + "countryCode", + "label" + ], + "type": "object" + }, + "nextAction": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "requiredRideFacts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "returnRideFacts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "services": { + "items": { + "additionalProperties": false, + "properties": { + "availability": { + "const": "requires_offer_review", + "type": "string" + }, + "key": { + "type": "string" + }, + "tripTypes": { + "items": { + "enum": [ + "one_way", + "return" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "key", + "tripTypes", + "availability" + ], + "type": "object" + }, + "type": "array" + }, + "status": { + "const": "available", + "type": "string" + }, + "timeZone": { + "type": "string" + } + }, + "required": [ + "status", + "provider", + "timeZone", + "bookingUrl", + "services", + "requiredRideFacts", + "returnRideFacts", + "hourlyRideFacts", + "nextAction" + ], + "type": "object" + } +]
- Changed
prepare_offer10 fields changed- added
Input schema / properties / offerKeyAdded value: +{ + "description": "Optional existing published provider offer key. Selects its configured service location; not booking authority.", + "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$", + "type": "string" +} - changed
Input schema / properties / ride / descriptionPrevious value: -"Complete ride facts for a transfer, return transfer or hourly service. Distinct pickup/destination and valid local dates/times are required."New value: +"Ride facts with distinct pickup/destination and valid local dates/times. Return requires returnDate/returnTime after pickup; one_way omits both. Hourly requires one_way and hours; transfers omit hours." - changed
Input schema / properties / ride / properties / flightNumber / descriptionPrevious value: -"Optional flight number for the airport ride, such as LH123; at most 240 characters."New value: +"Flight number for an airport pickup, such as LH123; omit when not applicable." - changed
Input schema / properties / ride / properties / hours / descriptionPrevious value: -"Booked hourly-service duration, integer 1–24 hours; required with serviceType=hourly and forbidden for transfers."New value: +"Booked duration for hourly service; omit for transfers." - changed
Input schema / properties / ride / properties / luggage / descriptionPrevious value: -"Optional luggage count/type or fit requirements, at most 240 characters; unusual luggage may require review."New value: +"Luggage count/type or fit requirements; unusual luggage may require review." - changed
Input schema / properties / ride / properties / passengers / descriptionPrevious value: -"Total passenger count, integer 1–60; vehicle requirements and acceptance are evaluated separately."New value: +"Total people travelling; determines vehicle requirements, not availability or acceptance." - changed
Input schema / properties / ride / properties / returnDate / descriptionPrevious value: -"Return service date YYYY-MM-DD; required only when tripType=return. The return must follow the outbound pickup."New value: +"Return pickup date in the same local format as date, in the provider timeZone; provide only for return trips, after the outbound pickup." - changed
Input schema / properties / ride / properties / returnTime / descriptionPrevious value: -"Return pickup local HH:mm in the same provider timeZone; required only when tripType=return. Omit both return fields for one_way."New value: +"Return pickup time in the same local format as time and the same provider timeZone; provide only for return trips." - changed
Input schema / properties / ride / properties / serviceType / descriptionPrevious value: -"Set hourly only for chauffeur service booked by duration; omit for transfers. Hourly requires tripType=one_way and hours."New value: +"Set hourly for service booked by duration; omit for transfers." - changed
Input schema / properties / ride / properties / tripType / descriptionPrevious value: -"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer, requiring returnDate and returnTime."New value: +"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer."
- Changed
quote_ride10 fields changed- added
Input schema / properties / offerKeyAdded value: +{ + "description": "Optional existing published provider offer key. Selects its configured service location; not booking authority.", + "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$", + "type": "string" +} - changed
Input schema / properties / ride / descriptionPrevious value: -"Complete ride facts for a transfer, return transfer or hourly service. Distinct pickup/destination and valid local dates/times are required."New value: +"Ride facts with distinct pickup/destination and valid local dates/times. Return requires returnDate/returnTime after pickup; one_way omits both. Hourly requires one_way and hours; transfers omit hours." - changed
Input schema / properties / ride / properties / flightNumber / descriptionPrevious value: -"Optional flight number for the airport ride, such as LH123; at most 240 characters."New value: +"Flight number for an airport pickup, such as LH123; omit when not applicable." - changed
Input schema / properties / ride / properties / hours / descriptionPrevious value: -"Booked hourly-service duration, integer 1–24 hours; required with serviceType=hourly and forbidden for transfers."New value: +"Booked duration for hourly service; omit for transfers." - changed
Input schema / properties / ride / properties / luggage / descriptionPrevious value: -"Optional luggage count/type or fit requirements, at most 240 characters; unusual luggage may require review."New value: +"Luggage count/type or fit requirements; unusual luggage may require review." - changed
Input schema / properties / ride / properties / passengers / descriptionPrevious value: -"Total passenger count, integer 1–60; vehicle requirements and acceptance are evaluated separately."New value: +"Total people travelling; determines vehicle requirements, not availability or acceptance." - changed
Input schema / properties / ride / properties / returnDate / descriptionPrevious value: -"Return service date YYYY-MM-DD; required only when tripType=return. The return must follow the outbound pickup."New value: +"Return pickup date in the same local format as date, in the provider timeZone; provide only for return trips, after the outbound pickup." - changed
Input schema / properties / ride / properties / returnTime / descriptionPrevious value: -"Return pickup local HH:mm in the same provider timeZone; required only when tripType=return. Omit both return fields for one_way."New value: +"Return pickup time in the same local format as time and the same provider timeZone; provide only for return trips." - changed
Input schema / properties / ride / properties / serviceType / descriptionPrevious value: -"Set hourly only for chauffeur service booked by duration; omit for transfers. Hourly requires tripType=one_way and hours."New value: +"Set hourly for service booked by duration; omit for transfers." - changed
Input schema / properties / ride / properties / tripType / descriptionPrevious value: -"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer, requiring returnDate and returnTime."New value: +"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer."
Publisher details
- Operator
- Samuelz®, operated by Glöggl GmbH · Publisher source
- Operator website
- https://samuelz.com/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://samuelz.com/en/docs · Publisher source
- Trust center
- Unknown
- Restrictions
- Public service information, policies and price previews need no login or API key. This is a live API (no sandbox) for Munich/MUC; REST and MCP share a limited pilot allowance. Preparing an unpaid offer requires an explicit customer request and email OR E.164 phone. Customers review bound terms and confirm in Samuelz checkout; MCP does not take payment. Booking status, payment review, history, amendment and cancellation require customer OAuth and object-level authorization; amendments and cancellations additionally require the applicable object-bound consent. Automated amendments currently support price-neutral changes; price differences require review. Tool discovery is public. Issued tenant-bound partner attribution capabilities are optional for ordinary customers. · Publisher source
Related MCP Connectors
Public chauffeur prices, policy and consent-led offers for travel bookers and AI assistants.
Get date-specific quotes and book private UK airport and cruise-port transfers through your AI assistant. Compare vehicle options, validate flights, retrieve bookings, amend details and cancel with customer confirmation. No registration required to start, subject to service limits; optional API-key and OAuth access for registered integrations. Transfer fares are payable separately and cancellation conditions apply. Live demo and connection instructions: https://ai.airport-pickups-london.com/ Technical documentation: https://mcp.airport-pickups-london.com/docs
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Official MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI commerce platform — WooCommerce store products, flights, tours, activities and local transport via MCP. Search, availability and booking tools. No auth for public endpoint.-
- FlicenseNot gradedqualityBmaintenanceMCP server enabling agents to interact with a human-in-the-loop B2B service in Vienna, supporting quote requests, task tracking, messages, and cancellation via bearer-token authenticated tools.-
- FlicenseNot gradedqualityCmaintenanceMCP server for MACD Adaptive (macd.ie), a Dublin web design studio: services, pricing, availability, quote estimates and discovery calls. Remote (https://macd.ie/mcp), stateless, no auth, English/Spanish.-
- FlicenseNot gradedqualityAmaintenanceInternal MCP server for itinerary calculation and AI functions, receiving structured facts from a Spring backend via stateless MCP Streamable HTTP.-
Glama MCP Gateway
Add one secure layer between your agents and this server.