ServiceSchedule
Car maintenance due dates, cost estimates and seasonal checklists. Free.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"service-schedule": {
"url": "https://service-schedule.magicteams.ai/mcp"
}
}
}Remote endpoints
https://service-schedule.magicteams.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢due_services(odometer, unit, months_since_last_oil, km_per_month, last_service)
Work out which car maintenance services (oil, tires, brakes, filters, coolant, plugs, transmission, battery) are due, due soon or ok from the current odometer and optional service history, and name the next one. Use to check what a car needs now. Do NOT use for prices (use service_cost_estimate) or a 12-month plan (use service_timeline).
Input Schema
{
"type": "object",
"properties": {
"odometer": {
"type": "number",
"minimum": 0,
"description": "Current odometer reading, non-negative, in the unit given by unit, e.g. 48000"
},
"unit": {
"type": "string",
"enum": [
"km",
"mi"
],
"description": "Unit of odometer and last_service odometer values: 'km' (default) or 'mi'"
},
"months_since_last_oil": {
"type": "number",
"minimum": 0,
"description": "Months since the last oil change; used as the time baseline for every item without its own history, default 0"
},
"km_per_month": {
"type": "number",
"minimum": 100,
"maximum": 10000,
"description": "Average distance driven per month in km (always km, 100-10000); adds a 'next due in about N months' hint"
},
"last_service": {
"type": "array",
"description": "Optional per-service history, one entry per service id; items without an entry assume last service at odometer 0",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
],
"description": "Service id, e.g. 'oil_change'"
},
"odometer": {
"type": "number",
"minimum": 0,
"description": "Odometer when this service was last done, same unit as odometer and not above it"
},
"months_ago": {
"type": "number",
"minimum": 0,
"description": "Months since this service was last done"
}
},
"required": [
"id"
]
}
}
},
"required": [
"odometer"
]
}Output Schema
{
"type": "object",
"properties": {
"odometer_km": {
"type": "number",
"description": "Current odometer converted to km (1 decimal)"
},
"odometer_input": {
"type": "object",
"description": "Odometer value and unit as supplied",
"properties": {
"value": {
"type": "number",
"description": "Odometer value as supplied"
},
"unit": {
"type": "string",
"enum": [
"km",
"mi"
],
"description": "Unit of the supplied value"
}
},
"required": [
"value",
"unit"
]
},
"services": {
"type": "array",
"description": "Status of every tracked maintenance service",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
],
"description": "Service id"
},
"name": {
"type": "string",
"description": "Service name, e.g. 'Oil change'"
},
"status": {
"type": "string",
"enum": [
"due",
"soon",
"ok"
],
"description": "'due' (within 1000 km or 1 month, or overdue), 'soon' (within 3000 km or 3 months) or 'ok'"
},
"due_at_km": {
"type": [
"number",
"null"
],
"description": "Odometer (km) at which the service is due; null for time-only items such as battery_check"
},
"km_left": {
"type": [
"number",
"null"
],
"description": "Km until due (negative = overdue); null for time-only items"
},
"due_in_months": {
"type": "number",
"description": "Months from now until due by time (negative = overdue)"
},
"months_left": {
"type": "number",
"description": "Months left on the time interval (same as due_in_months)"
},
"items": {
"type": "array",
"items": {
"type": "string"
},
"description": "What the service typically includes"
}
},
"required": [
"id",
"name",
"status",
"due_at_km",
"km_left",
"due_in_months",
"months_left",
"items"
]
}
},
"next_service": {
"type": "object",
"description": "The most urgent service",
"properties": {
"id": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
],
"description": "Service id"
},
"name": {
"type": "string",
"description": "Service name, e.g. 'Oil change'"
},
"status": {
"type": "string",
"enum": [
"due",
"soon",
"ok"
],
"description": "'due' (within 1000 km or 1 month, or overdue), 'soon' (within 3000 km or 3 months) or 'ok'"
},
"due_at_km": {
"type": [
"number",
"null"
],
"description": "Odometer (km) at which the service is due; null for time-only items such as battery_check"
},
"km_left": {
"type": [
"number",
"null"
],
"description": "Km until due (negative = overdue); null for time-only items"
},
"due_in_months": {
"type": "number",
"description": "Months from now until due by time (negative = overdue)"
},
"months_left": {
"type": "number",
"description": "Months left on the time interval (same as due_in_months)"
}
},
"required": [
"id",
"name",
"status",
"due_at_km",
"km_left",
"due_in_months",
"months_left"
]
},
"note": {
"type": "string",
"description": "Summary counts, baseline assumptions and caveats"
}
},
"required": [
"odometer_km",
"odometer_input",
"services",
"next_service",
"note"
]
}🟢service_cost_estimate(services, tier)
Estimate typical US parts-and-labor price ranges (USD) for a list of car maintenance services at an economy, mid or luxury shop, with low and high totals. Use when budgeting for known services. An estimate, not a quote. Do NOT use to find which services are due (use due_services).
Input Schema
{
"type": "object",
"properties": {
"services": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
]
},
"description": "Service ids to price (duplicates ignored), e.g. [\"oil_change\",\"brake_inspection\"]"
},
"tier": {
"type": "string",
"enum": [
"economy",
"mid",
"luxury"
],
"description": "Shop tier: 'economy' (x0.85), 'mid' (default) or 'luxury' (x1.6)"
}
},
"required": [
"services"
]
}Output Schema
{
"type": "object",
"properties": {
"tier": {
"type": "string",
"enum": [
"economy",
"mid",
"luxury"
],
"description": "Shop tier used for pricing"
},
"items": {
"type": "array",
"description": "Price range per service in USD",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
],
"description": "Service id"
},
"name": {
"type": "string",
"description": "Service name"
},
"low": {
"type": "number",
"description": "Low end of the typical price, USD"
},
"high": {
"type": "number",
"description": "High end of the typical price, USD"
}
},
"required": [
"id",
"name",
"low",
"high"
]
}
},
"total_low": {
"type": "number",
"description": "Sum of low prices, USD"
},
"total_high": {
"type": "number",
"description": "Sum of high prices, USD"
},
"note": {
"type": "string",
"description": "Summary of what was priced"
},
"source_note": {
"type": "string",
"description": "Source and estimate-not-quote caveat"
}
},
"required": [
"tier",
"items",
"total_low",
"total_high",
"note",
"source_note"
]
}🟢service_timeline(odometer, unit, km_per_month, months_since_last_oil)
Project the next 12 months of driving and list which maintenance services fall due in each month, from the odometer and monthly distance. Use when planning maintenance over the coming year. Do NOT use for what is due right now (use due_services) or prices (use service_cost_estimate).
Input Schema
{
"type": "object",
"properties": {
"odometer": {
"type": "number",
"minimum": 0,
"description": "Current odometer reading, non-negative, in the unit given by unit, e.g. 48000"
},
"unit": {
"type": "string",
"enum": [
"km",
"mi"
],
"description": "Unit of the odometer value: 'km' (default) or 'mi'"
},
"km_per_month": {
"type": "number",
"minimum": 100,
"maximum": 10000,
"description": "Average distance driven per month in km (always km, 100-10000), e.g. 1200"
},
"months_since_last_oil": {
"type": "number",
"minimum": 0,
"description": "Months since the last oil change; time baseline for every service, default 0"
}
},
"required": [
"odometer",
"km_per_month"
]
}Output Schema
{
"type": "object",
"properties": {
"months": {
"type": "array",
"description": "Twelve monthly entries, month 1 = next month",
"items": {
"type": "object",
"properties": {
"month": {
"type": "integer",
"description": "Months from now, 1-12"
},
"projected_km": {
"type": "number",
"description": "Projected odometer in km at that month"
},
"due": {
"type": "array",
"items": {
"type": "string",
"enum": [
"oil_change",
"tire_rotation",
"brake_inspection",
"air_filter",
"cabin_filter",
"coolant_service",
"spark_plugs",
"transmission_service",
"battery_check"
]
},
"description": "Service ids due that month"
}
},
"required": [
"month",
"projected_km",
"due"
]
}
},
"note": {
"type": "string",
"description": "Assumptions behind the projection"
}
},
"required": [
"months",
"note"
]
}🟢seasonal_checklist(season, climate)
Generate a preventive car checklist for spring, summer, fall or winter, grouped by area (tires, battery, fluids, wipers and more) and tuned for a hot, cold or mixed climate. Use when getting a car ready for the season ahead. Do NOT use for mileage-based maintenance status (use due_services).
Input Schema
{
"type": "object",
"properties": {
"season": {
"type": "string",
"enum": [
"spring",
"summer",
"fall",
"winter"
],
"description": "Season to prepare for"
},
"climate": {
"type": "string",
"enum": [
"hot",
"cold",
"mixed"
],
"description": "Local climate: 'hot', 'cold' or 'mixed' (default)"
}
},
"required": [
"season"
]
}Output Schema
{
"type": "object",
"properties": {
"season": {
"type": "string",
"enum": [
"spring",
"summer",
"fall",
"winter"
],
"description": "Season the checklist covers"
},
"climate": {
"type": "string",
"enum": [
"hot",
"cold",
"mixed"
],
"description": "Climate the checklist is tuned for"
},
"checklist": {
"type": "array",
"description": "Checks grouped by area",
"items": {
"type": "object",
"properties": {
"area": {
"type": "string",
"description": "Area name, e.g. 'Tires'"
},
"items": {
"type": "array",
"items": {
"type": "string"
},
"description": "Checks for this area"
}
},
"required": [
"area",
"items"
]
}
},
"note": {
"type": "string",
"description": "Item count and preventive-only caveat"
}
},
"required": [
"season",
"climate",
"checklist",
"note"
]
}Community
Evidence