Skip to main content
Glama

Server Details

Public chauffeur information, policies and anonymous price previews in the provider’s published service areas. On explicit customer request, prepare a binding unpaid offer using email OR E.164 phone, without an account. Customers review bound terms and explicitly confirm in Samuelz checkout. The same endpoint provides OAuth-protected booking status, payment review, history, and amendment/cancellation workflows. Booking data and actions require authorized customer access; changes and cancellations require the applicable object-bound consent. Tool discovery is public. Quotes do not guarantee availability, and MCP does not take payment.

Ownership verified
Status
Healthy
Uptime
99.7% over 42 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.8/5.0

Scored across 12 tools

Disambiguation5/5

Every tool states its purpose plus explicit negative routing ('do not use for X, use Y instead'), so overlapping-sounding reads (booking_status vs booking_history vs payment_review, service_options vs customer_policy, quote_ride vs prepare_offer vs offer_status) are cleanly separated. The read/prepare split between booking_change and booking_cancellation is likewise unambiguous.

Naming Consistency5/5

Consistent snake_case verb_noun pattern throughout: get_* for reads, list_* for collections, prepare_* for consent-gated intents, quote_ride for pricing. The verb prefixes map predictably onto risk level, which reinforces rather than breaks the convention.

Tool Count5/5

Twelve tools is well within the sweet spot and each maps to a distinct step in the discovery → quote → offer → booking → records lifecycle. No redundant or filler tools are present.

Completeness4/5

Coverage spans discovery, policy, pricing, offer recovery, booking state/history, payment review, cancellation and amendment preparation, and record/document retrieval — a coherent lifecycle. The surface is deliberately read-plus-prepare, with commits happening via consentUrl/checkoutUrl, so there is no in-band execute/confirm tool and no post-trip feedback or assignment-detail operation, a minor but workable gap.

Available Tools

12 tools
get_booking_historyRead this booking and offer timelineA
Read-onlyIdempotent
Inspect

Use this when retrieving the OAuth-selected booking's recorded offer, change and cancellation events. Do not use for current state (use get_booking_status instead); unpaid checkout uses get_booking_payment_review. Keep the same booking selection while following nextCursor via after. Each page has its own observedAt cutoff, so pagination is not a frozen snapshot. Access is checked around one bounded stored-event query, without provider refresh. An empty page means no matching visible events; unavailable leaves history unverified. Events do not prove payment, refund or fulfillment.

NameRequiredDescriptionDefault
afterNoOmit for the newest page. For older events, copy the preceding non-null nextCursor unchanged. Stop when nextCursor is null.
limitNoMaximum entries in this page, 1–50; defaults to 20. The selected booking stays unchanged.
bookingKeyNoOmit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: access is checked around one bounded stored-event query with no provider refresh, each page has its own observedAt cutoff so pagination is not a frozen snapshot, and events do not prove payment, refund or fulfillment. It also explains what 'empty' and 'unavailable' mean operationally, which is rare and valuable.

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 use case and the exclusions, and nearly every clause carries distinct information. The last three sentences are dense and slightly clipped ('unavailable leaves history unverified'), which costs a little readability but not meaning.

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?

With an output schema present, the description need not describe return values, and it correctly focuses on pagination behavior, selection semantics, access model, and interpretation caveats. Nothing an agent needs to call this correctly is missing.

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 semantics the schema does not: the cursor must be followed while holding the same booking selection, and the page cutoff semantics of 'after'. It does not restate the limit range or the bookingKey fallback, which the schema handles.

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: retrieving the OAuth-selected booking's recorded offer, change and cancellation events. It immediately separates itself from get_booking_status (current state) and get_booking_payment_review (unpaid checkout), so an agent can pick the right tool without reading schemas.

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 an explicit use case plus two named negative cases with the sibling to use instead. It also states the operative constraint for continuation ('keep the same booking selection while following nextCursor via after'), which is the when/how guidance an agent actually needs.

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

get_booking_payment_reviewReview payment for this existing bookingA
Read-onlyIdempotent
Inspect

Use this when retrieving the existing unpaid checkout for the OAuth-selected guest booking. Do not use for payment flags (use get_booking_status instead); submission recovery uses get_offer_status. The selection, original intake proof and separate payment-review consent must identify the same booking. A bookingKey cannot supply consent; linked-customer and status-only grants are ineligible. prepared returns the private checkout for customer confirmation/payment. Paid or closed states have no link; ambiguous, conflict, expired or unavailable require review, never a replacement offer. Access is checked before and after retrieval, without creating a checkout, charging, messaging or refreshing the payment provider.

NameRequiredDescriptionDefault
bookingKeyNoOmit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With annotations already declaring readOnly, idempotent, non-destructive, and non-open-world behavior, the description adds substantial context: access is checked before and after retrieval, no checkout is created, no charge is made, no message is sent, and the payment provider is not refreshed. It also maps outcome states to actions, including that paid or closed states have no link and ambiguous/conflict/expired/unavailable states require review rather than a replacement offer.

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?

The description is front-loaded with the use case and alternatives, and every sentence carries a routing, eligibility, or behavioral constraint. It is dense and somewhat run-on, but not padded; a slight trim would improve scanability without losing substance.

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?

Given the presence of an output schema and full annotations, the description supplies everything an agent needs for correct invocation: eligibility rules, access-control constraints, state-specific outcomes, and explicit side-effect guarantees. Nothing material is missing for this single-parameter read tool.

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. The description still adds meaningful semantics beyond the schema by stating that a bookingKey cannot supply consent and that another identifier cannot switch selection or grant access, which reinforces the access-control constraint on the parameter.

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?

The description states a specific verb and resource: retrieving the existing unpaid checkout for the OAuth-selected guest booking. It explicitly distinguishes itself from get_booking_status for payment flags and get_offer_status for submission recovery, so an agent can route correctly without opening sibling schemas.

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?

It gives explicit when-to-use conditions, names two sibling alternatives with their distinct purposes, and lists eligibility exclusions: selection, intake proof, and payment-review consent must identify the same booking; bookingKey cannot supply consent; linked-customer and status-only grants are ineligible. This is close to a complete routing specification.

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

get_booking_statusRead an existing own bookingA
Read-onlyIdempotent
Inspect

Use this when reading the OAuth-selected existing booking’s current recorded booking, payment and assignment state. Do not use for its timeline (use get_booking_history instead). For its existing unpaid checkout use get_booking_payment_review; for original submission recovery use get_offer_status. Omit bookingKey at the OAuth endpoint to use the selection; an explicit ID/reference cannot switch it. The app-session endpoint requires a key. Authority is checked on every call; not_found denies access without proving absence and unavailable leaves state unverified. Safe to repeat; no provider refresh or booking action occurs. Stored flags are not fresh payment, dispatch or completion proof.

NameRequiredDescriptionDefault
bookingKeyNoOmit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, it discloses authority checks on every call, not_found semantics, unavailable-state uncertainty, idempotent safety, no provider refresh or booking action, and that stored flags are not proof of fresh payment, dispatch, or completion. This is unusually rich behavioral context.

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

Conciseness5/5

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

The description is dense but front-loaded and purposeful. Every sentence carries operational or routing information, with no filler.

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?

Given that an output schema exists, the description does not need to explain return values. It still covers access semantics, endpoint behavior, error implications, idempotency, and non-freshness caveats completely.

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 schema already documents bookingKey. The description still adds useful endpoint-level meaning: omission uses the OAuth-selected booking, explicit IDs cannot switch selection, and the app-session endpoint requires a key.

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?

The description clearly states a specific read operation over an existing booking’s recorded booking, payment, and assignment state. It distinguishes this from sibling tools by explicitly naming get_booking_history, get_booking_payment_review, and get_offer_status.

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?

It gives explicit when-to-use guidance and names alternatives for adjacent needs: timeline, unpaid checkout review, and original submission recovery. It also clarifies bookingKey omission versus app-session endpoint requirements.

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

get_customer_policyPublished customer termsA
Read-onlyIdempotent
Inspect

Use this when checking Samuelz Chauffeur lead time, account requirements and booking confirmation terms. Do not use for service coverage (use get_service_options instead). Returns available with observedAt and terms, or unavailable. Lead time is in minutes; interpret dates in the returned time zone and revalidate terms on the eventual offer. This cheap, repeatable read creates nothing. Pass a published offerKey for its location’s terms; omit it for default policy.

NameRequiredDescriptionDefault
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
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.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotentHint and non-destructive behavior, and the description reinforces this with 'cheap, repeatable read creates nothing'. It goes further by disclosing the response contract (available with observedAt and terms, or unavailable), the unit of lead time, time-zone interpretation, and the instruction to revalidate terms against the eventual offer.

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?

The when-to-use clause is front-loaded and each subsequent sentence carries a distinct rule (exclusion, return shape, units, offerKey routing). It is dense but slightly overpacked, and 'cheap, repeatable read creates nothing' partly repeats what the annotations already say.

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 two-optional-parameter read with full schema coverage, an output schema, and rich annotations, the description covers routing, return shape, units, and staleness handling. Nothing an agent needs in order to call it correctly is missing.

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 schema already carries most of the burden; the description adds the decision rule for offerKey (pass a published key for that location's terms, omit for the default). It says nothing about locale, which is left entirely to the schema, keeping this from a 5.

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?

The description names the exact resource (Samuelz Chauffeur lead time, account requirements, booking confirmation terms) and what the tool returns (policy with observedAt and terms, or an unavailable status). It explicitly distinguishes itself from get_service_options, so an agent can separate it from its siblings 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?

It states when to use it ('when checking … lead time, account requirements and booking confirmation terms'), when not to ('Do not use for service coverage'), and names the alternative tool. It also gives per-call routing guidance: pass offerKey for a location's terms, omit it for the default policy.

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

get_offer_statusRead prepared offer statusA
Read-onlyIdempotent
Inspect

Use this when recovering a submitted offer after a timeout or on return. Do not use for new requests (use prepare_offer instead).

For rides A then B, pair A's submissionId with A's resumeToken to read A, even after B. Recovery preserves the original language: there is no locale override.

pending: retry after retryAfterSeconds; prepared: private checkout/terms links; available: recorded booking state. not_found does not prove creation failed: check the pair and provider before another attempt.

The private pair authorizes this stored read without login and expires 24 hours after first submission. There is no provider refresh. Recorded flags do not prove fresh payment or availability.

NameRequiredDescriptionDefault
resumeTokenYesOriginal private 64-character hexadecimal resumeToken sent with this submissionId. Reuse it unchanged; never generate a replacement. Expired, invalid or foreign-provider proof can return not_found without proving that no booking exists.
submissionIdYesOriginal submissionId UUID sent to prepare_offer for this attempt, including when its response was lost. Reuse it with the original resumeToken; do not generate a new ID or substitute a booking ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent, but the description adds context the annotations cannot: the pair authorizes the read without login, expires 24 hours after first submission, and there is no provider refresh. It also explains the semantics of pending/prepared/available and warns that not_found does not prove creation failed.

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 usage decision, then the pairing rule, then status meanings, then authorization/expiry. It is dense but every sentence carries a distinct constraint; the status glossary is the only part that could be tightened.

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?

With an output schema present, return shape need not be explained, yet the description still covers the states an agent will encounter, the auth model, expiry, and the not_found ambiguity. Nothing needed to call this correctly is missing.

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 a real pairing rule beyond the schema: pair A's submissionId with A's resumeToken to read A even after B, and note that recovery preserves the original language with no locale override. That is genuine added meaning rather than restatement.

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 ('read' a 'prepared offer status') scoped to recovery of a previously submitted offer. It explicitly names the sibling it is not (prepare_offer) so an agent can route without opening either 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 the triggering condition ('recovering a submitted offer after a timeout or on return') and an explicit exclusion with the correct alternative ('Do not use for new requests, use prepare_offer'). It also gives a caveat about when a re-attempt is warranted.

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

get_record_documentsRead your record documentsA
Read-onlyIdempotent
Inspect

Use this when reading existing invoices, credit notes and verified stored payment/refund evidence for one authorized record. Do not use for an unpaid checkout: use get_booking_payment_review. This read creates or sends no documents and executes no payment or refund.

Selection: omit recordKey for a single-record grant; with a collection grant, call list_customer_records and pass one returned key as recordKey.

Access: customer:documents:read consent AND verified document-recipient authority are required; participation alone is insufficient. Open private links in the customer's signed-in session. API downloads retain the OAuth resource, recordKey and artifactId. No storage keys or other recipients' documents are exposed.

Evidence: returns verified PDF metadata and private review/download links. paymentEvidence requires validated stored provider settlement plus exact document/bank bindings. Credit notes alone do not prove refunds. No provider refresh or complete later-reversal coverage; missing evidence does not mean unpaid or unrefunded.

Outcomes: an empty documents array means no eligible document found, not no invoice exists. not_found masks absent or unauthorized records; consent_required requests only the missing document permission; unavailable means retry later.

NameRequiredDescriptionDefault
recordKeyNoInternal record ID returned by this same authorized customer overview, or the record already selected during consent. It grants no access by itself and cannot switch tenant or module.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safe-read profile, but the description adds substantial beyond-schema context: required consent (customer:documents:read) plus verified recipient authority, participation being insufficient, signed-in session requirement for private links, and disclosure limits. It also enumerates outcome semantics (empty array ≠ no invoice, not_found masking, consent_required, unavailable) and evidence caveats.

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?

Dense and front-loaded with 'Use this when', organized into Selection/Access/Evidence/Outcomes sections so each block is scannable. It is long, but nearly every sentence carries distinct operational information; minor tightening possible in the Access/Evidence blocks.

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?

An output schema exists, yet the description still clarifies return semantics (verified PDF metadata plus private links, paymentEvidence binding requirements, no provider refresh) and error outcomes. For a single-param tool with rich annotations, nothing an agent needs to call it or interpret results is missing.

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% and the single recordKey is already documented, but the description adds genuine value by explaining the omit-vs-collection-grant selection logic and the list_customer_records prerequisite. Slightly above baseline because it changes how the agent decides to pass the param.

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 (reading) and resource (invoices, credit notes, verified payment/refund evidence for one authorized record), and explicitly names the sibling it must not be used for (get_booking_payment_review for unpaid checkouts). An agent can distinguish it from all siblings 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?

Explicit when-to-use, when-not-to-use with a named alternative, plus a selection rule: omit recordKey for a single-record grant, or call list_customer_records and pass a returned key for a collection grant. Nothing is left to inference.

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

get_service_optionsPublished service optionsA
Read-onlyIdempotent
Inspect

Use this when discovering Samuelz Chauffeur services, areas and time zones. Do not use for terms (use get_customer_policy instead). Keep offerKey and locale across policy/price calls so location and language agree; omit the key for discovery. Returns available or unavailable. Anonymous stored read; no price, availability confirmation or writes.

NameRequiredDescriptionDefault
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
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.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds context annotations cannot: it is an anonymous (no-auth) stored read, and it explicitly does not return pricing, does not confirm availability, and performs no writes. That bound on what the result can be trusted for is exactly the behavioral signal an agent needs before chaining a quote.

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 use-when clause and no filler; the trailing telegraphic fragments ("Anonymous stored read; no price, availability confirmation or writes") are dense and take a second read, but every clause carries information.

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?

An output schema exists, so return values need not be narrated; the description still flags the key caveat (available vs unavailable, no price/confirmation). With only two optional, fully documented params and covered annotations, nothing needed to call it correctly is missing.

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; the description goes further by framing offerKey and locale as carry-forward state across policy/price calls and by saying to omit offerKey for discovery. Some of this duplicates the offerKey schema text, so it is reinforcement rather than pure added meaning.

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 (discovering) and resource (services, areas, time zones) and immediately scopes out the one adjacent thing an agent might confuse it with (terms, routed to get_customer_policy). An agent can distinguish it from get_customer_policy and the prepare_* siblings 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?

"Use this when…" plus an explicit negative ("Do not use for terms — use get_customer_policy instead") and cross-call guidance ("Keep offerKey and locale across policy/price calls… omit the key for discovery"). When-to-use, when-not-to-use, and an alternative are all enumerated.

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

list_customer_recordsList your recordsA
Read-onlyIdempotent
Inspect

Use this when the customer wants an overview of their own records with this provider. For one booking's event history, use get_booking_history. Do not use for another customer, provider, a guest capability or a single-booking permission. Requires explicit customer:records:read consent for this provider and module. Returns minimal stored summaries and private review links; no other tenant, provider confirmation or payment execution.

Start with {}. Follow nextCursor by passing it unchanged as after; limit is 1–50, default 20. Use the selected key as recordKey for get_record_documents. A saved bookingKey from an older single-booking connection does not authorize this collection.

An empty available list means no matching records at the time of this read. not_found means current access is absent; reconnect only with the customer’s permission. unavailable means retry later. Never infer booking confirmation or payment from recordedStatus alone.

NameRequiredDescriptionDefault
afterNoFor older records, copy the complete non-null nextCursor from the previous response unchanged. Stop at null. It is bound to this same customer access; it is not a grant.
limitNoMaximum records per page, 1–50; defaults to 20. Omit after for the newest page. Empty results do not prove that no other or inaccessible records exist.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: requires explicit customer:records:read consent, describes return contents (minimal stored summaries, private review links), limits scope (no other tenant, no provider confirmation, no payment execution), defines error semantics for empty/not_found/unavailable, and warns against inferring booking confirmation from recordedStatus.

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

Conciseness5/5

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

Front-loaded with the use case and exclusion, then consent, then pagination mechanics, then error semantics, then a final caution. Dense but every sentence carries operational information; no filler or repetition.

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?

Covers authorization, scope, pagination, error states, and output nature, while an output schema handles return shape. Nothing an agent needs to call this correctly—consent, cursor handling, or failure interpretation—is missing.

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; the description adds practical handling rules—start with {}, pass nextCursor unchanged as after, limit 1–50 default 20—and explains that the selected key is reused as recordKey for get_record_documents. The added cross-tool linkage and cursor-binding guidance exceed what the schema alone conveys.

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 ('overview of their own records with this provider') and immediately contrasts with the sibling get_booking_history for single-booking event history. An agent can distinguish this from all named siblings without opening the 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 explicit when-to-use and a detailed when-not-to-use list: another customer, provider, guest capability, or single-booking permission are all excluded. It names the concrete alternative (get_booking_history) and its selection condition.

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

prepare_booking_cancellationReview cancellation of this bookingA
Read-onlyIdempotent
Inspect

Use this when the customer wants to review cancellation of the OAuth-selected existing booking. Do not use for a ride amendment (use prepare_booking_change instead). For its recorded state use get_booking_status; for its timeline use get_booking_history. bookingKey must match the selection. Create onceKey once for this booking/cancellation intent and retain it on unchanged retries; never reuse an amendment key. consent_required returns a private consentUrl carrying the selection and intent; open it in the original signed-in session for current amount/terms, separate action consent and confirmation. Correct invalid_request; not_found denies access; unavailable leaves review unverified. Safe to repeat with authority checked before/after. Retrieving the link stores no cancellation, grants no execution authority and performs no refund, payment or message.

NameRequiredDescriptionDefault
onceKeyYesCaller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent.
bookingKeyYesInternal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial context beyond them: the consent_required branch returns a consentUrl that must be opened in the original signed-in session, the error taxonomy (invalid_request, not_found, unavailable) and what each means, and the guarantee that retrieving the link stores no cancellation, grants no execution authority, and performs no refund/payment/message. This is exactly the supplementary behavioral detail annotations cannot convey.

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 use case and exclusion, and every clause is load-bearing (key hygiene, consent flow, error mapping, safety guarantees). It is dense and runs as a single block, which slightly reduces scannability, but there is no filler.

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?

An output schema exists, so return-shape explanation is unnecessary; the description instead supplies the pieces an agent needs to act correctly — the consent handoff path, session requirement, error handling, and idempotency/authority contract. Nothing material for a two-parameter review tool is missing.

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; the description earns an increment by adding cross-parameter and cross-tool semantics the schema only partly states — bookingKey must match the OAuth selection, onceKey is created once per booking/cancellation intent and retained on unchanged retries, and must never be reused from an amendment. Some of this duplicates the onceKey schema text, keeping it from a 5.

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?

Names a specific verb and resource ("review cancellation of the OAuth-selected existing booking") and immediately distinguishes itself from the amendment sibling (prepare_booking_change). An agent can identify what this does and what it does not do without opening the 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?

Explicit when-to-use ("customer wants to review cancellation of the ... existing booking"), explicit when-not ("Do not use for a ride amendment"), and two named alternatives with their conditions (get_booking_status for recorded state, get_booking_history for timeline). Nothing is left to inference.

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

prepare_booking_changeReview a booking changeA
Read-onlyIdempotent
Inspect

Use this when reviewing an explicitly requested change to the booking selected by the current OAuth READ grant. Do not use for cancellation (use prepare_booking_cancellation instead) or current state (use get_booking_status).

For "pickup at 15:30 instead", send changes={"ride":{"time":"15:30"}} in the booking's service-location time zone; omit unrequested facts. Use amendment for a complete replacement itinerary supplied by the customer. Keep onceKey for identical retries; changing the time to 16:00 needs a new key and review.

Authority is checked before and after retrieving the private consentUrl. Open it in the original signed-in session for current facts, pricing, terms, separate visible action consent and confirmation. Changed revision, missing facts or unavailable pricing require fresh review.

Retrieval stores no proposal, grants no execution authority and performs no booking change, refund, payment or message.

NameRequiredDescriptionDefault
changesNoOnly the fields the customer explicitly wants to change. Omitted fields are loaded from the current booking after sign-in; null clears an optional field. Use either changes or a complete amendment, never both. The merged proposal must satisfy all ride rules and is reviewed with current pricing and separate consent before any booking action.
onceKeyYesCaller-chosen retry key: 16–128 characters from A–Z, a–z, 0–9, underscore or hyphen. Reuse it for the same booking, action and unchanged request facts; use a fresh key for changed facts. The caller creates it; this handoff assigns it no independent expiry or execution authority. Later review still requires a current original session, object, offer and separate action consent.
amendmentNoComplete proposed ride facts, as an alternative to changes. Do not combine both inputs. All fields are reviewed in the original signed-in booking session before separate action consent and confirmation.
bookingKeyYesInternal booking ID or visible bookingReference of the one booking already selected by this OAuth connection. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result; prepared returns links, not IDs. Never substitute the supplier offerKey. It grants no access to another booking.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: authority is checked before and after retrieving a private consentUrl, the link must be opened in the original signed-in session, changed revisions or unavailable pricing force a fresh review, and retrieval stores no proposal and grants no execution authority. None of that is inferable from the hints.

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 selection rule before the alternatives, and each paragraph has a distinct job (routing, parameter usage, authority/consent flow, side-effect disclaimer). It is dense and long for a tool description, but almost no sentence is filler.

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?

Covers the decision surface an agent needs for a complex nested schema with an output schema present: which sibling to use, how to shape changes vs amendment, retry semantics, the consent handoff, and the guarantee that nothing is executed. Return values are covered by the output schema, so no gap remains.

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 schema already carries field-level detail and the baseline is 3. The description earns above baseline by explaining the mutually exclusive changes/amendment choice and by giving a concrete onceKey retry rule ('changing the time to 16:00 needs a new key and review') that the schema alone does not make obvious.

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 action (reviewing an explicitly requested change to a booking) scoped to the booking selected by the current OAuth READ grant, and explicitly names the siblings it is not (prepare_booking_cancellation, get_booking_status). An agent can distinguish this from all nine siblings without opening a 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?

Explicit when-to-use plus two explicit when-not-to-use cases with the correct alternatives named. It also routes within the tool itself: 'changes' for a targeted edit versus 'amendment' for a complete replacement itinerary, with the example 'pickup at 15:30 instead' showing the minimal-fact convention.

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

prepare_offerPrepare an unpaid offerA
Idempotent
Inspect

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.

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

NameRequiredDescription

No output parameters

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.

quote_ridePrice previewA
Read-only
Inspect

Use this when pricing a complete anonymous Samuelz Chauffeur ride. Do not use for discovery (use get_service_options instead); check terms with get_customer_policy. Keep offerKey across these calls; it determines the local calendar/time zone. Return pickup must follow outbound pickup; hourly service cannot include a return. vehiclePreference and specialRequests share 500 characters, including the added 'Vehicle preference: ' prefix and newline. quoted is no reservation or availability promise; outside_service_area has no price; review_required needs review. No login/contact. Repeats consume the shared REST/MCP budget; wait retryAfterSeconds on rate_limited.

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
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.
specialRequestsNoOptional requirements, at most 500 characters.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare a read-only, non-destructive, open-world, non-idempotent call, and the description adds the substantive context: no login or contact details required, 'quoted' is explicitly not a reservation or availability promise, and the three outcome states (quoted, outside_service_area with no price, review_required) are named. It also discloses the shared REST/MCP budget and the retryAfterSeconds backoff, which meaningfully explains why repeats are discouraged given idempotentHint=false.

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 core purpose and exclusions, then constraints, then error states. The telegraphic semicolon style packs a lot in with almost no waste, though the dense run-on clause about the 500-character prefix is harder to parse than a discrete sentence would be.

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

Completeness4/5

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

Output schema exists, so return values need not be explained, and the description still names the key status outcomes. Combined with 100% schema coverage on a nested 4-parameter tool, this covers nearly everything needed to call correctly; only the deep nested ride fields are left entirely to the schema.

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 baseline is 3, and the description adds real value beyond it: offerKey determines the local calendar/time zone (sharpening the schema's vaguer 'selects a service location and terms'), and vehiclePreference plus specialRequests share a 500-character budget including the 'Vehicle preference: ' prefix and newline – a constraint absent from the schema. It stops short of explaining the ride nested-object fields, which the schema already documents well.

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?

Opens with an explicit verb+resource+scope: pricing a complete anonymous ride, matching the 'Price preview' title rather than a booking tool. It immediately differentiates from siblings by naming get_service_options (discovery) and get_customer_policy (terms).

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?

States both when to use it and when not to ('Do not use for discovery ... instead'), plus the ordering constraint 'Return pickup must follow outbound pickup; hourly service cannot include a return.' It also tells the agent to carry offerKey across calls and to wait retryAfterSeconds on rate_limited rather than retrying immediately.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedquote_ride1 field changed
      • changedOutput schema / oneOf
        Previous 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": {
        -      "bookingUrl": {
        -        "description": "Booking page for this locale.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "retryAfterSeconds": {
        -        "description": "Seconds to wait before retrying.",
        -        "exclusiveMinimum": 0,
        -        "maximum": 9007199254740991,
        -        "type": "integer"
        -      },
        -      "status": {
        -        "const": "rate_limited",
        -        "description": "Quote admission is rate-limited.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "retryAfterSeconds"
        -    ],
        -    "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, when present.",
        -        "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": "The ride needs review. No price is confirmed.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "message"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "bookingConfirmed": {
        -        "const": false,
        -        "description": "A quote does not create a booking.",
        -        "type": "boolean"
        -      },
        -      "bookingUrl": {
        -        "description": "Booking page for this locale.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "nextAction": {
        -        "description": "Continue only if the customer asks for an offer.",
        -        "type": "string"
        -      },
        -      "quote": {
        -        "additionalProperties": false,
        -        "description": "Calculated price preview.",
        -        "properties": {
        -          "billableHoursPerServiceLine": {
        -            "description": "Billable hours per service line.",
        -            "exclusiveMinimum": 0,
        -            "type": "number"
        -          },
        -          "calculatedAt": {
        -            "description": "When this preview was calculated.",
        -            "type": "string"
        -          },
        -          "currency": {
        -            "description": "Currency of the preview.",
        -            "type": "string"
        -          },
        -          "grossTotalCents": {
        -            "description": "Gross total in minor units.",
        -            "maximum": 9007199254740991,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "parkingIncluded": {
        -            "description": "Whether parking is included.",
        -            "type": "boolean"
        -          },
        -          "pricesIncludeVat": {
        -            "description": "Whether the price includes VAT.",
        -            "type": "boolean"
        -          },
        -          "revalidationRequired": {
        -            "const": true,
        -            "description": "Revalidate before an offer.",
        -            "type": "boolean"
        -          },
        -          "serviceLines": {
        -            "description": "Price by service line.",
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "direction": {
        -                  "description": "Outbound or return leg.",
        -                  "enum": [
        -                    "outbound",
        -                    "return"
        -                  ],
        -                  "type": "string"
        -                },
        -                "grossAmountCents": {
        -                  "description": "Gross amount for this leg.",
        -                  "maximum": 9007199254740991,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "direction",
        -                "grossAmountCents"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "tollsIncluded": {
        -            "description": "Whether tolls are included.",
        -            "type": "boolean"
        -          },
        -          "vatRateBasisPoints": {
        -            "description": "VAT rate in basis points.",
        -            "maximum": 9007199254740991,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "vehicleCount": {
        -            "description": "Vehicles used in the calculation.",
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "currency",
        -          "grossTotalCents",
        -          "pricesIncludeVat",
        -          "vatRateBasisPoints",
        -          "parkingIncluded",
        -          "tollsIncluded",
        -          "vehicleCount",
        -          "billableHoursPerServiceLine",
        -          "serviceLines",
        -          "calculatedAt",
        -          "revalidationRequired"
        -        ],
        -        "type": "object"
        -      },
        -      "status": {
        -        "const": "quoted",
        -        "description": "A price preview. Revalidate before an offer.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "bookingConfirmed",
        -      "quote",
        -      "nextAction"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "invalid_request",
        +        "description": "Input does not match this operation.",
        +        "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": {
        +      "bookingUrl": {
        +        "description": "Booking page for this locale.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "retryAfterSeconds": {
        +        "description": "Seconds to wait before retrying.",
        +        "exclusiveMinimum": 0,
        +        "maximum": 9007199254740991,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "const": "rate_limited",
        +        "description": "Quote admission is rate-limited.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "retryAfterSeconds"
        +    ],
        +    "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, when present.",
        +        "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": "The ride needs review. No price is confirmed.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "bookingConfirmed": {
        +        "const": false,
        +        "description": "A quote does not create a booking.",
        +        "type": "boolean"
        +      },
        +      "bookingUrl": {
        +        "description": "Booking page for this locale.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "nextAction": {
        +        "description": "Continue only if the customer asks for an offer.",
        +        "type": "string"
        +      },
        +      "quote": {
        +        "additionalProperties": false,
        +        "description": "Calculated price preview.",
        +        "properties": {
        +          "billableHoursPerServiceLine": {
        +            "description": "Billable hours per service line.",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          "calculatedAt": {
        +            "description": "When this preview was calculated.",
        +            "type": "string"
        +          },
        +          "currency": {
        +            "description": "Currency of the preview.",
        +            "type": "string"
        +          },
        +          "grossTotalCents": {
        +            "description": "Gross total in minor units.",
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "parkingIncluded": {
        +            "description": "Whether parking is included.",
        +            "type": "boolean"
        +          },
        +          "pricesIncludeVat": {
        +            "description": "Whether the price includes VAT.",
        +            "type": "boolean"
        +          },
        +          "pricingBasis": {
        +            "description": "Preview basis: resolved route timings, provisional policy fallback or confirmed pricing policy.",
        +            "enum": [
        +              "google_routes",
        +              "policy_fallback",
        +              "tenant_policy",
        +              "server_policy"
        +            ],
        +            "type": "string"
        +          },
        +          "pricingMode": {
        +            "description": "Pricing method used: standard transfer, timed route or booked hours.",
        +            "enum": [
        +              "fixed_muc_transfer",
        +              "hourly_route",
        +              "hourly_home_market"
        +            ],
        +            "type": "string"
        +          },
        +          "revalidationRequired": {
        +            "const": true,
        +            "description": "Revalidate before an offer.",
        +            "type": "boolean"
        +          },
        +          "serviceLines": {
        +            "description": "Price by service line.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "direction": {
        +                  "description": "Outbound or return leg.",
        +                  "enum": [
        +                    "outbound",
        +                    "return"
        +                  ],
        +                  "type": "string"
        +                },
        +                "grossAmountCents": {
        +                  "description": "Gross amount for this leg.",
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "direction",
        +                "grossAmountCents"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "tollsIncluded": {
        +            "description": "Whether tolls are included.",
        +            "type": "boolean"
        +          },
        +          "vatRateBasisPoints": {
        +            "description": "VAT rate in basis points.",
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "vehicleCount": {
        +            "description": "Vehicles used in the calculation.",
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "currency",
        +          "grossTotalCents",
        +          "pricesIncludeVat",
        +          "vatRateBasisPoints",
        +          "parkingIncluded",
        +          "tollsIncluded",
        +          "vehicleCount",
        +          "billableHoursPerServiceLine",
        +          "serviceLines",
        +          "calculatedAt",
        +          "revalidationRequired"
        +        ],
        +        "type": "object"
        +      },
        +      "status": {
        +        "const": "quoted",
        +        "description": "A price preview. Revalidate before an offer.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "bookingConfirmed",
        +      "quote",
        +      "nextAction"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 1 tool update
    • Changedget_record_documents1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "documents": {
        -        "description": "Existing issued invoices and credit notes with verified recipient authority and current PDF evidence. An empty array means no eligible document was found; it does not assert payment, delivery, or a refund.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "apiDownloadUrl": {
        -              "description": "Authenticated API download URL. Send the same OAuth bearer and resource; no cookie or secret is embedded in this URL.",
        -              "format": "uri",
        -              "type": "string"
        -            },
        -            "artifactId": {
        -              "description": "Identifier of the current verified PDF artifact.",
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "currency": {
        -              "description": "ISO 4217 currency of this document.",
        -              "pattern": "^[A-Z]{3}$",
        -              "type": "string"
        -            },
        -            "downloadUrl": {
        -              "description": "Private customer-session download URL. This URL is not a bearer capability. API clients use the authenticated document download route with the same recordKey and artifactId.",
        -              "format": "uri",
        -              "type": "string"
        -            },
        -            "fileName": {
        -              "description": "Suggested download filename.",
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "grossAmountMinor": {
        -              "description": "Gross total in minor units of currency; 12000 means 120.00 for EUR or GBP.",
        -              "maximum": 9007199254740991,
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "id": {
        -              "description": "Identifier of an existing issued document.",
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "issueDate": {
        -              "description": "Stored issue date in YYYY-MM-DD.",
        -              "format": "date",
        -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        -              "type": "string"
        -            },
        -            "kind": {
        -              "description": "invoice or credit_note; these are existing documents, not a new refund.",
        -              "enum": [
        -                "invoice",
        -                "credit_note"
        -              ],
        -              "type": "string"
        -            },
        -            "number": {
        -              "description": "Stored invoice or credit-note number.",
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "reviewUrl": {
        -              "description": "Private review page; requires the customer login and current document permission.",
        -              "format": "uri",
        -              "type": "string"
        -            },
        -            "sha256": {
        -              "description": "SHA-256 digest of the current PDF bytes.",
        -              "pattern": "^[a-f0-9]{64}$",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "id",
        -            "number",
        -            "kind",
        -            "issueDate",
        -            "currency",
        -            "grossAmountMinor",
        -            "artifactId",
        -            "sha256",
        -            "fileName",
        -            "reviewUrl",
        -            "downloadUrl",
        -            "apiDownloadUrl"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 64,
        -        "type": "array"
        -      },
        -      "observedAt": {
        -        "description": "Cutoff for this read in ISO 8601; reauthorization occurs before and after the read. This is not a provider refresh.",
        -        "format": "date-time",
        -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
        -        "type": "string"
        -      },
        -      "recordKey": {
        -        "description": "Internal record ID returned by this same authorized customer overview, or the record already selected during consent. It grants no access by itself and cannot switch tenant or module.",
        -        "maxLength": 128,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "available",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "observedAt",
        -      "recordKey",
        -      "documents"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "invalid_request",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "not_found",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "unavailable",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "consent_required",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "documents": {
        +        "description": "Existing issued invoices and credit notes with verified recipient authority and current PDF evidence. An empty array means no eligible document was found; it does not assert payment, delivery, or a refund.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "apiDownloadUrl": {
        +              "description": "Authenticated API download URL. Send the same OAuth bearer and resource; no cookie or secret is embedded in this URL.",
        +              "format": "uri",
        +              "type": "string"
        +            },
        +            "artifactId": {
        +              "description": "Identifier of the current verified PDF artifact.",
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "currency": {
        +              "description": "ISO 4217 currency of this document.",
        +              "pattern": "^[A-Z]{3}$",
        +              "type": "string"
        +            },
        +            "downloadUrl": {
        +              "description": "Private customer-session download URL. This URL is not a bearer capability. API clients use the authenticated document download route with the same recordKey and artifactId.",
        +              "format": "uri",
        +              "type": "string"
        +            },
        +            "fileName": {
        +              "description": "Suggested download filename.",
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "grossAmountMinor": {
        +              "description": "Gross total in minor units of currency; 12000 means 120.00 for EUR or GBP.",
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "id": {
        +              "description": "Identifier of an existing issued document.",
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "issueDate": {
        +              "description": "Stored issue date in YYYY-MM-DD.",
        +              "format": "date",
        +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "description": "invoice or credit_note; these are existing documents, not a new refund.",
        +              "enum": [
        +                "invoice",
        +                "credit_note"
        +              ],
        +              "type": "string"
        +            },
        +            "number": {
        +              "description": "Stored invoice or credit-note number.",
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "reviewUrl": {
        +              "description": "Private review page; requires the customer login and current document permission.",
        +              "format": "uri",
        +              "type": "string"
        +            },
        +            "sha256": {
        +              "description": "SHA-256 digest of the current PDF bytes.",
        +              "pattern": "^[a-f0-9]{64}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "number",
        +            "kind",
        +            "issueDate",
        +            "currency",
        +            "grossAmountMinor",
        +            "artifactId",
        +            "sha256",
        +            "fileName",
        +            "reviewUrl",
        +            "downloadUrl",
        +            "apiDownloadUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 64,
        +        "type": "array"
        +      },
        +      "observedAt": {
        +        "description": "Cutoff for this read in ISO 8601; reauthorization occurs before and after the read. This is not a provider refresh.",
        +        "format": "date-time",
        +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
        +        "type": "string"
        +      },
        +      "paymentEvidence": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "basis": {
        +            "const": "verified_stored_provider_settlement",
        +            "description": "Events are bound to validated persisted provider settlement sources, the authorized official document and its exact matched bank transaction.",
        +            "type": "string"
        +          },
        +          "currentReversalCoverage": {
        +            "const": "not_attested",
        +            "description": "Later reversals or disputes may not be covered; do not infer current settlement finality.",
        +            "type": "string"
        +          },
        +          "items": {
        +            "description": "Only evidence for the current recipient-authorized record documents; empty is not proof of nonpayment.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "amountMinor": {
        +                  "description": "Verified positive event amount in minor currency units; this is not a current outstanding balance.",
        +                  "exclusiveMinimum": 0,
        +                  "maximum": 9007199254740991,
        +                  "type": "integer"
        +                },
        +                "currency": {
        +                  "description": "Currency of the verified event. The initial stored Stripe settlement adapter supports EUR.",
        +                  "pattern": "^[A-Z]{3}$",
        +                  "type": "string"
        +                },
        +                "documentId": {
        +                  "description": "ID of the authorized invoice or credit note to which this evidence is bound.",
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "id": {
        +                  "description": "Stable opaque identifier for this authorized stored payment or refund evidence; it grants no access.",
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "kind": {
        +                  "description": "Verified stored incoming payment or outgoing refund event, not the invoice or credit note itself.",
        +                  "enum": [
        +                    "payment",
        +                    "refund"
        +                  ],
        +                  "type": "string"
        +                },
        +                "occurredAt": {
        +                  "description": "Time of the recorded provider event; no fresh provider request was made.",
        +                  "format": "date-time",
        +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
        +                  "type": "string"
        +                },
        +                "provider": {
        +                  "const": "stripe",
        +                  "description": "Provider of the persisted verified event, not a new provider confirmation.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "documentId",
        +                "kind",
        +                "amountMinor",
        +                "currency",
        +                "occurredAt",
        +                "provider"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 64,
        +            "type": "array"
        +          },
        +          "liveProviderRefresh": {
        +            "const": false,
        +            "description": "Always false: no provider refresh, payment, refund, document issuance or delivery occurs.",
        +            "type": "boolean"
        +          },
        +          "status": {
        +            "description": "available has verified stored events; not_available means no eligible proof was found, not unpaid or unrefunded; unavailable means proof could not be checked safely.",
        +            "enum": [
        +              "available",
        +              "not_available",
        +              "unavailable"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "status",
        +          "basis",
        +          "liveProviderRefresh",
        +          "currentReversalCoverage",
        +          "items"
        +        ],
        +        "type": "object"
        +      },
        +      "recordKey": {
        +        "description": "Internal record ID returned by this same authorized customer overview, or the record already selected during consent. It grants no access by itself and cannot switch tenant or module.",
        +        "maxLength": 128,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "available",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "observedAt",
        +      "recordKey",
        +      "documents"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "invalid_request",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "not_found",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "unavailable",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "consent_required",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  }
        +]
  3. 2 tool updates
    • Addedget_record_documents
    • Addedlist_customer_records
  4. 2 tool updates
    • Changedprepare_booking_cancellation1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "consentUrl": {
        -        "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and proposed facts. Current authority is rechecked, then the existing flow requires separate visible action consent and confirmation; the link itself grants no authority.",
        -        "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "consent_required",
        -        "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "consentUrl"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "description": "invalid_request rejects malformed selection/action facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
        -        "enum": [
        -          "invalid_request",
        -          "not_found",
        -          "unavailable"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "consentUrl": {
        +        "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and either a complete proposal or explicitly requested changes. Current authority is rechecked and unchanged facts are loaded privately. The existing flow then requires a complete proposal, current price and terms, separate visible action consent and confirmation; the link grants no execution authority.",
        +        "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "consent_required",
        +        "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "consentUrl"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "description": "invalid_request rejects malformed selection or change facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
        +        "enum": [
        +          "invalid_request",
        +          "not_found",
        +          "unavailable"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedprepare_booking_change4 fields changed
      • changedInput schema / properties / amendment / description
        Previous value: -"Full proposed ride request in the existing quote-input shape, including all required ride fields. Review these exact facts in the linked original signed-in session before separate action consent and confirmation."New value: +"Complete proposed ride facts, as an alternative to changes. Do not combine both inputs. All fields are reviewed in the original signed-in booking session before separate action consent and confirmation."
      • addedInput schema / properties / changes
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Only the fields the customer explicitly wants to change. Omitted fields are loaded from the current booking after sign-in; null clears an optional field. Use either changes or a complete amendment, never both. The merged proposal must satisfy all ride rules and is reviewed with current pricing and separate consent before any booking action.",
        +  "properties": {
        +    "locale": {
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    "offerKey": {
        +      "anyOf": [
        +        {
        +          "description": "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.",
        +          "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$",
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "ride": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "date": {
        +          "description": "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.",
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        },
        +        "destination": {
        +          "description": "Destination with city or postcode, distinct from pickup.",
        +          "maxLength": 240,
        +          "minLength": 2,
        +          "type": "string"
        +        },
        +        "flightNumber": {
        +          "anyOf": [
        +            {
        +              "description": "Flight number for an airport pickup, if known.",
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "hours": {
        +          "anyOf": [
        +            {
        +              "description": "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.",
        +              "maximum": 24,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "luggage": {
        +          "anyOf": [
        +            {
        +              "description": "Luggage notes. Unusual items may need review.",
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "passengers": {
        +          "description": "Number of people travelling, from 1 to 60.",
        +          "maximum": 60,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pickup": {
        +          "description": "Pickup place with city or postcode, inside a served area.",
        +          "maxLength": 240,
        +          "minLength": 2,
        +          "type": "string"
        +        },
        +        "returnDate": {
        +          "anyOf": [
        +            {
        +              "description": "Return date YYYY-MM-DD, only for a return trip.",
        +              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "returnTime": {
        +          "anyOf": [
        +            {
        +              "description": "Return time HH:mm, only for a return trip.",
        +              "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "serviceType": {
        +          "anyOf": [
        +            {
        +              "description": "Set hourly for duration service; omit for transfers.",
        +              "enum": [
        +                "hourly"
        +              ],
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "time": {
        +          "description": "Local pickup time in 24-hour HH:mm format, for example 14:30, in the selected location’s time zone.",
        +          "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
        +          "type": "string"
        +        },
        +        "tripType": {
        +          "description": "one_way, or return with a later pickup.",
        +          "enum": [
        +            "one_way",
        +            "return"
        +          ],
        +          "type": "string"
        +        },
        +        "vehiclePreference": {
        +          "anyOf": [
        +            {
        +              "description": "Optional vehicle wish, without a price guarantee.",
        +              "maxLength": 240,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "specialRequests": {
        +      "anyOf": [
        +        {
        +          "description": "Optional requirements, at most 500 characters.",
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "bookingKey",
        -  "onceKey",
        -  "amendment"
        -]New value: +[
        +  "bookingKey",
        +  "onceKey"
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "consentUrl": {
        -        "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and proposed facts. Current authority is rechecked, then the existing flow requires separate visible action consent and confirmation; the link itself grants no authority.",
        -        "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "consent_required",
        -        "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "consentUrl"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "description": "invalid_request rejects malformed selection/action facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
        -        "enum": [
        -          "invalid_request",
        -          "not_found",
        -          "unavailable"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "consentUrl": {
        +        "description": "Open this exact private proposal link in the original signed-in session. Its fragment contains the selected object, action, onceKey and either a complete proposal or explicitly requested changes. Current authority is rechecked and unchanged facts are loaded privately. The existing flow then requires a complete proposal, current price and terms, separate visible action consent and confirmation; the link grants no execution authority.",
        +        "pattern": "^https:\\/\\/platform-api\\.samuelz\\.com\\/app\\/customer-booking\\/manage#request=",
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "consent_required",
        +        "description": "A private proposal link is ready for review; no action consent or execution grant has been issued.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "consentUrl"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "description": "invalid_request rejects malformed selection or change facts; not_found denies access to the currently selected booking; unavailable means the handoff could not be supplied safely. No booking action has occurred.",
        +        "enum": [
        +          "invalid_request",
        +          "not_found",
        +          "unavailable"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  }
        +]
  5. 1 tool update
    • Changedget_offer_status2 fields changed
      • changedInput schema / properties / resumeToken / description
        Previous 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."New value: +"Original private 64-character hexadecimal resumeToken sent with this submissionId. Reuse it unchanged; never generate a replacement. Expired, invalid or foreign-provider proof can return not_found without proving that no booking exists."
      • changedInput schema / properties / submissionId / description
        Previous 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."New value: +"Original submissionId UUID sent to prepare_offer for this attempt, including when its response was lost. Reuse it with the original resumeToken; do not generate a new ID or substitute a booking ID."
  6. 6 tool updates
    • Changedget_customer_policy2 fields changed
      • 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."
    • Changedget_offer_status2 fields changed
      • 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 / 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."
    • Changedget_service_options2 fields changed
      • 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."
    • Changedprepare_booking_change5 fields changed
      • changedInput schema / properties / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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."
    • Changedprepare_offer8 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."
    • Changedquote_ride5 fields changed
      • 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 / 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."
  7. 1 tool update
    • Changedprepare_offer1 field changed
      • addedInput schema / properties / adsConsent
        Added value: +{
        +  "description": "Ausdrückliche Einwilligung in Werbemessung; ohne Angabe gilt keine Einwilligung.",
        +  "enum": [
        +    "granted",
        +    "denied"
        +  ],
        +  "type": "string"
        +}
  8. 7 tool updates
    • Changedget_booking_status1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "booking": {
        -        "additionalProperties": false,
        -        "description": "Booking state read from the stored reservation; it may lag provider events.",
        -        "properties": {
        -          "recordedStatus": {
        -            "description": "Stored reservation status string. It is not a new provider confirmation.",
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "recordedStatus"
        -        ],
        -        "type": "object"
        -      },
        -      "bookingKey": {
        -        "description": "Internal reservation ID for this selected booking. Returned in the available branch of get_offer_status/prepare_offer or an authorized booking read, not in prepared. It grants no access by itself.",
        -        "maxLength": 128,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "bookingReference": {
        -        "description": "Stored customer-visible reservation reference, falling back to bookingKey when absent. Customer OAuth accepts it only for its already-selected booking; it is not the supplier offerKey.",
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "fulfillment": {
        -        "additionalProperties": false,
        -        "description": "Flags derived from stored assignments and status, not live fulfillment confirmation.",
        -        "properties": {
        -          "chauffeurAssignmentRecorded": {
        -            "description": "True when a chauffeur ID is stored on the reservation; it does not confirm dispatch or acceptance.",
        -            "type": "boolean"
        -          },
        -          "completionRecorded": {
        -            "description": "True only when the stored reservation status is completed; no fresh service-completion check is made.",
        -            "type": "boolean"
        -          },
        -          "vehicleAssignmentRecorded": {
        -            "description": "True when a vehicle ID is stored on the reservation; it does not confirm availability or execution.",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "chauffeurAssignmentRecorded",
        -          "vehicleAssignmentRecorded",
        -          "completionRecorded"
        -        ],
        -        "type": "object"
        -      },
        -      "payment": {
        -        "additionalProperties": false,
        -        "description": "Recorded payment state from this booking, without a payment-provider refresh.",
        -        "properties": {
        -          "recordedStatus": {
        -            "description": "Stored reservation payment-status string; no payment or refund is initiated or newly confirmed.",
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "recordedStatus"
        -        ],
        -        "type": "object"
        -      },
        -      "status": {
        -        "const": "available",
        -        "description": "The selected booking was accessible and its stored fields passed validation; no provider refresh occurred.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingKey",
        -      "bookingReference",
        -      "booking",
        -      "payment",
        -      "fulfillment"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "invalid_request",
        -        "description": "Input does not match the booking-read contract.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "login_required",
        -        "description": "The original signed-in session must be established or renewed before reading.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "not_found",
        -        "description": "The selected booking is not accessible under current authority; this does not prove it is absent.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "status": {
        -        "const": "unavailable",
        -        "description": "The stored booking could not be read or validated safely; this is not vehicle-availability evidence.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "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"
        +      },
        +      "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"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "invalid_request",
        +        "description": "Input does not match the booking-read contract.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "login_required",
        +        "description": "The original signed-in session must be established or renewed before reading.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "not_found",
        +        "description": "The selected booking is not accessible under current authority; this does not prove it is absent.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "status": {
        +        "const": "unavailable",
        +        "description": "The stored booking could not be read or validated safely; this is not vehicle-availability evidence.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_customer_policy3 fields changed
      • 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."
      • 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": {
        -      "bookingConfirmed": {
        -        "const": false,
        -        "description": "Reading policy does not create or confirm a booking.",
        -        "type": "boolean"
        -      },
        -      "bookingUrl": {
        -        "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "observedAt": {
        -        "description": "ISO 8601 UTC timestamp when the current minimum-lead-time policy was read, not its expiry or a guarantee of future validity.",
        -        "type": "string"
        -      },
        -      "revalidationRequired": {
        -        "const": true,
        -        "description": "Re-read and revalidate current policy before offer preparation/confirmation.",
        -        "type": "boolean"
        -      },
        -      "scope": {
        -        "const": "booking_preparation",
        -        "description": "These rules cover preparation of a customer offer/booking, not action authority.",
        -        "type": "string"
        -      },
        -      "status": {
        -        "const": "available",
        -        "description": "Current booking-preparation policy was read; no booking is confirmed.",
        -        "type": "string"
        -      },
        -      "terms": {
        -        "additionalProperties": false,
        -        "description": "Current published account, guest-booking, lead-time and confirmation rules.",
        -        "properties": {
        -          "accountRequired": {
        -            "description": "Whether current purchase policy requires an account.",
        -            "type": "boolean"
        -          },
        -          "bookerForGuestAllowed": {
        -            "description": "Whether current policy allows a booker to request service for another guest.",
        -            "type": "boolean"
        -          },
        -          "bookingConfirmation": {
        -            "const": "after_confirmed_full_payment",
        -            "description": "Confirmation requires provider-confirmed full payment; an offer link alone is insufficient.",
        -            "type": "string"
        -          },
        -          "minimumLeadTimeMinutes": {
        -            "description": "Current minimum time before pickup, expressed in minutes.",
        -            "maximum": 9007199254740991,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "serviceSpecificTerms": {
        -            "const": "review_the_current_offer_before_confirmation",
        -            "description": "Review the complete terms bound to the current offer before confirming.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "minimumLeadTimeMinutes",
        -          "accountRequired",
        -          "bookerForGuestAllowed",
        -          "bookingConfirmation",
        -          "serviceSpecificTerms"
        -        ],
        -        "type": "object"
        -      },
        -      "timeZone": {
        -        "description": "Configured local time zone for the selected provider/service location.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "timeZone",
        -      "observedAt",
        -      "scope",
        -      "revalidationRequired",
        -      "terms",
        -      "bookingConfirmed"
        -    ],
        -    "type": "object"
        -  }
        -]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": {
        +      "bookingConfirmed": {
        +        "const": false,
        +        "description": "Reading terms creates no booking.",
        +        "type": "boolean"
        +      },
        +      "bookingUrl": {
        +        "description": "Booking page for this locale.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "observedAt": {
        +        "description": "When these terms were read.",
        +        "type": "string"
        +      },
        +      "revalidationRequired": {
        +        "const": true,
        +        "description": "Re-read the terms before confirming.",
        +        "type": "boolean"
        +      },
        +      "scope": {
        +        "const": "booking_preparation",
        +        "description": "Rules for preparing an offer.",
        +        "type": "string"
        +      },
        +      "status": {
        +        "const": "available",
        +        "description": "Current booking terms were read.",
        +        "type": "string"
        +      },
        +      "terms": {
        +        "additionalProperties": false,
        +        "description": "Published booking terms.",
        +        "properties": {
        +          "accountRequired": {
        +            "description": "Whether an account is required.",
        +            "type": "boolean"
        +          },
        +          "bookerForGuestAllowed": {
        +            "description": "Whether booking for a guest is allowed.",
        +            "type": "boolean"
        +          },
        +          "bookingConfirmation": {
        +            "const": "after_confirmed_full_payment",
        +            "description": "Confirmation follows full payment.",
        +            "type": "string"
        +          },
        +          "minimumLeadTimeMinutes": {
        +            "description": "Minimum minutes before pickup.",
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "serviceSpecificTerms": {
        +            "const": "review_the_current_offer_before_confirmation",
        +            "description": "Review the terms on the current offer.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "minimumLeadTimeMinutes",
        +          "accountRequired",
        +          "bookerForGuestAllowed",
        +          "bookingConfirmation",
        +          "serviceSpecificTerms"
        +        ],
        +        "type": "object"
        +      },
        +      "timeZone": {
        +        "description": "Local time zone for this provider.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "timeZone",
        +      "observedAt",
        +      "scope",
        +      "revalidationRequired",
        +      "terms",
        +      "bookingConfirmed"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_offer_status3 fields changed
      • 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 / 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"
        +  }
        +]
    • Changedget_service_options3 fields changed
      • 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."
      • 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": {
        -      "bookingUrl": {
        -        "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "hourlyRideFacts": {
        -        "description": "Additional hourly-service fields and required service/trip-type values.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "location": {
        -        "additionalProperties": false,
        -        "description": "Location configured for the supplied published offerKey; omitted for the default service scope.",
        -        "properties": {
        -          "countryCode": {
        -            "description": "Country code configured for this service location.",
        -            "type": "string"
        -          },
        -          "key": {
        -            "description": "Configured service-location key selected by the published supplier offerKey.",
        -            "type": "string"
        -          },
        -          "label": {
        -            "description": "Location label in the requested language.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "key",
        -          "countryCode",
        -          "label"
        -        ],
        -        "type": "object"
        -      },
        -      "nextAction": {
        -        "description": "Guidance to collect complete ride facts and request a price preview; no contact details are required for quoting.",
        -        "type": "string"
        -      },
        -      "provider": {
        -        "description": "Published display name of the service provider.",
        -        "type": "string"
        -      },
        -      "requiredRideFacts": {
        -        "description": "Ride fields to collect before quoting a transfer.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "returnRideFacts": {
        -        "description": "Additional return-trip fields to collect for an outbound and later return pickup.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "services": {
        -        "description": "Published service definitions and supported trip types.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "availability": {
        -              "const": "requires_offer_review",
        -              "description": "Availability/acceptance still require review of an actual offer.",
        -              "type": "string"
        -            },
        -            "key": {
        -              "description": "Published service identifier, such as transfer or hourly service.",
        -              "type": "string"
        -            },
        -            "tripTypes": {
        -              "description": "Trip types supported by this service definition; not confirmed availability.",
        -              "items": {
        -                "enum": [
        -                  "one_way",
        -                  "return"
        -                ],
        -                "type": "string"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "tripTypes",
        -            "availability"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "status": {
        -        "const": "available",
        -        "description": "Published service information is readable; no price, acceptance or availability is confirmed.",
        -        "type": "string"
        -      },
        -      "timeZone": {
        -        "description": "Configured local provider time zone for ride dates and pickup times.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "provider",
        -      "timeZone",
        -      "bookingUrl",
        -      "services",
        -      "requiredRideFacts",
        -      "returnRideFacts",
        -      "hourlyRideFacts",
        -      "nextAction"
        -    ],
        -    "type": "object"
        -  }
        -]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"
        +      },
        +      "hourlyRideFacts": {
        +        "description": "Extra fields for hourly service.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "languages": {
        +        "description": "Languages in the current settings.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "location": {
        +        "additionalProperties": false,
        +        "description": "Location for the supplied offer key.",
        +        "properties": {
        +          "countryCode": {
        +            "description": "Country code for this location.",
        +            "type": "string"
        +          },
        +          "key": {
        +            "description": "Service-location key for this offer.",
        +            "type": "string"
        +          },
        +          "label": {
        +            "description": "Location label for this locale.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "key",
        +          "countryCode",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "nextAction": {
        +        "description": "Collect the ride facts, then request a price.",
        +        "type": "string"
        +      },
        +      "provider": {
        +        "description": "Published provider name.",
        +        "type": "string"
        +      },
        +      "requiredRideFacts": {
        +        "description": "Fields required before a transfer quote.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "returnRideFacts": {
        +        "description": "Extra fields for a return trip.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "serviceAreas": {
        +        "description": "Published areas. Outside requests have no price.",
        +        "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"
        +      },
        +      "services": {
        +        "description": "Published service definitions.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "availability": {
        +              "const": "requires_offer_review",
        +              "description": "An offer still needs review.",
        +              "type": "string"
        +            },
        +            "key": {
        +              "description": "Published service key.",
        +              "type": "string"
        +            },
        +            "tripTypes": {
        +              "description": "Trip types this service defines.",
        +              "items": {
        +                "enum": [
        +                  "one_way",
        +                  "return"
        +                ],
        +                "type": "string"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "tripTypes",
        +            "availability"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "status": {
        +        "const": "available",
        +        "description": "Published services are readable.",
        +        "type": "string"
        +      },
        +      "timeZone": {
        +        "description": "Local time zone for ride dates.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "provider",
        +      "timeZone",
        +      "bookingUrl",
        +      "services",
        +      "languages",
        +      "requiredRideFacts",
        +      "returnRideFacts",
        +      "hourlyRideFacts",
        +      "nextAction"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedprepare_booking_change17 fields changed
      • changedInput schema / properties / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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 / amendment / 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."
    • Changedprepare_offer27 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"
        +  }
        +]
    • Changedquote_ride18 fields changed
      • 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 / 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."
      • 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": {
        -      "bookingUrl": {
        -        "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "retryAfterSeconds": {
        -        "description": "Wait at least this many seconds before retrying the same quote request.",
        -        "exclusiveMinimum": 0,
        -        "maximum": 9007199254740991,
        -        "type": "integer"
        -      },
        -      "status": {
        -        "const": "rate_limited",
        -        "description": "Quote admission is currently rate-limited; no quote was returned.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "retryAfterSeconds"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "bookingUrl": {
        -        "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "message": {
        -        "description": "Customer-language explanation of the required review.",
        -        "type": "string"
        -      },
        -      "review": {
        -        "additionalProperties": false,
        -        "description": "Structured review reason and next step when supplied; not an availability confirmation.",
        -        "properties": {
        -          "availabilityConfirmed": {
        -            "const": false,
        -            "description": "This review result does not confirm availability.",
        -            "type": "boolean"
        -          },
        -          "code": {
        -            "description": "Reason for further requirements, model, address, service-scope, booking-window or route review; not vehicle-unavailability evidence.",
        -            "enum": [
        -              "additional_requirements_review",
        -              "model_guarantee_review",
        -              "address_review",
        -              "service_scope_review",
        -              "booking_window_review",
        -              "route_review"
        -            ],
        -            "type": "string"
        -          },
        -          "customerContactRequired": {
        -            "const": false,
        -            "description": "No customer contact is required for this price/requirements review.",
        -            "type": "boolean"
        -          },
        -          "nextAction": {
        -            "const": "review_requirements",
        -            "description": "Review the stated requirements before proceeding; do not infer acceptance or confirmed availability.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "customerContactRequired",
        -          "availabilityConfirmed",
        -          "nextAction"
        -        ],
        -        "type": "object"
        -      },
        -      "status": {
        -        "const": "review_required",
        -        "description": "The ride facts or requirements require further review; no availability conclusion is made.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "message"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "bookingConfirmed": {
        -        "const": false,
        -        "description": "A quote does not confirm or create a booking.",
        -        "type": "boolean"
        -      },
        -      "bookingUrl": {
        -        "description": "Published customer booking page for this provider and locale; the URL does not grant private booking access or confirm availability.",
        -        "format": "uri",
        -        "type": "string"
        -      },
        -      "nextAction": {
        -        "description": "Guidance to proceed only to an explicitly requested offer after reviewing the preview.",
        -        "type": "string"
        -      },
        -      "quote": {
        -        "additionalProperties": false,
        -        "description": "Calculated price preview and tax/inclusion breakdown; no reservation or availability confirmation.",
        -        "properties": {
        -          "billableHoursPerServiceLine": {
        -            "description": "Billable hours used for each calculated service line.",
        -            "exclusiveMinimum": 0,
        -            "type": "number"
        -          },
        -          "calculatedAt": {
        -            "description": "Timestamp of this preview calculation, not a guaranteed price-validity window.",
        -            "type": "string"
        -          },
        -          "currency": {
        -            "description": "Currency of the price preview.",
        -            "type": "string"
        -          },
        -          "grossTotalCents": {
        -            "description": "Gross total of the preview in the returned currency's minor units (EUR cents).",
        -            "maximum": 9007199254740991,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "parkingIncluded": {
        -            "description": "Whether parking costs are included in the preview.",
        -            "type": "boolean"
        -          },
        -          "pricesIncludeVat": {
        -            "description": "Whether the returned price includes VAT.",
        -            "type": "boolean"
        -          },
        -          "revalidationRequired": {
        -            "const": true,
        -            "description": "Revalidate price and terms before preparing or confirming an offer.",
        -            "type": "boolean"
        -          },
        -          "serviceLines": {
        -            "description": "Price breakdown by outbound/return service line.",
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "direction": {
        -                  "description": "The outbound or return leg priced by this service line.",
        -                  "enum": [
        -                    "outbound",
        -                    "return"
        -                  ],
        -                  "type": "string"
        -                },
        -                "grossAmountCents": {
        -                  "description": "Gross price for this service line in the returned currency's minor units.",
        -                  "maximum": 9007199254740991,
        -                  "minimum": 0,
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "direction",
        -                "grossAmountCents"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "tollsIncluded": {
        -            "description": "Whether toll costs are included in the preview.",
        -            "type": "boolean"
        -          },
        -          "vatRateBasisPoints": {
        -            "description": "VAT rate in basis points: 10000 basis points equal 100 percent.",
        -            "maximum": 9007199254740991,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "vehicleCount": {
        -            "description": "Vehicle count used in this price calculation, not confirmed vehicle availability.",
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "currency",
        -          "grossTotalCents",
        -          "pricesIncludeVat",
        -          "vatRateBasisPoints",
        -          "parkingIncluded",
        -          "tollsIncluded",
        -          "vehicleCount",
        -          "billableHoursPerServiceLine",
        -          "serviceLines",
        -          "calculatedAt",
        -          "revalidationRequired"
        -        ],
        -        "type": "object"
        -      },
        -      "status": {
        -        "const": "quoted",
        -        "description": "A price preview was calculated; it must be revalidated before an actual offer.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "status",
        -      "bookingUrl",
        -      "bookingConfirmed",
        -      "quote",
        -      "nextAction"
        -    ],
        -    "type": "object"
        -  }
        -]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": {
        +      "bookingUrl": {
        +        "description": "Booking page for this locale.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "retryAfterSeconds": {
        +        "description": "Seconds to wait before retrying.",
        +        "exclusiveMinimum": 0,
        +        "maximum": 9007199254740991,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "const": "rate_limited",
        +        "description": "Quote admission is rate-limited.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "retryAfterSeconds"
        +    ],
        +    "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, when present.",
        +        "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": "The ride needs review. No price is confirmed.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "bookingConfirmed": {
        +        "const": false,
        +        "description": "A quote does not create a booking.",
        +        "type": "boolean"
        +      },
        +      "bookingUrl": {
        +        "description": "Booking page for this locale.",
        +        "format": "uri",
        +        "type": "string"
        +      },
        +      "nextAction": {
        +        "description": "Continue only if the customer asks for an offer.",
        +        "type": "string"
        +      },
        +      "quote": {
        +        "additionalProperties": false,
        +        "description": "Calculated price preview.",
        +        "properties": {
        +          "billableHoursPerServiceLine": {
        +            "description": "Billable hours per service line.",
        +            "exclusiveMinimum": 0,
        +            "type": "number"
        +          },
        +          "calculatedAt": {
        +            "description": "When this preview was calculated.",
        +            "type": "string"
        +          },
        +          "currency": {
        +            "description": "Currency of the preview.",
        +            "type": "string"
        +          },
        +          "grossTotalCents": {
        +            "description": "Gross total in minor units.",
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "parkingIncluded": {
        +            "description": "Whether parking is included.",
        +            "type": "boolean"
        +          },
        +          "pricesIncludeVat": {
        +            "description": "Whether the price includes VAT.",
        +            "type": "boolean"
        +          },
        +          "revalidationRequired": {
        +            "const": true,
        +            "description": "Revalidate before an offer.",
        +            "type": "boolean"
        +          },
        +          "serviceLines": {
        +            "description": "Price by service line.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "direction": {
        +                  "description": "Outbound or return leg.",
        +                  "enum": [
        +                    "outbound",
        +                    "return"
        +                  ],
        +                  "type": "string"
        +                },
        +                "grossAmountCents": {
        +                  "description": "Gross amount for this leg.",
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "direction",
        +                "grossAmountCents"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "tollsIncluded": {
        +            "description": "Whether tolls are included.",
        +            "type": "boolean"
        +          },
        +          "vatRateBasisPoints": {
        +            "description": "VAT rate in basis points.",
        +            "maximum": 9007199254740991,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "vehicleCount": {
        +            "description": "Vehicles used in the calculation.",
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "currency",
        +          "grossTotalCents",
        +          "pricesIncludeVat",
        +          "vatRateBasisPoints",
        +          "parkingIncluded",
        +          "tollsIncluded",
        +          "vehicleCount",
        +          "billableHoursPerServiceLine",
        +          "serviceLines",
        +          "calculatedAt",
        +          "revalidationRequired"
        +        ],
        +        "type": "object"
        +      },
        +      "status": {
        +        "const": "quoted",
        +        "description": "A price preview. Revalidate before an offer.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "status",
        +      "bookingUrl",
        +      "bookingConfirmed",
        +      "quote",
        +      "nextAction"
        +    ],
        +    "type": "object"
        +  }
        +]
  9. 3 tool updates
    • Changedget_booking_history2 fields changed
      • changedInput schema / properties / bookingKey / description
        Previous value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access."
      • removedInput schema / required
        Removed value: -[
        -  "bookingKey"
        -]
    • Changedget_booking_payment_review2 fields changed
      • changedInput schema / properties / bookingKey / description
        Previous value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access."
      • removedInput schema / required
        Removed value: -[
        -  "bookingKey"
        -]
    • Changedget_booking_status2 fields changed
      • changedInput schema / properties / bookingKey / description
        Previous value: -"Internal booking ID for the one selected booking. At the customer OAuth endpoint, its visible bookingReference is accepted too. Copy the same booking's bookingKey or bookingReference from an available get_offer_status/prepare_offer or authorized booking-read result. prepared returns links, not these IDs. The supplier offerKey is not a booking identifier; the identifier grants no access by itself."New value: +"Omit to use exactly the booking already selected by this OAuth connection. If supplied, use that same booking's ID or visible reference; another identifier cannot switch selection or grant access."
      • removedInput schema / required
        Removed value: -[
        -  "bookingKey"
        -]

Publisher details

Operator
Samuelz®, operated by Glöggl GmbH · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Unknown
Restrictions
Public service information, policies and price previews need no login or API key. This is a live API (no sandbox) for the provider’s published service areas; REST and MCP share a limited pilot allowance. Preparing an unpaid offer requires an explicit customer request and email OR E.164 phone. Customers review bound terms and confirm in Samuelz checkout; MCP does not take payment. Booking status, payment review, history, amendment and cancellation require customer OAuth and object-level authorization; amendments and cancellations additionally require the applicable object-bound consent. Automated amendments currently support price-neutral changes; price differences require review. Tool discovery is public. Issued tenant-bound partner attribution capabilities are optional for ordinary customers. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets MCP clients calculate taxi fare quotes, review upcoming and past bookings, fetch receipts, driver images and trip routes, check nearby taxis and live trip status, and resolve addresses or directions with a Google Maps key. Read tools are available by default, while booking, cancellation, payment and profile changes stay opt-in and require an explicit boolean confirmation.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying car-sharing vehicles, scooters, taxi quotes and bookings, account, wallet, invoices, parking, and support through recovered customer operations, with optional write tools that preview unless explicitly confirmed.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Fixed London chauffeur prices for AI agents: Heathrow/Gatwick/Stansted/Luton and cruise-port transfers, hourly and full-day hire, private day trips, Heathrow VIP meet & greet, plus pre-filled booking links. Public remote endpoint, no API key.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to search availability, read services, resources, bookings and customers, and, when writes are enabled, reserve slots, create or cancel bookings, and add or update customers.
    10
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources