proprietio_close_work_order
ChatGPTMarks a work order as completed, stores the resolution note (at least 5 characters), and returns the work order ID, status and closing time. Use when the user says a job is done, fixed or resolved. Not for other status changes (use proprietio_update_work_order). Writes data. Requires the maintenance:write scope.
proprietio_create_work_order
ChatGPTCreates a new maintenance work order and returns its ID, status, creation time and a link to it in the Proprietio app. Use when the user asks to open, log or report a maintenance request. Each call creates another work order, so check proprietio_search_work_orders for an existing ticket and confirm the details with the user first. The production backend only accepts unit-level work orders: pass unit_id, or the call returns an error. Not for judging urgency without saving anything (use proprietio_triage_issue) or changing an existing ticket (use proprietio_update_work_order). Writes data. Requires the maintenance:write scope.
proprietio_find_recurring_maintenance_issues
ChatGPTLists units that had the same kind of maintenance problem (plumbing, HVAC, electrical and so on) three or more times in the last 90 days, most frequent first, at most 25. Takes no parameters. Use for questions such as 'which units keep having plumbing problems'. Returns the unit and trade only, never resident details. Not for current open tickets (use proprietio_search_work_orders). Live data only: returns an error when the server runs on demo data. Read-only. Requires the maintenance:read scope.
proprietio_get_balance_sheet
ChatGPTReturns the balance sheet for one property, one portfolio or every property at a single date: assets, liabilities and equity with totals. Use for asset, liability or equity balances at a point in time. Not for income or expenses over a period (use proprietio_get_income_statement or proprietio_get_noi). Read-only. Requires the accounting:read scope.
proprietio_get_command_center
ChatGPTReturns a dashboard-style snapshot for one property, one portfolio or every property: five KPI tiles (occupancy, delinquency, open work orders, loss-to-lease, number of properties at medium risk or above), one risk scorecard per property ranked by a 0-100 risk score, a ranked action queue of up to max_actions items with a due bucket and owner role, and a ui_model for rendering cards. Use when the user wants an overview or dashboard of how the portfolio is running. Not for a short daily to-do list (use proprietio_get_daily_brief), only the at-risk properties (use proprietio_get_risk_radar), revenue, expenses or NOI for a period (use proprietio_get_income_statement or proprietio_get_noi), or an update to send to owners (use proprietio_get_owner_update). Figures are a snapshot as of as_of_date; period_start and period_end are only echoed back and do not filter them. Read-only; returns no resident names or contact details. Requires the properties:read, accounting:read and maintenance:read scopes.
proprietio_get_daily_brief
ChatGPTReturns a short, ranked to-do list for one property, one portfolio or every property: a one-line headline, occupancy and rent totals, the top delinquency balances by property, counts of urgent, stale (open 7+ days) and unassigned work orders, and up to max_items prioritized items, each naming the tool to open next and, where there is one, the record ID. Use when the user asks what needs attention today or wants a morning operations summary. Not for KPI tiles or per-property risk scores (use proprietio_get_command_center or proprietio_get_risk_radar), a written owner report (use proprietio_get_owner_update), or full lists of work orders or balances (use proprietio_search_work_orders or proprietio_get_delinquency). Open work orders reflect their current status, whatever the as_of_date. Read-only; returns no resident names or contact details. Requires the properties:read, accounting:read and maintenance:read scopes.
proprietio_get_delinquency
ChatGPTReturns overdue resident balances for one property, one portfolio or every property: totals in aging buckets (0-30, 31-60, 61-90 and 90+ days) and a breakdown grouped by property, unit or resident. Use for questions such as 'who owes rent', 'how much is past due' or 'what is over 60 days late'. group_by: "resident" returns resident names and IDs; 'property' and 'unit' return totals only. Not for rent levels or occupancy (use proprietio_get_rent_roll) or a list of all residents, including those who owe nothing (use proprietio_list_residents). Read-only. Requires the accounting:read scope.
proprietio_get_general_ledger
ChatGPTReturns individual general ledger entries (date, account, property, amount, description) for one property, one portfolio or every property between two inclusive dates, optionally for a single GL account. Use to inspect the transactions behind a number, for example the April entries in '4000-Rental Income'. Returns at most limit entries (default 100, maximum 500) with no paging; narrow the dates or set account to see other entries. Not for totals or statements (use proprietio_get_income_statement, proprietio_get_noi or proprietio_get_balance_sheet). Read-only. Requires the accounting:read scope.
proprietio_get_income_statement
ChatGPTReturns the profit and loss statement for one property, one portfolio or every property over an inclusive date range: revenue and operating expense lines with their totals. Use for P&L, revenue or expense questions over a period. Both dates are required; for a month, pass its first and last day. Not for a single NOI figure (use proprietio_get_noi), balances at a date (use proprietio_get_balance_sheet), or individual transactions (use proprietio_get_general_ledger). Read-only. Requires the accounting:read scope.
proprietio_get_lease
ChatGPTReturns one lease: start and end dates, monthly rent, security deposit, status (active, expired or future), the unit, and the residents on the lease with their current balance due. Resident email, phone and internal IDs are left out unless include_contact_info is true. Use when the user asks about a specific lease's terms, dates or rent. Needs a lease ID, found in current_lease_id from proprietio_list_units or in active_leases from proprietio_get_property. Not for listing all residents of a property (use proprietio_list_residents). Read-only. Requires the accounting:read scope.
proprietio_get_noi
ChatGPTReturns net operating income for one property, one portfolio or every property over an inclusive date range: total revenue, operating expenses and NOI (revenue minus operating expenses). Use when the user asks for NOI or operating profit for a period. Both dates are required; for a month, pass its first and last day. Not for the line-by-line P&L (use proprietio_get_income_statement) or an update written for owners (use proprietio_get_owner_update). Read-only. Requires the accounting:read scope.
proprietio_get_owner_update
ChatGPTDrafts an update for property owners or investors on one property, one portfolio or every property: revenue, operating expenses, NOI and margin for the period, occupancy, delinquency total, open and urgent work orders, the highest-risk property, an optional action plan of up to 5 items, a subject line and a copy-ready email body. Use when the user asks for an owner, investor or monthly report they can paste or edit. It only returns text and sends nothing; no Proprietio tool emails owners. Not for an internal dashboard (use proprietio_get_command_center) or P&L line items (use proprietio_get_income_statement). The period defaults to the first day of the as_of_date month through as_of_date; occupancy, delinquency and work orders are as of as_of_date, not averages over the period. Read-only; returns no resident names or contact details. Requires the properties:read, accounting:read and maintenance:read scopes.
proprietio_get_property
ChatGPTReturns one property's record together with all of its units (unit number, bedrooms, bathrooms, size, current and market rent, occupancy) and its active leases. Use when the user names a specific property and wants its details, unit mix or current leases. Needs a property ID; if you only have the name, find the ID with proprietio_search_properties first. Not for an occupancy rate or an occupied-only unit list (use proprietio_list_units), or rent and loss-to-lease totals (use proprietio_get_rent_roll). Read-only. Requires the properties:read scope.
proprietio_get_rent_roll
ChatGPTReturns the rent roll for one property, one portfolio or every property: unit count, occupied count, occupancy %, contracted monthly rent, market monthly rent, loss-to-lease (market minus contracted rent), and one row per unit with occupancy, current rent and market rent. Use for occupancy, rent level, vacancy and loss-to-lease questions. Contains no resident names or balances: for who owes money use proprietio_get_delinquency, for resident names use proprietio_list_residents. Read-only. Requires the accounting:read scope.
proprietio_get_risk_radar
ChatGPTScores each property's operating risk from 0 to 100 and returns property scorecards ranked by score (risk level critical, high, medium, low or healthy, top risk, recommended focus, contributing factors), a summary, risk totals by category (maintenance, delinquency, leasing, revenue) and the top 5 next actions. The score is a fixed weighting of emergency and high-priority work orders, work orders open 7+ days, unassigned work orders, delinquency balance, vacant units, loss-to-lease and, when lease data is available, leases ending within 60 days. Use when the user asks which properties are at risk or why a property is flagged. Not for KPI tiles (use proprietio_get_command_center) or the records behind a factor (use proprietio_search_work_orders, proprietio_get_delinquency or proprietio_get_rent_roll). risk_threshold and max_properties filter only the returned scorecards; the summary and category totals cover every property in scope. Read-only; returns no resident names or contact details. Requires the properties:read, accounting:read and maintenance:read scopes.
proprietio_get_work_order
ChatGPTReturns one work order (status, priority, category, description, unit, timestamps, days open, resolution notes) and its assigned vendor's name, trade, phone, email and rating, or null when no vendor is assigned. Use when the user asks about a specific work order by ID. Not for finding work orders by status, property or age (use proprietio_search_work_orders). Read-only. Requires the maintenance:read scope.
proprietio_list_available_units
ChatGPTLists units currently marked available (vacant or listed for rent) across the connected account, cheapest first, at most 8, optionally filtered by minimum bedrooms and maximum monthly rent in dollars. Use for leasing questions such as 'what 2-bedrooms do we have under $2,000'. Not for every unit of one property, occupied ones included (use proprietio_list_units). Returns no resident data. Live data only: returns an error when the server runs on demo data. Read-only. Requires the properties:read scope.
proprietio_list_residents
ChatGPTLists the residents of exactly one property or one unit, with each resident's name and current balance due. Email, phone and the resident, unit and property IDs are included only when include_contact_info is true; a resident ID is needed before proprietio_send_message can message a resident. Use for questions such as 'who lives in unit 102' or 'which residents at this property have a balance'. Pass property_id or unit_id, never both. Not for balances broken down by how overdue they are (use proprietio_get_delinquency) or rent amounts (use proprietio_get_rent_roll). Read-only. Requires the tenants:read scope.
proprietio_list_units
ChatGPTLists the units of one property with unit number, bedrooms, bathrooms, square footage, current and market rent, occupancy and current lease ID, plus the property's occupancy rate. Set occupied_only to leave out vacant units. Use for questions about a property's units or occupancy, or to find a unit ID or lease ID. Not for units available to rent across the account with bedroom or price filters (use proprietio_list_available_units), or rent totals and loss-to-lease (use proprietio_get_rent_roll). Read-only. Requires the properties:read scope.
proprietio_list_vendors
ChatGPTLists vendors with ID, name, trade, phone, email, rating and approval status. Only approved vendors are returned unless approved_only is false; trade filters on an exact value such as 'plumbing', 'hvac', 'electrical' or 'general'. Use to find a vendor ID before assigning a work order, or to answer who to call for a trade. Not for the vendor already assigned to a work order (use proprietio_get_work_order). Read-only. Requires the maintenance:read scope.
proprietio_search_properties
ChatGPTLists properties in the connected account, optionally filtered by city, two-letter state code, owner name or unit count range, and returns count plus each property's ID, name, address, unit count, year built, acquisition date, owner and current value. Use to find a property ID, or for questions such as 'which properties do we have in Austin'. There is no name filter: to find a property by name, call it with no filters and match on name. With no filters it returns every property. Not for one property's units and leases (use proprietio_get_property). Read-only. Requires the properties:read scope.
proprietio_search_work_orders
ChatGPTLists work orders matching optional filters (property, status, priority, category, minimum days open) and returns count plus each work order's ID, property, unit, category, priority, status, description, assigned vendor ID, days open and timestamps. With no filters it returns every work order in every status, completed ones included. Use for questions such as 'open work orders at this property', 'any emergencies' or stale tickets (min_days_open: 7). Filters are exact values; there is no free-text, vendor or date-range filter. Not for the assigned vendor's contact details (use proprietio_get_work_order) or units with repeat problems (use proprietio_find_recurring_maintenance_issues). Read-only. Requires the maintenance:read scope.
proprietio_send_message
ChatGPTSends one message, with a subject and body, through Proprietio messaging to one resident. Use when the user asks to message, notify or remind a resident. The recipient receives it outside this conversation and it cannot be recalled, so show the user the recipient and the exact text and get their confirmation before calling. Each call sends another message. Pass exactly one of to_resident_id or to_vendor_id. Resident IDs come from proprietio_list_residents or proprietio_get_lease with include_contact_info: true. Vendor messaging is not supported by the production backend yet and returns an error. Not for owner or investor updates: draft those with proprietio_get_owner_update; this tool cannot reach owners. Sends externally. Requires the communications:write scope.
proprietio_suggest_tour_times
ChatGPTProposes open 30-minute tour slots over the next days days (default 5, maximum 14) in the organization's time zone, skipping slots already booked, optionally for one unit. Use when someone asks when a unit can be shown. It does not book or hold a slot, and no Proprietio tool books tours. Live data only: returns an error when the server runs on demo data. Read-only. Requires the properties:read scope.
proprietio_triage_issue
ChatGPTClassifies a maintenance problem described in plain words: urgency (EMERGENCY, URGENT or ROUTINE), likely trade, and a safe first-step checklist when one exists. Use when the user describes a problem and asks how urgent it is or which trade to call. It reads no property data and creates no work order; to log the problem, use proprietio_create_work_order. Live data only: returns an error when the server runs on demo data. Read-only. Requires the maintenance:read scope.
proprietio_update_work_order
ChatGPTChanges the status, priority or assigned vendor of an existing work order and can record a note with the change; fields you omit are left as they are. Use when the user asks to reassign, re-prioritize, move a ticket to another status, or add a note. To finish a job with a resolution, use proprietio_close_work_order instead. The production backend rejects the status 'cancelled'. Writes data. Requires the maintenance:write scope.