# Landing public tools — full catalog

Every tool on Landing's public MCP server (`POST https://www.hellolanding.com/mcp/public`,
JSON-RPC, no auth), with parameters and — for read-only tools — the
equivalent plain HTTP GET endpoint. Machine-readable version:
https://www.hellolanding.com/api/public/tools.json (a GET mirror of the MCP `tools/list`
response — fetch it if you can't POST).

Generated from the live tool set, so this page cannot go stale. Dates are
YYYY-MM-DD. See also: REST reference https://www.hellolanding.com/api/public · OpenAPI
https://www.hellolanding.com/api/public/openapi.json · agent guide
https://www.hellolanding.com/llms.txt

## list_markets_tool

List the Landing markets currently accepting bookings (one row per market).

Use this first if the user mentions a city you don't recognize — match
against `name`, `slug`, or `state` to find the right market slug for
`search_apartments`.

**Parameters**

- `state` (string, optional) — Optional 2-letter state abbreviation (e.g. "AL", "TX") to filter by.

**Call it**

- MCP: call `list_markets_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/markets`
- Example: https://www.hellolanding.com/api/public/markets

**Example response (abridged)**

```json
{
  "markets": [
    {
      "slug": "birmingham",
      "name": "Birmingham",
      "state": "AL"
    }
  ],
  "count": 1
}
```

## get_market_filters_tool

Returns all available filter options for a given market — bedroom counts,
amenities, price range, bathroom options, neighborhoods, and sort orders.

Call this before search_apartments when you want to show the guest what
they can filter by, or to validate that a requested filter makes sense
for the market (e.g. confirming a neighborhood slug exists).

Returns:
- `bedrooms` — bedroom counts actually available in the market (only counts with published homes are included).
- `amenities` — filterable amenity options with their search_apartments key.
- `min_bathrooms` — bathroom minimums actually available in the market.
- `price_range` — lowest and highest monthly rent currently listed in the market.
- `neighborhoods` — neighborhoods with available homes (id and slug for filtering).
- `sort_options` — valid values for search_apartments `sort_by`.

**Parameters**

- `market` (string, required) — Market slug (e.g. "austin-tx"). Use list_markets to discover slugs.

**Call it**

- MCP: call `get_market_filters_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/market-filters`
- Example: https://www.hellolanding.com/api/public/market-filters?market=birmingham

**Example response (abridged)**

```json
{
  "market": {
    "slug": "birmingham"
  },
  "bedrooms": [
    1,
    2
  ],
  "amenities": [
    {
      "label": "Pets allowed",
      "filter": "pets"
    }
  ]
}
```

## search_apartments_tool

Search Landing's published furnished apartments in a given market.

`market` (required) is a market slug — call `list_markets` to discover slugs,
or `get_market_filters` to see all available filter options for a specific market.
All other inputs are optional filters.

**Availability.** Pass `start_date` and/or `end_date` to restrict results to
homes open for the full requested window. Use `end_date: "indefinite"` to filter
for LandingFlex-eligible homes only.

**Proximity search.** Pass `near_latitude` + `near_longitude` (and optionally
`near_radius_miles`, default 5) to find homes within a given distance of a point
of interest — an office, a landmark, an address the guest geocoded. Each home in
the response includes `latitude` and `longitude` so distances can be computed.

**LandingFlex.** Landing's open-ended stay option with the lowest rates.
Guests commit to a minimum number of nights (30, 90, 180, or 365) and their
discount follows them across 250+ markets. Call `get_flex_options` on a home
slug to confirm which tiers it accepts.

**Pagination.** Results are paginated. Pass `page` (1-indexed, default 1) and
`per_page` (default 25, max 50). The response always includes `total_count`
(total matching homes) and `total_pages` (number of pages at the requested
per_page). Fetch subsequent pages by incrementing `page` while `page <= total_pages`.

**Per-home response.** Each result carries:
- `price` + `duration_label` — per-unit rate: e.g. `65` + `"/night"` or `2100` + `"/mo"`.
- `display_price_with_discount` + `display_price_label` — all-in total with correct label:
  e.g. `318` + `" for 2 nights"` or `2100` + `" per month"`. Always pair these two together.
