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_findList 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).
| Field | Type | Description |
|---|---|---|
| detail | one of summary, full | Response 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_updateAdd 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).
| Field | Type | Description |
|---|---|---|
| record* | object | Property fields; nickname or address recommended when creating. |
| record.id | string | Existing property ID to update. Omit to add a new property. |
| record.nickname | string | Friendly name, e.g. 'Home' or 'Lake cabin'. Recommended when creating. |
| record.tenure | one of owned, rented, leased_out | Defaults to 'owned'. |
| record.propertyType | one of house, condo, apartment, townhouse, multi_family, land, other | Defaults to 'house'. |
| record.addressLine1 | string | Street address. |
| record.addressLine2 | string | |
| record.city | string | |
| record.state | string | |
| record.postalCode | string | |
| record.country | string | |
| record.placeKey | string | Places module place key to link this property to its map entry. Only pass a real key from the Places module, never invented. |
| record.beds | number | |
| record.baths | number | |
| record.sqft | integer | Interior area in square feet. |
| record.yearBuilt | integer | |
| record.lotSizeSqft | integer | |
| record.purchaseDate | string | Local date YYYY-MM-DD. |
| record.purchasePrice | number | |
| record.financeType | one of cash, mortgage, heloc, other | How it was financed (owned / leased_out). |
| record.lender | string | |
| record.mortgageBalance | number | Outstanding mortgage balance: drives equity. |
| record.monthlyPayment | number | Mortgage principal + interest per month. |
| record.interestRate | number | Mortgage APR %. |
| record.loanTermMonths | integer | |
| record.downPayment | number | Cash invested: drives cash-on-cash return for landlords. |
| record.mortgageStartDate | string | Local date YYYY-MM-DD. |
| record.propertyTaxAnnual | number | Annual property tax. |
| record.propertyTaxDueDate | string | Next property-tax due date, powers a reminder. |
| record.hoaMonthly | number | Monthly HOA fee. |
| record.hoaName | string | |
| record.utilitiesMonthly | number | |
| record.monthlyRent | number | Rent the user pays (rented), not landlord income. |
| record.securityDeposit | number | |
| record.leaseStartDate | string | Local date YYYY-MM-DD. |
| record.leaseEndDate | string | When the lease ends, powers a reminder. |
| record.leaseRenewalDate | string | Lease renewal date: powers a reminder. |
| record.landlordName | string | Landlord's name (rented). |
| record.propertyManagerName | string | |
| record.insurancePolicyId | string | Insurance policy ID to link (from the Insurance module). Empty string unlinks. |
| record.insuranceRenewalDue | string | Insurance renewal date: powers a reminder. When a policy is linked, the policy's own renewal date overrides this. |
| record.reminderLeadDays | integer | Days before a dated deadline to remind. Default 30. |
| record.notes | string |
properties_setRecallResolvedUpdatethrough vritto_updateMark 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.
| Field | Type | Description |
|---|---|---|
| propertyId* | string | Property ID from a prior properties_queryPropertiesDashboard result, never invented. |
| applianceId* | string | Appliance ID from the dashboard. |
| recallId* | string | Exact CPSC recall ID from the appliance's recalls list. |
| resolved* | boolean | true = user handled it / not applicable; false = reopen. |
properties_deletePropertyDeletethrough vritto_deleteDelete (archive) one property and stop its reminders. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.
| Field | Type | Description |
|---|---|---|
| propertyId* | string | Property 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_updateAdd 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.
| Field | Type | Description |
|---|---|---|
| record* | object | Tenancy fields; propertyId required, tenantName recommended when creating. |
| record.id | string | Existing tenancy ID to update. Omit to add a new one. |
| record.propertyId* | string | Which property (must be a leased_out property). Required. |
| record.tenantName | string | Tenant'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.unit | string | Unit label for multi-unit properties, e.g. 'Unit A'. |
| record.status | one of upcoming, current, past | Defaults to 'current'. |
| record.leaseStartDate | string | Local date YYYY-MM-DD. |
| record.leaseEndDate | string | Lease end: powers a reminder for active tenancies. |
| record.moveInDate | string | Local date YYYY-MM-DD. |
| record.moveOutDate | string | Local date YYYY-MM-DD. |
| record.monthlyRent | number | This tenant's monthly rent: drives rent roll and cash flow. |
| record.securityDeposit | number | |
| record.depositReturned | boolean | |
| record.notes | string |
properties_deleteTenancyDeletethrough vritto_deleteDelete (archive) one tenancy. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.
| Field | Type | Description |
|---|---|---|
| tenancyId* | string | Tenancy ID from a prior dashboard result. |
Property Maintenanceproperty_maintenance
A repair, improvement, inspection, or maintenance entry.
properties_upsertMaintenanceCreate or Updatethrough vritto_create or vritto_updateRecord or update one maintenance / repair / improvement / inspection entry. Requires propertyId + date. Cost counts as a landlord expense.
| Field | Type | Description |
|---|---|---|
| record* | object | Maintenance fields; propertyId and date are required. |
| record.id | string | Existing entry ID to update. Omit to add a new one. |
| record.propertyId* | string | Which property this entry is for. Required. |
| record.kind | one of maintenance, repair, improvement, inspection, cleaning, other | Defaults to 'maintenance'. |
| record.category | one of plumbing, electrical, hvac, roofing, appliance, landscaping, pest, painting, flooring, structural, cleaning, other | Trade/area, e.g. 'plumbing'. Defaults to 'other'. |
| record.date* | string | When it happened. Required. |
| record.title | string | Short description, e.g. 'Replaced water heater'. |
| record.cost | number | Cost: counts as an expense for landlord P&L. |
| record.vendor | string | Contractor/company name. |
| record.isDiy | boolean | |
| record.applianceId | string | Optional appliance ID this work was on (from the dashboard). |
| record.tenancyId | string | Optional tenancy ID this work was for (leased_out). |
| record.notes | string |
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_deleteDelete (archive) one maintenance entry. Only for explicit removals, resolve the ID with properties_queryPropertiesDashboard first.
| Field | Type | Description |
|---|---|---|
| logId* | string | Maintenance entry ID from a prior dashboard result. |
Kept in the Vritto app
properties_refreshRecalls: Background upkeep Vritto already runs on its own.