Quote and request private airport transfers in Antalya, Turkey. Operator confirms each request.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this only when the customer has explicitly asked to cancel their transfer request and you have the booking reference returned by create_transfer_request and the email used for it. Cancels a request that is still pending or assigned, tells the operator (WhatsApp/email) and emails the customer a cancellation notice. Calling it again for an already-cancelled request is harmless and returns cancelled=true without notifying anyone again. Destructive and sends real messages: never call it to explore, to "test", or because the customer is merely unsure or wants to change details. Do not use for a request the operator has already confirmed (it is refused: the customer must contact the operator), for changing time/passengers/vehicle (contact the operator), or for refunds. Use get_request_status to check the current state first if unsure.
Booking reference, e.g. AT-20260605-0001
Email address used when the request was submitted
Optional short reason given by the customer
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Use this only when the customer has explicitly asked to cancel their transfer request and you have the booking reference returned by create_transfer_request and the email used for it. Cancels a request that is still pending or assigned, tells the operator (WhatsApp/email) and emails the customer a cancellation notice. Calling it again for an already-cancelled request is harmless and returns cancelled=true without notifying anyone again. Destructive and sends real messages: never call it to explore, to "test", or because the customer is merely unsure or wants to change details. Do not use for a request the operator has already confirmed (it is refused: the customer must contact the operator), for changing time/passengers/vehicle (contact the operator), or for refunds. Use get_request_status to check the current state first if unsure.
| Argument | Type | Description |
|---|---|---|
| reason | string | Optional short reason given by the customer |
| reference* | string | Booking reference, e.g. AT-20260605-0001 |
| customerEmail* | string | Email address used when the request was submitted |
{
"type": "object",
"required": [
"reference",
"customerEmail"
],
"properties": {
"reason": {
"type": "string",
"maxLength": 200,
"description": "Optional short reason given by the customer"
},
"reference": {
"type": "string",
"description": "Booking reference, e.g. AT-20260605-0001"
},
"customerEmail": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "Email address used when the request was submitted"
}
}
}Use this only after the customer has chosen a route, time and vehicle and has given their name, email and phone, and explicitly asked to send the request. Submits a transfer REQUEST that is stored as pending and reviewed by the operator, who confirms the ride and final price by email/WhatsApp. This does NOT confirm a booking, assign a driver or take payment — never tell the customer the ride is confirmed. Writes data: do not call it to explore prices (use get_price_quote) and do not retry on success. Pass idempotencyKey to make retries safe: the same key for the same customer returns the original reference (duplicate=true) and never creates a second request; to change details, cancel and submit a new request with a new key. Without a key, repeating identical details also returns the original request. At most 5 requests per phone number per day. Capacity is checked: parties larger than the vehicle are rejected with a suggested vehicle.
| Argument | Type | Description |
|---|---|---|
| pets | integer | Pets travelling (the operator confirms whether they can be carried) |
| notes | string | Extra instructions for the operator (hotel address, special needs) |
| luggage | integer | Large suitcases |
| language | string | Customer language code, e.g. en, ru, de, tr |
| childSeats | integer | Child seats required |
| passengers* | integer | Total passengers including children |
Use this when a traveller asks how much a private airport transfer costs between Antalya Airport (AYT) and Antalya-area destinations (Konyaaltı, Antalya city/Kaleiçi, Lara, Belek, Side, Alanya, Kemer, Kaş) or between those resorts. Returns a fixed-price estimate in EUR, whether the party fits the chosen vehicle, and a suggested vehicle if not. Read-only: it does not create a request or reserve anything. Do not use for flights, car rental, tours, or destinations outside the Antalya region. If a route has no fixed price, priced=false and the operator quotes it.
| Argument | Type | Description |
|---|---|---|
| luggage | integer | Number of large suitcases (optional) |
| childSeats | integer | Number of child seats needed (optional) |
| passengers* | integer | Total passengers including children |
| scheduledAt | string | Optional pickup time. ISO 8601 date-time of pickup in Antalya local time, e.g. 2026-11-20T10:00:00+03:00. If no timezone is given, Antalya time (UTC+3) is assumed. If omitted a daytime price is returned; pickups 22:00–06:00 cost +30%. |
| vehicleType | string | Optional: if omitted the smallest vehicle that fits the party is quoted. Capacity: sedan 3 pax/2 large bags; minivan 8 pax/6 large bags; vip_sedan 3 pax/2 large bags; minibus 16 pax/12 large bags; bus 50 pax/50 large bags. |
| pickupAddress |
Use this when the customer asks whether their transfer request was confirmed, assigned or cancelled. Requires the booking reference returned by create_transfer_request and the email used for the request. Read-only. pending means the operator has not confirmed yet; only operatorConfirmed=true means the ride is confirmed. Do not use to create or change a request.
| Argument | Type | Description |
|---|---|---|
| reference* | string | Booking reference, e.g. AT-20260605-0001 |
| customerEmail* | string | Email address used when the request was submitted |
{
"type": "object",
"required": [
"reference",
"customerEmail"
],
"properties": {
"reference": {
"type": "string",
"description": "Booking reference, e.g. AT-20260605-0001"
},
"customerEmail": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "Email address used when the request was submitted"
}
}
}| scheduledAt* | string | ISO 8601 date-time of pickup in Antalya local time, e.g. 2026-11-20T10:00:00+03:00. If no timezone is given, Antalya time (UTC+3) is assumed. For arrivals use flight landing time plus ~30 minutes. |
| vehicleType* | string | Vehicle class; must fit passengers, luggage and child seats |
| customerName* | string | Full name of the lead passenger |
| flightNumber | string | Flight number without spaces, e.g. TK2548 |
| customerEmail* | string | Where the reference and confirmation are sent |
| customerPhone* | string | International format with country code, e.g. +905551234567 |
| pickupAddress* | string | Pickup place, e.g. "Antalya Airport (AYT) Terminal 2" |
| dropoffAddress* | string | Drop-off place or hotel name with its area |
| idempotencyKey | string | Optional. A unique value (e.g. a UUID) you generate once per customer request and reuse on every retry. A retry with the same key and same customer email/phone returns the original reference with duplicate=true and creates nothing, even if other fields changed. |
{
"type": "object",
"required": [
"pickupAddress",
"dropoffAddress",
"scheduledAt",
"passengers",
"vehicleType",
"customerName",
"customerEmail",
"customerPhone"
],
"properties": {
"pets": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "Pets travelling (the operator confirms whether they can be carried)"
},
"notes": {
"type": "string",
"maxLength": 500,
"description": "Extra instructions for the operator (hotel address, special needs)"
},
"luggage": {
"type": "integer",
"maximum": 50,
"minimum": 0,
"description": "Large suitcases"
},
"language": {
"type": "string",
"description": "Customer language code, e.g. en, ru, de, tr"
},
"childSeats": {
"type": "integer",
"maximum": 10,
"minimum": 0,
"description": "Child seats required"
},
"passengers": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Total passengers including children"
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "ISO 8601 date-time of pickup in Antalya local time, e.g. 2026-11-20T10:00:00+03:00. If no timezone is given, Antalya time (UTC+3) is assumed. For arrivals use flight landing time plus ~30 minutes."
},
"vehicleType": {
"enum": [
"sedan",
"minivan",
"vip_sedan",
"minibus",
"bus"
],
"type": "string",
"description": "Vehicle class; must fit passengers, luggage and child seats"
},
"customerName": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Full name of the lead passenger"
},
"flightNumber": {
"type": "string",
"pattern": "^[A-Za-z0-9]{2,10}$",
"description": "Flight number without spaces, e.g. TK2548"
},
"customerEmail": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "Where the reference and confirmation are sent"
},
"customerPhone": {
"type": "string",
"description": "International format with country code, e.g. +905551234567"
},
"pickupAddress": {
"type": "string",
"maxLength": 200,
"description": "Pickup place, e.g. \"Antalya Airport (AYT) Terminal 2\""
},
"dropoffAddress": {
"type": "string",
"maxLength": 200,
"description": "Drop-off place or hotel name with its area"
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_.:-]{8,128}$",
"maxLength": 128,
"minLength": 8,
"description": "Optional. A unique value (e.g. a UUID) you generate once per customer request and reuse on every retry. A retry with the same key and same customer email/phone returns the original reference with duplicate=true and creates nothing, even if other fields changed."
}
}
}| string |
| Pickup place: "Antalya Airport (AYT)", a resort area or a hotel name, e.g. "Rixos Premium Belek". |
| dropoffAddress* | string | Drop-off place, same format as pickupAddress, e.g. "Kemer". |
{
"type": "object",
"required": [
"pickupAddress",
"dropoffAddress",
"passengers"
],
"properties": {
"luggage": {
"type": "integer",
"maximum": 50,
"minimum": 0,
"description": "Number of large suitcases (optional)"
},
"childSeats": {
"type": "integer",
"maximum": 10,
"minimum": 0,
"description": "Number of child seats needed (optional)"
},
"passengers": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Total passengers including children"
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"description": "Optional pickup time. ISO 8601 date-time of pickup in Antalya local time, e.g. 2026-11-20T10:00:00+03:00. If no timezone is given, Antalya time (UTC+3) is assumed. If omitted a daytime price is returned; pickups 22:00–06:00 cost +30%."
},
"vehicleType": {
"enum": [
"sedan",
"minivan",
"vip_sedan",
"minibus",
"bus"
],
"type": "string",
"description": "Optional: if omitted the smallest vehicle that fits the party is quoted. Capacity: sedan 3 pax/2 large bags; minivan 8 pax/6 large bags; vip_sedan 3 pax/2 large bags; minibus 16 pax/12 large bags; bus 50 pax/50 large bags."
},
"pickupAddress": {
"type": "string",
"maxLength": 200,
"description": "Pickup place: \"Antalya Airport (AYT)\", a resort area or a hotel name, e.g. \"Rixos Premium Belek\"."
},
"dropoffAddress": {
"type": "string",
"maxLength": 200,
"description": "Drop-off place, same format as pickupAddress, e.g. \"Kemer\"."
}
}
}