{"protocol":"mcp-http-jsonrpc","server":"closer-booking-mcp","version":"0.2.0","tools":[{"name":"booking.estimate_distance","description":"Estimate route distance (km), duration (seconds), ETA, and Zone A eligibility. Mirrors /api/calculate-distance.","inputSchema":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","description":"Pickup address or place name"},"to":{"type":"string","description":"Destination address or place name"},"fromPlaceId":{"type":"string","description":"Google Place ID for pickup"},"toPlaceId":{"type":"string","description":"Google Place ID for destination"},"pickupDatetime":{"type":"string","format":"date-time","description":"ISO 8601 pickup time"}}},"requiredScope":"booking.read"},{"name":"booking.check_availability","description":"Check whether a pickup datetime meets Closer lead-time rules (daytime >= 2h, night bookings from 09:00).","inputSchema":{"type":"object","required":["pickupDatetime"],"properties":{"pickupDatetime":{"type":"string","format":"date-time","description":"Requested pickup time (ISO 8601)"},"bookingDatetime":{"type":"string","format":"date-time","description":"When the booking is made; defaults to now"}}},"requiredScope":"booking.read"},{"name":"booking.calculate_price","description":"Calculate gross EUR price for a trip using Closer tariff tables. Requires distance (km), vehicle class, and booking type.","inputSchema":{"type":"object","required":["distanceKm","vehicleClass"],"properties":{"distanceKm":{"type":"number","minimum":0,"description":"Trip distance in kilometers"},"vehicleClass":{"type":"string","enum":["executive","first","business-van"],"description":"Vehicle tier: executive (E-Class), first (S-Class), business-van (V-Class)"},"bookingType":{"type":"string","enum":["distance","hourly"],"description":"Pricing mode; defaults to distance"},"durationHours":{"type":"number","minimum":2,"description":"Hours for hourly bookings (minimum 2)"}}},"requiredScope":"booking.read"},{"name":"places.autocomplete","description":"Autocomplete address suggestions for pickup/destination fields. Mirrors /api/places-autocomplete.","inputSchema":{"type":"object","required":["input"],"properties":{"input":{"type":"string","minLength":2,"description":"Partial address query (min 2 chars)"}}},"requiredScope":"booking.read"},{"name":"booking.create_checkout","description":"Create a Stripe Checkout session for a confirmed booking. Returns sessionId and checkout URL. Requires booking.write scope.","inputSchema":{"type":"object","required":["amount","bookingData"],"properties":{"amount":{"type":"integer","minimum":1,"description":"Gross amount in EUR cents"},"bookingData":{"type":"object","required":["from","to","pickupDatetime","vehicleClass"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"pickupDatetime":{"type":"string","format":"date-time"},"vehicleClass":{"type":"string","enum":["executive","first","business-van"]},"bookingType":{"type":"string","enum":["distance","hourly"]},"durationHours":{"type":"number"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"priceEur":{"type":"number"},"distanceKm":{"type":"number"},"estimatedArrival":{"type":"string","format":"date-time"},"locale":{"type":"string","enum":["de","en"]},"notes":{"type":"string"},"flightNumber":{"type":"string"}}}}},"requiredScope":"booking.write"}]}