MCP Server

RIED.TAXI

taxi.ried/booking
Maps & Location Travel & Hospitality Public & reachable MCP 2026-07-28

What this MCP does

Provides live quotes, availability, temporary holds, bookings, cancellations, and changes for fixed-price taxi transfers and long rides.

ried_taxi_cancel_booking
Cancel my RIED.TAXI booking
Cancels a booking, free of charge, any time before the pickup. Requires reference, access code, customer_confirmed=true after the customer explicitly confirmed, and an idempotency_key. Cannot be undone.
Destructive Open world Idempotent
Input schema
{'type': 'object', 'required': ['booking_reference', 'access_code', 'idempotency_key', 'customer_confirmed'], 'properties': {'reason': {'type': 'string', 'maxLength': 200}, 'access_code': {'type': 'string', 'maxLength': 8, 'minLength': 8, 'description': '8-character access code given at booking time.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 80, 'minLength': 8, 'description': 'Unique key for this one intended action. Reuse it only when retrying the same action.'}, 'booking_reference': {'type': 'string', 'pattern': '^RT-[A-Z0-9]{4,10}$', 'description': 'Public booking reference, e.g. RT-K7QM.'}, 'customer_confirmed': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'timezone': {'type': 'string'}, 'pickup_at': {'type': 'string'}, 'price_eur': {'type': ['number', 'null']}, 'booking_id': {'type': 'string'}, 'passengers': {'type': ['integer', 'null']}, 'destination': {'type': 'string'}, 'pickup_date': {'type': 'string'}, 'pickup_time': {'type': 'string'}, 'cancelled_at': {'type': 'string'}, 'flight_number': {'type': ['string', 'null']}, 'pickup_address': {'type': 'string'}, 'confirmation_url': {'type': ['string', 'null']}, 'booking_reference': {'type': 'string'}, 'cancellation_fee_eur': {'type': 'number'}, 'free_cancellation_until': {'type': 'string'}}, 'additionalProperties': True}
ried_taxi_check_availability
Check RIED.TAXI availability
Checks RIED.TAXI's real calendar (bookings, the owner's own calendar and other customers' temporary holds). One car, one driver: availability depends on the whole day including driving to the pickup and back, not only the minute. Read-only; a free result is NOT a reservation. Returns alternatives when unavailable.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['pickup_date', 'pickup_time'], 'properties': {'passengers': {'type': 'integer', 'maximum': 5, 'minimum': 1}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD (Europe/Vienna).'}, 'pickup_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'HH:MM, 24h, Europe/Vienna.'}, 'pickup_address': {'type': 'string', 'maxLength': 200}, 'destination_address': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'reason': {'enum': ['free', 'fits_around_existing_ride', 'unavailable', 'too_short_notice', 'in_the_past'], 'type': 'string'}, 'message': {'type': 'string'}, 'timezone': {'type': 'string'}, 'available': {'type': 'boolean'}, 'pickup_at': {'type': 'string'}, 'availability_ref': {'type': 'string'}, 'alternative_dates': {'type': 'array', 'items': {'type': 'string'}}, 'alternative_times': {'type': 'array', 'items': {'type': 'object'}}}, 'additionalProperties': True}
ried_taxi_create_booking
Create a confirmed RIED.TAXI booking
Creates a REAL, CONFIRMED booking in RIED.TAXI's booking system and blocks the day. Only call after the customer has seen the complete trip and price and explicitly said yes. Requires the quote_id, customer_confirmed=true, accepted_terms=true and an idempotency_key (retrying with the same key never creates a second booking). Returns the booking reference and an access code for the customer.
Open world Idempotent
Input schema
{'type': 'object', 'required': ['idempotency_key', 'quote_id', 'first_name', 'last_name', 'phone', 'language', 'pickup_date', 'pickup_time', 'pickup_address', 'destination_address', 'passengers', 'large_suitcases', 'whatsapp_opt_in', 'accepted_terms', 'customer_confirmed'], 'properties': {'email': {'type': 'string', 'maxLength': 160}, 'notes': {'type': 'string', 'maxLength': 600}, 'phone': {'type': 'string', 'pattern': '^\\+[1-9][0-9 ()/-]{6,22}$', 'description': 'Mobile number in international format, e.g. +43 660 1234567.'}, 'stops': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 0, 'description': 'Not bookable online; must be empty.'}, 'hold_id': {'type': 'string', 'maxLength': 40}, 'language': {'enum': ['en', 'de'], 'type': 'string'}, 'quote_id': {'type': 'string', 'maxLength': 40}, 'last_name': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'first_name': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'passengers': {'type': 'integer', 'maximum': 5, 'minimum': 1}, 'child_seats': {'type': 'string', 'maxLength': 0, 'description': 'Not bookable online; must be empty.'}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD (Europe/Vienna).'}, 'pickup_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'Requested DRIVER PICKUP time, HH:MM Europe/Vienna. For an airport arrival this is normally the scheduled landing time; the driver monitors the flight.'}, 'hand_luggage': {'type': 'integer', 'maximum': 10, 'minimum': 0}, 'flight_number': {'type': 'string', 'maxLength': 12, 'description': 'Required when picking up at an airport.'}, 'accepted_terms': {'type': 'boolean', 'const': True, 'description': 'Customer accepted that RIED.TAXI processes their details to carry out the ride (https://ried.taxi/en/privacy/) and the booking terms (https://ried.taxi/en/terms/; cancellation is free of charge).'}, 'pickup_address': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Exact pickup address (street + number + town, hotel, or airport + terminal).'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 80, 'minLength': 8, 'description': 'Unique key for this one intended action. Reuse it only when retrying the same action.'}, 'large_suitcases': {'type': 'integer', 'maximum': 10, 'minimum': 0}, 'whatsapp_opt_in': {'type': 'boolean', 'description': 'True only if the customer agreed to WhatsApp messages about this ride.'}, 'customer_confirmed': {'type': 'boolean', 'const': True, 'description': 'Customer saw the full booking summary and explicitly said to book it.'}, 'destination_address': {'type': 'string', 'maxLength': 200, 'minLength': 2}, 'flight_arrival_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'Scheduled landing time (local) - required for airport pickups.'}, 'pickup_instructions': {'type': 'string', 'maxLength': 300}, 'flight_departure_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'Scheduled departure time for rides TO the airport (optional).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'replayed': {'type': 'boolean'}, 'timezone': {'type': 'string'}, 'pickup_at': {'type': 'string'}, 'price_eur': {'type': ['number', 'null']}, 'booking_id': {'type': 'string'}, 'passengers': {'type': ['integer', 'null']}, 'access_code': {'type': 'string'}, 'destination': {'type': 'string'}, 'pickup_date': {'type': 'string'}, 'pickup_time': {'type': 'string'}, 'flight_number': {'type': ['string', 'null']}, 'pickup_address': {'type': 'string'}, 'confirmation_url': {'type': ['string', 'null']}, 'booking_reference': {'type': 'string'}, 'free_cancellation_until': {'type': 'string'}}, 'additionalProperties': True}
ried_taxi_get_booking
Look up my RIED.TAXI booking
Returns status, pickup time, addresses, price and flight of ONE booking. Requires the booking reference and the access code the customer received when booking. Read-only.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['booking_reference', 'access_code'], 'properties': {'access_code': {'type': 'string', 'maxLength': 8, 'minLength': 8, 'description': '8-character access code given at booking time.'}, 'booking_reference': {'type': 'string', 'pattern': '^RT-[A-Z0-9]{4,10}$', 'description': 'Public booking reference, e.g. RT-K7QM.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'timezone': {'type': 'string'}, 'pickup_at': {'type': 'string'}, 'price_eur': {'type': ['number', 'null']}, 'booking_id': {'type': 'string'}, 'passengers': {'type': ['integer', 'null']}, 'destination': {'type': 'string'}, 'pickup_date': {'type': 'string'}, 'pickup_time': {'type': 'string'}, 'flight_number': {'type': ['string', 'null']}, 'pickup_address': {'type': 'string'}, 'confirmation_url': {'type': ['string', 'null']}, 'booking_reference': {'type': 'string'}, 'free_cancellation_until': {'type': 'string'}}, 'additionalProperties': True}
ried_taxi_get_quote
Get live RIED.TAXI price
Returns RIED.TAXI's current price for one journey, calculated by the ried.taxi backend (the only valid price source). Read-only: it never books or reserves anything. Returns quote_id (valid 30 min), status priced | manual_quote_required | not_offered, and the resolved pickup/destination - show those names to the customer. If the result is ambiguous_place, ask the customer which place they mean and resend with the postcode.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['pickup_address', 'destination_address', 'passengers'], 'properties': {'stops': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200}, 'maxItems': 3, 'description': 'Intermediate stops. Any stop means manual_quote_required.'}, 'passengers': {'type': 'integer', 'maximum': 5, 'minimum': 1}, 'child_seats': {'type': 'string', 'maxLength': 100, 'description': 'Ages of children needing a seat. Means manual_quote_required.'}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD (Europe/Vienna).'}, 'pickup_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'HH:MM, 24h, Europe/Vienna.'}, 'flight_number': {'type': 'string', 'maxLength': 12}, 'pickup_address': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Street address, hotel, town with postcode, or airport name/code (MUC, SZG, LNZ, VIE).'}, 'large_suitcases': {'type': 'integer', 'maximum': 10, 'minimum': 0}, 'destination_address': {'type': 'string', 'maxLength': 200, 'minLength': 2}, 'special_requirements': {'type': 'string', 'maxLength': 300}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'enum': ['priced', 'manual_quote_required', 'not_offered'], 'type': 'string'}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'included': {'type': 'array', 'items': {'type': 'string'}}, 'quote_id': {'type': ['string', 'null']}, 'price_eur': {'type': ['number', 'null']}, 'promotion': {'type': 'null'}, 'candidates': {'type': 'array'}, 'price_type': {'enum': ['fixed_published', 'fixed_calculated', None], 'type': ['string', 'null']}, 'valid_until': {'type': 'string'}, 'waiting_rules': {'type': 'string'}, 'pickup_resolved': {'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}, 'name': {'type': 'string'}, 'match': {'type': 'string'}, 'country': {'type': 'string'}, 'is_airport': {'type': 'boolean'}}}, 'destination_resolved': {'type': 'object', 'properties': {'lat': {'type': 'number'}, 'lon': {'type': 'number'}, 'name': {'type': 'string'}, 'match': {'type': 'string'}, 'country': {'type': 'string'}, 'is_airport': {'type': 'boolean'}}}}, 'additionalProperties': True}
ried_taxi_hold_booking
Hold the day for 15 minutes
Temporarily reserves the quoted date for THIS customer for 15 minutes so nobody else (website or another assistant) can take it while the customer confirms. Expires automatically. Not a booking. Call after availability is confirmed and the customer wants to proceed.
Input schema
{'type': 'object', 'required': ['quote_id', 'pickup_date', 'pickup_time'], 'properties': {'quote_id': {'type': 'string', 'maxLength': 40}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD (Europe/Vienna).'}, 'pickup_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'HH:MM, 24h, Europe/Vienna.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'hold_id': {'type': 'string'}, 'message': {'type': 'string'}, 'expires_at': {'type': 'string'}, 'pickup_date': {'type': 'string'}, 'expires_in_minutes': {'type': 'integer'}}, 'additionalProperties': True}
ried_taxi_update_booking
Change my RIED.TAXI booking
Changes a booking. Always call first with mode='preview' and show the result to the customer; then call with mode='apply', customer_confirmed=true and an idempotency_key. Same-day time changes, flight number, passengers (max 5), notes and new addresses with the same price apply immediately; a new date or a different price is sent to Ronald for approval (status change_requested).
Open world Idempotent
Input schema
{'type': 'object', 'required': ['booking_reference', 'access_code', 'mode', 'changes'], 'properties': {'mode': {'enum': ['preview', 'apply'], 'type': 'string'}, 'changes': {'type': 'object', 'properties': {'notes': {'type': 'string', 'maxLength': 400}, 'passengers': {'type': 'integer', 'maximum': 5, 'minimum': 1}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD (Europe/Vienna).'}, 'pickup_time': {'type': 'string', 'pattern': '^([01]?\\d|2[0-3]):[0-5]\\d$', 'description': 'HH:MM, 24h, Europe/Vienna.'}, 'flight_number': {'type': 'string', 'maxLength': 12}, 'pickup_address': {'type': 'string', 'maxLength': 200}, 'destination_address': {'type': 'string', 'maxLength': 200}}, 'minProperties': 1, 'additionalProperties': False}, 'access_code': {'type': 'string', 'maxLength': 8, 'minLength': 8, 'description': '8-character access code given at booking time.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 80, 'minLength': 8, 'description': 'Unique key for this one intended action. Reuse it only when retrying the same action.'}, 'booking_reference': {'type': 'string', 'pattern': '^RT-[A-Z0-9]{4,10}$', 'description': 'Public booking reference, e.g. RT-K7QM.'}, 'customer_confirmed': {'type': 'boolean'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ok'], 'properties': {'ok': {'type': 'boolean'}, 'error': {'type': 'string'}, 'status': {'type': 'string'}, 'changes': {'type': 'object'}, 'handled': {'enum': ['automatic', 'needs_ronald'], 'type': 'string'}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'timezone': {'type': 'string'}, 'pickup_at': {'type': 'string'}, 'price_eur': {'type': ['number', 'null']}, 'booking_id': {'type': 'string'}, 'passengers': {'type': ['integer', 'null']}, 'destination': {'type': 'string'}, 'pickup_date': {'type': 'string'}, 'pickup_time': {'type': 'string'}, 'flight_number': {'type': ['string', 'null']}, 'pickup_address': {'type': 'string'}, 'updated_fields': {'type': 'array', 'items': {'type': 'string'}}, 'confirmation_url': {'type': ['string', 'null']}, 'booking_reference': {'type': 'string'}, 'free_cancellation_until': {'type': 'string'}}, 'additionalProperties': True}
Added
ried_taxi_cancel_booking
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_update_booking
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_get_booking
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_create_booking
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_hold_booking
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_check_availability
Sept. 24, 2026, 2:40 a.m.
Added
ried_taxi_get_quote
Sept. 24, 2026, 2:40 a.m.