AskRentAI
Server Details
Ask your Rent Manager portfolio anything: live, read-only financials, rent roll, leasing.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 83 tools
Despite 83 tools, most have explicit, cross-referenced scopes (e.g. analyze_service_issues vs get_work_orders vs get_resident_concerns, analyze_aged_receivables vs analyze_delinquency, analyze_financials vs analyze_pl_trend vs analyze_noi). The remaining risk is a cluster of similar financial/P&L and rent-roll tools plus the run_report catch-all, which an agent could pick wrongly under time pressure.
The dominant pattern is verb_noun (analyze_*, get_*, list_*, download_*), but a large minority are bare nouns or noun phrases: trial_balance, lease_expirations, move_ins_outs, vendor_compliance, make_ready_summary, unit_marketing_status, lead_source_summary. Conventions are mixed yet still readable and largely descriptive.
83 tools is far beyond a coherent selectable surface; even for a broad property-management ERP, the sheer number forces the agent to sift through dozens of near-adjacent report wrappers. Many could be consolidated behind a report-id/parameter interface.
Read/analytics coverage is impressively broad across AR/AP, financials, leasing, units, maintenance, utilities, attachments, and connections. However, the surface is entirely read-only — no create/update/delete for tenants, work orders, bills, prospects, or leases — and there are few property-level detail tools, leaving dead ends for any mutating workflow.
Publisher details
- Operator
- Not available
- Operator website
- https://askrentai.com · Publisher source
- Vendor relationship
- Not available
- Documentation
- https://askrentai.com/connect · Publisher source
- Trust center
- Not available
- Restrictions
- Not available
Available Tools
83 toolsanalyze_aged_payablesAnalyze Aged PayablesARead-onlyIdempotentInspect
Accounts-payable aging snapshot (AgedPayables, 79).
AP by aging bucket (Current / 1-30 / 31-60 / 61+), top GL accounts
owed, and a focused list of GL accounts with 61+ day balances. Mirror
image of analyze_aged_receivables. Scope to a single park or portfolio
with portfolio / property_ids — the report honors PropertyIDs
even though its CSV has no Property column for client-side filtering.
Slow when unscoped — a portfolio-wide first call takes 1-3 minutes. Scoping to a park or portfolio returns in seconds. Follow-up queries within 5 minutes are cached and return instantly.
Args: portfolio: Portfolio name or 3-letter prefix. property_ids: Comma-separated property IDs. Alternative to portfolio. as_of_date: MM/DD/YYYY for the as-of snapshot. Defaults to today. top_n: Number of top GL accounts to list (default 10, max 50).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_aged_receivablesAnalyze Aged ReceivablesBRead-onlyIdempotentInspect
Aged receivables (30 / 31-60 / 61-90 / 91+) for a portfolio.
Pulls AgedReceivables (78), aggregates per property, ranks delinquent tenants. Answers: 'who's most past-due', 'how much is 90+ days old', 'what's our total AR for the Main Street portfolio'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_autopay_adoptionAnalyze Autopay AdoptionARead-onlyIdempotentInspect
Autopay / ePay enrollment — how many residents are on automatic payments.
Runs TenantAutoPayConfiguration (report 553): count enrolled, active this month, and breakdowns by payment type (Total vs Current Balance Due vs fixed amount), frequency, and payment-day spread. A collections-efficiency lever. Use for "how many residents are on autopay", "autopay adoption", "ePay enrollment breakdown". Portfolio-wide only (RM doesn't expose a property column on this report).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location. Returns: result
analyze_availabilityAnalyze AvailabilityARead-onlyIdempotentInspect
Available (vacant) inventory + exposure by property and unit type.
Runs RM's ReportWriter 'Available Inventory Summary' (looked up by name): per-property vacancy rate, count of available units by unit type (MH Lot, RV, Apt, DOH, ...), and average days vacant per type. Use for "what's our available inventory / exposure", "vacancy rate by property", "which parks have the most vacant lots". Scope to a portfolio/property set for a fast answer (unscoped is ~2 min). For a unit-level vacant list use analyze_vacancy.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, property_ids. Returns: result
analyze_balance_sheetAnalyze Balance SheetARead-onlyIdempotentInspect
Balance sheet (Assets / Liabilities / Equity) as of a date.
Downloads BalanceSheet (report 38) CSVs in parallel per property. With no portfolio/property_ids, pulls the company-wide balance sheet.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, as_of_date, show_detail, +1 more. Returns: result
analyze_cash_flowAnalyze Cash FlowARead-onlyIdempotentInspect
Indirect-method cash flow per property (CashFlow, report 54).
Net Income, total adjustments, net change in cash. Adjustments bucketed by Account Type (Other Current Asset/Liability, Fixed Asset, Long Term Liability, Equity). show_detail=True breaks out per-property adjustment lines.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +2 more. Returns: result
analyze_delinquencyAnalyze DelinquencyARead-onlyIdempotentInspect
Delinquency by tenant + charge type (rent / utilities / late / other).
Pulls Delinquency (85). Complement to analyze_aged_receivables — same data sliced by charge category instead of aging bucket. Answers: 'who's behind on rent vs utilities', 'how much in late fees', 'top 10 delinquent tenants broken down by charge type'.
Output includes a footer note: Rent Manager's API for this report excludes tenants who have a balance but no current unit (orphaned late fees from former tenants, etc.). The RM UI version includes those. Customers cross-checking the two may see a small delta — typically 1-2 tenants / $50-200.
location (optional): a Rent Manager Location ID, a comma-separated list,
or "all" to run across every Location on this connection (see
list_locations). Blank = all Locations if the connection has several, else its only Location. Output
is labelled per Location; a Location that can't be reached is listed as
skipped.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_evictionsAnalyze EvictionsARead-onlyIdempotentInspect
Open evictions for a portfolio (OpenEvictions, report 971).
Per-property count, total balance at risk, average/oldest days in stage, reason histogram, and top-N oldest open cases. Answers: 'how many open evictions', 'total balance at risk', 'which evictions have been stuck the longest', 'breakdown of eviction reasons'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_financialsAnalyze FinancialsARead-onlyIdempotentInspect
Detailed single-period financial breakdown with per-account line
items (when show_detail=True). Pulls the standard ProfitLoss
report (report 43).
Provides line-item detail for a single period (an audit-style
breakdown), matching "the standard P&L statement" / "the regular P&L".
General "P&L", "Profit and Loss" and "T12" views come from
analyze_pl_trend, which runs the 12-month recap report
(ProfitLossRecapMonth), the default P&L view for this product.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +2 more. Returns: result
analyze_home_salesAnalyze Home SalesARead-onlyIdempotentInspect
Park-owned-home (POH/DOH) sales pipeline — for sale, priced, aging.
Runs RM's Available Inventory Report (looked up by name), the park/dealer- owned-home inventory, and summarizes the sales pipeline: count by status (For Sale / Coming Soon / Order Pending / Rented / not listed), total and average list price of for-sale homes, days on market, and a per-park breakdown. Use for "how many park-owned homes are for sale", "total list value of our for-sale homes", "which homes are aging on the market". The MHP home-sale revenue view the rent-roll tools miss. Scope to a portfolio/ park for speed (unscoped is fanned out in batches).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, property_ids. Returns: result
analyze_inspectionsAnalyze InspectionsARead-onlyIdempotentInspect
Inspection compliance + action items (InspectionActivity, 273).
Per-property inspection counts, open vs closed, action / severe / review-needed item totals, ranked by severity. Surfaces the worst inspections by severe-item count and an inspector leaderboard. Answers: 'which properties have open inspections', 'which inspections flagged the most severe items', 'how many inspections happened this quarter'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +2 more. Returns: result
analyze_loss_to_leaseAnalyze Loss to LeaseARead-onlyIdempotentInspect
Loss to lease — gap between market rent and in-place rent on occupied units.
Runs SummaryRentRoll (report 69) over a full month and sums RM's Loss to
Lease for occupied units by unit type, with market rent, in-place rent, the
loss, and loss-as-%-of-market. The #1 multifamily revenue-capture metric:
how far below market in-place rents sit and the renewal upside. Use for
"what's our loss to lease", "how far below market are we", "which unit types
have the biggest market gap". Requires market rent set on units. Always uses
the full calendar month of as_of_date (defaults to the current month).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, as_of_date, property_ids. Returns: result
analyze_lost_prospectsAnalyze Lost ProspectsARead-onlyIdempotentInspect
Lost-lead funnel analysis (LostProspectBreakdown, 687).
Breakdown of where in the funnel prospects are getting lost (Inquired / Application / Denied / etc.), agents with the most lost leads, properties with the worst conversion, and a recent lost-prospect timeline. Defaults to the trailing ~90 days. Complements analyze_prospect_pipeline (which counts everything coming in); this counts everything that drops out.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +2 more. Returns: result
analyze_move_ins_outsAnalyze Move-Ins and Move-OutsARead-onlyIdempotentInspect
Move-in / move-out turnover summary (MoveInMoveOut, 77).
Per-property move-in / move-out / net counts over a window (default trailing 30 days). Surfaces top movers and the most- recent move-outs list. Analytics complement to the existing move_ins_outs listing tool — adds aggregates and rankings.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +2 more. Returns: result
analyze_noiAnalyze Net Operating IncomeARead-onlyIdempotentInspect
Compute Net Operating Income (NOI) for a single period — Operating Income minus Operating Expenses, non-operating items excluded.
Returns a single aggregate NOI number for a period. General "P&L",
"Profit and Loss" and "T12" views come from analyze_pl_trend, which
runs the 12-month recap report (ProfitLossRecapMonth), the default P&L
view for this product.
Args: portfolio: Named portfolio or 3-letter prefix. property_ids: Comma-separated IDs. Alternative to portfolio. start_date: MM/DD/YYYY. Defaults to Jan 1 of current year. end_date: MM/DD/YYYY. Defaults to Dec 31 of current year.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +1 more. Returns: result
analyze_occupancy_trendAnalyze Occupancy TrendARead-onlyIdempotentInspect
12-month physical occupancy trend — monthly occupied % across the year.
Runs RM's ReportWriter '12-Month Vacancy/Occupancy Report' (looked up by name), a per-unit Occupied/Vacant matrix, rolled up to a monthly occupancy rate for the portfolio and per property. Use for "occupancy trend this year", "is occupancy improving month over month", "which parks drag occupancy down". Scope to a portfolio/property set — this report times out across every property at once (unscoped is fanned out in batches, slower). Months after the current one are forward-looking (scheduled move-ins/outs).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, property_ids. Returns: result
analyze_payment_trendsAnalyze Payment TrendsBRead-onlyIdempotentInspect
Month-over-month payment trends (PaymentComparison, 32).
Surfaces total collections per month (with % change), per-property rollup of last vs prior month, and a tenant-level list of payment drops bigger than drop_threshold_pct (default 50%). Defaults to a trailing ~90 day window so 3 month columns surface. Answers: 'which tenants stopped paying', 'how did collections trend last quarter', 'which properties are losing collections'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +3 more. Returns: result
analyze_pl_multi_yearAnalyze Multi-Year P&LARead-onlyIdempotentInspect
Multi-year P&L by account (ProfitLossRecapYear, report 201).
Year-matrix per account across the requested date range, ranked by absolute total. Defaults to a 3-year window if no dates given. Answers: 'how has revenue moved across 3 years', 'which accounts have grown the most', 'multi-year trajectory'.
For year-over-year deltas use analyze_pl_yoy; for monthly trajectory use analyze_pl_trend.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +2 more. Returns: result
analyze_pl_trendAnalyze P&L TrendARead-onlyIdempotentInspect
Default P&L / Profit and Loss / T12 view — runs the 12-month recap report (ProfitLossRecapMonth, report 45) and returns computed text, not a file.
Covers general P&L requests: "show me a P&L", "give me the profit and
loss", "T12 for SCE", "trailing 12-month financials", "how has NOI
moved", "which month did expenses spike". Single-period line-item
detail is in analyze_financials and a single aggregate NOI number
is in analyze_noi.
File downloads (PDF / Excel / XLSX) of the P&L come from
run_report(report_id=45, format='pdf'|'xlsx', ...): Rent Manager
produces the formatted file natively and a signed URL is returned.
This tool returns numbers only.
Output: a single COMBINED Income / Expenses / NOI series with one
column per month over the requested range (all requested parks rolled
into one statement, the way Rent Manager shows it natively), plus the
list of parks included. Issues one RM call regardless of park count.
To see a single park, scope with portfolio or property_ids.
Args: portfolio: Portfolio name or 3-letter prefix. property_ids: Comma-separated property IDs. start_date: MM/DD/YYYY. Defaults to Jan 1 of current year. end_date: MM/DD/YYYY. Defaults to today.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +1 more. Returns: result
analyze_pl_yoyAnalyze P&L Year Over YearARead-onlyIdempotentInspect
Year-over-year P&L comparison (ProfitLossComparePreviousYear, 144).
Period 1 = requested range; Period 2 = same range prior year. Shows income / expense / NOI / net-income deltas + percentages per property, with combined totals and top-mover lists for income gains, income losses, and expense increases. Answers: 'how's NOI tracking vs last year', 'what's driving income growth', 'which expenses are up the most YoY'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +2 more. Returns: result
analyze_prospect_pipelineAnalyze Prospect PipelineARead-onlyIdempotentInspect
Leasing activity by agent + inquiry source (ProspectBoxScore, 21).
Portfolio-wide (this report doesn't filter by property). Surfaces top agents by total prospects, source-mix percentages (Web vs Call vs Walk-In vs ...), and an application-rate proxy. Answers: 'which agents handled the most leads', 'what sources are driving pipeline', 'what's our application rate'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, start_date. Returns: result
analyze_renewalsAnalyze RenewalsARead-onlyIdempotentInspect
Lease renewal + below-market rent gap analysis (LeaseExpiration, 76).
Per-property active/m2m/renewed/on-notice counts, expirations in next 30/60/90 days, and the total market-rent-vs-current-rent gap. Plus top-N below-market rents (renewal pricing opportunities) and top-N upcoming expirations. Distinct from lease_expirations (which is API-based and lighter) — this one adds the market-rent column, which is the actual signal needed for pricing decisions.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +3 more. Returns: result
analyze_rent_compositionAnalyze Rent CompositionARead-onlyIdempotentInspect
Scheduled-rent composition by unit type — lot rent vs park-owned-home rent.
Breaks the rent roll (report 69) down by unit type so you can see how much scheduled income is lot/space rent on tenant-owned homes (e.g. "MH") vs park/dealer-owned-home rent ("DOH") vs RV vs apartments, and splits base rent from misc/utility/fee charges, each as a share of total. Use for "how much of our rent is lot rent vs home rent", "revenue mix by unit type", "base rent vs misc charges". The defining mobile-home-park revenue question.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, as_of_date, property_ids. Returns: result
analyze_rent_rollAnalyze Rent RollBRead-onlyIdempotentInspect
Occupancy + scheduled rent summary for a portfolio.
Uses SummaryRentRoll (report 69) which includes all units, occupied and vacant, so space counts and occupancy rates are accurate.
location (optional): a Rent Manager Location ID, a comma-separated list,
or "all" to run across every Location on this connection (see
list_locations). Blank = all Locations if the connection has several, else its only Location. Output
is labelled per Location; a Location that can't be reached is listed as
skipped.
Inputs: location, portfolio, as_of_date, property_ids. Returns: result
analyze_security_depositsAnalyze Security DepositsARead-onlyIdempotentInspect
Security deposit liability snapshot (SecurityDeposit, 83).
Total deposits currently held (active liability), lifecycle totals (charged / received / refunded), per-property breakdown ranked by held balance, and top largest individual deposits. Useful for 'how much in deposits are we sitting on' and per-property liability questions.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_service_issuesAnalyze Service IssuesARead-onlyIdempotentInspect
Work-order / service-issue backlog summary (FilteredIssueList, 112).
Portfolio-wide (this report has no Property column on RM's side). Summarizes total / open / closed counts, age distribution of open issues, breakdown by status / category / priority, and lists the oldest open issues. Supports category / priority / status filters. Answers: 'how many open work orders', 'how stale is the backlog', 'what's open by category', 'oldest unresolved issues'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, status, category, end_date, +4 more. Returns: result
analyze_user_activityAnalyze User ActivityARead-onlyIdempotentInspect
Rent Manager user login activity and concurrent-user counts (UserLog, 3).
Use for questions like:
"How many users were logged in at one time yesterday?"
"What's our peak concurrent user count this week / last week?"
"How many people logged into Rent Manager on Monday?"
"Show me failed login attempts"
Returns total sessions, distinct users, failed login attempts, the PEAK number of users logged in simultaneously (with timestamp), and either a per-day peak table (multi-day range) or an hourly concurrency profile (single-day range). Org-wide by nature — there is no property scope.
Caveat for ranges that include today: RM records a session only at LOGOUT, so users currently logged in are not in the log yet — today's recent hours UNDERSTATE true concurrency. Completed (past) days are accurate.
Args: start_date: MM/DD/YYYY. Defaults to 6 days ago (a 7-day window). end_date: MM/DD/YYYY. Defaults to today.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, start_date. Returns: result
analyze_vacancyAnalyze VacancyARead-onlyIdempotentInspect
Vacancy snapshot per property (Vacancy, report 74).
Per-property vacant count, average and oldest days-vacant, total foregone monthly rent. Plus a 0-30/31-60/61-90/91+ aging histogram, unit-type breakdown, and top-N longest-vacant units. Point-in-time snapshot, not a time-series.
location (optional): a Rent Manager Location ID, a comma-separated list,
or "all" to run across every Location on this connection (see
list_locations). Blank = all Locations if the connection has several, else its only Location. Output
is labelled per Location; a Location that can't be reached is listed as
skipped.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
analyze_vendor_spendAnalyze Vendor SpendARead-onlyIdempotentInspect
Vendor spend / AP outflows (PayablesByAccount, 183).
Per-property and per-vendor spend over a window. Defaults to the trailing 30 days. Surfaces top vendors by gross spend, per-property totals, and largest individual bills. VOIDs are excluded by default (set include_voids=True to net them in).
Slow for long date ranges (90+ days returns ~5800 rows / 30 days and can take 1-3 minutes); windows longer than the default 30 days or large portfolios are affected. Follow-up queries within 5 minutes are cached.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, end_date, location, portfolio, +3 more. Returns: result
analyze_water_consumptionAnalyze Water ConsumptionBRead-onlyIdempotentInspect
Reconcile master-meter water/sewer consumption against tenant sub-meter totals.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +1 more. Returns: result
download_attachmentDownload AttachmentARead-onlyIdempotentInspect
Download and READ a Rent Manager attachment by FileID.
Returns lease documents and other files attached to a record. PDFs are rendered page-by-page so their contents can be read, not just saved, including scanned signed leases.
FileIDs come from get_tenant_notes (leases are usually filed on tenant History/Notes), get_check_attachments / get_credit_card_attachments / get_journal_attachments (invoice scans filed on a payment or GL entry), get_tenant_udfs, or get_property_udfs. The parent-record arguments tenant_id, check_id, bill_id, credit_card_transaction_id and journal_id identify the record the file hangs off; they apply when the FileID did not come from a listing earlier in the same conversation.
Long documents are returned in page chunks (pages="1-40", then pages="41-80", and so on); the result says which pages came back and what range is available next.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: pages, bill_id, file_id, save_as, +7 more.
download_invoicesDownload InvoicesBRead-onlyIdempotentInspect
Download vendor-invoice attachments into the per-tenant FileStore.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: limit, vendor, end_date, location, +4 more. Returns: result
download_property_attachmentDownload Property AttachmentBRead-onlyIdempotentInspect
Pull a file attached to a property UDF (W9, COI, license, etc.) into FileStore.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: file_id, save_as, location, udf_name, +2 more. Returns: result
download_property_tax_billDownload Property Tax BillBRead-onlyIdempotentInspect
Pull the tax-bill PDF/image from the AP bill that hits a GL account.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: year, gl_code, gl_name, end_date, +6 more. Returns: result
download_unit_attachmentDownload Unit AttachmentARead-onlyIdempotentInspect
Download and READ a file attached to a unit's UDF.
The unit equivalent of download_property_attachment: titles, certificates of occupancy, inspection reports and anything else filed on a unit's File-type UDFs. PDF pages are rendered so the contents can be read, not just saved. When the unit holds exactly one file, udf_name is optional.
For unit PHOTOS — the IMAGES tab or image UDFs — use get_unit_images.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: pages, file_id, save_as, unit_id, +7 more.
dump_all_rate_cardsExport All Rate CardsARead-onlyIdempotentInspect
Build a multi-sheet XLSX of every meter type's rate card → FileStore.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: location, active_only, max_workers, sample_consumption. Returns: result
get_billsGet BillsBRead-onlyIdempotentInspect
List vendor bills (AP invoices) for one or more properties.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: limit, vendor, end_date, location, +3 more. Returns: result
get_check_attachmentsGet Check AttachmentsARead-onlyIdempotentInspect
List invoice scans attached to CHECKS, with their FileIDs.
For a vendor paid by check with no AP bill record — the scan hangs off the check, so get_bills/download_invoices cannot reach it (those rows show with no BillID). Search by date range, payee, or amount, then pass a FileID to download_attachment to read the document.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: limit, payee, amount, check_id, +3 more. Returns: result
get_credit_card_attachmentsGet Credit Card AttachmentsARead-onlyIdempotentInspect
List invoice/receipt scans attached to CREDIT CARD transactions.
Purchases put on a company card often carry the invoice as an attachment on the card transaction rather than on an AP bill, which puts them out of reach of the bill and check tools. Search by date range, vendor, amount, or card, then pass a FileID to download_attachment to read the document.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: limit, payee, amount, end_date, +4 more. Returns: result
get_journal_attachmentsGet Journal AttachmentsARead-onlyIdempotentInspect
List invoice/receipt scans attached to JOURNAL (GL) entries.
Charges posted straight to the general ledger — including credit card purchases entered as journal entries rather than as card transactions — carry their documentation here, out of reach of the bill, check, and card tools. Search by date range, memo, or amount, then pass a FileID to download_attachment to read the document.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: memo, limit, amount, end_date, +3 more. Returns: result
get_lease_violationsGet Lease ViolationsARead-onlyIdempotentInspect
Lease / community-rule violations — open compliance items by property.
Runs TenantViolationsListing (report 637): each violation's tenant, unit,
date, code (Yard Appearance, Vehicle Violation, ...), status (Open/Closed),
stage (Warning / Fine / Stage N), and description. Use for "what violations
are open at ", "compliance issues", "who has an open violation".
open_only (default True) hides closed items; scope via portfolio/
property_ids.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: limit, location, open_only, portfolio, +1 more. Returns: result
get_marketing_udfsGet Marketing UDFsARead-onlyIdempotentInspect
Property-level UDFs filtered to the marketing allow-list.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, shortname, property_id. Returns: result
get_meter_rate_cardGet Meter Rate CardARead-onlyIdempotentInspect
Pull and pretty-print one meter type's rate card from Report 514.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: meter_type_id (required), location, sample_consumption. Returns: result
get_meter_readsGet Meter ReadsARead-onlyIdempotentInspect
Individual sub-meter readings per billing cycle from Report 104.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: unit, tenant, end_date, location, +4 more. Returns: result
get_property_home_inventoryGet Property Home InventoryBRead-onlyIdempotentInspect
Build a one-row-per-unit home-inventory table across all home UDFs.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: fields, location, shortname, property_id, +1 more. Returns: result
get_property_locationsGet Property LocationsBRead-onlyIdempotentInspect
Table of park addresses with state/city filters and a state summary.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: city, state, location, portfolio, +1 more. Returns: result
get_property_udfsGet Property UDFsARead-onlyIdempotentInspect
List all UDF values for a property, including file attachments.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, shortname, property_id. Returns: result
get_prospectGet ProspectARead-onlyIdempotentInspect
Full detail for one prospect: contact info, lead source, status, dates.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: prospect_id (required), location. Returns: result
get_resident_concernsGet Resident ConcernsARead-onlyIdempotentInspect
Open resident complaints WITH the resident's name, email, and phone.
Unlike analyze_service_issues (a portfolio summary from report 112, which carries no resident or contact data), this pulls the "Resident Concern" issues straight from the /ServiceManagerIssues endpoint with the linked tenant, unit, property, and the full complaint text — everything needed to draft a reply to each resident. Newest first. Optional filters: property (name or short code), status, priority, and an opened-date window (start_date / end_date, M/D/YYYY or ISO). Answers: 'show me open resident complaints', 'who complained at and how do I reach them', 'pull the latest resident concerns to respond to'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: limit, status, end_date, location, +4 more. Returns: result
get_tenantGet TenantARead-onlyIdempotentInspect
Full detail for one tenant: contacts, phones, addresses, lease history.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: tenant_id (required), location. Returns: result
get_tenant_ledgerGet Tenant LedgerARead-onlyIdempotentInspect
A resident's charge / payment / credit history with their current balance.
Use for "show this resident's payment history", "what has this tenant been
charged", "what does tenant X currently owe", "ledger for tenant X". Pulls
the tenant's transaction ledger and renders it newest-first with per-period
subtotals (charged / paid / credits), plus Rent Manager's authoritative
current balance. Find the TenantID with list_tenants. Optional
start_date / end_date (MM/DD/YYYY) window the history; limit
caps the lines shown (default 40, max 200).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: tenant_id (required), limit, end_date, location, +1 more. Returns: result
get_tenant_notesGet Tenant NotesARead-onlyIdempotentInspect
History notes logged on a tenant — the running staff commentary.
Pulls /Tenants/{id}/HistoryNotes (rent-increase notices, payment
arrangements, manager comments) newest-first — context not visible
elsewhere. Find the TenantID with list_tenants. limit caps the notes
shown (default 30, max 200).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: tenant_id (required), limit, location. Returns: result
get_tenant_udfsGet Tenant UDFsARead-onlyIdempotentInspect
List all UDF values for a tenant.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: tenant_id (required), location. Returns: result
get_unit_imagesGet Unit ImagesARead-onlyIdempotentInspect
Photos filed on one unit in Rent Manager.
Covers the Home > Property > Unit > IMAGES path from the RM desktop client — the unit photos site managers upload from the RM mobile app — and also photos filed on the unit's UDFs, which is where some operators keep them. Name the property by shortname (or property_id) and the unit by its label (or unit_id): get_unit_images(shortname="CAPEFEAR", unit_name="Lot 24").
Photos are returned as images and are also saved to the file store, so they can be assembled into a PDF or attached to an email. For a non-photo file on a unit UDF (a title, an inspection), use download_unit_attachment.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: unit_id, location, as_images, shortname, +4 more.
get_unit_udfsGet Unit UDFsBRead-onlyIdempotentInspect
Home-info UDFs for one unit (Year, Manufacturer, Serial/VIN, Payoff, ...).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: unit_id, location, shortname, unit_name, +1 more. Returns: result
get_vacant_unit_imagesGet Vacant Unit ImagesARead-onlyIdempotentInspect
Unit photos for every VACANT unit in a property — a make-ready review.
Use this for "show me photos of the vacant units at " or to build a vacant-unit review PDF for an owner. Finds the vacant units, pulls the photos off each one's IMAGES tab, and returns them grouped by unit, with a list of which vacant units have no photos uploaded yet.
For a single unit, use get_unit_images instead.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, as_images, max_units, shortname, +3 more.
get_work_ordersGet Work OrdersARead-onlyIdempotentInspect
Service Manager work orders / maintenance issues across EVERY category.
The general maintenance board (not just resident complaints — use get_resident_concerns for those). Pulls /ServiceManagerIssues directly with category, status, priority, open/close dates, property/unit, and detail. Set open_only=False to include closed orders and an average open→close turnaround stat. Filter by property, category, status, priority, or an opened-date window. Answers: 'what work orders are open', 'maintenance turnaround at ', 'show closed work orders this month'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: limit, status, category, end_date, +5 more. Returns: result
inspect_property_apiInspect Property API FieldsARead-onlyIdempotentInspect
Dump raw API fields for a property — debugging aid.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, property_id. Returns: result
lead_source_summaryLead Source SummaryARead-onlyIdempotentInspect
LEAD SOURCE BREAKDOWN — counts of prospects by lead source for a property or portfolio over a date window.
Answers "lead sources", "lead source breakdown", "where are prospects coming from", "marketing channel ROI", "how did this park's leads find us", etc. One call returns the full breakdown across all prospects in scope (get_prospect returns a single prospect).
Args: start_date: YYYY-MM-DD. Defaults to 90 days ago when omitted. end_date: YYYY-MM-DD. Defaults to today when omitted. property_id / shortname / portfolio / property_ids: scope.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, shortname, +3 more. Returns: result
lease_expirationsLease ExpirationsARead-onlyIdempotentInspect
Leases expiring within the next within_days days, bucketed 30/60/90.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, portfolio, shortname, property_id, +2 more. Returns: result
list_credit_cardsList Credit CardsARead-onlyIdempotentInspect
List the credit cards defined on this Rent Manager database.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: location. Returns: result
list_gl_accountsList GL AccountsARead-onlyIdempotentInspect
List the Rent Manager chart of accounts (GL accounts), grouped by type.
Use this to answer "what GL accounts / chart of accounts do we have", to
find an account's number/ID, or before drilling into financials. Filter by
account_type (e.g. "income", "expense") or name_filter (matches
name or account number); active_only hides inactive accounts.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, active_only, name_filter, account_type. Returns: result
list_leasesList LeasesARead-onlyIdempotentInspect
List leases for a property or portfolio.
active_on='YYYY-MM-DD' (or 'today') filters to leases active on that date.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, active_on, portfolio, shortname, +2 more. Returns: result
list_locationsList Rent Manager LocationsARead-onlyIdempotentInspect
List the Rent Manager Locations this connection can query, and whether
each one authorizes. Pass a Location ID (or "all") as the location
argument of any read tool (run_report, analyze_*, list_*, get_*) to query
across Locations.
Inputs: no named parameters. Returns: result
list_meter_typesList Meter TypesARead-onlyIdempotentInspect
List meter types defined in Rent Manager.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, active_only, name_filter. Returns: result
list_ownersList OwnersARead-onlyIdempotentInspect
List property owners and the ownership map — who owns what, and what %.
Use for "who are the owners / investors", "who owns and what
percentage", "which parks does have a stake in", or any
ownership-breakdown question — essential for third-party / fee-managed
portfolios where each property is held by multiple investor trusts/IRAs.
Built on RM's OwnerList report (113) + the /Owners roster. Filter by
owner_filter / property_filter (case-insensitive substrings);
group_by is "owner" (default) or "property".
Note: owner DISTRIBUTION/payment and owner-STATEMENT reports require an RM user privilege the API account may not hold (owner-banking) — those are not exposed here. This tool covers the ownership roster and percentages.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: group_by, location, owner_filter, property_filter. Returns: result
list_portfoliosList PortfoliosARead-onlyIdempotentInspect
Show named portfolios + auto-detected dash-prefix portfolios.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location. Returns: result
list_propertiesList PropertiesARead-onlyIdempotentInspect
List all properties with IDs, short names, and full names.
location (optional): a Rent Manager Location ID, a comma-separated list,
or "all" to run across every Location on this connection (see
list_locations). Blank = all Locations if the connection has several, else its only Location. Output
is labelled per Location; a Location that can't be reached is listed as
skipped.
Inputs: location. Returns: result
list_property_groupsList Property GroupsARead-onlyIdempotentInspect
List the Property Groups saved inside Rent Manager (Properties → Property Groups), with each group's member properties.
These are RM-native, user-created groups — distinct from the dash-prefix
portfolios returned by list_portfolios. Pass embeds="" to skip
resolving member properties for a faster, names-only listing.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: embeds, location. Returns: result
list_property_unitsList Property UnitsARead-onlyIdempotentInspect
List all units (lots/spaces) in a property with UnitID and Name.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, shortname, property_id. Returns: result
list_prospectsList ProspectsBRead-onlyIdempotentInspect
List prospects (leads) for a property or portfolio.
status: 'Prospect' | 'Customer' | 'Lost' | 'All' (default).
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: status, location, portfolio, shortname, +2 more. Returns: result
list_reportsList ReportsARead-onlyIdempotentInspect
List all available Rent Manager reports with their IDs and names.
Reads from the per-tenant catalog snapshot when present (instant). Pass
live=True to bypass the catalog and hit the live RM API — use that
after RM admins add new ReportWriter reports.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: live, location. Returns: result
list_rm_connectionsList Rent Manager ConnectionsARead-onlyIdempotentInspect
List the Rent Manager databases YOU can connect to, and show which one is currently active.
For users with more than one Rent Manager database (e.g. a consultant or owner managing several companies). Returns each connection's label, base URL, and RM username, plus the organization default. Manage the list at /auth/account/connection.
Inputs: no named parameters. Returns: result
list_tenantsList TenantsARead-onlyIdempotentInspect
List tenants for a property or portfolio.
status filter: 'Current' | 'Past' | 'All'. include_contacts embeds contact records (slower; surfaces primary email/phone).
location (optional): a Rent Manager Location ID, a comma-separated list,
or "all" to run across every Location on this connection (see
list_locations). Blank = all Locations if the connection has several, else its only Location. Output
is labelled per Location; a Location that can't be reached is listed as
skipped.
Inputs: status, location, portfolio, shortname, +3 more. Returns: result
list_vendorsList VendorsARead-onlyIdempotentInspect
List the AP vendor master — who our vendors are, category, 1099 status.
Sourced from /Vendors. Complements analyze_vendor_spend (payment totals) and vendor_compliance (insurance/COI expiry) with the roster: vendor names, categories, whether each has a Tax ID on file (1099-ready), active status. Use for "list our vendors", "which vendors do we have", "vendors in the plumbing category", "which vendors are missing a W-9/Tax ID". Filter by name_filter / category_filter; active_only hides inactive vendors.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, active_only, name_filter, category_filter. Returns: result
make_ready_summaryMake Ready SummaryARead-onlyIdempotentInspect
Units currently in turnover (Make Ready Summary, report 719).
Per-property count + average/oldest age, stage breakdown, top-N oldest stuck units. Answers: 'how many turnovers in flight', 'what's the oldest stuck unit', 'which turnovers already have a next move-in'.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: top_n, location, portfolio, as_of_date, +1 more. Returns: result
move_ins_outsMove-Ins and Move-OutsBRead-onlyIdempotentInspect
Tenants who moved in or moved out in a YYYY-MM-DD date window.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date (required), start_date (required), location, portfolio, +3 more. Returns: result
refresh_reports_catalogRefresh Reports CatalogAIdempotentInspect
Snapshot live /Reports + /ReportWriterReports into the per-tenant catalog file. Returns a diff (added / removed / renamed) vs the prior snapshot. Intended for after RM admins add or rename reports.
``location`` (optional): a single Rent Manager Location ID. Required
when the connection has several Locations (see ``list_locations``);
this tool never fans out across Locations.
Inputs: location. Returns: result
run_reportRun ReportARead-onlyIdempotentInspect
Download any Rent Manager report.
format defaults to pdf. Available formats: pdf, xls,
xlsx, excel (alias → xls), spreadsheet (alias → xls),
csv, json, txt, html, xml. Rent Manager renders xls
with better formatting (column widths, headers, group totals) than xlsx.
Output by format:
• csv / json / txt / html / xml — small files (≤1 MiB) are
inlined in the response in addition to being saved.
• pdf / xlsx / xls — saved to the per-tenant file store and
returned as a signed /files/<id>?sig=... URL.
The analyze_* wrappers return computed answers directly and are
faster than raw reports; analyze_pl_trend runs the 12-month recap
report, the default P&L / Profit and Loss / T12 view.
Custom ReportWriter reports: set report_writer=True to download a
custom report from RM's ReportWriter (the IDs shown as kind "rw" in
list_reports(live=True)). These live in a separate ID namespace that
collides with the canned reports, so the flag is required to disambiguate.
They carry their own saved filters and run portfolio-wide; pass any ad-hoc
parameters via extra_params. (The start_date/end_date/
property_id/portfolio scoping args do NOT apply to ReportWriter
reports.)
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: format, combined, end_date, location, +8 more.
switch_rm_connectionSwitch Rent Manager ConnectionAIdempotentInspect
Switch which Rent Manager database your questions run against.
Pass the connection's label (e.g. "Texas") as shown by
list_rm_connections, or "org default" to go back to the organization
connection. The change persists for your account and takes effect on your
next question. Note: it affects every AI client you've connected, not just
this chat.
Inputs: label (required). Returns: result
trial_balanceTrial BalanceARead-onlyIdempotentInspect
Trial balance — every GL account's debit/credit activity and ending balance.
Runs RM's TrialBalanceActivity (report 617) with a built-in balance check (total debits = total credits; ending balances sum to ~0 for a full scope). Use for "show the trial balance", "ending balance per GL account", "are the books in balance / do debits equal credits". Scopes via PropOwnerIDs (portfolio or property_ids). Defaults to YTD; override with start_date/ end_date (MM/DD/YYYY). Filter with account_filter; nonzero_only hides no-activity zero-balance accounts. Pairs with list_gl_accounts. For transaction-level GL detail, download report 51 (GeneralLedger) via run_report.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: end_date, location, portfolio, start_date, +3 more. Returns: result
unit_marketing_statusUnit Marketing StatusBRead-onlyIdempotentInspect
Per-unit marketing/occupancy status for a property.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, shortname, property_id. Returns: result
vendor_complianceVendor ComplianceARead-onlyIdempotentInspect
Vendors with expired or soon-to-expire insurance / workers-comp coverage.
Runs VendorExpirationListing (report 194) and flags every vendor whose
general-liability insurance or workers-comp policy is already expired or
expires within days_ahead days (default 60). Use for "which vendors have
expired insurance", "vendor COI compliance", "whose workers comp is lapsing",
before clearing a vendor to work on site. include_missing also lists
vendors with no policy date on file.
``location`` (optional): a Rent Manager Location ID, a comma-separated
list, or ``"all"`` to run across every Location on this connection (see
``list_locations``). Blank = all Locations if the connection has several,
else its only Location. Output is labelled per Location; a Location that
can't be reached is listed as skipped. IDs (property, tenant, ...) belong
to one Location, so pass that Location when you filter by one.
Inputs: location, days_ahead, name_filter, include_missing. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Related MCP Connectors
Ask your AI about your Airbnb and VRBO listings, bookings, guest messages and reviews. Read-only.
Your rental portfolio from any assistant: leases, rent, buildings, tenants and documents.
Ask your accounts-receivable portfolio anything. Read-only, scoped to your account.
Read-only by architecture: ask AI about QuickBooks, Xero and NetSuite, across every entity.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables interaction with Appfolio Property Manager through the Reporting API, allowing property management tasks and data retrieval via natural language commands.4711 npm10ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to operate property management systems via natural language, covering repair orders, owner info, payments, notices, and inspections. Features a full agentic workflow with human-in-the-loop and observability.1MIT
- AlicenseCqualityBmaintenanceEnables interaction with Buildium property management software through natural language, supporting operations on associations, leases, rentals, tenants, and more.816MIT
- AlicenseAqualityBmaintenanceProvides Claude and any MCP client with live access to property management data, enabling operations on properties, units, leases, tenants, work orders, vendors, accounting, and file attachments through natural language.25MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.