- `price_note` — "Price includes all fees except taxes."
- `home_url` — hellolanding.com link with search dates pre-filled. Share with the guest.
- `hero_image_url` — a photo of the home, when one has been uploaded.
- `flex_options` — LandingFlex commitment tiers with monthly rates, always included for
  eligible homes. Use these to show guests a better rate without a separate API call.
- `property.member_rating` — guest post-stay survey rating (`average`, `count`)
  for the building this home is in, when available.
  Omitted (no `property` key) for properties with no ratings yet.

**Parameters**

- `market` (string, required) — Market slug (e.g. "birmingham", "austin-tx"). Use list_markets to discover slugs.
- `start_date` (string, optional) — Move-in date (YYYY-MM-DD). Filters to homes available on or before this date.
- `end_date` (string, optional) — Move-out date (YYYY-MM-DD) for a fixed stay, or "indefinite" for LandingFlex.
- `committed_nights` (integer, optional) — LandingFlex commitment tier — only valid with end_date="indefinite".
- `min_bedrooms` (integer, optional) — Minimum bedroom count (0 = studio).
- `max_bedrooms` (integer, optional) — Maximum bedroom count.
- `min_bathrooms` (integer, optional) — Minimum bathroom count.
- `min_price` (integer, optional) — Minimum monthly rent in USD.
- `max_price` (integer, optional) — Maximum monthly rent in USD.
- `pets` (boolean, optional) — When true, only return pet-friendly homes.
- `parking` (boolean, optional) — When true, only return homes with parking available.
- `pool` (boolean, optional) — When true, only return homes with a pool.
- `gym` (boolean, optional) — When true, only return homes with a fitness center.
- `in_unit_laundry` (boolean, optional) — When true, only return homes with in-unit washer/dryer.
- `near_latitude` (number, optional) — Latitude of a point of interest (e.g. an office or landmark). Use with near_longitude and near_radius_miles to find homes within a given distance.
- `near_longitude` (number, optional) — Longitude of a point of interest. Use with near_latitude and near_radius_miles.
- `near_radius_miles` (number, optional) — Search radius in miles around near_latitude/near_longitude. Defaults to 5 miles when near_latitude and near_longitude are provided.
- `sort_by` (string, optional) — Sort order: price_asc, price_desc, availability (earliest move-in first), newest.
- `page` (integer, optional) — 1-indexed page number.
- `per_page` (integer, optional) — Page size (capped at 50).

**Call it**

- MCP: call `search_apartments_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/search` (REST param → tool argument: `check_in`→`start_date`, `check_out`→`end_date`, `bedrooms`→`min_bedrooms`)
- Example: https://www.hellolanding.com/api/public/search?market=birmingham

**Example response (abridged)**

```json
{
  "market": {
    "slug": "birmingham"
  },
  "total_count": 12,
  "homes": [
    {
      "slug": "apartment-in-birmingham-example"
    }
  ]
}
```

## get_home_tool

Fetch a single Landing home by its slug — property details, amenities,
photos, **flex pricing**, **the full availability calendar**, and a
pre-filled `reservation_link` so the agent doesn't have to probe dates
with `check_availability` or assemble booking URLs by hand.

Use this after `search_apartments` returns a slug the user is interested in.

**Pricing.** Two ways to read the price:
- `price` + `duration_label` → per-unit rate, e.g. `65` + `"/night"` = $65/night or `2100` + `"/mo"` = $2,100/mo.
- `display_price_with_discount` + `display_price_label` → all-in total with the correct label,
  e.g. `318` + `" for 2 nights"` = $318 for 2 nights, or `2100` + `" per month"` = $2,100/mo.
Always use `display_price_label` with `display_price_with_discount` — not with `duration_label`.
`price_note` explains what's included. Call `get_quote` for the full checkout breakdown.

**Availability.** The response includes an `availability` section with:
- `bookable_windows` — contiguous open-for-occupancy periods, each with
  `start_date`, `end_date` (nullable for open-ended), `nights`,
  `can_move_in_at_start`, `can_move_out_at_end`, and `fits_minimum_stay`.
  This is what most agents want — pick a window, then optionally confirm
  specific dates with `check_availability`.
- `ranges` — raw booking-range segments (same shape the PDP calendar
  consumes) with `move_in_allowed`, `move_out_allowed`,
  `open_for_occupancy`, and `unbookable_reason`. Use these when you need
  to know *why* a window is blocked.
- `earliest_available_date` — first date the home accepts a new reservation.
- `minimum_nightly_stay_by_date` — only present when the minimum varies
  across dates.

**Reservation link.** Pass `start_date`, `end_date`, and (for flex)
`committed_nights` to bake those into `reservation_link` — the agent can
share that URL with the user to land them on the PDP pre-filled with the
booking intent. The calendar is also clipped to the start/end window.

**Property.** The `property` object describes the building the home is in
(shared across all units at that address): `name`, `address`, `amenities`,
`member_rating` (guest post-stay survey `average` + `count` — omitted when
the property has no ratings yet), `recent_reviews` (up to 5 guest comments
the reviewer opted to share publicly, most recent first — omitted when none
exist), and `walk_score`/`walk_score_description`/
`transit_score`/`transit_score_description`/`bike_score`/
`bike_score_description` (omitted when not yet computed for this property).

**Photos.** `photos` combines the home's own unit-specific photos with the
property's building-level photos (exterior, common areas, amenities) —
same precedence the OTA listing feeds use: unit photos first, then
building photos. Each entry has a `source` (`"unit"` or `"building"`).
The first entry has `hero: true`.

**Parameters**

- `slug` (string, required) — Home slug (e.g. "apartment-in-birmingham-landing-midtown-200-5").
- `start_date` (string, optional) — Move-in date (YYYY-MM-DD). Used to populate the reservation_link and to clip the availability calendar.
- `end_date` (string, optional) — Move-out date (YYYY-MM-DD) for a fixed stay, or the literal string "indefinite" for flex.
- `committed_nights` (integer, optional) — Only meaningful with end_date="indefinite". Picks the flex commitment tier baked into reservation_link.

**Call it**

- MCP: call `get_home_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}`
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example

**Example response (abridged)**

```json
{
  "slug": "apartment-in-birmingham-example",
  "bedrooms": 1,
  "photos": []
}
```

## get_flex_options_tool

Return the flex (open-ended) commitment tiers a given home accepts, so the
agent doesn't suggest a `committed_nights` value the home will reject.

Two things gate flex on a home:
- `eligible_for_flexible_stays` — set to false on homes that opt out of
  flex entirely. When false, `available_tiers` is empty.
- `minimum_nightly_stay` — a tier is only valid when its night count is
  ≥ the home's minimum nightly stay. Higher minimums drop the shorter
  tiers.

Use this before calling `check_availability` with `end_date: "indefinite"`.

Comparing this home's fixed-stay price against its flex tiers? Call
`get_home_offers` instead — one call prices every tier this home accepts.

**Parameters**

- `home_slug` (string, required) — Home slug to inspect.

**Call it**

- MCP: call `get_flex_options_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/flex-options` (REST param → tool argument: `slug`→`home_slug`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/flex-options

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "available_tiers": [
    {
      "committed_nights": 180
    }
  ]
}
```

## check_availability_tool

Check whether a specific Landing home is bookable for the requested dates,
and return the structured reason if not. Considers third-party reservations,
the home's minimum nightly stay, and member-applied availability blocks.

For flex (open-ended) stays, pass `end_date: "indefinite"` plus a
`committed_nights` value. Not every home accepts every tier — call
`get_flex_options` first to see what a specific home supports.

Returns:
- `available` (boolean) — whether the dates are bookable.
- `ranges` — array of date segments with `move_in_allowed`, `move_out_allowed`,
  `open_for_occupancy`, and an `unbookable_reason` when blocked. Use these
  to suggest alternative windows when the requested dates are unavailable.
- `minimum_nightly_stay` — stays shorter than this are rejected.
- `earliest_available_date` — first date the home accepts a new reservation.

**Parameters**

- `home_slug` (string, required) — Home slug to check.
- `start_date` (string, required) — Move-in date (YYYY-MM-DD).
- `end_date` (string, optional) — Move-out date (YYYY-MM-DD) for a fixed stay, or the literal string "indefinite" for flex.
- `committed_nights` (integer, optional) — Required when end_date="indefinite".

**Call it**

- MCP: call `check_availability_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/availability` (REST param → tool argument: `slug`→`home_slug`, `check_in`→`start_date`, `check_out`→`end_date`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/availability?check_in=2026-09-01

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "available": true
}
```

## get_quote_tool

Real, date-specific anonymous quote for a home. Mirrors what an unauthenticated
visitor sees in checkout: monthly rent after seasonal adjustments and length-of-stay
discounts, the first-month charge, ongoing monthly cost, and an estimated total.

For flex (open-ended) stays, pass `end_date: "indefinite"` plus a `committed_nights`
value. Not every home accepts every tier — call `get_flex_options` first.

Member-only adjustments (promo codes, account credit, membership pricing, parking
selections, pets) are not applied. For a member-specific quote, the guest must
sign in and use the website checkout.

Returns:
- `monthly_rent` / `nightly_rate` — anonymous rates for these dates.
- `term_duration_label` — e.g. "5 months", "30 nights".
- `checkout_total` — what charges at booking time.
- `monthly_total` — recurring monthly charge after the first month.
- `total_cost_estimate` — full stay cost across the monthly billing schedule.
- `total_discount` — sum of seasonal + length-of-stay discounts applied.
- `currency` — always "USD".
- `available` — false when the home is not bookable for these dates.
  `unbookable_reason` is the same structured, calendar-range reason
  `check_availability` returns (e.g. reserved, availability block) —
  present when the block is date-specific. `unavailable_reason` is a
  free-text sentence covering ALL blocks, including non-calendar ones
  (e.g. the home's `available_from` cutoff); it's always present when
  `available` is false, so treat it as the reliable fallback and
  `unbookable_reason` as an optional, more structured detail.

Comparing a home's fixed-stay quote against its flex tiers? Call
`get_home_offers` instead of this tool once per tier — one call returns
every bookable offer for the home.

**Parameters**

- `home_slug` (string, required) — Home slug to quote.
- `start_date` (string, required) — Move-in date (YYYY-MM-DD).
- `end_date` (string, required) — Move-out date (YYYY-MM-DD) for a fixed stay, or the literal string "indefinite" for flex.
- `committed_nights` (integer, optional) — Required when end_date="indefinite".

**Call it**

- MCP: call `get_quote_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/quote` (REST param → tool argument: `slug`→`home_slug`, `check_in`→`start_date`, `check_out`→`end_date`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/quote?check_in=2026-09-01&check_out=2026-12-01

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "charge_schedule": {
    "total_cost": 6300.0
  }
}
```

## get_home_offers_tool

Every bookable pricing offer for one home at a single move-in date, in one
call — priced through the same live pricing engine as `get_quote`
(checkout-grade, not an estimate), each carrying any active special
offer/discount already applied (see `deal_applied`).

Pass `end_date` for a single fixed-stay offer, same as `get_quote`. Omit
`end_date` to instead receive one offer per flex (open-ended) tier this
home accepts — replacing what would otherwise be a `get_flex_options`
call plus one `get_quote` call per tier. There is no bare "default"
fixed-length offer: a fixed stay always needs a specific `end_date`.

Offers that aren't bookable for the requested start date are left out of
`offers` rather than included as an error entry; `offers: []` means
nothing was bookable at all. `unavailable_reason` (free text, always
present in that case) and `unbookable_reason` (the same structured,
calendar-range enum `check_availability` uses — present only for
date-specific blocks) explain why, same as `get_quote`.

Does not include `cancellation_terms` — call `get_policies_faq` for the
general cancellation policy; exact per-stay terms are confirmed at
checkout. `get_quote`, `get_flex_options`, and `estimate_total_cost`
remain available for single-number callers.

**Parameters**

- `home_slug` (string, required) — Home slug to price.
- `start_date` (string, required) — Move-in date (YYYY-MM-DD).
- `end_date` (string, optional) — Move-out date (YYYY-MM-DD) for a single fixed-stay offer. Omit to receive one offer per flex tier this home accepts instead.

**Call it**

- MCP: call `get_home_offers_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/offers` (REST param → tool argument: `slug`→`home_slug`, `check_in`→`start_date`, `check_out`→`end_date`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/offers?check_in=2026-09-01

## booking_intent_tool

Save the guest's interest in a home so Landing can follow up, then
return a direct checkout link for them to complete the booking.

Call this once the guest has confirmed which home and dates they want —
ideally after get_quote shows them a price they like. Calling it more
than once for the same email is safe; it won't create duplicates.

The guest must create a Landing account and add a payment method to
finalise the reservation — that all happens on hellolanding.com via
the checkout_url this tool returns.

Returns:
- `checkout_url` — direct link to payment; share this with the guest.
- `intent_id` — a reference number the guest can give to Landing support if they need help.
- `email` / `phone` — echoed back for confirmation.
- `home_slug` / `start_date` / `end_date` — echoed when provided.

**Parameters**

- `email` (string, required) — Guest email address. Used for deduplication and follow-up.
- `phone` (string, optional) — Guest phone number (optional). E.164 format preferred.
- `name` (string, optional) — Guest full name (optional).
- `home_slug` (string, optional) — Slug of the home the guest intends to book (optional but recommended).
- `start_date` (string, optional) — Requested move-in date (YYYY-MM-DD).
- `end_date` (string, optional) — Requested move-out date (YYYY-MM-DD) for a fixed stay, or "indefinite" for LandingFlex.
- `committed_nights` (integer, optional) — LandingFlex commitment tier — required when end_date="indefinite".

**Call it**

- MCP: call `booking_intent_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: none — this tool writes, so it is MCP-only.

## compare_homes_tool

Side-by-side comparison of 2-4 Landing homes — price, size, amenities,
ratings, and availability in one call, instead of stitching together
multiple get_home calls yourself.

Pass 2-4 home slugs (from search_apartments or get_home results). Slugs
that don't resolve to a home are reported in `not_found` rather than
failing the whole request.

**Parameters**

- `home_slugs` (array, required) — 2-4 home slugs to compare.

**Call it**

- MCP: call `compare_homes_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/compare` (REST param → tool argument: `slugs`→`home_slugs`)
- Example: https://www.hellolanding.com/api/public/compare?slugs=apartment-in-birmingham-example,apartment-in-southside-example

**Example response (abridged)**

```json
{
  "homes": [],
  "not_found": []
}
```

## get_deals_tool

Currently discounted homes in a market, surfaced most-vacant-first.

Landing auto-generates a special offer from a home's vacancy — the more
days a home has sat vacant, the larger the discount its special-offer
table produces (same engine search_apartments and get_quote use). So this
scans the 100 most-vacant published homes in the market and
returns up to 10 that carry an active discount today, most
vacant first. Each deal includes `vacant_days`. A home not appearing here
may still carry a smaller discount, or none right now. Call get_quote on a
specific home for the exact breakdown, or get_home_offers for its exact
breakdown across every stay length (fixed + flex tiers) at once.

**Parameters**

- `market` (string, required) — Market slug. Use list_markets to discover slugs.

**Call it**

- MCP: call `get_deals_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/deals`
- Example: https://www.hellolanding.com/api/public/deals?market=birmingham

**Example response (abridged)**

```json
{
  "market": {
    "slug": "birmingham"
  },
  "deals": []
}
```

## estimate_total_cost_tool

Verified all-in cost for a stay at a Landing home — the same live pricing
engine as get_quote, summarized as a single bottom-line total for the
full stay length rather than a line-item checkout breakdown.

Every number in the response is real, date-specific pricing for this
home — there's no estimation or assumption involved. Use get_quote
instead when you need the itemized charge schedule (checkout total,
monthly total, deferred charges, etc.).

**Parameters**

- `home_slug` (string, required) — Home slug to estimate.
- `start_date` (string, required) — Move-in date (YYYY-MM-DD).
- `end_date` (string, required) — Move-out date (YYYY-MM-DD) for a fixed stay, or the literal string "indefinite" for flex.
- `committed_nights` (integer, optional) — Required when end_date="indefinite".

**Call it**

- MCP: call `estimate_total_cost_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/total-cost` (REST param → tool argument: `slug`→`home_slug`, `check_in`→`start_date`, `check_out`→`end_date`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/total-cost?check_in=2026-09-01&check_out=2026-12-01

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "total_cost_estimate": 6300.0
}
```

## get_market_stats_tool

Market-level stats for a Landing market: average monthly rent by bedroom
count, total published inventory, and the neighborhoods with the most
availability. Useful for cross-market comparisons ("is Austin or Dallas
cheaper for a 1BR?") without paging through search_apartments results.

Rents are unweighted averages of each home's base monthly rate (before
seasonal/length-of-stay discounts) across currently published homes.

**Parameters**

- `market` (string, required) — Market slug. Use list_markets to discover slugs.

**Call it**

- MCP: call `get_market_stats_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/market-stats`
- Example: https://www.hellolanding.com/api/public/market-stats?market=birmingham

**Example response (abridged)**

```json
{
  "inventory_count": 42,
  "average_rent_by_bedroom": []
}
```

## get_neighborhood_info_tool

Neighborhood context for a home: description, market/city, and the same
walk/transit/bike score shown on hellolanding.com.

Does not estimate commute time to a specific address — Landing hasn't
wired a routing/distance-matrix integration into this tool yet. If asked
for a commute estimate, say so explicitly rather than guessing; only the
neighborhood's general walkability/transit score is available today.

**Parameters**

- `home_slug` (string, required) — Home slug to look up. Use search_apartments or get_home to find one.

**Call it**

- MCP: call `get_neighborhood_info_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/neighborhood` (REST param → tool argument: `slug`→`home_slug`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/neighborhood

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "walk_score": {
    "walk_score": 77
  }
}
```

## get_policies_faq_tool

Grounded, conservative answers to the most common Landing policy questions
(deposits, pets, parking, cancellation, qualification, LandingFlex,
utilities, move-in). Use this instead of guessing at policy specifics —
where an exact number (deposit amount, cancellation window) depends on
the home/market/reservation, the answer says so explicitly and points to
get_quote, checkout, or Landing support rather than inventing a figure.

Pass no `topic` to get all entries, or one of:
security_deposit, pets, parking, cancellation_policy, qualification_requirements, landing_flex, utilities_and_furnishing, move_in_process.

**Parameters**

- `topic` (string, optional) — Optional — return only this topic's entry. Omit to get all entries.

**Call it**

- MCP: call `get_policies_faq_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/policies-faq` (REST param → tool argument: `q`→`topic`)
- Example: https://www.hellolanding.com/api/public/policies-faq

**Example response (abridged)**

```json
{
  "entries": [
    {
      "topic": "pets",
      "answer": "Pet policies are set per home."
    }
  ]
}
```

## get_reviews_tool

All guest reviews for a home's building, paginated — use this when the
guest wants to read more than the handful get_home previews.

Reviews are property-level (shared across every unit in the building) and
come from the same post-stay guest surveys that back `member_rating`. Only
comments the reviewer opted to share publicly are returned, most recent
first.

`total_reviews` is the full count of shared reviews for the building; page
through them with `page`/`per_page` (default 10, max
25) while `page <= total_pages`.

**Parameters**

- `home_slug` (string, required) — Home slug. Use search_apartments or get_home to find one.
- `page` (integer, optional) — 1-indexed page number.
- `per_page` (integer, optional) — Reviews per page (capped at 25).

**Call it**

- MCP: call `get_reviews_tool` on `POST https://www.hellolanding.com/mcp/public`
- GET: `/api/public/homes/{slug}/reviews` (REST param → tool argument: `slug`→`home_slug`)
- Example: https://www.hellolanding.com/api/public/homes/apartment-in-birmingham-example/reviews

**Example response (abridged)**

```json
{
  "home_slug": "apartment-in-birmingham-example",
  "total_reviews": 12,
  "reviews": []
}
```

