Bota — car rental availability and bookings

Real availability, prices and bookings of car rental companies (rent-a-car), by conversation.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
88%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,847Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.44% 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": {
    "bota": {
      "url": "https://mcp.bota-chat.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.bota-chat.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_rental_companies

List the car-rental companies that sell through Bota. Returns id, name, website, active channels, whether bookings can be completed from this server (booking_via_agents) and whether it is the demo company. Start here.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_offices(company_id, language)

Rental offices (pickup/return locations) of a company: name, city, address, opening hours, timezone, coordinates. Use the office NAME in search_availability.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id"
  ],
  "additionalProperties": false
}
🟢search_availability(company_id, session_id, pickup_office, return_office, pickup_date, ...)

Search available vehicles with real prices for a company, office and dates. Prices are identical to the company's own web chat (mandatory charges, one-way and time rules included). Returns numbered offers; keep the session_id to select one.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "pickup_office": {
      "type": "string",
      "description": "Pickup office name (from list_offices) or id."
    },
    "return_office": {
      "type": "string",
      "description": "Return office name or id when different (one-way)."
    },
    "pickup_date": {
      "type": "string",
      "description": "YYYY-MM-DD, office-local."
    },
    "pickup_time": {
      "type": "string",
      "description": "HH:MM, office-local. Default 10:00."
    },
    "return_date": {
      "type": "string",
      "description": "YYYY-MM-DD, office-local."
    },
    "return_time": {
      "type": "string",
      "description": "HH:MM, office-local. Default 10:00."
    },
    "driver_age": {
      "type": "integer",
      "minimum": 18,
      "maximum": 99
    },
    "promo_code": {
      "type": "string"
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "pickup_office",
    "pickup_date",
    "return_date"
  ],
  "additionalProperties": false
}
🟡chat(company_id, session_id, message, language)

Send a free-text message to the company's Bota agent within a session (questions about conditions, insurance, extras, changes…). Bota answers in the customer's language with the company's approved information. For companies with booking_via_agents=true the conversation can complete a booking.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "message": {
      "type": "string",
      "maxLength": 2000
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "message"
  ],
  "additionalProperties": false
}
🟢select_offer(company_id, session_id, offer_number, language)

Choose one of the numbered offers returned by search_availability (same session). Bota then asks for extras or driver details as needed. Requires booking_via_agents=true.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "offer_number": {
      "type": "integer",
      "minimum": 1
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "session_id",
    "offer_number"
  ],
  "additionalProperties": false
}
🟡select_extras(company_id, session_id, extras, language)

Add optional extras (child seat, additional driver, coverage…) to the booking in progress using the extra ids returned after select_offer, or pass an empty list to continue without extras. Requires booking_via_agents=true.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "extras": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Extra ids to add; empty array = no extras."
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "session_id",
    "extras"
  ],
  "additionalProperties": false
}
🟡provide_customer_details(company_id, session_id, first_name, last_name, email, ...)

Submit the driver's details for the booking in progress. Only call it after the customer has explicitly accepted the company's terms (terms_accepted must be true). Bota then shows the summary to confirm.

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "first_name": {
      "type": "string",
      "maxLength": 80
    },
    "last_name": {
      "type": "string",
      "maxLength": 120
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "phone": {
      "type": "string",
      "maxLength": 30
    },
    "notes": {
      "type": "string",
      "maxLength": 500
    },
    "flight_number": {
      "type": "string",
      "maxLength": 20
    },
    "terms_accepted": {
      "type": "boolean"
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "session_id",
    "first_name",
    "last_name",
    "email",
    "terms_accepted"
  ],
  "additionalProperties": false
}
⚪confirm_booking(company_id, session_id, confirmation_token, language)

Confirm the booking summarised by Bota. Pass the confirmation_token returned by the previous call (it proves the customer saw that exact summary). Creates the reservation in the company's reservation system and returns the confirmation code (and a payment link when the company requires prepayment).

Input Schema

{
  "type": "object",
  "properties": {
    "company_id": {
      "type": "string",
      "description": "Company id from list_rental_companies."
    },
    "session_id": {
      "type": "string",
      "description": "Session id returned by a previous call for this company. Omit on the first call; ALWAYS pass it back on the next ones so Bota keeps the conversation (offers, selection, customer details)."
    },
    "confirmation_token": {
      "type": "string",
      "description": "confirmation_token from the response that showed the booking summary."
    },
    "language": {
      "type": "string",
      "description": "Language of the conversation, BCP-47 (es, en, pt-BR, fr, de, it…). Defaults to 'en'. Bota also answers in the language the customer writes."
    }
  },
  "required": [
    "company_id",
    "session_id",
    "confirmation_token"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools