Skip To Main Content
All modules

Garage

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.

Vehiclevehicle

A car or motorcycle the user owns, finances, or leases.

garage_queryGarageDashboardFindthrough vritto_find

List vehicles and logbook entries (service/fuel/charge/trip/damage). Rows are compact summaries plus headline counts (incl. open-recall counts); pass detail 'full' only when the user needs recall details, warranties, deadlines, full history, or notes. Use for status/history/cost questions and to resolve a vehicle or log ID before any write.

FieldTypeDescription
detailone of summary, fullResponse shape: "summary" (default, headline counts + compact vehicle/log rows) or "full" (every field incl. recalls, warranties, deadlines, parts, and log notes).
garage_upsertVehicleCreate or Updatethrough vritto_create or vritto_update

Add a vehicle or update its details (odometer, deadlines, ownership, financing incl. APR/term/payoff, insurance link). Omit record.id to create; include a real record.id to update, sent fields merge. Setting a due date schedules a reminder. Does not touch warranties, photos, or documents (app-managed).

FieldTypeDescription
record*objectVehicle fields; make/model or nickname recommended when creating.
record.idstringExisting vehicle ID to update. Omit to add a new vehicle.
record.vinstring17-char VIN. Call garage_decodeVin first to fill make/model/year.
record.yearinteger
record.makestringe.g. 'Honda'. Recommended when creating.
record.modelstringe.g. 'Accord'.
record.trimstring
record.nicknamestringFriendly name, e.g. 'The Accord'.
record.vehicleTypeone of car, motorcycle, truck, suv, van, otherDefaults to 'car'.
record.powertrainone of gas, hybrid, plugin_hybrid, diesel, ev, otherDefaults to 'gas'.
record.colorstring
record.licensePlatestring
record.ownershipTypeone of owned, financed, leased
record.purchaseDatestringLocal date YYYY-MM-DD.
record.purchasePricenumber
record.sellerstringDealer or private seller.
record.financeTypeone of cash, loan, lease
record.lenderstring
record.monthlyPaymentnumber
record.aprnumberLoan/lease APR %.
record.loanTermMonthsintegerLoan or lease term in months.
record.downPaymentnumberCash paid up front.
record.payoffBalancenumberRemaining loan balance. Set to 0 when the user says they paid it off.
record.leaseEndDatestringWhen the lease ends (for leased vehicles).
record.odometerintegerCurrent mileage. Updating this keeps the record current.
record.efficiencynumberManual MPG (or mi/kWh for EV).
record.registrationDuestringRegistration renewal date: powers a reminder.
record.inspectionDuestringInspection/emissions due date, powers a reminder.
record.insuranceRenewalDuestringInsurance renewal date: powers a reminder.
record.nextServiceDuestringNext service date: powers a reminder.
record.nextServiceMileageintegerOdometer at which the next service is due.
record.insurancePolicyIdstringInsurance policy ID to link (from the Insurance module). Empty string unlinks. When linked, the policy's renewal date drives insuranceRenewalDue.
record.insuranceAnnualnumberAnnual insurance cost, for total cost of ownership.
record.registrationAnnualnumberAnnual registration cost, for total cost of ownership.
record.reminderLeadDaysintegerDays before a dated deadline to remind. Default 14.
record.notesstring
record.primaryDriverPersonIdstringPeople person id of the primary driver; omit for the account owner.
Example input
{
  "record": {
    "year": 2022,
    "make": "Toyota",
    "model": "RAV4",
    "trim": "XLE Hybrid",
    "powertrain": "hybrid",
    "odometer": 31250
  }
}
garage_setRecallResolvedUpdatethrough vritto_update

Mark an NHTSA recall campaign as resolved (or not) for a vehicle, for recalls the user has already had fixed. Pass the exact campaignNumber from garage_queryGarageDashboard.

FieldTypeDescription
vehicleId*stringVehicle ID from a prior garage_queryGarageDashboard result, never invented.
campaignNumber*stringExact NHTSA campaign number from the dashboard recalls list.
resolved*booleantrue = user had it fixed / not applicable; false = reopen.
garage_deleteVehicleDeletethrough vritto_delete

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

FieldTypeDescription
vehicleId*stringVehicle ID from a prior garage_queryGarageDashboard result, never invented.

Vehicle Log Entryvehicle_log

A service, fuel fill-up, charge, trip, or damage entry.

garage_upsertLogCreate or Updatethrough vritto_create or vritto_update

Record or update one logbook entry, a service, fuel fill-up, charge session, trip (IRS mileage), or damage. Requires vehicleId + kind + date; other fields depend on kind. A higher odometer rolls the vehicle's reading forward.

FieldTypeDescription
record*objectLog fields; vehicleId, kind, and date are required.
record.idstringExisting log entry ID to update. Omit to add a new one.
record.vehicleIdstringUse ONLY when you already know the ID from earlier in this conversation. Never call a query tool just to obtain it, send vehicleName instead.
record.vehicleNamestringThe vehicle as the user names it (nickname, or make/model like "Civic"). Matched against the garage; an ambiguous name comes back as an error asking which one.
record.kind*one of service, fuel, charge, trip, damageRequired.
record.date*stringWhen it happened. Required.
record.titlestringShort label for the entry, e.g. 'Front brake pads'.
record.odometerintegerOdometer reading; a higher value rolls the vehicle's odometer forward.
record.totalCostnumberTotal cost of this entry (repair, fuel, charge).
record.notesstring
record.sourceone of manual, sahai, gmail, bankWhere the entry came from. Set by the ingestion pipeline; leave unset.
record.serviceTypeone of oil_change, tire_rotation, tires, brakes, battery, inspection, fluids, filter, spark_plugs, repair, detailing, otherFor kind 'service'.
record.vendorstringShop name (for kind 'service').
record.isDiybooleanDid it themselves (for kind 'service').
record.laborCostnumber
record.partslist of objectParts used (for kind 'service'). Sending this replaces the entry's whole parts list.
record.volumenumberGallons (for kind 'fuel').
record.pricePerUnitnumberPrice per gallon (for kind 'fuel').
record.isFullTankbooleanFilled the tank: needed for accurate MPG (for kind 'fuel'). Server default is TRUE when omitted, so pass false explicitly for a partial fill.
record.kwhnumberEnergy added in kWh (for kind 'charge').
record.chargeLocationone of home, public, work, otherFor kind 'charge'.
record.tripMilesnumberMiles driven (for kind 'trip').
record.tripCategoryone of business, personal, medical, charity, movingFor kind 'trip'. Server default is 'business' when omitted: pass 'personal' explicitly for non-deductible trips.
record.tripPurposestringWhy the trip happened (for kind 'trip').
record.damageSeverityone of minor, moderate, majorFor kind 'damage'.
record.damageLocationstringWhere on the vehicle, e.g. 'front bumper' (for kind 'damage').
record.damageRepairedbooleanWhether it's been repaired (for kind 'damage').
Example input
{
  "record": {
    "vehicleName": "RAV4",
    "kind": "service",
    "date": "2026-09-20",
    "serviceType": "oil_change",
    "odometer": 31200,
    "totalCost": 89.99,
    "vendor": "Jiffy Lube"
  }
}
garage_deleteLogDeletethrough vritto_delete

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

FieldTypeDescription
logId*stringLog entry ID from a prior garage_queryGarageDashboard result.

VIN Decodervin_catalog

Vehicle details decoded from a VIN.

garage_decodeVinLook Upthrough vritto_lookup

Decode a 17-character VIN via NHTSA into make/model/year/trim/vehicleType/powertrain. Read-only lookup; use to pre-fill fields before garage_upsertVehicle.

FieldTypeDescription
vin*stringThe VIN to decode.

Kept in the Vritto app

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