Skip To Main Content
All modules

Properties

Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.

Propertyproperty

A home or unit the user owns, rents, or leases out.

properties_queryPropertiesDashboardFindthrough vritto_find

List all properties, tenancies, and maintenance entries. Use for status/value/rent/cash-flow/recall/history questions and to resolve any ID before a write. Defaults to a compact summary: counts plus capped lean rows (property name, tenure, current valuation; recent maintenance).

FieldTypeDescription
detailone of summary, fullResponse shape: "summary" (default, counts + capped lean property/maintenance rows) or "full" (every record incl. financials, appliances + recalls, deadlines, tenancies, and documents).
properties_upsertPropertyCreate or Updatethrough vritto_create or vritto_update

Add a property or update its details (address, tenure, financing, tax, lease, insurance link). Omit record.id to create; include a real record.id to update, sent fields merge. Setting a tax/lease due date schedules a reminder. Does not touch appliances, value/rent history, documents, or linked people (app-managed).

FieldTypeDescription
record*objectProperty fields; nickname or address recommended when creating.
record.idstringExisting property ID to update. Omit to add a new property.
record.nicknamestringFriendly name, e.g. 'Home' or 'Lake cabin'. Recommended when creating.
record.tenureone of owned, rented, leased_outDefaults to 'owned'.
record.propertyTypeone of house, condo, apartment, townhouse, multi_family, land, otherDefaults to 'house'.
record.addressLine1stringStreet address.
record.addressLine2string
record.citystring
record.statestring
record.postalCodestring
record.countrystring
record.placeKeystringPlaces module place key to link this property to its map entry. Only pass a real key from the Places module, never invented.
record.bedsnumber
record.bathsnumber
record.sqftintegerInterior area in square feet.
record.yearBuiltinteger
record.lotSizeSqftinteger
record.purchaseDatestringLocal date YYYY-MM-DD.
record.purchasePricenumber
record.financeTypeone of cash, mortgage, heloc, otherHow it was financed (owned / leased_out).
record.lenderstring
record.mortgageBalancenumberOutstanding mortgage balance: drives equity.
record.monthlyPaymentnumberMortgage principal + interest per month.
record.interestRatenumberMortgage APR %.
record.loanTermMonthsinteger
record.downPaymentnumberCash invested: drives cash-on-cash return for landlords.
record.mortgageStartDatestringLocal date YYYY-MM-DD.
record.propertyTaxAnnualnumberAnnual property tax.
record.propertyTaxDueDatestringNext property-tax due date, powers a reminder.
record.hoaMonthlynumberMonthly HOA fee.
record.hoaNamestring
record.utilitiesMonthlynumber
record.monthlyRentnumberRent the user pays (rented), not landlord income.
record.securityDepositnumber
record.leaseStartDatestringLocal date YYYY-MM-DD.
record.leaseEndDatestringWhen the lease ends, powers a reminder.
record.leaseRenewalDatestringLease renewal date: powers a reminder.
record.landlordNamestringLandlord's name (rented).
record.propertyManagerNamestring
record.insurancePolicyIdstringInsurance policy ID to link (from the Insurance module). Empty string unlinks.
record.insuranceRenewalDuestringInsurance renewal date: powers a reminder. When a policy is linked, the policy's own renewal date overrides this.
record.reminderLeadDaysintegerDays before a dated deadline to remind. Default 30.
record.notesstring
properties_setRecallResolvedUpdatethrough vritto_update

Mark an appliance's CPSC recall as resolved (or not), for recalls the user has already handled. Pass propertyId + applianceId + the exact recallId from properties_queryPropertiesDashboard.

FieldTypeDescription
propertyId*stringProperty ID from a prior properties_queryPropertiesDashboard result, never invented.
applianceId*stringAppliance ID from the dashboard.
recallId*stringExact CPSC recall ID from the appliance's recalls list.
resolved*booleantrue = user handled it / not applicable; false = reopen.
properties_deletePropertyDeletethrough vritto_delete

Delete (archive) one property and stop its reminders. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.

FieldTypeDescription
propertyId*stringProperty ID from a prior properties_queryPropertiesDashboard result, never invented.

Tenancytenancy

A tenant and lease on a leased-out property.

properties_upsertTenancyCreate or Updatethrough vritto_create or vritto_update

Add or update a tenancy (resident + lease + rent) for a leased_out property. Requires propertyId. Omit record.id to create; include a real record.id to update, sent fields merge.

FieldTypeDescription
record*objectTenancy fields; propertyId required, tenantName recommended when creating.
record.idstringExisting tenancy ID to update. Omit to add a new one.
record.propertyId*stringWhich property (must be a leased_out property). Required.
record.tenantNamestringTenant's name. Effectively REQUIRED when creating: the server needs a tenant name or linked people, and linked people are app-managed, so a new tenancy without tenantName is rejected.
record.unitstringUnit label for multi-unit properties, e.g. 'Unit A'.
record.statusone of upcoming, current, pastDefaults to 'current'.
record.leaseStartDatestringLocal date YYYY-MM-DD.
record.leaseEndDatestringLease end: powers a reminder for active tenancies.
record.moveInDatestringLocal date YYYY-MM-DD.
record.moveOutDatestringLocal date YYYY-MM-DD.
record.monthlyRentnumberThis tenant's monthly rent: drives rent roll and cash flow.
record.securityDepositnumber
record.depositReturnedboolean
record.notesstring
properties_deleteTenancyDeletethrough vritto_delete

Delete (archive) one tenancy. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.

FieldTypeDescription
tenancyId*stringTenancy ID from a prior dashboard result.

Property Maintenanceproperty_maintenance

A repair, improvement, inspection, or maintenance entry.

properties_upsertMaintenanceCreate or Updatethrough vritto_create or vritto_update

Record or update one maintenance / repair / improvement / inspection entry. Requires propertyId + date. Cost counts as a landlord expense.

FieldTypeDescription
record*objectMaintenance fields; propertyId and date are required.
record.idstringExisting entry ID to update. Omit to add a new one.
record.propertyId*stringWhich property this entry is for. Required.
record.kindone of maintenance, repair, improvement, inspection, cleaning, otherDefaults to 'maintenance'.
record.categoryone of plumbing, electrical, hvac, roofing, appliance, landscaping, pest, painting, flooring, structural, cleaning, otherTrade/area, e.g. 'plumbing'. Defaults to 'other'.
record.date*stringWhen it happened. Required.
record.titlestringShort description, e.g. 'Replaced water heater'.
record.costnumberCost: counts as an expense for landlord P&L.
record.vendorstringContractor/company name.
record.isDiyboolean
record.applianceIdstringOptional appliance ID this work was on (from the dashboard).
record.tenancyIdstringOptional tenancy ID this work was for (leased_out).
record.notesstring
Example input
{
  "record": {
    "propertyId": "prop_home",
    "kind": "repair",
    "category": "plumbing",
    "date": "2026-09-22",
    "title": "Fixed kitchen sink leak",
    "cost": 185,
    "vendor": "Roto-Rooter"
  }
}
properties_deleteMaintenanceDeletethrough vritto_delete

Delete (archive) one maintenance entry. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.

FieldTypeDescription
logId*stringMaintenance entry ID from a prior dashboard result.

Kept in the Vritto app

  • properties_refreshRecalls: Background upkeep Vritto already runs on its own.