{"schema_version":"draft-garage-1","name":"Garage","version":"0.1.0","description":"Read your car's battery, fuel, range, odometer, lock state, tires and location; get proactive alerts (low charge, charging done, low tire pressure, oil change, service interval, safety recalls); optionally lock/unlock and control charging.","publisher":{"name":"Keelcroft","website":"https://keelcroft.com","support_email":"support@keelcroft.com","privacy_policy":"https://garage.keelcroft.com/privacy","terms":"https://garage.keelcroft.com/terms"},"auth":{"type":"oauth2","authorization_server_metadata":"https://garage.keelcroft.com/.well-known/oauth-authorization-server","authorization_endpoint":"https://garage.keelcroft.com/authorize","token_endpoint":"https://garage.keelcroft.com/oauth/token","registration_endpoint":"https://garage.keelcroft.com/oauth/register","scopes":["vehicle:read","alerts:read","vehicle:control"],"pkce_required":true,"api_key_fallback":{"header":"Authorization","scheme":"Bearer","obtain_at":"https://garage.keelcroft.com/account"}},"interfaces":{"mcp":{"transport":"streamable-http","url":"https://garage.keelcroft.com/mcp"},"rest":{"openapi":"https://garage.keelcroft.com/openapi.json","base_url":"https://garage.keelcroft.com/v1"}},"tools":[{"name":"list_vehicles","title":"List connected vehicles","description":"Lists the cars connected to the user's Garage account with their ids, names, make/model/year and powertrain. Call this first when the user has more than one car.","inputSchema":{"type":"object","properties":{"refresh":{"description":"Re-sync the vehicle list from the car maker account (slower).","type":"boolean"}}},"annotations":{"title":"List connected vehicles","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requires_user_approval":false,"required_scope":"vehicle:read"},{"name":"get_vehicle_state","title":"Get vehicle state","description":"Returns the current state of a car: battery or fuel level, range (km), charging status and limit, odometer (km), lock state, doors, tire pressures (kPa), oil life, and last known location. Uses the latest data pushed by the car; set refresh=true to poll the car now.","inputSchema":{"type":"object","properties":{"vehicle_id":{"description":"Vehicle id from list_vehicles. Optional when the account has exactly one vehicle.","type":"string","minLength":1},"refresh":{"description":"Poll the vehicle for fresh data instead of using the last pushed values.","type":"boolean"}}},"annotations":{"title":"Get vehicle state","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requires_user_approval":false,"required_scope":"vehicle:read"},{"name":"get_recent_alerts","title":"Get recent alerts","description":"Returns proactive alerts Garage raised from live vehicle data: low battery or fuel, charging complete or interrupted, low tire pressure, oil change due, service interval reached, safety recalls. Use since (ISO-8601) to fetch only new alerts.","inputSchema":{"type":"object","properties":{"vehicle_id":{"description":"Limit to one vehicle.","type":"string","minLength":1},"since":{"description":"Only alerts created after this ISO-8601 timestamp.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"limit":{"description":"Maximum number of alerts (default 20).","type":"integer","minimum":1,"maximum":100}}},"annotations":{"title":"Get recent alerts","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requires_user_approval":false,"required_scope":"alerts:read"},{"name":"check_recalls","title":"Check safety recalls","description":"Looks up open NHTSA safety recalls for the car's make, model and year and records any new ones as alerts.","inputSchema":{"type":"object","properties":{"vehicle_id":{"description":"Vehicle id from list_vehicles. Optional when the account has exactly one vehicle.","type":"string","minLength":1}}},"annotations":{"title":"Check safety recalls","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"requires_user_approval":false,"required_scope":"vehicle:read"},{"name":"set_alert_preferences","title":"Set alert preferences","description":"Updates the thresholds that trigger proactive alerts for a vehicle. Only the fields provided are changed; returns the full effective preferences.","inputSchema":{"type":"object","properties":{"vehicle_id":{"description":"Vehicle id from list_vehicles. Optional when the account has exactly one vehicle.","type":"string","minLength":1},"low_battery_percent":{"type":"number","minimum":1,"maximum":90},"low_fuel_percent":{"type":"number","minimum":1,"maximum":90},"low_oil_life_percent":{"type":"number","minimum":1,"maximum":90},"tire_pressure_min_kpa":{"description":"kPa; 200 kPa is about 29 psi.","type":"number","minimum":100,"maximum":400},"service_interval_km":{"type":"integer","minimum":1000,"maximum":50000},"notify_charge_complete":{"type":"boolean"},"notify_unlocked":{"type":"boolean"}}},"annotations":{"title":"Set alert preferences","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"requires_user_approval":false,"required_scope":"vehicle:read"}],"proactive_events":{"enabled":true,"poll":"https://garage.keelcroft.com/v1/alerts?since={iso8601}","types":["low_battery","charge_complete","charging_stopped_early","low_fuel","oil_change_due","tire_pressure_low","service_interval_reached","vehicle_unlocked","recall"]},"data_handling":{"stores":["vehicle identifiers","latest vehicle signals","alerts","account email"],"location_precision":"exact GPS coordinates when the vehicle exposes them","retention":"until the user disconnects; deleted on account deletion","sharing":"none beyond Smartcar (vehicle data) and Dodo Payments (billing)"},"commands_enabled":false}