# BEEP.rent — car rental in Poland

> Search, price and book rental cars across Poland; the customer confirms on beep.rent.

- name: rent.beep/car-rental
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/rent.beep%2Fcar-rental
- tools: https://api.protogrid.dev/v1/servers/rent.beep%2Fcar-rental/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "car-rental": {
      "type": "http",
      "url": "https://mcp.beep.rent/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-19d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 18 of 18 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 10,515 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 31 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 18, about 10,515 tokens to load them all
- tool set hash: e1688f5fcc7f674703d4680ba508d178
- tools last changed: 2026-11-04T00:39:37.177Z
- badge: [![protogrid quality](https://protogrid.dev/badge/rent.beep/car-rental.svg)](https://protogrid.dev/servers/rent.beep/car-rental)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-04 `create_reservation` changed (outputSchema)
- 2026-11-04 `create_checkout` changed (outputSchema)
- 2026-11-04 `search_offers` changed (inputSchema)
- 2026-11-03 `search_long_term_offers` changed (inputSchema)
- 2026-11-03 `create_checkout` changed (inputSchema)
- 2026-11-03 `resolve_booking_link` changed (description)
  - before: Use when the user pastes a beep.rent link to one offer (from an e-mail, a campaign or a short beep.rent/r/ link). Returns search_id and offer_ref for get_offer, priced with the options the link advertised. Example: {"url": "https://beep.rent/pl-pl/wynajem-samochodu/?offer_car=...&pickup_parking=...&pickup_at=..."}.
  - after: Use when the user pastes a beep.rent link to one offer (from an e-mail, a campaign or a short beep.rent/r/ link). Returns search_id and offer_ref for get_offer, priced with the options the link advertised. A beep.rent offer page copied from the browser opens only there: the call then names its car to search for. Example: {"url": "https://beep.rent/pl-pl/wynajem-samochodu/?offer_car=...&pickup_parking=...&pickup_at=..."}.
- 2026-11-03 `find_pickup_points` changed (inputSchema)
- 2026-11-03 `get_offer` changed (inputSchema)
- 2026-11-03 `search_offers` changed (inputSchema)
- 2026-10-31 `find_pickup_points` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/rent.beep%2Fcar-rental/changes

## Remotes

- https://mcp.beep.rent/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (18)

- `cancel_reservation`: Use when the user asks to cancel: after verify_reservation_management, with its management_id (and the reservation_number when the code was sent for the user's e-mail), or with the reservation_number when the user's BEEP.rent account is connected. First call without confirm: it returns the refund and a confirmation_token and cancels nothing. Show the refund, get the user's explicit yes, then call again with confirm=true and that token. Cancellation is irreversible. Example: {"management_id":"from_verify","confirm":true,"confirmation_token":"from_preview"}.
- `confirm_reservation_code`: Use when the user gives you the 6-digit code they received for a new reservation. Never guess or invent a code. Returns the reservation status: the rental company may still have to accept it. Example: {"reservation_number":"AB12CD34","status_token":"from_reservation","code":"123456"}.
- `create_checkout`: Use after get_offer when the user chose an offer: freezes the final price, deposit, options and policies and returns checkout_id and a beep.rent link (continue_url) where the user can finish. Resend every option you applied in get_offer. Does not book anything. Show the user the price, the deposit and the cancellation policy before calling this tool. Example: {"search_id":"from_search","offer_ref":"from_offer","options":{"damage_waiver":true}}.
- `create_reservation`: Use only after the user explicitly asked to book and, asked in one question of its own, accepted the terms and the privacy policy and answered about marketing messages (a yes to the booking is not a yes to the terms): creates the reservation from checkout_id with the driver's details. The booking is not confirmed until the user enters the code sent to them (confirm_reservation_code) or pays on beep.rent. Calling again with the same checkout returns the same reservation. Show the user the price, the deposit and the cancellation policy before calling this tool. Example: {"checkout_id":"from_checkout","customer":{"first_name":"Anna","last_name":"Nowak","email":"anna@example.com","phone":"+48500600700"},"consents":{"terms":true,"rental_terms":true,"marketing":false}}.
- `find_pickup_points`: Use to find physical pickup desks near a city or location. Reads the shared public snapshot. Do not treat a pickup point as a guarantee of car availability. Examples: {"city":"krakow","radius_m":10000}; {"near":{"lat":50.06,"lng":19.94},"limit":5}.
- `get_city_prices`: Use for cached price examples before travel dates are chosen. These are dated examples, not live availability. Do not use for a binding quote. Examples: {"city":"Kraków"}; {"city":"wroclaw-krzyki","market":"en-pl"}.
- `get_offer`: Use after search_offers to read current pricing, deposit, extras and rental policies. Supplied options are applied on top of the search selections; omitted options keep the search values. Options from earlier get_offer calls are not remembered: resend every option you changed. detail "full" adds every photo; "policies" keeps the policies in a concise response. Do not use to book or confirm a reservation. Example: {"search_id":"from_search","offer_ref":"from_offer"}.
- `get_reservation_status`: Use to check whether a reservation is confirmed, awaits the user's code or payment, or awaits the rental company. Identify it with status_token from create_reservation, with the e-mail used for booking, with the management_id of the user's e-mail, or by its number alone when the user's BEEP.rent account is connected. Never say a reservation is confirmed unless this returns status confirmed. Examples: {"reservation_number":"AB12CD34","status_token":"from_reservation"}; {"reservation_number":"AB12CD34","email":"anna@example.com"}.
- `list_my_reservations`: Use when the user asks about their own BEEP.rent bookings. Lists the reservations of the e-mail the user verified with start_reservation_management (pass its management_id) or of the BEEP.rent account they connected: upcoming ones with the next pickup first, or with include_past the last 365 days, newest first. Each has its number, status, dates, pickup place, car and total. Example: {"management_id": "from_verify", "limit": 5}.
- `quote_extension`: Use when the user wants to return the car later, after verify_reservation_management, with its management_id (and the reservation_number when the code was sent for the user's e-mail), or with the reservation_number when the user's BEEP.rent account is connected: prices the extra days. Only a rental in progress can be extended. Changes nothing. Example: {"management_id":"from_verify","new_return_at":"2026-12-10T10:00:00+01:00"}.
- `request_confirmation_code`: Use when the user did not receive the 6-digit code for a new reservation or it expired. Sends a new code to the contact given at booking; do not call it unprompted. Example: {"reservation_number":"AB12CD34","status_token":"from_reservation"}.
- `request_extension`: Use after quote_extension when the user asked to extend. First call without confirm previews the request and returns confirmation_token; after the user's explicit yes call again with confirm=true, the token and the same new_return_at. The rental company decides; decision says how the user hears back. Example: {"management_id":"from_verify","new_return_at":"2026-12-10T10:00:00+01:00","confirm":true,"confirmation_token":"from_preview"}.
- `request_long_term_offer`: Use when the person wants one long-term package. By default returns use_web_form and continue_url without customer or consents: give the person the form and do not collect contact details. If direct inquiries are enabled, ask for privacy policy and marketing consent before submitting contact details. The office then contacts the person; this is not a booking. Example: {"car_id":"<car_id>","rent_length":"year1","mileage_limit":36000,"customer_type":"business","customer":{"first_name":"Anna","last_name":"Nowak","email":"anna@example.com","phone":"+48500600700"},"consents":{"privacy_policy":true,"marketing":false}}.
- `resolve_booking_link`: Use when the user pastes a beep.rent link to one offer (from an e-mail, a campaign or a short beep.rent/r/ link). Returns search_id and offer_ref for get_offer, priced with the options the link advertised. A beep.rent offer page copied from the browser opens only there: the call then names its car to search for. Example: {"url": "https://beep.rent/pl-pl/wynajem-samochodu/?offer_car=...&pickup_parking=...&pickup_at=..."}.
- `search_long_term_offers`: Use for a car rented for months or years (1 month renewed monthly to 3 years): monthly prices in PLN per mileage package, excluding VAT for businesses or including VAT for private customers, with the inquiry link of each package. Not for trips with dates: use search_offers. Filters take facets values; facets list them. Examples: {"rent_length":"year2","customer_type":"individual"}; {"brand":"Audi","monthly_cost_max":5000}.
- `search_offers`: Use when looking for available cars and full prices in Poland. Supply the whole trip when changing criteria; omitted options reset. Filters and sort are not remembered: repeat them on every page. Do not use for an existing reservation. Examples: {"pickup":{"query":"Kraków"},"pickup_at":"2026-12-01T10:00:00+01:00","return_at":"2026-12-08T10:00:00+01:00","sort":"price"}; {"search_id":"from_previous_result","offset":8,"sort":"price"}.
- `start_reservation_management`: Use when the user wants to see, cancel or extend their reservations: e-mails a 6-digit code to the booking's e-mail address and returns management_id. With the reservation number the code unlocks that reservation; without it, every reservation of that e-mail. Examples: {"reservation_number":"AB12CD34","email":"anna@example.com"}; {"email":"anna@example.com"}.
- `verify_reservation_management`: Use with the 6-digit code from the management e-mail: unlocks the reservation's summary and its cancellation and extension options or, for a code sent for an e-mail alone, that e-mail's reservations, for this conversation (2 hours). Go on with the management_id it returns. Never guess a code. Example: {"management_id":"from_start","code":"123456"}.
