MCP App Store
by KeenEthics

Overview

LeasingAI answers questions about apartment communities managed by LeasingAI clients: prices, available homes, floor plans, office hours, pet policy and the neighborhood. Renters can see open tour times and book, reschedule or cancel a tour. Data comes from each community's property management system.

Tools

book_tour

ChatGPT
Submits a tour time once you have the full name, email, US phone number and time. Never guess any of them — but never collect them in prose either: call get_tour_availability first and let its card gather what is missing. Use this tool only to submit a time the visitor has confirmed. Whether that CONFIRMS a tour or REQUESTS one depends on the community: read tour.status in the result — scheduled is booked, requested means the leasing team has it and has not confirmed the time yet. Say which one happened; never announce a booking for a request.

cancel_tour

ChatGPT
Cancels a booked tour. Confirm with the visitor first — this cannot be undone.

choose_community

ChatGPT
Shows the communities this app can answer for as a pickable list. CALL THIS — never answer in prose, and never ask which community they mean — whenever the visitor wants to choose, pick, browse or change community, has not chosen one yet, or asks about one other than the current one. Showing the list IS how you ask them. Omit query to show a first page they can pick from; pass a city, ZIP or name to narrow it. When the result says it is showing only some of the communities, page only when the visitor asks to see more results — then pass page (2, 3, …) with the SAME query, filters and limit; otherwise offer to narrow the search. Narrow further with maxRent, minBedrooms, maxBedrooms, minBathrooms, amenities, unitFeatures, petsAllowed, leaseTermMonths or a moveInFrom/moveInTo window — pass only the ones the visitor actually named, since each one narrows the list and several at once often leaves nothing. Every requirement is checked against the SAME home, so a result is about one apartment rather than about a building. Rows come back as confirmed matches or as possible ones carrying what is still unconfirmed: read those caveats out, never present a possible match as a match, and never repeat a requirement back as met when the row says it is unknown. If nothing matches you may be offered a requirement to drop — offer it to the visitor and let them decide; do NOT call this again with it removed. Then call set_community with the id they choose.

compare_properties

ChatGPT
Compares two or more communities side by side on rent, floor plans, amenities, pet policy and parking — pass fields to compare on something else. Use it when the visitor is weighing communities against each other, instead of calling the property tools once per community. Every id must have come from choose_community; never invent one, and never compare a community you could not look up — say which one you could not reach.

email_my_confirmation

ChatGPT
Emails the visitor's own tour confirmation — including its confirmation code — to the address their tour was booked with. Use it when they already have a tour here and cannot produce the code, which is the state book_tour reports instead of booking a second one. The code is NEVER returned to you: read the acknowledgement back as written, then ask them to read the code out of their inbox, and only then look the tour up with get_tour. The reply is the same whether or not a tour exists, so never present it as proof that one does.

get_floorplans

ChatGPT
Returns the property's floor plans narrowed to what the visitor asked for — pass bedrooms and/or bathrooms for an EXACT size ("show me the 2 bedrooms"), and maxRent for a budget. Use this instead of get_pricing_and_availability whenever a size or budget was named, rather than filtering a full list yourself. An empty result means no plan matches those filters, NOT that the community has none — say so, and offer to widen them.

get_location

ChatGPT
Returns where the current community is, plus nearby landmarks, transit and employers. Use for "where is it", commute and neighborhood questions. Call it straight away — you do not need to know which community first, and you must not ask the user which one they mean; if none has been chosen yet you get a picker back. Never web-search the address or reuse one from an earlier conversation or memory: this conversation may be about a different community than the one last discussed.

get_pricing_and_availability

ChatGPT
Returns the current community's rent and inventory in full: every floor plan with bedrooms, bathrooms, size, rent range, deposit and how many units are available, plus when that data was last refreshed. If the result carries availabilityNote, the unit counts could not be confirmed — say that note instead of any count. Use for any price or "what's available" question. Call it straight away — you do not need to identify the community first, and you must not ask the user which one they mean; if none has been chosen yet you get a picker back. Never quote rents from memory or an earlier conversation: rents change, and this result says when they were last refreshed. If the visitor asked for a specific size or budget, call get_floorplans instead of filtering this list yourself.

get_property_details

ChatGPT
Returns the current community's amenities, unit features, pet policy, parking, office hours, FAQ, application policy and neighborhood. Required for every such question. Call it straight away — you do not need to identify the community first, and you must not ask the user which one they mean; if none has been chosen yet you get a picker back. Never web-search this property and never answer from memory or an earlier conversation: this data is live.

get_property_overview

ChatGPT
Returns the current community for this conversation, with its name, address and contact details. That community is the default for every tool here, so you never need to identify it first. If the user says "this property" and you do not know which one they mean, call this instead of asking them, and never guess from memory, an earlier conversation, or a web search. If no community has been chosen yet you get a picker back instead. Only when they ask about a DIFFERENT community do you search for it and pass its propertyId — or pass slug if they gave you a leasing.ai property page URL.

get_tour

ChatGPT
Fetches a booked tour by its confirmation code.

get_tour_availability

ChatGPT
CALL THIS — never answer in prose — whenever the visitor wants to book, schedule, see or change a tour, including a bare "i want to book a tour". Call it even when no community is chosen and no date was given: it answers with a card that asks for whatever is missing, and showing that card IS how you ask. Never ask for the property, date, name, email or phone first. Only offer the times returned, and book them by passing the slotId each one carries. Pass dateFrom/dateTo only if the visitor named a period, and tourType only if they named a format. Pass the visitor's email to detect a tour they already have, and their name and phone too if the conversation already gave them — the card pre-fills those so they can book in one step. Do not ask for any of them just to call this. An empty list is NOT an error — ask for a preferred time within office hours and book it anyway.

reschedule_tour

ChatGPT
Moves a booked tour to a new time. If the failure message lists times that work, offer them to the visitor and call again with the one they pick. Otherwise, report the message as-is and do not retry — a failed reschedule can leave the original booking cancelled.

set_community

ChatGPT
Records which community this conversation is about, so later questions need no id. Pass propertyId when you have one, or name when the visitor simply named a community — a single community whose name matches is selected; anything else (several matches, none, or a match on a city rather than a name) is NOT, and the result tells you to call choose_community to show the visitor a picker. Never guess an id, and never announce a selection you did not make with this tool. Prefer this over passing propertyId to every tool; use propertyId there only for a one-off "and how about X?" comparison, which leaves the selection alone.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps