Skip to main content
Glama

Server Details

Ask your Rent Manager portfolio anything: live, read-only financials, rent roll, leasing.

Ownership verified
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

B3.4/5.0

Scored across 83 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count1/5

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.

Completeness3/5

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
Vendor relationship
Not available
Trust center
Not available
Restrictions
Not available

Available Tools

83 tools
analyze_aged_payablesAnalyze Aged PayablesA
Read-onlyIdempotent
Inspect

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 ReceivablesB
Read-onlyIdempotent
Inspect

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 AdoptionA
Read-onlyIdempotent
Inspect

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 AvailabilityA
Read-onlyIdempotent
Inspect

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 SheetA
Read-onlyIdempotent
Inspect

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 FlowA
Read-onlyIdempotent
Inspect

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 DelinquencyA
Read-onlyIdempotent
Inspect

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 EvictionsA
Read-onlyIdempotent
Inspect

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 FinancialsA
Read-onlyIdempotent
Inspect

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 SalesA
Read-onlyIdempotent
Inspect

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 InspectionsA
Read-onlyIdempotent
Inspect

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 LeaseA
Read-onlyIdempotent
Inspect

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 ProspectsA
Read-onlyIdempotent
Inspect

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-OutsA
Read-onlyIdempotent
Inspect

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 IncomeA
Read-onlyIdempotent
Inspect

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 TrendA
Read-onlyIdempotent
Inspect

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_pl_multi_yearAnalyze Multi-Year P&LA
Read-onlyIdempotent
Inspect

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 TrendA
Read-onlyIdempotent
Inspect

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 YearA
Read-onlyIdempotent
Inspect

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 PipelineA
Read-onlyIdempotent
Inspect

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 RenewalsA
Read-onlyIdempotent
Inspect

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 CompositionA
Read-onlyIdempotent
Inspect

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 RollB
Read-onlyIdempotent
Inspect

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 DepositsA
Read-onlyIdempotent
Inspect

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 IssuesA
Read-onlyIdempotent
Inspect

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 ActivityA
Read-onlyIdempotent
Inspect

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 VacancyA
Read-onlyIdempotent
Inspect

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 SpendA
Read-onlyIdempotent
Inspect

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 ConsumptionB
Read-onlyIdempotent
Inspect

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 AttachmentA
Read-onlyIdempotent
Inspect

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 InvoicesB
Read-onlyIdempotent
Inspect

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 AttachmentB
Read-onlyIdempotent
Inspect

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 BillB
Read-onlyIdempotent
Inspect

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 AttachmentA
Read-onlyIdempotent
Inspect

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 CardsA
Read-onlyIdempotent
Inspect

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 BillsB
Read-onlyIdempotent
Inspect

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 AttachmentsA
Read-onlyIdempotent
Inspect

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 AttachmentsA
Read-onlyIdempotent
Inspect

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 AttachmentsA
Read-onlyIdempotent
Inspect

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 ViolationsA
Read-onlyIdempotent
Inspect

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 UDFsA
Read-onlyIdempotent
Inspect

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 CardA
Read-onlyIdempotent
Inspect

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 ReadsA
Read-onlyIdempotent
Inspect

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 InventoryB
Read-onlyIdempotent
Inspect

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 LocationsB
Read-onlyIdempotent
Inspect

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 UDFsA
Read-onlyIdempotent
Inspect

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 ProspectA
Read-onlyIdempotent
Inspect

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 ConcernsA
Read-onlyIdempotent
Inspect

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 TenantA
Read-onlyIdempotent
Inspect

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 LedgerA
Read-onlyIdempotent
Inspect

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 NotesA
Read-onlyIdempotent
Inspect

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 UDFsA
Read-onlyIdempotent
Inspect

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 ImagesA
Read-onlyIdempotent
Inspect

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 UDFsB
Read-onlyIdempotent
Inspect

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 ImagesA
Read-onlyIdempotent
Inspect

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 OrdersA
Read-onlyIdempotent
Inspect

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 FieldsA
Read-onlyIdempotent
Inspect

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 SummaryA
Read-onlyIdempotent
Inspect

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 ExpirationsA
Read-onlyIdempotent
Inspect

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 CardsA
Read-onlyIdempotent
Inspect

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 AccountsA
Read-onlyIdempotent
Inspect

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 LeasesA
Read-onlyIdempotent
Inspect

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 LocationsA
Read-onlyIdempotent
Inspect

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 TypesA
Read-onlyIdempotent
Inspect

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 OwnersA
Read-onlyIdempotent
Inspect

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 PortfoliosA
Read-onlyIdempotent
Inspect

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 PropertiesA
Read-onlyIdempotent
Inspect

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 GroupsA
Read-onlyIdempotent
Inspect

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 UnitsA
Read-onlyIdempotent
Inspect

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 ProspectsB
Read-onlyIdempotent
Inspect

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 ReportsA
Read-onlyIdempotent
Inspect

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 ConnectionsA
Read-onlyIdempotent
Inspect

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 TenantsA
Read-onlyIdempotent
Inspect

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 VendorsA
Read-onlyIdempotent
Inspect

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 SummaryA
Read-onlyIdempotent
Inspect

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-OutsB
Read-onlyIdempotent
Inspect

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 CatalogA
Idempotent
Inspect

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 ReportA
Read-onlyIdempotent
Inspect

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 ConnectionA
Idempotent
Inspect

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 BalanceA
Read-onlyIdempotent
Inspect

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 StatusB
Read-onlyIdempotent
Inspect

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 ComplianceA
Read-onlyIdempotent
Inspect

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

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables interaction with Appfolio Property Manager through the Reporting API, allowing property management tasks and data retrieval via natural language commands.
      47
      11 npm
      10
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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.
      1
      MIT
    • A
      license
      C
      quality
      B
      maintenance
      Enables interaction with Buildium property management software through natural language, supporting operations on associations, leases, rentals, tenants, and more.
      81
      6
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Provides 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.
      25
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources