Bota · Developers
Bota MCP server reference
A connector to rent a car directly from the car rental companies that use Bota: real availability and prices set by each company, and the booking created in the company's own reservation system.
Connection
- Endpoint
- https://mcp.bota-chat.com/mcp
- Transport
- Streamable HTTP, JSON-RPC 2.0 over POST, stateless
- Authentication
- None. No account or API key needed
- Protocol versions
- 2025-06-18, 2025-03-26, 2024-11-05
Add it as a custom connector by URL:
- Claude: Customize › Connectors › Add custom connector.
- ChatGPT: turn on developer mode and create an app with this URL.
- Mistral Le Chat: Connectors › Add Connector › Custom MCP Connector, with no authentication. On Team and Enterprise plans an admin adds it for the organization.
Or in any MCP client:
{
"mcpServers": {
"bota": { "url": "https://mcp.bota-chat.com/mcp" }
}
}Flow and server instructions
The server sends these instructions on initialize:
Bota lets you rent a car directly from the car rental companies that use Bota, at the price each company sets (the same as its own web chat), with the booking created in the company's own system. Flow: list_rental_companies → list_offices → search_availability → select_offer → select_extras (if offered) → provide_customer_details → confirm_booking. Ask the main driver's age before searching and the driver's phone number before submitting details; never invent them. Keep the session_id of each company and pass it back on every call. Only submit details once the customer accepted the company's terms, and only confirm a booking or a cancellation after the customer explicitly confirms the summary shown. For questions about requirements, deposit or insurance use ask_company. After booking, get_booking_status and cancel_booking take the booking reference and the customer's email. The demo company is for testing: its bookings are free and fictitious. Machine guide: https://www.bota-chat.com/api/public/provider-api-guideTools
Read tools change nothing. Write tools advance a booking session without reserving or charging. Sensitive write tools create or cancel a real reservation: the assistant must get the customer's explicit approval every time.
| Tool | Class | Inputs | Side effects | Returns |
|---|---|---|---|---|
list_rental_companiesCar rental companies that use Bota and rent directly through it. Returns id, name, website, active channels, whether bookings can be completed here (booking_via_agents) and whether it is the demo company. | Read | None | None. | Companies with id, name, website, active channels, booking_via_agents and whether it is the demo company. |
list_officesRental offices (pickup/return locations) of a company: name, city, address, opening hours, timezone, coordinates. | Read |
| None. | Offices with name, city, address, opening hours, timezone and coordinates. |
search_availabilitySearch 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 and the session_id of this booking session. | Read |
| Opens a booking session in Bota. Nothing is reserved or charged. | Numbered offers with vehicle, total price and currency, and the session_id to pass back. |
ask_companyAsk the company a free-text question (requirements, deposit, insurance, documents, opening hours, pickup instructions…). Bota answers in the customer's language with the company's approved information. Read-only: it never starts, changes or completes a booking. | Read |
| None. Runs in its own session and never starts or changes a booking. | The company's answer, in the customer's language, from its approved information. |
select_offerSelects one of the numbered offers of the booking session. Returns the extras available for it, or the driver details the company needs. Only for companies with booking_via_agents=true. | Write |
| Advances the booking session. Nothing is reserved or charged. | The extras available for that offer, or the driver details the company needs. |
select_extrasAdds optional extras (child seat, additional driver, coverage…) to the booking in progress by extra id; an empty list continues without extras. Only for companies with booking_via_agents=true. | Write |
| Advances the booking session. Nothing is reserved or charged. | The next step of the booking: the driver details the company needs. |
provide_customer_detailsSubmits the driver's details for the booking in progress and returns the booking summary with its confirmation_token. terms_accepted records that the customer accepted the company's terms and must be true. | Write |
| Stores the driver's details in the booking session. Nothing is reserved or charged. | The booking summary the customer must approve and its confirmation_token. |
confirm_bookingConfirms the summarised booking with its confirmation_token, which 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). An on-request booking comes back pending the company's confirmation and without a code yet. | Sensitive write |
| Creates the reservation in the rental company's reservation system. Not idempotent. | Confirmed: the confirmation code. On-request: pending the company’s confirmation, without a code yet. Prepayment: also the company’s payment link. |
get_booking_statusLook up a booking made through Bota: status (confirmed, cancelled…), vehicle, office, dates and total. Needs the booking reference and the email it was made with. | Read |
| None. | Status (confirmed, pending, cancelled…), vehicle, pickup and return office and time, and total. |
cancel_bookingCancels a booking made through Bota. Without confirm it only returns the booking and whether it can be cancelled; with confirm=true it cancels it. Cancellation fees, if any, follow the company's terms. | Sensitive write |
| Without confirm: none, it previews the booking and whether it can be cancelled. With confirm=true: cancels the booking in the company's system; fees, if any, follow the company's terms. | The preview, or the cancelled booking. |
Booking states and payment
- Quoted: offers from
search_availability. Nothing is held. - Summarised:
provide_customer_detailsreturns the summary and aconfirmation_tokentied to it. Show it to the customer and confirm only after they approve it. - Confirmed (with a confirmation code) or pending (on request, until the company confirms): from
confirm_booking. Check it later withget_booking_status. - Cancelled:
cancel_bookingwithconfirm=true, after showing the preview. - Failed: any result with
isError: true(see errors).confirm_bookingis not idempotent: after an unclear result, do not repeat it blindly. - Payment is made to the rental company, at the counter or, when the company requires prepayment, through the payment link returned by
confirm_booking. This server never receives card details.
Errors
Tool errors come back as a normal result with isError: true and a JSON body { "error": "<code>", "message": "…" }, sometimes with the company's website. Requests over the per-minute limit get HTTP 429.
| Code | Meaning |
|---|---|
invalid_arguments | An argument does not match the input schema. The message names the field; fix it and call again. |
invalid_company_id | company_id is not an id returned by list_rental_companies. |
company_not_found | No company with that id is available through this server. |
office_not_found | No office matches. The error lists the valid office names; use one. |
booking_not_enabled | The company quotes but does not take bookings from assistants yet. Share the quote and its website. |
terms_not_accepted | terms_accepted was not true. Ask the customer to accept the company's terms first. |
booking_not_found | No booking matches that reference and email. Ask the customer to check both; do not guess. |
booking_unavailable | The company's system could not return the booking. Refer the customer to the company. |
not_cancellable | The booking cannot be cancelled here; the message says why. Refer the customer to the company. |
cancel_failed | The company's system did not accept the cancellation; the booking may still be active. |
confirmation_expired | The confirmation_token is unknown, expired (30 minutes) or from another booking session. Call provide_customer_details again for a fresh summary and token. |
confirmation_superseded | A newer step of the same session replaced that summary. Confirm only with the latest confirmation_token, once the customer agrees to that summary. |
agreement_changed | Only with login: the person's negotiated agreement with this company changed after the quote, so its prices no longer apply. Call search_availability again for current prices. |
session_conflict | Only with login: that session_id already belongs to another person of the same company. Start a new session. |
references_required | Only with login: the company asks for a booking reference (claim or file number, cost center or purchase order, agency reference) that is missing. The message names it; ask the customer and call provide_customer_details again with references. |
references_not_requested | Only with login: references were sent for a company that does not ask this person for any. Omit references. |
unknown_reference | Only with login: a reference the company does not ask for. The message lists the ones it does. |
invalid_references | Only with login: a reference is not a single line of up to 60 characters. |
turn_rejected | Bota rejected the request. The message says why. |
turn_failed | The step failed on the company or Bota side. Retry once. |
daily_quota_exceeded | This client, conversation or assistant platform used its daily turns. Do not retry today. |
company_quota_exceeded | The company used its daily assistant turns. Do not retry today; share its website. |
internal_error | Unexpected failure on Bota’s side, not caused by the arguments. Retry once. |
Rate limits
- 60 requests per minute per IP; assistant platforms with published egress IPs share 1,200 per minute per platform.
- Tools that run a booking step ( search_availability, ask_company, select_offer, select_extras, provide_customer_details, confirm_booking) count as turns: 400 per day per IP, or 200 per conversation and 50,000 per platform for assistant platforms, and 1,000 per day per rental company.
Testing
The company "Demo Bota" is always listed: its bookings run the full flow, are fictitious and are never charged. Do not test with real companies.
Privacy for people using the connector
- To book, the assistant sends the driver's name, email, phone and, optionally, notes and flight number. Lookups and cancellations use the booking reference and the email it was made with.
- That data goes to the rental company that makes the booking, which is its controller. Zentia Labs LLC, which operates Bota, processes it on the company's behalf, as for any other Bota channel. The AI assistant processes its user's data on its own account and under its own terms.
- Bota keeps the conversation of each booking for 90 days from its last message, or the period the rental company sets, and then deletes it. It never receives card details.
- To access, correct or delete your data, contact the rental company first. You can also write to info@bota-chat.com and we will pass your request to the company and help resolve it.
- Full details: Bota privacy policy, sub-processors and data deletion.
Terms of use of the connector
- The rental contract is between you and the rental company, under its own terms and conditions. The assistant must show them and get your acceptance before confirming a booking.
- Vehicles, availability, prices, deposits and cancellation rules are set by each rental company, and are the same as on its own channels.
- Bota only passes your request to the rental company and does not charge you anything: you pay the rental company, at the counter or through its payment link. Bota is paid by the rental companies that use it.
- A booking or cancellation only happens after you approve it. Use the booking reference to check it later.
- The connector is offered as is, with no guarantee that it will always be available or list every company. Usage limits apply (see rate limits).
- Support: info@bota-chat.com. Bota's terms of service govern its relationship with the rental companies.
Support: info@bota-chat.com · Machine guide