addrbookFor publishers
← The evidence ledger

Evidence row 780584

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 00dc081a-3831-4ddb-9d8d-6f1d1a93ee30
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
c906643d42bc4248e2f45c6eaeac1d2e1e107d702511fa7c6557fdbfabb902c9
Leaf
0x411e5f83528586f8014b17eaeff639c3ee3dd9a247186ac088a2568cb420f889

What was observed

{
  "count": 6,
  "tools": [
    {
      "description": "Cancels a booking at the customer's explicit request. Requests not yet confirmed by the driver and unpaid tours are cancelled at once (the customer gets an email). Confirmed or paid bookings are passed to the business as a cancellation request, which it handles under the Terms (free until 24 hours before transfers, 48 hours before tours). Needs the bookingId and the customer's email. Ask the customer to confirm before calling.",
      "inputSchema": {
        "properties": {
          "bookingId": {
            "description": "The bookingId returned by request_booking.",
            "pattern": "^[A-Za-z0-9_-]{8,80}$",
            "type": "string"
          },
          "email": {
            "description": "The customer's email address used for the booking (proves it is their booking).",
            "format": "email",
            "type": "string"
          },
          "reason": {
            "description": "Optional reason from the customer.",
            "maxLength": 300,
            "type": "string"
          }
        },
        "required": [
          "bookingId",
          "email"
        ],
        "type": "object"
      },
      "name": "cancel_booking"
    },
    {
      "description": "Changes an existing booking at the customer's request (date, time, address, pickup, drop-off, passengers, luggage, car, flight, notes). First call get_quote with the complete changed ride and get the customer's approval of the new price, then send the same ride fields with that quoteToken plus the bookingId and the customer's email. Requests not yet confirmed by the driver are updated at once (a request still waiting for the email confirmation is re-sent with a new link; an unpaid tour gets a new payment link). Confirmed or paid bookings are passed to Jet Cab AMS as a change request, which they confirm by email. The ride type (transfer, custom ride, tour) cannot change: cancel and book anew instead.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "Fixed routes only: the non-airport pickup/drop-off address. The fare follows the route zone of the address (postcode first, then town name). An address whose Dutch postcode is in no fixed-route zone is refused with error code address_zone; book it as a custom ride.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "bookingId": {
            "description": "The bookingId returned by request_booking.",
            "pattern": "^[A-Za-z0-9_-]{8,80}$",
            "type": "string"
          },
          "car": {
            "description": "E-Class max 4, S-Class max 2, V-Class max 7 passengers.",
            "enum": [
              "eclass",
              "sclass",
              "vclass"
            ],
            "type": "string"
          },
          "date": {
            "description": "Local date in Europe/Amsterdam.",
            "format": "date",
            "type": "string"
          },
          "direction": {
            "description": "Fixed routes only: to or from Schiphol.",
            "enum": [
              "to",
              "from"
            ],
            "type": "string"
          },
          "driverName": {
            "maxLength": 60,
            "type": "string"
          },
          "dropoff": {
            "description": "Required for custom rides: drop-off address.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "email": {
            "description": "The customer's email address used for the booking (proves it is their booking).",
            "format": "email",
            "type": "string"
          },
          "flight": {
            "maxLength": 24,
            "type": "string"
          },
          "lang": {
            "enum": [
              "en",
              "nl",
              "de",
              "fr",
              "es",
              "pt",
              "ru",
              "ar",
              "zh-CN"
            ],
            "type": "string"
          },
          "luggageLarge": {
            "default": 0,
            "description": "Large check-in suitcases. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "luggageSmall": {
            "default": 0,
            "description": "Pieces of hand luggage. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "meetGreet": {
            "description": "Optional €25 arrivals-area name card; only for direction=from.",
            "type": "boolean"
          },
          "notes": {
            "maxLength": 1000,
            "type": "string"
          },
          "passengers": {
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "pickup": {
            "description": "Required for custom rides and tours: agreed pickup address or hotel, preserved in review and confirmations.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "quoteToken": {
            "description": "Signed token returned by POST /api/quote. Send unchanged only after the customer approves that quote's total and deposit. It binds the normalized journey, vehicle, passengers, options, fare, rules version and 15-minute expiry. HTTP 409 reviewRequired=true means obtain a new quote and renewed customer approval before retrying. Never supply your own price.",
            "maxLength": 2048,
            "minLength": 1,
            "type": "string"
          },
          "returnTrip": {
            "description": "Fixed rides only. Books the return leg as well: the opposite direction between the same address and Schiphol, with the same vehicle, passengers and luggage. It is priced as a second ride (plus the name-card fee when meetGreet is set on a return that starts at Schiphol). It must be at least one hour after the first ride, between 04:00 and 20:00, and not on a blocked date. Error codes: retour_type, retour, retour_datetime, retour_hours, retour_date_blocked, retour_order. The booking is stored as two linked bookings: the request id and `<id>-ret`.",
            "properties": {
              "date": {
                "format": "date",
                "type": "string"
              },
              "flight": {
                "maxLength": 24,
                "type": "string"
              },
              "meetGreet": {
                "default": false,
                "type": "boolean"
              },
              "time": {
                "pattern": "^\\d{2}:\\d{2}$",
                "type": "string"
              }
            },
            "required": [
              "date",
              "time"
            ],
            "type": "object"
          },
          "routeId": {
            "description": "Fixed routes only; ids from /data/rates.json. The server reprices to the route the address belongs to.",
            "enum": [
              "ams-spl",
              "noord-spl",
              "zaandam-spl",
              "aveen-spl",
              "haarlem-spl",
              "zandvoort-spl",
              "dh-spl",
              "rtm-spl",
              "almere-spl",
              "almere-buiten-spl",
              "utrecht-spl"
            ],
            "type": "string"
          },
          "ticketService": {
            "description": "Tours only: attraction ticket purchase assistance, requires 28 days' notice.",
            "type": "boolean"
          },
          "time": {
            "description": "Local time in Europe/Amsterdam, between 04:00 and 20:00.",
            "pattern": "^\\d{2}:\\d{2}$",
            "type": "string"
          },
          "tourIds": {
            "description": "Tours only; ids from /data/tours.json.",
            "items": {
              "enum": [
                "amsterdam-city-tour",
                "countryside-tour",
                "keukenhof-tour",
                "aalsmeer-flower-auction",
                "dutch-water-defence-line",
                "giethoorn-day-trip",
                "south-holland-tour",
                "rotterdam-kinderdijk",
                "kroller-muller",
                "efteling-day-trip",
                "bruges-day-trip",
                "roermond-outlet",
                "mall-of-the-netherlands",
                "batavia-stad",
                "style-outlet-amsterdam"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "type": {
            "enum": [
              "fixed",
              "custom",
              "tour"
            ],
            "type": "string"
          }
        },
        "required": [
          "bookingId",
          "email",
          "quoteToken",
          "type",
          "car",
          "date",
          "time",
          "passengers"
        ],
        "type": "object"
      },
      "name": "change_booking"
    },
    {
      "description": "Where a booking request stands: waiting for the customer's email confirmation, waiting for the driver, payment pending (with the payment link), confirmed, completed or cancelled. Needs the bookingId from request_booking and the customer's email.",
      "inputSchema": {
        "properties": {
          "bookingId": {
            "description": "The bookingId returned by request_booking.",
            "pattern": "^[A-Za-z0-9_-]{8,80}$",
            "type": "string"
          },
          "email": {
            "description": "The customer's email address used for the booking (proves it is their booking).",
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "bookingId",
          "email"
        ],
        "type": "object"
      },
      "name": "get_booking_status"
    },
    {
      "description": "Exact price and rule check for one ride (no booking, no email, no payment). Returns the total, any online deposit and a quoteToken valid for 15 minutes. Per type: fixed needs routeId, direction and address; custom needs pickup and dropoff; tour needs tourIds and pickup. Fixed fares only apply inside each route's zone: error address_zone means quote a custom ride instead. Does not check driver availability.",
      "inputSchema": {
        "properties": {
          "address": {
            "description": "Fixed routes only: the non-airport pickup/drop-off address. The fare follows the route zone of the address (postcode first, then town name). An address whose Dutch postcode is in no fixed-route zone is refused with error code address_zone; book it as a custom ride.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "car": {
            "description": "E-Class max 4, S-Class max 2, V-Class max 7 passengers.",
            "enum": [
              "eclass",
              "sclass",
              "vclass"
            ],
            "type": "string"
          },
          "date": {
            "description": "Local date in Europe/Amsterdam.",
            "format": "date",
            "type": "string"
          },
          "direction": {
            "description": "Fixed routes only: to or from Schiphol.",
            "enum": [
              "to",
              "from"
            ],
            "type": "string"
          },
          "driverName": {
            "maxLength": 60,
            "type": "string"
          },
          "dropoff": {
            "description": "Required for custom rides: drop-off address.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "flight": {
            "maxLength": 24,
            "type": "string"
          },
          "lang": {
            "enum": [
              "en",
              "nl",
              "de",
              "fr",
              "es",
              "pt",
              "ru",
              "ar",
              "zh-CN"
            ],
            "type": "string"
          },
          "luggageLarge": {
            "default": 0,
            "description": "Large check-in suitcases. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "luggageSmall": {
            "default": 0,
            "description": "Pieces of hand luggage. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "meetGreet": {
            "description": "Optional €25 arrivals-area name card; only for direction=from.",
            "type": "boolean"
          },
          "notes": {
            "maxLength": 1000,
            "type": "string"
          },
          "passengers": {
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "pickup": {
            "description": "Required for custom rides and tours: agreed pickup address or hotel, preserved in review and confirmations.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "returnTrip": {
            "description": "Fixed rides only. Books the return leg as well: the opposite direction between the same address and Schiphol, with the same vehicle, passengers and luggage. It is priced as a second ride (plus the name-card fee when meetGreet is set on a return that starts at Schiphol). It must be at least one hour after the first ride, between 04:00 and 20:00, and not on a blocked date. Error codes: retour_type, retour, retour_datetime, retour_hours, retour_date_blocked, retour_order. The booking is stored as two linked bookings: the request id and `<id>-ret`.",
            "properties": {
              "date": {
                "format": "date",
                "type": "string"
              },
              "flight": {
                "maxLength": 24,
                "type": "string"
              },
              "meetGreet": {
                "default": false,
                "type": "boolean"
              },
              "time": {
                "pattern": "^\\d{2}:\\d{2}$",
                "type": "string"
              }
            },
            "required": [
              "date",
              "time"
            ],
            "type": "object"
          },
          "routeId": {
            "description": "Fixed routes only; ids from /data/rates.json. The server reprices to the route the address belongs to.",
            "enum": [
              "ams-spl",
              "noord-spl",
              "zaandam-spl",
              "aveen-spl",
              "haarlem-spl",
              "zandvoort-spl",
              "dh-spl",
              "rtm-spl",
              "almere-spl",
              "almere-buiten-spl",
              "utrecht-spl"
            ],
            "type": "string"
          },
          "ticketService": {
            "description": "Tours only: attraction ticket purchase assistance, requires 28 days' notice.",
            "type": "boolean"
          },
          "time": {
            "description": "Local time in Europe/Amsterdam, between 04:00 and 20:00.",
            "pattern": "^\\d{2}:\\d{2}$",
            "type": "string"
          },
          "tourIds": {
            "description": "Tours only; ids from /data/tours.json.",
            "items": {
              "enum": [
                "amsterdam-city-tour",
                "countryside-tour",
                "keukenhof-tour",
                "aalsmeer-flower-auction",
                "dutch-water-defence-line",
                "giethoorn-day-trip",
                "south-holland-tour",
                "rotterdam-kinderdijk",
                "kroller-muller",
                "efteling-day-trip",
                "bruges-day-trip",
                "roermond-outlet",
                "mall-of-the-netherlands",
                "batavia-stad",
                "style-outlet-amsterdam"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "type": {
            "enum": [
              "fixed",
              "custom",
              "tour"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "car",
          "date",
          "time",
          "passengers"
        ],
        "type": "object"
      },
      "name": "get_quote"
    },
    {
      "description": "Fixed-fare Schiphol transfers (route ids, per-car prices), private tours (tour ids, durations, per-car prices), vehicles with passenger and luggage limits, and booking rules. No side effects.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "list_services"
    },
    {
      "description": "Books the quoted ride. Call ONLY after the customer has seen the quoted total and deposit and has explicitly approved it and accepted the Terms (https://www.jetcabams.nl/terms.html). Send exactly the same ride fields as the get_quote call plus its unchanged quoteToken and the customer's real contact details. Fixed rides: the customer first gets an email with a Confirm link (valid 24 hours); after the click the driver confirms by email, payment in the car. Tours and custom rides: returns checkoutUrl for the 25% Mollie prepayment, which the customer must open and pay. Repeating the identical call does not create a second booking.",
      "inputSchema": {
        "properties": {
          "acceptedTerms": {
            "const": true,
            "description": "Must be an explicit act by the customer after reading the Terms & Conditions. Agents must not set this on a customer's behalf without their consent.",
            "type": "boolean"
          },
          "additionalRides": {
            "description": "Optional: more rides in the same request (up to 5 in total), each with its own ride fields and the quoteToken of its own get_quote call. Tours and custom rides in the request share one 25% prepayment link; fixed rides stay pay-in-car requests.",
            "items": {
              "properties": {
                "address": {
                  "description": "Fixed routes only: the non-airport pickup/drop-off address. The fare follows the route zone of the address (postcode first, then town name). An address whose Dutch postcode is in no fixed-route zone is refused with error code address_zone; book it as a custom ride.",
                  "maxLength": 180,
                  "minLength": 4,
                  "type": "string"
                },
                "car": {
                  "description": "E-Class max 4, S-Class max 2, V-Class max 7 passengers.",
                  "enum": [
                    "eclass",
                    "sclass",
                    "vclass"
                  ],
                  "type": "string"
                },
                "date": {
                  "description": "Local date in Europe/Amsterdam.",
                  "format": "date",
                  "type": "string"
                },
                "direction": {
                  "description": "Fixed routes only: to or from Schiphol.",
                  "enum": [
                    "to",
                    "from"
                  ],
                  "type": "string"
                },
                "driverName": {
                  "maxLength": 60,
                  "type": "string"
                },
                "dropoff": {
                  "description": "Required for custom rides: drop-off address.",
                  "maxLength": 180,
                  "minLength": 4,
                  "type": "string"
                },
                "flight": {
                  "maxLength": 24,
                  "type": "string"
                },
                "lang": {
                  "enum": [
                    "en",
                    "nl",
                    "de",
                    "fr",
                    "es",
                    "pt",
                    "ru",
                    "ar",
                    "zh-CN"
                  ],
                  "type": "string"
                },
                "luggageLarge": {
                  "default": 0,
                  "description": "Large check-in suitcases. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
                  "maximum": 8,
                  "minimum": 0,
                  "type": "integer"
                },
                "luggageSmall": {
                  "default": 0,
                  "description": "Pieces of hand luggage. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
                  "maximum": 8,
                  "minimum": 0,
                  "type": "integer"
                },
                "meetGreet": {
                  "description": "Optional €25 arrivals-area name card; only for direction=from.",
                  "type": "boolean"
                },
                "notes": {
                  "maxLength": 1000,
                  "type": "string"
                },
                "passengers": {
                  "maximum": 7,
                  "minimum": 1,
                  "type": "integer"
                },
                "pickup": {
                  "description": "Required for custom rides and tours: agreed pickup address or hotel, preserved in review and confirmations.",
                  "maxLength": 180,
                  "minLength": 4,
                  "type": "string"
                },
                "quoteToken": {
                  "description": "Signed token returned by POST /api/quote. Send unchanged only after the customer approves that quote's total and deposit. It binds the normalized journey, vehicle, passengers, options, fare, rules version and 15-minute expiry. HTTP 409 reviewRequired=true means obtain a new quote and renewed customer approval before retrying. Never supply your own price.",
                  "maxLength": 2048,
                  "minLength": 1,
                  "type": "string"
                },
                "returnTrip": {
                  "description": "Fixed rides only. Books the return leg as well: the opposite direction between the same address and Schiphol, with the same vehicle, passengers and luggage. It is priced as a second ride (plus the name-card fee when meetGreet is set on a return that starts at Schiphol). It must be at least one hour after the first ride, between 04:00 and 20:00, and not on a blocked date. Error codes: retour_type, retour, retour_datetime, retour_hours, retour_date_blocked, retour_order. The booking is stored as two linked bookings: the request id and `<id>-ret`.",
                  "properties": {
                    "date": {
                      "format": "date",
                      "type": "string"
                    },
                    "flight": {
                      "maxLength": 24,
                      "type": "string"
                    },
                    "meetGreet": {
                      "default": false,
                      "type": "boolean"
                    },
                    "time": {
                      "pattern": "^\\d{2}:\\d{2}$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "date",
                    "time"
                  ],
                  "type": "object"
                },
                "routeId": {
                  "description": "Fixed routes only; ids from /data/rates.json. The server reprices to the route the address belongs to.",
                  "enum": [
                    "ams-spl",
                    "noord-spl",
                    "zaandam-spl",
                    "aveen-spl",
                    "haarlem-spl",
                    "zandvoort-spl",
                    "dh-spl",
                    "rtm-spl",
                    "almere-spl",
                    "almere-buiten-spl",
                    "utrecht-spl"
                  ],
                  "type": "string"
                },
                "ticketService": {
                  "description": "Tours only: attraction ticket purchase assistance, requires 28 days' notice.",
                  "type": "boolean"
                },
                "time": {
                  "description": "Local time in Europe/Amsterdam, between 04:00 and 20:00.",
                  "pattern": "^\\d{2}:\\d{2}$",
                  "type": "string"
                },
                "tourIds": {
                  "description": "Tours only; ids from /data/tours.json.",
                  "items": {
                    "enum": [
                      "amsterdam-city-tour",
                      "countryside-tour",
                      "keukenhof-tour",
                      "aalsmeer-flower-auction",
                      "dutch-water-defence-line",
                      "giethoorn-day-trip",
                      "south-holland-tour",
                      "rotterdam-kinderdijk",
                      "kroller-muller",
                      "efteling-day-trip",
                      "bruges-day-trip",
                      "roermond-outlet",
                      "mall-of-the-netherlands",
                      "batavia-stad",
                      "style-outlet-amsterdam"
                    ],
                    "type": "string"
                  },
                  "maxItems": 5,
                  "minItems": 1,
                  "type": "array",
                  "uniqueItems": true
                },
                "type": {
                  "enum": [
                    "fixed",
                    "custom",
                    "tour"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "car",
                "date",
                "time",
                "passengers",
                "quoteToken"
              ],
              "type": "object"
            },
            "maxItems": 4,
            "type": "array"
          },
          "address": {
            "description": "Fixed routes only: the non-airport pickup/drop-off address. The fare follows the route zone of the address (postcode first, then town name). An address whose Dutch postcode is in no fixed-route zone is refused with error code address_zone; book it as a custom ride.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "car": {
            "description": "E-Class max 4, S-Class max 2, V-Class max 7 passengers.",
            "enum": [
              "eclass",
              "sclass",
              "vclass"
            ],
            "type": "string"
          },
          "date": {
            "description": "Local date in Europe/Amsterdam.",
            "format": "date",
            "type": "string"
          },
          "direction": {
            "description": "Fixed routes only: to or from Schiphol.",
            "enum": [
              "to",
              "from"
            ],
            "type": "string"
          },
          "driverName": {
            "maxLength": 60,
            "type": "string"
          },
          "dropoff": {
            "description": "Required for custom rides: drop-off address.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "flight": {
            "maxLength": 24,
            "type": "string"
          },
          "lang": {
            "enum": [
              "en",
              "nl",
              "de",
              "fr",
              "es",
              "pt",
              "ru",
              "ar",
              "zh-CN"
            ],
            "type": "string"
          },
          "luggageLarge": {
            "default": 0,
            "description": "Large check-in suitcases. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "luggageSmall": {
            "default": 0,
            "description": "Pieces of hand luggage. E-Class and S-Class take at most 2; more needs the V-Class (error code luggage).",
            "maximum": 8,
            "minimum": 0,
            "type": "integer"
          },
          "meetGreet": {
            "description": "Optional €25 arrivals-area name card; only for direction=from.",
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "notes": {
            "maxLength": 1000,
            "type": "string"
          },
          "passengers": {
            "maximum": 7,
            "minimum": 1,
            "type": "integer"
          },
          "phone": {
            "description": "Customer's phone number, with country code (for example +31 6 1234 5678).",
            "maxLength": 30,
            "minLength": 7,
            "type": "string"
          },
          "pickup": {
            "description": "Required for custom rides and tours: agreed pickup address or hotel, preserved in review and confirmations.",
            "maxLength": 180,
            "minLength": 4,
            "type": "string"
          },
          "quoteToken": {
            "description": "Signed token returned by POST /api/quote. Send unchanged only after the customer approves that quote's total and deposit. It binds the normalized journey, vehicle, passengers, options, fare, rules version and 15-minute expiry. HTTP 409 reviewRequired=true means obtain a new quote and renewed customer approval before retrying. Never supply your own price.",
            "maxLength": 2048,
            "minLength": 1,
            "type": "string"
          },
          "returnTrip": {
            "description": "Fixed rides only. Books the return leg as well: the opposite direction between the same address and Schiphol, with the same vehicle, passengers and luggage. It is priced as a second ride (plus the name-card fee when meetGreet is set on a return that starts at Schiphol). It must be at least one hour after the first ride, between 04:00 and 20:00, and not on a blocked date. Error codes: retour_type, retour, retour_datetime, retour_hours, retour_date_blocked, retour_order. The booking is stored as two linked bookings: the request id and `<id>-ret`.",
            "properties": {
              "date": {
                "format": "date",
                "type": "string"
              },
              "flight": {
                "maxLength": 24,
                "type": "string"
              },
              "meetGreet": {
                "default": false,
                "type": "boolean"
              },
              "time": {
                "pattern": "^\\d{2}:\\d{2}$",
                "type": "string"
              }
            },
            "required": [
              "date",
              "time"
            ],
            "type": "object"
          },
          "routeId": {
            "description": "Fixed routes only; ids from /data/rates.json. The server reprices to the route the address belongs to.",
            "enum": [
              "ams-spl",
              "noord-spl",
              "zaandam-spl",
              "aveen-spl",
              "haarlem-spl",
              "zandvoort-spl",
              "dh-spl",
              "rtm-spl",
              "almere-spl",
              "almere-buiten-spl",
              "utrecht-spl"
            ],
            "type": "string"
          },
          "ticketService": {
            "description": "Tours only: attraction ticket purchase assistance, requires 28 days' notice.",
            "type": "boolean"
          },
          "time": {
            "description": "Local time in Europe/Amsterdam, between 04:00 and 20:00.",
            "pattern": "^\\d{2}:\\d{2}$",
            "type": "string"
          },
          "tourIds": {
            "description": "Tours only; ids from /data/tours.json.",
            "items": {
              "enum": [
                "amsterdam-city-tour",
                "countryside-tour",
                "keukenhof-tour",
                "aalsmeer-flower-auction",
                "dutch-water-defence-line",
                "giethoorn-day-trip",
                "south-holland-tour",
                "rotterdam-kinderdijk",
                "kroller-muller",
                "efteling-day-trip",
                "bruges-day-trip",
                "roermond-outlet",
                "mall-of-the-netherlands",
                "batavia-stad",
                "style-outlet-amsterdam"
              ],
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "type": {
            "enum": [
              "fixed",
              "custom",
              "tour"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "car",
          "date",
          "time",
          "passengers",
          "quoteToken",
          "name",
          "email",
          "phone",
          "acceptedTerms"
        ],
        "type": "object"
      },
      "name": "request_booking"
    }
  ]
}

What the leaf hashes

{"body":"c906643d42bc4248e2f45c6eaeac1d2e1e107d702511fa7c6557fdbfabb902c9","id":780584,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793205304006904,"prev":null,"subject":"00dc081a-3831-4ddb-9d8d-6f1d1a93ee30","subject_kind":"endpoint"}

Proof

Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.

How to check it · This row as JSON