Skip to main content
Glama

Prepare an unpaid offer

prepare_offer
Idempotent

Use this when preparing a customer-requested unpaid Samuelz Chauffeur offer (offerRequested=true). Do not use for prices (use quote_ride instead). Supply email or E.164 phone. Bind submissionId/resumeToken to unchanged ride, contact, locale, offerKey and partner context. Intake and unpaid state may persist after disconnect. Recover with get_offer_status and the original pair. prepared returns private checkoutUrl for customer confirmation/payment before offer.expiresAt. Wait retryAfterSeconds if given; review conflict/ambiguous. This call does not charge or confirm, dispatch or send messages.

Input Schema

NameRequiredDescriptionDefault
rideYesPickup, destination, local date, time and passengers.
localeNoCustomer-requested language for text and links: en (default) or de. Preserve it on retries and related calls; it changes presentation, never price or eligibility.en
contactYesCustomer email or phone for this requested offer.
offerKeyNoOptional published supplier offer key, for example service_airport. Pass only a key supplied by the provider’s published context; otherwise omit to use the configured default. Preserve it across related calls and retries. It selects a service location and terms, not a booking ID or access grant.
resumeTokenYesCaller-generated private secret of 64 hexadecimal characters. Generate once, retain it with submissionId for recovery, and never share the pair publicly or replace it on uncertain retries.
submissionIdYesCreate one UUID for one explicitly requested offer, for example 123e4567-e89b-42d3-a456-426614174000. Retain it with the original resumeToken and unchanged request on retries.
offerRequestedYesTrue only after the customer explicitly asks for an offer.
specialRequestsNoOptional requirements, at most 500 characters.
firstTouchTrackingTokenNoExisting first-touch token. Never invent one.
distributionPartnerCapabilityNoExisting dp_live_ partner token. Omit for customers.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • removedInput schema / properties / adsConsent
      Removed value: -{
      -  "description": "Ausdrückliche Einwilligung in Werbemessung; ohne Angabe gilt keine Einwilligung.",
      -  "enum": [
      -    "granted",
      -    "denied"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / locale / description
      Previous value: -"Language for text and links: en, or de."New value: +"Customer-requested language for text and links: en (default) or de. Preserve it on retries and related calls; it changes presentation, never price or eligibility."
    • changedInput schema / properties / offerKey / description
      Previous value: -"Published supplier offer key, not a booking id."New value: +"Optional published supplier offer key, for example service_airport. Pass only a key supplied by the provider’s published context; otherwise omit to use the configured default. Preserve it across related calls and retries. It selects a service location and terms, not a booking ID or access grant."
    • changedInput schema / properties / resumeToken / description
      Previous value: -"Private 64-hex secret. Keep the original pair."New value: +"Caller-generated private secret of 64 hexadecimal characters. Generate once, retain it with submissionId for recovery, and never share the pair publicly or replace it on uncertain retries."
    • changedInput schema / properties / ride / properties / date / description
      Previous value: -"Service date as YYYY-MM-DD in the provider time zone."New value: +"Service date as YYYY-MM-DD, for example 2026-12-24, in the selected location’s time zone; do not convert it to a UTC date."
    • changedInput schema / properties / ride / properties / hours / description
      Previous value: -"Booked hours for hourly service; omit for transfers."New value: +"Whole service hours from 1 to 24, for example 3. Required only for serviceType=hourly; omit for transfers. Billable hours may differ after price calculation."
    • changedInput schema / properties / ride / properties / time / description
      Previous value: -"Local pickup time as HH:mm in the provider time zone."New value: +"Local pickup time in 24-hour HH:mm format, for example 14:30, in the selected location’s time zone."
    • changedInput schema / properties / submissionId / description
      Previous value: -"UUID for one explicit offer. Reuse it on retries."New value: +"Create one UUID for one explicitly requested offer, for example 123e4567-e89b-42d3-a456-426614174000. Retain it with the original resumeToken and unchanged request on retries."
  2. Changed1 schema field changed
    • addedInput schema / properties / adsConsent
      Added value: +{
      +  "description": "Ausdrückliche Einwilligung in Werbemessung; ohne Angabe gilt keine Einwilligung.",
      +  "enum": [
      +    "granted",
      +    "denied"
      +  ],
      +  "type": "string"
      +}
  3. Changed27 schema fields changed
    • changedInput schema / properties / contact / description
      Previous value: -"Customer/booker contact for this explicitly requested offer: email OR E.164 phone is required. Contact does not authorize private booking/history access."New value: +"Customer email or phone for this requested offer."
    • changedInput schema / properties / contact / properties / email / description
      Previous value: -"Reachable customer/booker email, at most 254 characters; required if no phone is supplied."New value: +"Customer email, required when no phone is given."
    • changedInput schema / properties / contact / properties / fullName / description
      Previous value: -"Optional customer/booker full name, 2–120 characters."New value: +"Optional customer name, 2 to 120 characters."
    • changedInput schema / properties / contact / properties / phone / description
      Previous value: -"Reachable international E.164 phone, + followed by 7–15 digits, no spaces; required if no email is supplied."New value: +"E.164 phone, required when no email is given."
    • changedInput schema / properties / distributionPartnerCapability / description
      Previous value: -"Optional existing opaque dp_live_ capability issued to an approved distribution partner. Omit for normal customers; do not create or guess one."New value: +"Existing dp_live_ partner token. Omit for customers."
    • changedInput schema / properties / firstTouchTrackingToken / description
      Previous value: -"Optional existing server-issued first-touch UUID token for this tenant and consented attribution. Omit if none; never invent a token or source."New value: +"Existing first-touch token. Never invent one."
    • changedInput schema / properties / locale / description
      Previous value: -"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."New value: +"Language for text and links: en, or de."
    • changedInput schema / properties / offerKey / description
      Previous 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."New value: +"Published supplier offer key, not a booking id."
    • changedInput schema / properties / offerRequested / description
      Previous value: -"Must be true only after the customer explicitly requests an offer; a price question alone is insufficient consent."New value: +"True only after the customer explicitly asks for an offer."
    • changedInput schema / properties / resumeToken / description
      Previous 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."New value: +"Private 64-hex secret. Keep the original pair."
    • changedInput schema / properties / ride / description
      Previous 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."New value: +"Pickup, destination, local date, time and passengers."
    • changedInput schema / properties / ride / properties / date / description
      Previous value: -"Service date as YYYY-MM-DD in the provider timeZone returned by get_service_options; resolve relative dates first."New value: +"Service date as YYYY-MM-DD in the provider time zone."
    • changedInput schema / properties / ride / properties / destination / description
      Previous value: -"Destination distinct from pickup, with city/municipality or postcode; e.g. München Hauptbahnhof, 80335 München. For hourly service describe the planned route or As directed."New value: +"Destination with city or postcode, distinct from pickup."
    • changedInput schema / properties / ride / properties / flightNumber / description
      Previous value: -"Flight number for an airport pickup, such as LH123; omit when not applicable."New value: +"Flight number for an airport pickup, if known."
    • changedInput schema / properties / ride / properties / hours / description
      Previous value: -"Booked duration for hourly service; omit for transfers."New value: +"Booked hours for hourly service; omit for transfers."
    • changedInput schema / properties / ride / properties / luggage / description
      Previous value: -"Luggage count/type or fit requirements; unusual luggage may require review."New value: +"Luggage notes. Unusual items may need review."
    • changedInput schema / properties / ride / properties / passengers / description
      Previous value: -"Total people travelling; determines vehicle requirements, not availability or acceptance."New value: +"Number of people travelling, from 1 to 60."
    • changedInput schema / properties / ride / properties / pickup / description
      Previous value: -"Pickup address or named place with city/municipality or postcode; e.g. Flughafen München (MUC), 85356 München-Flughafen."New value: +"Pickup place with city or postcode, inside a served area."
    • changedInput schema / properties / ride / properties / returnDate / description
      Previous value: -"Return pickup date in the same local format as date, in the provider timeZone; provide only for return trips, after the outbound pickup."New value: +"Return date YYYY-MM-DD, only for a return trip."
    • changedInput schema / properties / ride / properties / returnTime / description
      Previous value: -"Return pickup time in the same local format as time and the same provider timeZone; provide only for return trips."New value: +"Return time HH:mm, only for a return trip."
    • changedInput schema / properties / ride / properties / serviceType / description
      Previous value: -"Set hourly for service booked by duration; omit for transfers."New value: +"Set hourly for duration service; omit for transfers."
    • changedInput schema / properties / ride / properties / time / description
      Previous 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."New value: +"Local pickup time as HH:mm in the provider time zone."
    • changedInput schema / properties / ride / properties / tripType / description
      Previous value: -"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer."New value: +"one_way, or return with a later pickup."
    • changedInput schema / properties / ride / properties / vehiclePreference / description
      Previous value: -"Volunteered vehicle preference only; no class, price or availability guarantee. Additional requirements may require review."New value: +"Optional vehicle wish, without a price guarantee."
    • changedInput schema / properties / specialRequests / description
      Previous value: -"Optional ride requirements, at most 500 characters. Additional stops or unusual requirements may require review; do not include contact details in a quote."New value: +"Optional requirements, at most 500 characters."
    • changedInput schema / properties / submissionId / description
      Previous 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."New value: +"UUID for one explicit offer. Reuse it on retries."
    • changedOutput schema / oneOf
      Previous 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"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "const": "invalid_request",
      +        "description": "Input does not match this operation.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bookingUrl": {
      +        "description": "Booking page for this locale.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "unavailable",
      +        "description": "This read could not be completed safely.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bookingUrl": {
      +        "description": "Booking page for this locale.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "locations": {
      +        "description": "Areas this business currently publishes.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "areas": {
      +              "description": "Areas that can be quoted.",
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "id": {
      +                    "description": "Published area id.",
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "description": "Area label for the locale.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "label"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "countryCode": {
      +              "description": "Country code, when set.",
      +              "type": "string"
      +            },
      +            "key": {
      +              "description": "Service-location key.",
      +              "type": "string"
      +            },
      +            "label": {
      +              "description": "Location label for the locale.",
      +              "type": "string"
      +            },
      +            "timeZone": {
      +              "description": "Time zone of this location.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "key",
      +            "countryCode",
      +            "timeZone",
      +            "label",
      +            "areas"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "nextAction": {
      +        "description": "Use a published area. Do not invent a price.",
      +        "type": "string"
      +      },
      +      "reason": {
      +        "const": "outside_service_area",
      +        "description": "Price withheld because the request is outside the served area.",
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "outside_service_area",
      +        "description": "No price: outside the published areas.",
      +        "type": "string"
      +      },
      +      "timeZone": {
      +        "description": "Time zone used for this decision.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "reason",
      +      "bookingUrl",
      +      "timeZone",
      +      "locations",
      +      "nextAction"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "retryAfterSeconds": {
      +        "description": "Seconds to wait, then reuse the same pair.",
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "status": {
      +        "const": "pending",
      +        "description": "This offer intent is still pending.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "retryAfterSeconds"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "retryAfterSeconds": {
      +        "description": "Seconds to wait before the same retry.",
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "status": {
      +        "const": "rate_limited",
      +        "description": "Offer admission is rate-limited.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "retryAfterSeconds"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "description": "conflict, ambiguous, or not_found. Do not create another offer.",
      +        "enum": [
      +          "conflict",
      +          "ambiguous",
      +          "not_found"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "booking": {
      +        "additionalProperties": false,
      +        "description": "Stored booking state.",
      +        "properties": {
      +          "recordedStatus": {
      +            "description": "Stored reservation status.",
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "recordedStatus"
      +        ],
      +        "type": "object"
      +      },
      +      "bookingKey": {
      +        "description": "Stored reservation id. It grants no access alone.",
      +        "maxLength": 128,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "bookingReference": {
      +        "description": "Customer reference, or the reservation id.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "customerPortalUrl": {
      +        "description": "Private login for this submission proof.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "fulfillment": {
      +        "additionalProperties": false,
      +        "description": "Stored assignment flags.",
      +        "properties": {
      +          "chauffeurAssignmentRecorded": {
      +            "description": "A driver id is stored.",
      +            "type": "boolean"
      +          },
      +          "completionRecorded": {
      +            "description": "Stored status is completed.",
      +            "type": "boolean"
      +          },
      +          "vehicleAssignmentRecorded": {
      +            "description": "A vehicle id is stored.",
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "chauffeurAssignmentRecorded",
      +          "vehicleAssignmentRecorded",
      +          "completionRecorded"
      +        ],
      +        "type": "object"
      +      },
      +      "payment": {
      +        "additionalProperties": false,
      +        "description": "Stored payment state.",
      +        "properties": {
      +          "recordedStatus": {
      +            "description": "Stored payment status.",
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "recordedStatus"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "const": "available",
      +        "description": "Stored booking fields passed validation.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "bookingKey",
      +      "bookingReference",
      +      "booking",
      +      "payment",
      +      "fulfillment",
      +      "customerPortalUrl"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bookingUrl": {
      +        "description": "Booking page for this locale.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Why review is required.",
      +        "type": "string"
      +      },
      +      "review": {
      +        "additionalProperties": false,
      +        "description": "Structured review and next step.",
      +        "properties": {
      +          "availabilityConfirmed": {
      +            "const": false,
      +            "description": "Availability is not confirmed.",
      +            "type": "boolean"
      +          },
      +          "code": {
      +            "description": "Which requirement needs review.",
      +            "enum": [
      +              "additional_requirements_review",
      +              "model_guarantee_review",
      +              "address_review",
      +              "service_scope_review",
      +              "booking_window_review",
      +              "route_review"
      +            ],
      +            "type": "string"
      +          },
      +          "customerContactRequired": {
      +            "const": false,
      +            "description": "No contact is required for this review.",
      +            "type": "boolean"
      +          },
      +          "nextAction": {
      +            "const": "review_requirements",
      +            "description": "Review the requirements before continuing.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "customerContactRequired",
      +          "availabilityConfirmed",
      +          "nextAction"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "const": "review_required",
      +        "description": "Offer preparation needs review.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "bookingUrl",
      +      "message",
      +      "review"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "status": {
      +        "const": "expired",
      +        "description": "The bound offer has expired.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "bookingConfirmed": {
      +        "const": false,
      +        "description": "Preparation does not confirm or charge.",
      +        "type": "boolean"
      +      },
      +      "checkoutUrl": {
      +        "description": "Private page where the customer confirms.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "customerPortalUrl": {
      +        "description": "Private customer login for this submission.",
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "nextAction": {
      +        "description": "Open the offer page and let the customer confirm.",
      +        "type": "string"
      +      },
      +      "offer": {
      +        "additionalProperties": false,
      +        "description": "Bound offer amount and expiry.",
      +        "properties": {
      +          "completeTermsBound": {
      +            "const": true,
      +            "description": "Complete terms are bound to this offer.",
      +            "type": "boolean"
      +          },
      +          "currency": {
      +            "const": "EUR",
      +            "description": "Offer currency: EUR.",
      +            "type": "string"
      +          },
      +          "customerConfirmationRequired": {
      +            "const": true,
      +            "description": "The customer must confirm on the offer page.",
      +            "type": "boolean"
      +          },
      +          "expiresAt": {
      +            "description": "When this bound offer expires.",
      +            "type": "string"
      +          },
      +          "grossTotalCents": {
      +            "description": "Bound gross total in euro cents.",
      +            "maximum": 9007199254740991,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "grossTotalCents",
      +          "expiresAt",
      +          "customerConfirmationRequired",
      +          "completeTermsBound"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "const": "prepared",
      +        "description": "Unpaid offer links are ready for review.",
      +        "type": "string"
      +      },
      +      "termsUrl": {
      +        "description": "Same page, including the bound terms.",
      +        "format": "uri",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "bookingConfirmed",
      +      "checkoutUrl",
      +      "termsUrl",
      +      "offer",
      +      "nextAction"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / ride / properties / time / description
      Previous 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."
  5. Changed4 schema fields changed
    • changedInput schema / properties / offerKey / description
      Previous 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."
    • changedInput schema / properties / resumeToken / description
      Previous 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."
    • changedInput schema / properties / submissionId / description
      Previous 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."
    • changedOutput schema / oneOf
      Previous 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"
      +  }
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / contact / properties / email / pattern
      Previous 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,}$"
  7. Changed10 schema fields changed
    • addedInput schema / properties / offerKey
      Added 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"
      +}
    • changedInput schema / properties / ride / description
      Previous 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."
    • changedInput schema / properties / ride / properties / flightNumber / description
      Previous 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."
    • changedInput schema / properties / ride / properties / hours / description
      Previous 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."
    • changedInput schema / properties / ride / properties / luggage / description
      Previous 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."
    • changedInput schema / properties / ride / properties / passengers / description
      Previous 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."
    • changedInput schema / properties / ride / properties / returnDate / description
      Previous 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."
    • changedInput schema / properties / ride / properties / returnTime / description
      Previous 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."
    • changedInput schema / properties / ride / properties / serviceType / description
      Previous 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."
    • changedInput schema / properties / ride / properties / tripType / description
      Previous 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."
  8. Changed3 schema fields changed
    • changedInput schema / properties / locale / description
      Previous value: -"Response language: en (English, default) or de (German). Does not change the provider time zone."New value: +"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."
    • changedInput schema / properties / resumeToken / description
      Previous value: -"Client-generated 64-character hexadecimal secret for this submission. Keep private; reuse the exact submissionId/token pair for retries and status. Not an account or booking-history credential."New value: +"Private 64-character hexadecimal secret generated for this submission. Reuse its original pair with submissionId for retries and status; never substitute account credentials."
    • changedInput schema / properties / submissionId / description
      Previous value: -"Client-generated UUID identifying exactly one offer intent. Reuse unchanged with the same resumeToken for prepare retries and get_offer_status; changed ride/contact needs a new UUID."New value: +"Identifies one offer intent. Generate a UUID for a requested new offer; keep it with the same resumeToken for unchanged retries and status."
  9. Changed2 schema fields changed
    • changedInput schema / properties / locale / default
      Previous value: -"de"New value: +"en"
    • changedInput schema / properties / locale / description
      Previous value: -"Response language: de (German, default) or en (English)."New value: +"Response language: en (English, default) or de (German). Does not change the provider time zone."
  10. Changed2 schema fields changed
    • addedInput schema / properties / ride / properties / vehiclePreference
      Added value: +{
      +  "description": "Volunteered vehicle preference only; no class, price or availability guarantee. Additional requirements may require review.",
      +  "maxLength": 240,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / oneOf
      Previous 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": {
      -      "status": {
      -        "const": "expired",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status"
      -    ],
      -    "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": {
      +        "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"
      +  }
      +]
  11. Changed24 schema fields changed
    • addedInput schema / properties / contact / description
      Added value: +"Customer/booker contact for this explicitly requested offer: email OR E.164 phone is required. Contact does not authorize private booking/history access."
    • addedInput schema / properties / contact / properties / email / description
      Added value: +"Reachable customer/booker email, at most 254 characters; required if no phone is supplied."
    • addedInput schema / properties / contact / properties / fullName / description
      Added value: +"Optional customer/booker full name, 2–120 characters."
    • addedInput schema / properties / contact / properties / phone / description
      Added value: +"Reachable international E.164 phone, + followed by 7–15 digits, no spaces; required if no email is supplied."
    • addedInput schema / properties / distributionPartnerCapability / description
      Added value: +"Optional existing opaque dp_live_ capability issued to an approved distribution partner. Omit for normal customers; do not create or guess one."
    • addedInput schema / properties / firstTouchTrackingToken / description
      Added value: +"Optional existing server-issued first-touch UUID token for this tenant and consented attribution. Omit if none; never invent a token or source."
    • addedInput schema / properties / locale / description
      Added value: +"Response language: de (German, default) or en (English)."
    • addedInput schema / properties / offerRequested / description
      Added value: +"Must be true only after the customer explicitly requests an offer; a price question alone is insufficient consent."
    • addedInput schema / properties / resumeToken / description
      Added value: +"Client-generated 64-character hexadecimal secret for this submission. Keep private; reuse the exact submissionId/token pair for retries and status. Not an account or booking-history credential."
    • addedInput schema / properties / ride / description
      Added value: +"Complete ride facts for a transfer, return transfer or hourly service. Distinct pickup/destination and valid local dates/times are required."
    • addedInput schema / properties / ride / properties / date / description
      Added value: +"Service date as YYYY-MM-DD in the provider timeZone returned by get_service_options; resolve relative dates first."
    • addedInput schema / properties / ride / properties / destination / description
      Added value: +"Destination distinct from pickup, with city/municipality or postcode; e.g. München Hauptbahnhof, 80335 München. For hourly service describe the planned route or As directed."
    • addedInput schema / properties / ride / properties / flightNumber / description
      Added value: +"Optional flight number for the airport ride, such as LH123; at most 240 characters."
    • addedInput schema / properties / ride / properties / hours / description
      Added value: +"Booked hourly-service duration, integer 1–24 hours; required with serviceType=hourly and forbidden for transfers."
    • addedInput schema / properties / ride / properties / luggage / description
      Added value: +"Optional luggage count/type or fit requirements, at most 240 characters; unusual luggage may require review."
    • addedInput schema / properties / ride / properties / passengers / description
      Added value: +"Total passenger count, integer 1–60; vehicle requirements and acceptance are evaluated separately."
    • addedInput schema / properties / ride / properties / pickup / description
      Added value: +"Pickup address or named place with city/municipality or postcode; e.g. Flughafen München (MUC), 85356 München-Flughafen."
    • addedInput schema / properties / ride / properties / returnDate / description
      Added value: +"Return service date YYYY-MM-DD; required only when tripType=return. The return must follow the outbound pickup."
    • addedInput schema / properties / ride / properties / returnTime / description
      Added value: +"Return pickup local HH:mm in the same provider timeZone; required only when tripType=return. Omit both return fields for one_way."
    • addedInput schema / properties / ride / properties / serviceType / description
      Added value: +"Set hourly only for chauffeur service booked by duration; omit for transfers. Hourly requires tripType=one_way and hours."
    • addedInput schema / properties / ride / properties / time / description
      Added value: +"Local pickup time in 24-hour HH:mm format, in the provider timeZone (Samuelz: Europe/Berlin); not UTC or an offset timestamp."
    • addedInput schema / properties / ride / properties / tripType / description
      Added value: +"one_way for a single transfer or hourly service; return for outbound plus a separate later return transfer, requiring returnDate and returnTime."
    • addedInput schema / properties / specialRequests / description
      Added value: +"Optional ride requirements, at most 500 characters. Additional stops or unusual requirements may require review; do not include contact details in a quote."
    • addedInput schema / properties / submissionId / description
      Added value: +"Client-generated UUID identifying exactly one offer intent. Reuse unchanged with the same resumeToken for prepare retries and get_offer_status; changed ride/contact needs a new UUID."
  12. Changed3 schema fields changed
    • addedInput schema / properties / offerRequested
      Added value: +{
      +  "const": true,
      +  "type": "boolean"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "submissionId",
      -  "resumeToken",
      -  "contact",
      -  "ride"
      -]New value: +[
      +  "submissionId",
      +  "resumeToken",
      +  "offerRequested",
      +  "contact",
      +  "ride"
      +]
    • changedOutput schema / oneOf
      Previous 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": {
      -      "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": {
      +        "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": {
      +      "status": {
      +        "const": "expired",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "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"
      +  }
      +]
  13. Changed1 schema field changed
    • addedInput schema / properties / firstTouchTrackingToken
      Added value: +{
      +  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
      +  "type": "string"
      +}
  14. Changed3 schema fields changed
    • addedInput schema / properties / ride / properties / flightNumber
      Added value: +{
      +  "maxLength": 240,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / ride / properties / luggage
      Added value: +{
      +  "maxLength": 240,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / specialRequests
      Added value: +{
      +  "maxLength": 500,
      +  "minLength": 1,
      +  "type": "string"
      +}
  15. Changed1 schema field changed
    • removedInput schema / properties / contact / required
      Removed value: -[
      -  "fullName",
      -  "email",
      -  "phone"
      -]
  16. Changed2 schema fields changed
    • addedInput schema / properties / ride / properties / hours
      Added value: +{
      +  "maximum": 24,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / ride / properties / serviceType
      Added value: +{
      +  "enum": [
      +    "hourly"
      +  ],
      +  "type": "string"
      +}
  17. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the generic profile (not read-only, idempotent, non-destructive, open-world); the description adds real behavior: intake and unpaid state may persist after disconnect, the call does not charge, confirm, dispatch or send messages, and the prepared state returns a private checkoutUrl valid until offer.expiresAt. Nothing here contradicts the idempotentHint=true annotation — the binding rule for submissionId/resumeToken actually explains how idempotency is achieved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger and the exclusion in the first two sentences, then packed with operational facts with no filler. The back half is telegraphic ('Wait retryAfterSeconds if given; review conflict/ambiguous'), which is efficient but slightly clipped for a 10-parameter mutation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, 10-parameter write tool this covers the lifecycle an agent needs: preconditions, idempotency binding, disconnect persistence, recovery path, retry throttle, ambiguity handling, and what the success state yields. The output schema handles the return shape, so the brief mention of checkoutUrl and expiresAt is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-call semantics the schema can't: keep submissionId/resumeToken bound to unchanged ride, contact, locale, offerKey and partner context, and supply either email or E.164 phone. It stays silent on the remaining ride/locale/offerKey/tracking parameters, so it is additive rather than comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('preparing a customer-requested unpaid Samuelz Chauffeur offer') plus the gating condition (offerRequested=true), and explicitly names the sibling it is not for ('Do not use for prices (use quote_ride instead)'). An agent can distinguish this from quote_ride and get_offer_status without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both the when ('customer-requested unpaid offer') and the when-not with the exact alternative (prices → quote_ride). It goes further with operational routing: wait retryAfterSeconds when supplied, review conflict/ambiguous, and recover with get_offer_status plus the original submissionId/resumeToken pair.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources