RIED.TAXI

Fixed-price airport transfers and long rides from Upper Austria, Salzburg, Passau

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,821Tokens (tool definitions)
~5.1 KBTypical response size
Significant attention impact (2.99% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "booking": {
      "url": "https://ried.taxi/api/mcp"
    }
  }
}

Remote endpoints

https://ried.taxi/api/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ried_taxi_get_quote(pickup_address, destination_address, pickup_date, pickup_time, passengers, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "pickup_address": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Street address, hotel, town with postcode, or airport name/code (MUC, SZG, LNZ, VIE)."
    },
    "destination_address": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200
    },
    "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."
    },
    "passengers": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "large_suitcases": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "flight_number": {
      "type": "string",
      "maxLength": 12
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 3,
      "description": "Intermediate stops. Any stop means manual_quote_required."
    },
    "child_seats": {
      "type": "string",
      "maxLength": 100,
      "description": "Ages of children needing a seat. Means manual_quote_required."
    },
    "special_requirements": {
      "type": "string",
      "maxLength": 300
    }
  },
  "required": [
    "pickup_address",
    "destination_address",
    "passengers"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "priced",
        "manual_quote_required",
        "not_offered"
      ]
    },
    "quote_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_eur": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "price_type": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "fixed_published",
        "fixed_calculated",
        null
      ]
    },
    "valid_until": {
      "type": "string"
    },
    "included": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "waiting_rules": {
      "type": "string"
    },
    "pickup_resolved": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "lat": {
          "type": "number"
        },
        "lon": {
          "type": "number"
        },
        "is_airport": {
          "type": "boolean"
        },
        "match": {
          "type": "string"
        }
      }
    },
    "destination_resolved": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "lat": {
          "type": "number"
        },
        "lon": {
          "type": "number"
        },
        "is_airport": {
          "type": "boolean"
        },
        "match": {
          "type": "string"
        }
      }
    },
    "promotion": {
      "type": "null"
    },
    "candidates": {
      "type": "array"
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢ried_taxi_check_availability(pickup_address, destination_address, pickup_date, pickup_time, passengers)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "pickup_address": {
      "type": "string",
      "maxLength": 200
    },
    "destination_address": {
      "type": "string",
      "maxLength": 200
    },
    "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."
    },
    "passengers": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    }
  },
  "required": [
    "pickup_date",
    "pickup_time"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "available": {
      "type": "boolean"
    },
    "availability_ref": {
      "type": "string"
    },
    "reason": {
      "type": "string",
      "enum": [
        "free",
        "fits_around_existing_ride",
        "unavailable",
        "too_short_notice",
        "in_the_past"
      ]
    },
    "pickup_at": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "alternative_dates": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "alternative_times": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
ried_taxi_hold_booking(quote_id, pickup_date, pickup_time)

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",
  "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."
    }
  },
  "required": [
    "quote_id",
    "pickup_date",
    "pickup_time"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "hold_id": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "expires_in_minutes": {
      "type": "integer"
    },
    "pickup_date": {
      "type": "string"
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟡ried_taxi_create_booking(idempotency_key, quote_id, hold_id, first_name, last_name, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9._:-]+$",
      "description": "Unique key for this one intended action. Reuse it only when retrying the same action."
    },
    "quote_id": {
      "type": "string",
      "maxLength": 40
    },
    "hold_id": {
      "type": "string",
      "maxLength": 40
    },
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9][0-9 ()/-]{6,22}$",
      "description": "Mobile number in international format, e.g. +43 660 1234567."
    },
    "email": {
      "type": "string",
      "maxLength": 160
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "de"
      ]
    },
    "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."
    },
    "pickup_address": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Exact pickup address (street + number + town, hotel, or airport + terminal)."
    },
    "pickup_instructions": {
      "type": "string",
      "maxLength": 300
    },
    "destination_address": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200
    },
    "passengers": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "large_suitcases": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "hand_luggage": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "flight_number": {
      "type": "string",
      "maxLength": 12,
      "description": "Required when picking up at an airport."
    },
    "flight_arrival_time": {
      "type": "string",
      "pattern": "^([01]?\\d|2[0-3]):[0-5]\\d$",
      "description": "Scheduled landing time (local) - required for airport pickups."
    },
    "flight_departure_time": {
      "type": "string",
      "pattern": "^([01]?\\d|2[0-3]):[0-5]\\d$",
      "description": "Scheduled departure time for rides TO the airport (optional)."
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 0,
      "description": "Not bookable online; must be empty."
    },
    "child_seats": {
      "type": "string",
      "maxLength": 0,
      "description": "Not bookable online; must be empty."
    },
    "notes": {
      "type": "string",
      "maxLength": 600
    },
    "whatsapp_opt_in": {
      "type": "boolean",
      "description": "True only if the customer agreed to WhatsApp messages about this ride."
    },
    "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)."
    },
    "customer_confirmed": {
      "type": "boolean",
      "const": true,
      "description": "Customer saw the full booking summary and explicitly said to book it."
    }
  },
  "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"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "booking_id": {
      "type": "string"
    },
    "booking_reference": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "pickup_at": {
      "type": "string"
    },
    "pickup_date": {
      "type": "string"
    },
    "pickup_time": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "pickup_address": {
      "type": "string"
    },
    "destination": {
      "type": "string"
    },
    "passengers": {
      "type": [
        "integer",
        "null"
      ]
    },
    "price_eur": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "flight_number": {
      "type": [
        "string",
        "null"
      ]
    },
    "free_cancellation_until": {
      "type": "string"
    },
    "confirmation_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "access_code": {
      "type": "string"
    },
    "replayed": {
      "type": "boolean"
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢ried_taxi_get_booking(booking_reference, access_code)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_reference": {
      "type": "string",
      "pattern": "^RT-[A-Z0-9]{4,10}$",
      "description": "Public booking reference, e.g. RT-K7QM."
    },
    "access_code": {
      "type": "string",
      "minLength": 8,
      "maxLength": 8,
      "description": "8-character access code given at booking time."
    }
  },
  "required": [
    "booking_reference",
    "access_code"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "booking_id": {
      "type": "string"
    },
    "booking_reference": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "pickup_at": {
      "type": "string"
    },
    "pickup_date": {
      "type": "string"
    },
    "pickup_time": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "pickup_address": {
      "type": "string"
    },
    "destination": {
      "type": "string"
    },
    "passengers": {
      "type": [
        "integer",
        "null"
      ]
    },
    "price_eur": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "flight_number": {
      "type": [
        "string",
        "null"
      ]
    },
    "free_cancellation_until": {
      "type": "string"
    },
    "confirmation_url": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟡ried_taxi_update_booking(booking_reference, access_code, mode, idempotency_key, customer_confirmed, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "booking_reference": {
      "type": "string",
      "pattern": "^RT-[A-Z0-9]{4,10}$",
      "description": "Public booking reference, e.g. RT-K7QM."
    },
    "access_code": {
      "type": "string",
      "minLength": 8,
      "maxLength": 8,
      "description": "8-character access code given at booking time."
    },
    "mode": {
      "type": "string",
      "enum": [
        "preview",
        "apply"
      ]
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9._:-]+$",
      "description": "Unique key for this one intended action. Reuse it only when retrying the same action."
    },
    "customer_confirmed": {
      "type": "boolean"
    },
    "changes": {
      "type": "object",
      "additionalProperties": false,
      "minProperties": 1,
      "properties": {
        "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
        },
        "flight_number": {
          "type": "string",
          "maxLength": 12
        },
        "passengers": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5
        },
        "notes": {
          "type": "string",
          "maxLength": 400
        }
      }
    }
  },
  "required": [
    "booking_reference",
    "access_code",
    "mode",
    "changes"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "booking_id": {
      "type": "string"
    },
    "booking_reference": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "pickup_at": {
      "type": "string"
    },
    "pickup_date": {
      "type": "string"
    },
    "pickup_time": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "pickup_address": {
      "type": "string"
    },
    "destination": {
      "type": "string"
    },
    "passengers": {
      "type": [
        "integer",
        "null"
      ]
    },
    "price_eur": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "flight_number": {
      "type": [
        "string",
        "null"
      ]
    },
    "free_cancellation_until": {
      "type": "string"
    },
    "confirmation_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "changes": {
      "type": "object"
    },
    "handled": {
      "type": "string",
      "enum": [
        "automatic",
        "needs_ronald"
      ]
    },
    "updated_fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🔴ried_taxi_cancel_booking(booking_reference, access_code, idempotency_key, customer_confirmed, reason)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_reference": {
      "type": "string",
      "pattern": "^RT-[A-Z0-9]{4,10}$",
      "description": "Public booking reference, e.g. RT-K7QM."
    },
    "access_code": {
      "type": "string",
      "minLength": 8,
      "maxLength": 8,
      "description": "8-character access code given at booking time."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9._:-]+$",
      "description": "Unique key for this one intended action. Reuse it only when retrying the same action."
    },
    "customer_confirmed": {
      "type": "boolean",
      "const": true
    },
    "reason": {
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "booking_reference",
    "access_code",
    "idempotency_key",
    "customer_confirmed"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "booking_id": {
      "type": "string"
    },
    "booking_reference": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "pickup_at": {
      "type": "string"
    },
    "pickup_date": {
      "type": "string"
    },
    "pickup_time": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "pickup_address": {
      "type": "string"
    },
    "destination": {
      "type": "string"
    },
    "passengers": {
      "type": [
        "integer",
        "null"
      ]
    },
    "price_eur": {
      "type": [
        "number",
        "null"
      ]
    },
    "currency": {
      "type": "string"
    },
    "flight_number": {
      "type": [
        "string",
        "null"
      ]
    },
    "free_cancellation_until": {
      "type": "string"
    },
    "confirmation_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "cancelled_at": {
      "type": "string"
    },
    "cancellation_fee_eur": {
      "type": "number"
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools