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_findList 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.
| Field | Type | Description |
|---|---|---|
| detail | one of summary, full | Response 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_updateAdd 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).
| Field | Type | Description |
|---|---|---|
| record* | object | Vehicle fields; make/model or nickname recommended when creating. |
| record.id | string | Existing vehicle ID to update. Omit to add a new vehicle. |
| record.vin | string | 17-char VIN. Call garage_decodeVin first to fill make/model/year. |
| record.year | integer | |
| record.make | string | e.g. 'Honda'. Recommended when creating. |
| record.model | string | e.g. 'Accord'. |
| record.trim | string | |
| record.nickname | string | Friendly name, e.g. 'The Accord'. |
| record.vehicleType | one of car, motorcycle, truck, suv, van, other | Defaults to 'car'. |
| record.powertrain | one of gas, hybrid, plugin_hybrid, diesel, ev, other | Defaults to 'gas'. |
| record.color | string | |
| record.licensePlate | string | |
| record.ownershipType | one of owned, financed, leased | |
| record.purchaseDate | string | Local date YYYY-MM-DD. |
| record.purchasePrice | number | |
| record.seller | string | Dealer or private seller. |
| record.financeType | one of cash, loan, lease | |
| record.lender | string | |
| record.monthlyPayment | number | |
| record.apr | number | Loan/lease APR %. |
| record.loanTermMonths | integer | Loan or lease term in months. |
| record.downPayment | number | Cash paid up front. |
| record.payoffBalance | number | Remaining loan balance. Set to 0 when the user says they paid it off. |
| record.leaseEndDate | string | When the lease ends (for leased vehicles). |
| record.odometer | integer | Current mileage. Updating this keeps the record current. |
| record.efficiency | number | Manual MPG (or mi/kWh for EV). |
| record.registrationDue | string | Registration renewal date: powers a reminder. |
| record.inspectionDue | string | Inspection/emissions due date, powers a reminder. |
| record.insuranceRenewalDue | string | Insurance renewal date: powers a reminder. |
| record.nextServiceDue | string | Next service date: powers a reminder. |
| record.nextServiceMileage | integer | Odometer at which the next service is due. |
| record.insurancePolicyId | string | Insurance policy ID to link (from the Insurance module). Empty string unlinks. When linked, the policy's renewal date drives insuranceRenewalDue. |
| record.insuranceAnnual | number | Annual insurance cost, for total cost of ownership. |
| record.registrationAnnual | number | Annual registration cost, for total cost of ownership. |
| record.reminderLeadDays | integer | Days before a dated deadline to remind. Default 14. |
| record.notes | string | |
| record.primaryDriverPersonId | string | People 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_updateMark 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.
| Field | Type | Description |
|---|---|---|
| vehicleId* | string | Vehicle ID from a prior garage_queryGarageDashboard result, never invented. |
| campaignNumber* | string | Exact NHTSA campaign number from the dashboard recalls list. |
| resolved* | boolean | true = user had it fixed / not applicable; false = reopen. |
garage_deleteVehicleDeletethrough vritto_deleteDelete (archive) one vehicle and stop its reminders. Only for explicit removals, resolve the ID with garage_queryGarageDashboard first.
| Field | Type | Description |
|---|---|---|
| vehicleId* | string | Vehicle 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_updateRecord 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.
| Field | Type | Description |
|---|---|---|
| record* | object | Log fields; vehicleId, kind, and date are required. |
| record.id | string | Existing log entry ID to update. Omit to add a new one. |
| record.vehicleId | string | Use 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.vehicleName | string | The 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, damage | Required. |
| record.date* | string | When it happened. Required. |
| record.title | string | Short label for the entry, e.g. 'Front brake pads'. |
| record.odometer | integer | Odometer reading; a higher value rolls the vehicle's odometer forward. |
| record.totalCost | number | Total cost of this entry (repair, fuel, charge). |
| record.notes | string | |
| record.source | one of manual, sahai, gmail, bank | Where the entry came from. Set by the ingestion pipeline; leave unset. |
| record.serviceType | one of oil_change, tire_rotation, tires, brakes, battery, inspection, fluids, filter, spark_plugs, repair, detailing, other | For kind 'service'. |
| record.vendor | string | Shop name (for kind 'service'). |
| record.isDiy | boolean | Did it themselves (for kind 'service'). |
| record.laborCost | number | |
| record.parts | list of object | Parts used (for kind 'service'). Sending this replaces the entry's whole parts list. |
| record.volume | number | Gallons (for kind 'fuel'). |
| record.pricePerUnit | number | Price per gallon (for kind 'fuel'). |
| record.isFullTank | boolean | Filled the tank: needed for accurate MPG (for kind 'fuel'). Server default is TRUE when omitted, so pass false explicitly for a partial fill. |
| record.kwh | number | Energy added in kWh (for kind 'charge'). |
| record.chargeLocation | one of home, public, work, other | For kind 'charge'. |
| record.tripMiles | number | Miles driven (for kind 'trip'). |
| record.tripCategory | one of business, personal, medical, charity, moving | For kind 'trip'. Server default is 'business' when omitted: pass 'personal' explicitly for non-deductible trips. |
| record.tripPurpose | string | Why the trip happened (for kind 'trip'). |
| record.damageSeverity | one of minor, moderate, major | For kind 'damage'. |
| record.damageLocation | string | Where on the vehicle, e.g. 'front bumper' (for kind 'damage'). |
| record.damageRepaired | boolean | Whether 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_deleteDelete (archive) one logbook entry. Only for explicit removals, resolve the ID with garage_queryGarageDashboard first.
| Field | Type | Description |
|---|---|---|
| logId* | string | Log entry ID from a prior garage_queryGarageDashboard result. |
VIN Decodervin_catalog
Vehicle details decoded from a VIN.
garage_decodeVinLook Upthrough vritto_lookupDecode a 17-character VIN via NHTSA into make/model/year/trim/vehicleType/powertrain. Read-only lookup; use to pre-fill fields before garage_upsertVehicle.
| Field | Type | Description |
|---|---|---|
| vin* | string | The VIN to decode. |
Kept in the Vritto app
garage_refreshRecalls: Background upkeep Vritto already runs on its own.