Airport transfers: Novi Sad ↔ Belgrade Airport (BEG). Look up prices and book a ride.
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.
Start a provisional airport-transfer booking. This does NOT finalize a booking — it emails the passenger a one-tap confirmation link, and the ride is only booked once they click it. Payment is to the driver (cash or card); no online payment is needed. Call estimate_price first to confirm the vehicle + price with the user, then call this. Always tell the user to check their email to confirm.
to_airport = going to the airport; from_airport = pickup at the airport.
Route slug from list_routes.
Number of passengers.
Pickup date, YYYY-MM-DD, Belgrade local time.
Pickup time, HH:MM (24h), Belgrade local time.
Full name of the passenger.
Passenger email — the confirmation link is sent here.
Passenger phone in international format.
Language for the confirmation email. Default en.
Number of large bags (optional).
Optional vehicle tier name (e.g. 'Group XL'). Defaults to the cheapest vehicle that fits the group.
Flight number (recommended for airport pickups).
Pickup or drop-off address. REQUIRED when the ride departs to the airport (direction to_airport) or runs city-to-city — the driver has nowhere to collect the passenger otherwise, and the booking is refused. Optional for an airport arrival, where the driver waits in arrivals.
Notes, e.g. child seat needed (optional).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Start a provisional airport-transfer booking. This does NOT finalize a booking — it emails the passenger a one-tap confirmation link, and the ride is only booked once they click it. Payment is to the driver (cash or card); no online payment is needed. Call estimate_price first to confirm the vehicle + price with the user, then call this. Always tell the user to check their email to confirm.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language for the confirmation email. Default en. |
| luggage | integer | Number of large bags (optional). |
| vehicle | string | Optional vehicle tier name (e.g. 'Group XL'). Defaults to the cheapest vehicle that fits the group. |
| direction* | string | to_airport = going to the airport; from_airport = pickup at the airport. |
| routeSlug* | string | Route slug from list_routes. |
| passengers* | integer | Number of passengers. |
| pickupDate* | string | Pickup date, YYYY-MM-DD, Belgrade local time. |
| pickupTime* | string | Pickup time, HH:MM (24h), Belgrade local time. |
| flightNumber | string | Flight number (recommended for airport pickups). |
| passengerName* | string | Full name of the passenger. |
| pickupAddress | string | Pickup or drop-off address. REQUIRED when the ride departs to the airport (direction to_airport) or runs city-to-city — the driver has nowhere to collect the passenger otherwise, and the booking is refused. Optional for an airport arrival, where the driver waits in arrivals. |
| passengerEmail* | string | Passenger email — the confirmation link is sent here. |
| passengerPhone* | string | Passenger phone in international format. |
| specialRequests | string | Notes, e.g. child seat needed (optional). |
{
"type": "object",
"required": [
"routeSlug",
"direction",
"pickupDate",
"pickupTime",
"passengerName",
"passengerEmail",
"passengerPhone",
"passengers"
],
"properties": {
"locale": {
"enum": [
"en",
"sr",
"ru",
"de",
"zh",
"it",
"fr",
"es",
"pl",
"tr"
],
"type": "string",
"description": "Language for the confirmation email. Default en."
},
"luggage": {
"type": "integer",
"minimum": 0,
"description": "Number of large bags (optional)."
},
"vehicle": {
"type": "string",
"description": "Optional vehicle tier name (e.g. 'Group XL'). Defaults to the cheapest vehicle that fits the group."
},
"direction": {
"enum": [
"to_airport",
"from_airport"
],
"type": "string",
"description": "to_airport = going to the airport; from_airport = pickup at the airport."
},
"routeSlug": {
"type": "string",
"description": "Route slug from list_routes."
},
"passengers": {
"type": "integer",
"minimum": 1,
"description": "Number of passengers."
},
"pickupDate": {
"type": "string",
"description": "Pickup date, YYYY-MM-DD, Belgrade local time."
},
"pickupTime": {
"type": "string",
"description": "Pickup time, HH:MM (24h), Belgrade local time."
},
"flightNumber": {
"type": "string",
"description": "Flight number (recommended for airport pickups)."
},
"passengerName": {
"type": "string",
"description": "Full name of the passenger."
},
"pickupAddress": {
"type": "string",
"description": "Pickup or drop-off address. REQUIRED when the ride departs to the airport (direction to_airport) or runs city-to-city — the driver has nowhere to collect the passenger otherwise, and the booking is refused. Optional for an airport arrival, where the driver waits in arrivals."
},
"passengerEmail": {
"type": "string",
"description": "Passenger email — the confirmation link is sent here."
},
"passengerPhone": {
"type": "string",
"description": "Passenger phone in international format."
},
"specialRequests": {
"type": "string",
"description": "Notes, e.g. child seat needed (optional)."
}
},
"additionalProperties": false
}Estimate the price for a trip. Given a route and passenger count (and optional luggage count), returns the cheapest vehicle that fits the group, plus all fitting options. Use this to answer 'how much for N people from X to the airport?'.
| Argument | Type | Description |
|---|---|---|
| luggage | integer | Number of large bags (optional). |
| routeSlug* | string | Route slug from list_routes. |
| passengers* | integer | Number of passengers. |
{
"type": "object",
"required": [
"routeSlug",
"passengers"
],
"properties": {
"luggage": {
"type": "integer",
"minimum": 0,
"description": "Number of large bags (optional)."
},
"routeSlug": {
"type": "string",
"description": "Route slug from list_routes."
},
"passengers": {
"type": "integer",
"minimum": 1,
"description": "Number of passengers."
}
},
"additionalProperties": false
}Check whether a booking request (from create_booking_request) has been confirmed by the passenger yet. Returns 'pending', 'confirmed' (with the booking number), or 'expired'.
| Argument | Type | Description |
|---|---|---|
| requestId* | string | The requestId returned by create_booking_request. |
{
"type": "object",
"required": [
"requestId"
],
"properties": {
"requestId": {
"type": "string",
"description": "The requestId returned by create_booking_request."
}
},
"additionalProperties": false
}Get fixed per-vehicle prices for a route, or for all routes if no routeSlug is given. Prices are fixed (no surge, no metered fares), in EUR and RSD. Each vehicle tier lists max passengers and luggage.
| Argument | Type | Description |
|---|---|---|
| routeSlug | string | Optional route slug from list_routes (e.g. 'novi-sad-belgrade-airport'). Omit to get pricing for every route. |
{
"type": "object",
"properties": {
"routeSlug": {
"type": "string",
"description": "Optional route slug from list_routes (e.g. 'novi-sad-belgrade-airport'). Omit to get pricing for every route."
}
},
"additionalProperties": false
}Get business info: service area, accepted payment methods, supported languages, minimum booking lead time, contact details, and how to book (including the booking URL template).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List all active airport-transfer routes with their slug, endpoints, distance, travel time, available directions, and starting price. Use this first to discover what routes exist.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}