Search Bali villas, apartments and homes for rent or sale; live availability and prices.
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.
Checks whether a listing can be booked for given dates, at which rate and for how much — the same answer the listing page gives a visitor. Returns { available, reason, recommendedRate, options, bookedRanges, bookingUrl }. Each option states whether that rate is eligible (and why not), the rate per period, the first payment and the full payment schedule. Livuma charges guests no service fee, so the amounts are what the guest pays. `bookingUrl` opens the listing on livuma.com with these dates selected; the booking itself (card authorisation, 3-D Secure, identity verification) is completed there by the guest.
The listing's "id" from search results (GUID), a short /s/{id} id, or the listing URL.
Check-in date, yyyy-MM-dd. Required.
"dates" (default), "open_ended" (no end date, monthly) or "yearly" (fixed 12-month term).
Check-out date, yyyy-MM-dd. Omit for open_ended and yearly.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http homes https://livuma.com/mcp
Checks whether a listing can be booked for given dates, at which rate and for how much — the same answer the listing page gives a visitor. Returns { available, reason, recommendedRate, options, bookedRanges, bookingUrl }. Each option states whether that rate is eligible (and why not), the rate per period, the first payment and the full payment schedule. Livuma charges guests no service fee, so the amounts are what the guest pays. `bookingUrl` opens the listing on livuma.com with these dates selected; the booking itself (card authorisation, 3-D Secure, identity verification) is completed there by the guest.
| Argument | Type | Description |
|---|---|---|
| listingId* | string | The listing's "id" from search results (GUID), a short /s/{id} id, or the listing URL. |
| rentalMode | string | null | "dates" (default), "open_ended" (no end date, monthly) or "yearly" (fixed 12-month term). |
| checkInDate* | string | Check-in date, yyyy-MM-dd. Required. |
| checkOutDate | string | null | Check-out date, yyyy-MM-dd. Omit for open_ended and yearly. |
{
"type": "object",
"required": [
"listingId",
"checkInDate"
],
"properties": {
"listingId": {
"type": "string",
"description": "The listing's \"id\" from search results (GUID), a short /s/{id} id, or the listing URL."
},
"rentalMode": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"dates\" (default), \"open_ended\" (no end date, monthly) or \"yearly\" (fixed 12-month term)."
},
"checkInDate": {
"type": "string",
"description": "Check-in date, yyyy-MM-dd. Required."
},
"checkOutDate": {
"type": [
"string",
"null"
],
"default": null,
"description": "Check-out date, yyyy-MM-dd. Omit for open_ended and yearly."
}
}
}Returns what the public listing page shows for one listing: description, photos, all rates and minimum stays, amenities and included services, seasonal nightly pricing, published guest reviews, host verification, the booked/blocked calendar and the canonical url. With checkInDate (and checkOutDate, or a rentalMode) the response also includes a live availability quote for those dates.
| Argument | Type | Description |
|---|---|---|
| currency | string | null | "IDR" (default), "USD", or "EUR". |
| listingId* | string | The listing's "id" from search results (GUID). The short id from a /s/{id} link, or the listing URL itself, also work. |
| rentalMode | string | null | "dates" (default), "open_ended" or "yearly". |
| checkInDate | string | null | Optional check-in date, yyyy-MM-dd — adds a live quote for the stay. |
| checkOutDate | string | null | Optional check-out date, yyyy-MM-dd. |
{
"type": "object",
"required": [
"listingId"
],
"properties": {
"currency": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"IDR\" (default), \"USD\", or \"EUR\"."
},
"listingId": {
"type": "string",
"description": "The listing's \"id\" from search results (GUID). The short id from a /s/{id} link, or the listing URL itself, also work."
},
"rentalMode": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"dates\" (default), \"open_ended\" or \"yearly\"."
},
"checkInDate": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional check-in date, yyyy-MM-dd — adds a live quote for the stay."
},
"checkOutDate": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional check-out date, yyyy-MM-dd."
}
}
}Returns the valid listing-search values: property types, ownership types, common areas, currencies, rental modes and amenity names, plus notes on paging, budgets and bookability.
No arguments.
{
"type": "object",
"properties": {}
}Searches Livuma's live Bali rental and property-sale inventory with the same results, filters and prices as the livuma.com search page. Returns { items, page, pageSize, total, hasMore, filteredAfterPaging }. Each item has the canonical url, the primary photo, the price for this search (the stay total when dates are given, otherwise the per-period rate), the host's rates and minimum stays, amenities, rating, coordinates and isBookable. `total` is the number of database matches. When `filteredAfterPaging` is true, the exact per-stay price was applied after paging, so a page can hold fewer items than pageSize while `hasMore` is still true. One area is searched per request. Search results are not a booking quote: availability, the applicable rate and the exact price are confirmed only by the availability check for specific dates.
| Argument | Type | Description |
|---|---|---|
| area | string | null | One area name, e.g. "Canggu". Free text, geocoded server-side. |
| page | integer | null | 1-based page number. |
| offer | string | null | "rent" or "sale". Omit for both. |
| currency | string | null | "IDR" (default), "USD", or "EUR". |
| latitude | number | null | Center latitude for coordinate-based location filtering (use with longitude; alternative to area). |
| maxPrice | number | null | Budget in `currency`, compared against the price shown for this search: the stay TOTAL when check-in and check-out are given, otherwise the monthly rate (yearly in yearly mode) or the asking price for sales. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
| minPrice | number | null | Minimum budget in `currency`, same unit rules as maxPrice. |
| minRooms | integer | null | Minimum number of bedrooms. |
| pageSize | integer | null | Results per page, 1-100 (default 20). |
| amenities | array | null | Amenity filters, e.g. ["pool","wifi","pet_friendly"]. |
| longitude | number | null | Center longitude for coordinate-based location filtering (use with latitude). |
| excludeIds | array | null | Listing GUIDs to exclude, e.g. results already shown to the user. |
| rentalMode | string | null | How a rental stay is priced: "dates" (default — give checkInDate + checkOutDate, or neither to browse monthly rates), "open_ended" (checkInDate only, monthly rate, no end date), "yearly" (checkInDate only, fixed 12-month term). |
| checkInDate | string | null | Check-in date, yyyy-MM-dd. |
| areaRadiusKm | number | null | Search radius in km around the area or the coordinates (default 10, max 20). |
| checkOutDate | string | null | Check-out date, yyyy-MM-dd. Omit for open_ended and yearly. |
| propertyType | string | null | Property type name, e.g. "Villa", "Apartment". |
| ownershipType | string | null | Ownership type for sales, e.g. "Freehold". Not used for rentals. |
| includeInsights | boolean | Include AI-extracted photo and description insights. Off by default — they are large. |
{
"type": "object",
"properties": {
"area": {
"type": [
"string",
"null"
],
"default": null,
"description": "One area name, e.g. \"Canggu\". Free text, geocoded server-side."
},
"page": {
"type": [
"integer",
"null"
],
"default": null,
"description": "1-based page number."
},
"offer": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"rent\" or \"sale\". Omit for both."
},
"currency": {
"type": [
"string",
"null"
],
"default": null,
"description": "\"IDR\" (default), \"USD\", or \"EUR\"."
},
"latitude": {
"type": [
"number",
"null"
],
"default": null,
"description": "Center latitude for coordinate-based location filtering (use with longitude; alternative to area)."
},
"maxPrice": {
"type": [
"number",
"null"
],
"default": null,
"description": "Budget in `currency`, compared against the price shown for this search: the stay TOTAL when check-in and check-out are given, otherwise the monthly rate (yearly in yearly mode) or the asking price for sales."
},
"minPrice": {
"type": [
"number",
"null"
],
"default": null,
"description": "Minimum budget in `currency`, same unit rules as maxPrice."
},
"minRooms": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Minimum number of bedrooms."
},
"pageSize": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Results per page, 1-100 (default 20)."
},
"amenities": {
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null,
"description": "Amenity filters, e.g. [\"pool\",\"wifi\",\"pet_friendly\"]."
},
"longitude": {
"type": [
"number",
"null"
],
"default": null,
"description": "Center longitude for coordinate-based location filtering (use with latitude)."
},
"excludeIds": {
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null,
"description": "Listing GUIDs to exclude, e.g. results already shown to the user."
},
"rentalMode": {
"type": [
"string",
"null"
],
"default": null,
"description": "How a rental stay is priced: \"dates\" (default — give checkInDate + checkOutDate, or neither to browse monthly rates), \"open_ended\" (checkInDate only, monthly rate, no end date), \"yearly\" (checkInDate only, fixed 12-month term)."
},
"checkInDate": {
"type": [
"string",
"null"
],
"default": null,
"description": "Check-in date, yyyy-MM-dd."
},
"areaRadiusKm": {
"type": [
"number",
"null"
],
"default": null,
"description": "Search radius in km around the area or the coordinates (default 10, max 20)."
},
"checkOutDate": {
"type": [
"string",
"null"
],
"default": null,
"description": "Check-out date, yyyy-MM-dd. Omit for open_ended and yearly."
},
"propertyType": {
"type": [
"string",
"null"
],
"default": null,
"description": "Property type name, e.g. \"Villa\", \"Apartment\"."
},
"ownershipType": {
"type": [
"string",
"null"
],
"default": null,
"description": "Ownership type for sales, e.g. \"Freehold\". Not used for rentals."
},
"includeInsights": {
"type": "boolean",
"default": false,
"description": "Include AI-extracted photo and description insights. Off by default — they are large."
}
}
}