ServiceSchedule
Server Details
Car maintenance due dates, cost estimates and seasonal checklists. Free.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Server Listing
- Sahadeva
TDQS
Scored across 4 tools
Each tool targets a clearly distinct use case: current due services, seasonal preparation, cost estimation, and a 12-month timeline. Descriptions explicitly cross-reference and warn against misuse, eliminating ambiguity.
All tool names use snake_case with descriptive noun phrases (due_services, seasonal_checklist, service_cost_estimate, service_timeline), showing a consistent and predictable convention.
Four tools are well-scoped for a car maintenance advisory server, each covering a distinct query without redundancy. The count is comfortably within the ideal 3–15 range.
The surface covers all core advisory needs: what is due now, seasonal checks, cost estimates, and future planning. No obvious gaps exist for a stateless scheduling and estimation tool.
Available Tools
4 toolsdue_servicesDue servicesARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit of odometer and last_service odometer values: 'km' (default) or 'mi' | |
| odometer | Yes | Current odometer reading, non-negative, in the unit given by unit, e.g. 48000 | |
| km_per_month | No | Average distance driven per month in km (always km, 100-10000); adds a 'next due in about N months' hint | |
| last_service | No | Optional per-service history, one entry per service id; items without an entry assume last service at odometer 0 | |
| months_since_last_oil | No | Months since the last oil change; used as the time baseline for every item without its own history, default 0 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Summary counts, baseline assumptions and caveats |
| services | Yes | Status of every tracked maintenance service |
| odometer_km | Yes | Current odometer converted to km (1 decimal) |
| next_service | Yes | The most urgent service |
| odometer_input | Yes | Odometer value and unit as supplied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds domain behavior beyond that: results derive from odometer plus optional history, and history-less items are treated as last serviced at odometer 0 (a default assumption visible in the schema but reinforced here), and it names the next due service.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: capability, when-to-use, when-not-to-use. The enumeration of services is long but it is the tool's substance and it is front-loaded; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations cover the safety profile. For a single-required-param read tool with full schema descriptions, everything an agent needs to select and invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including unit semantics, km_per_month's always-km rule, and the per-item id/odometer/months_ago fields, so the schema carries parameter meaning. The description's phrase 'from the current odometer and optional service history' adds framing but no syntax or constraint beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource with an explicit enumeration of what is assessed (oil, tires, brakes, filters, coolant, plugs, transmission, battery) and the three possible outcomes (due, due soon, ok). It also states it names the next one, which is a distinct output behavior an agent can rely on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use to check what a car needs now' plus two named exclusions that route to specific siblings: prices to service_cost_estimate and 12-month planning to service_timeline. This is exactly the when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seasonal_checklistSeasonal checklistARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| season | Yes | Season to prepare for | |
| climate | No | Local climate: 'hot', 'cold' or 'mixed' (default) |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Item count and preventive-only caveat |
| season | Yes | Season the checklist covers |
| climate | Yes | Climate the checklist is tuned for |
| checklist | Yes | Checks grouped by area |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuine value beyond that by disclosing the output shape (grouped by area such as tires, battery, fluids, wipers) and that results are tuned to climate, though it says nothing about length or format of the checklist beyond grouping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the output scope is front-loaded, then usage, then the exclusion. Every sentence earns its place and the routing instruction comes last where it is easy to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. With 2 enums fully documented in the schema and the description covering purpose, usage, and the sibling boundary, nothing an agent needs to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry descriptions plus enums, so the schema does the heavy lifting. The description restates the season and climate dimensions and notes 'mixed' is the default, which is minor added meaning rather than new syntax or constraints. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a preventive car checklist') plus the scoping dimensions (season, climate, grouped by area). It explicitly distinguishes itself from the sibling due_services, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the positive trigger ('getting a car ready for the season ahead') and an explicit exclusion with the alternative named ('Do NOT use for mileage-based maintenance status (use due_services)'). This is the full when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_cost_estimateService cost estimateARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Shop tier: 'economy' (x0.85), 'mid' (default) or 'luxury' (x1.6) | |
| services | Yes | Service ids to price (duplicates ignored), e.g. ["oil_change","brake_inspection"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Summary of what was priced |
| tier | Yes | Shop tier used for pricing |
| items | Yes | Price range per service in USD |
| total_low | Yes | Sum of low prices, USD |
| total_high | Yes | Sum of high prices, USD |
| source_note | Yes | Source and estimate-not-quote caveat |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds value beyond that by clarifying the output nature (low/high ranges, USD, estimate vs quote) and geographic scope (US). It stops short of detailing output format, but with the output schema present that is not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose then usage then exclusion. No filler; each sentence carries distinct, decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, two-parameter estimation tool with a defined output schema, the description covers purpose, scope, usage conditions, and the key alternative tool. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters (services list and tier enum) are fully documented in the schema, including the tier multipliers. The description only restates the tier options and the service list at a high level, adding no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Estimate), resource (US parts-and-labor price ranges in USD), and scope (tiers, low/high totals) for car maintenance services. It also distinguishes itself from the sibling due_services by name, so an agent can separate it from related tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (budgeting for known services), sets expectation (an estimate, not a quote), and gives a clear when-not with the alternative: 'Do NOT use to find which services are due (use due_services).' This is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_timelineService timelineARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit of the odometer value: 'km' (default) or 'mi' | |
| odometer | Yes | Current odometer reading, non-negative, in the unit given by unit, e.g. 48000 | |
| km_per_month | Yes | Average distance driven per month in km (always km, 100-10000), e.g. 1200 | |
| months_since_last_oil | No | Months since the last oil change; time baseline for every service, default 0 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Assumptions behind the projection |
| months | Yes | Twelve monthly entries, month 1 = next month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds value beyond them by disclosing the projection horizon (12 months) and the fact that results are derived from odometer plus monthly distance, i.e. it is a forecast rather than a lookup. It does not discuss limits on the forecast or the assumptions behind the projection, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool produces before the routing constraints. No filler, no restatement of the title, and every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation, the description need not explain return values, and it covers purpose, usage and alternatives. The one omission is any mention of months_since_last_oil's role as the time baseline for every service, which materially shapes the projection but is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents unit, odometer, km_per_month and months_since_last_oil including ranges and defaults. The description only restates that odometer and monthly distance drive the result; it adds no syntax or unit nuance (e.g. that km_per_month is always km while unit applies only to the odometer). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('project the next 12 months of driving and list which maintenance services fall due in each month') plus the derivation basis (odometer and monthly distance). It is immediately distinguishable from due_services and service_cost_estimate, which are named in the same paragraph.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('planning maintenance over the coming year') and explicit when-not-to-use with named alternatives: 'Do NOT use for what is due right now (use due_services) or prices (use service_cost_estimate)'. All routing decisions are pre-made for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
due_services15 fields changed- changed
Input schema / properties / km_per_month / descriptionPrevious value: -"Average km driven per month (100-10000)"New value: +"Average distance driven per month in km (always km, 100-10000); adds a 'next due in about N months' hint" - added
Input schema / properties / km_per_month / maximumAdded value: +10000 - added
Input schema / properties / km_per_month / minimumAdded value: +100 - changed
Input schema / properties / last_service / descriptionPrevious value: -"Optional per-service history"New value: +"Optional per-service history, one entry per service id; items without an entry assume last service at odometer 0" - changed
Input schema / properties / last_service / items / properties / id / descriptionPrevious value: -"Service id from the maintenance table, e.g. oil_change"New value: +"Service id, e.g. 'oil_change'" - added
Input schema / properties / last_service / items / properties / id / enumAdded value: +[ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" +] - added
Input schema / properties / last_service / items / properties / months_ago / minimumAdded value: +0 - changed
Input schema / properties / last_service / items / properties / odometer / descriptionPrevious value: -"Odometer when this service was last done (same unit as above)"New value: +"Odometer when this service was last done, same unit as odometer and not above it" - added
Input schema / properties / last_service / items / properties / odometer / minimumAdded value: +0 - changed
Input schema / properties / months_since_last_oil / descriptionPrevious value: -"Months since the last oil change; time baseline for items without their own history"New value: +"Months since the last oil change; used as the time baseline for every item without its own history, default 0" - added
Input schema / properties / months_since_last_oil / minimumAdded value: +0 - changed
Input schema / properties / odometer / descriptionPrevious value: -"Current odometer reading"New value: +"Current odometer reading, non-negative, in the unit given by unit, e.g. 48000" - added
Input schema / properties / odometer / minimumAdded value: +0 - changed
Input schema / properties / unit / descriptionPrevious value: -"Unit of the odometer values, default km"New value: +"Unit of odometer and last_service odometer values: 'km' (default) or 'mi'" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "next_service": { + "description": "The most urgent service", + "properties": { + "due_at_km": { + "description": "Odometer (km) at which the service is due; null for time-only items such as battery_check", + "type": [ + "number", + "null" + ] + }, + "due_in_months": { + "description": "Months from now until due by time (negative = overdue)", + "type": "number" + }, + "id": { + "description": "Service id", + "enum": [ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" + ], + "type": "string" + }, + "km_left": { + "description": "Km until due (negative = overdue); null for time-only items", + "type": [ + "number", + "null" + ] + }, + "months_left": { + "description": "Months left on the time interval (same as due_in_months)", + "type": "number" + }, + "name": { + "description": "Service name, e.g. 'Oil change'", + "type": "string" + }, + "status": { + "description": "'due' (within 1000 km or 1 month, or overdue), 'soon' (within 3000 km or 3 months) or 'ok'", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "id", + "name", + "status", + "due_at_km", + "km_left", + "due_in_months", + "months_left" + ], + "type": "object" + }, + "note": { + "description": "Summary counts, baseline assumptions and caveats", + "type": "string" + }, + "odometer_input": { + "description": "Odometer value and unit as supplied", + "properties": { + "unit": { + "description": "Unit of the supplied value", + "enum": [ + "km", + "mi" + ], + "type": "string" + }, + "value": { + "description": "Odometer value as supplied", + "type": "number" + } + }, + "required": [ + "value", + "unit" + ], + "type": "object" + }, + "odometer_km": { + "description": "Current odometer converted to km (1 decimal)", + "type": "number" + }, + "services": { + "description": "Status of every tracked maintenance service", + "items": { + "properties": { + "due_at_km": { + "description": "Odometer (km) at which the service is due; null for time-only items such as battery_check", + "type": [ + "number", + "null" + ] + }, + "due_in_months": { + "description": "Months from now until due by time (negative = overdue)", + "type": "number" + }, + "id": { + "description": "Service id", + "enum": [ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" + ], + "type": "string" + }, + "items": { + "description": "What the service typically includes", + "items": { + "type": "string" + }, + "type": "array" + }, + "km_left": { + "description": "Km until due (negative = overdue); null for time-only items", + "type": [ + "number", + "null" + ] + }, + "months_left": { + "description": "Months left on the time interval (same as due_in_months)", + "type": "number" + }, + "name": { + "description": "Service name, e.g. 'Oil change'", + "type": "string" + }, + "status": { + "description": "'due' (within 1000 km or 1 month, or overdue), 'soon' (within 3000 km or 3 months) or 'ok'", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "id", + "name", + "status", + "due_at_km", + "km_left", + "due_in_months", + "months_left", + "items" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "odometer_km", + "odometer_input", + "services", + "next_service", + "note" + ], + "type": "object" +}
- Changed
seasonal_checklist3 fields changed- changed
Input schema / properties / climate / descriptionPrevious value: -"Local climate, default mixed"New value: +"Local climate: 'hot', 'cold' or 'mixed' (default)" - changed
Input schema / properties / season / descriptionPrevious value: -"Season to plan for"New value: +"Season to prepare for" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "checklist": { + "description": "Checks grouped by area", + "items": { + "properties": { + "area": { + "description": "Area name, e.g. 'Tires'", + "type": "string" + }, + "items": { + "description": "Checks for this area", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "area", + "items" + ], + "type": "object" + }, + "type": "array" + }, + "climate": { + "description": "Climate the checklist is tuned for", + "enum": [ + "hot", + "cold", + "mixed" + ], + "type": "string" + }, + "note": { + "description": "Item count and preventive-only caveat", + "type": "string" + }, + "season": { + "description": "Season the checklist covers", + "enum": [ + "spring", + "summer", + "fall", + "winter" + ], + "type": "string" + } + }, + "required": [ + "season", + "climate", + "checklist", + "note" + ], + "type": "object" +}
- Changed
service_cost_estimate5 fields changed- changed
Input schema / properties / services / descriptionPrevious value: -"Service ids to price, e.g. oil_change"New value: +"Service ids to price (duplicates ignored), e.g. [\"oil_change\",\"brake_inspection\"]" - added
Input schema / properties / services / items / enumAdded value: +[ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" +] - added
Input schema / properties / services / minItemsAdded value: +1 - changed
Input schema / properties / tier / descriptionPrevious value: -"Shop tier, default mid"New value: +"Shop tier: 'economy' (x0.85), 'mid' (default) or 'luxury' (x1.6)" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "items": { + "description": "Price range per service in USD", + "items": { + "properties": { + "high": { + "description": "High end of the typical price, USD", + "type": "number" + }, + "id": { + "description": "Service id", + "enum": [ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" + ], + "type": "string" + }, + "low": { + "description": "Low end of the typical price, USD", + "type": "number" + }, + "name": { + "description": "Service name", + "type": "string" + } + }, + "required": [ + "id", + "name", + "low", + "high" + ], + "type": "object" + }, + "type": "array" + }, + "note": { + "description": "Summary of what was priced", + "type": "string" + }, + "source_note": { + "description": "Source and estimate-not-quote caveat", + "type": "string" + }, + "tier": { + "description": "Shop tier used for pricing", + "enum": [ + "economy", + "mid", + "luxury" + ], + "type": "string" + }, + "total_high": { + "description": "Sum of high prices, USD", + "type": "number" + }, + "total_low": { + "description": "Sum of low prices, USD", + "type": "number" + } + }, + "required": [ + "tier", + "items", + "total_low", + "total_high", + "note", + "source_note" + ], + "type": "object" +}
- Changed
service_timeline9 fields changed- changed
Input schema / properties / km_per_month / descriptionPrevious value: -"Average km driven per month (100-10000)"New value: +"Average distance driven per month in km (always km, 100-10000), e.g. 1200" - added
Input schema / properties / km_per_month / maximumAdded value: +10000 - added
Input schema / properties / km_per_month / minimumAdded value: +100 - changed
Input schema / properties / months_since_last_oil / descriptionPrevious value: -"Months since the last oil change; time baseline when no other history is given"New value: +"Months since the last oil change; time baseline for every service, default 0" - added
Input schema / properties / months_since_last_oil / minimumAdded value: +0 - changed
Input schema / properties / odometer / descriptionPrevious value: -"Current odometer reading"New value: +"Current odometer reading, non-negative, in the unit given by unit, e.g. 48000" - added
Input schema / properties / odometer / minimumAdded value: +0 - changed
Input schema / properties / unit / descriptionPrevious value: -"Unit of the odometer values, default km"New value: +"Unit of the odometer value: 'km' (default) or 'mi'" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "months": { + "description": "Twelve monthly entries, month 1 = next month", + "items": { + "properties": { + "due": { + "description": "Service ids due that month", + "items": { + "enum": [ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter", + "cabin_filter", + "coolant_service", + "spark_plugs", + "transmission_service", + "battery_check" + ], + "type": "string" + }, + "type": "array" + }, + "month": { + "description": "Months from now, 1-12", + "type": "integer" + }, + "projected_km": { + "description": "Projected odometer in km at that month", + "type": "number" + } + }, + "required": [ + "month", + "projected_km", + "due" + ], + "type": "object" + }, + "type": "array" + }, + "note": { + "description": "Assumptions behind the projection", + "type": "string" + } + }, + "required": [ + "months", + "note" + ], + "type": "object" +}
4 tool updates
- Changed
due_services1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "air_filter_replacement": { - "description": "The air filter replacement returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due air filter replacement", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due air filter replacement", - "type": "number" - }, - "status": { - "description": "The due status of the air filter replacement service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "battery_replacement": { - "description": "The battery replacement returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due battery replacement", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due battery replacement", - "type": "number" - }, - "status": { - "description": "The due status of the battery replacement service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "brake_inspection": { - "description": "The brake inspection returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due brake inspection", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due brake inspection", - "type": "number" - }, - "status": { - "description": "The due status of the brake inspection service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "coolant_flush": { - "description": "The coolant flush returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due coolant flush", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due coolant flush", - "type": "number" - }, - "status": { - "description": "The due status of the coolant flush service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "oil_change": { - "description": "The oil change returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due oil change", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due oil change", - "type": "number" - }, - "status": { - "description": "The due status of the oil change service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "spark_plug_replacement": { - "description": "The spark plug replacement returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due spark plug replacement", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due spark plug replacement", - "type": "number" - }, - "status": { - "description": "The due status of the spark plug replacement service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "tire_rotation": { - "description": "The tire rotation returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due tire rotation", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due tire rotation", - "type": "number" - }, - "status": { - "description": "The due status of the tire rotation service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - }, - "transmission_service": { - "description": "The transmission service returned by the tool.", - "properties": { - "km_to_due": { - "description": "The distance in kilometers to the next due transmission service", - "type": "number" - }, - "months_to_due": { - "description": "The number of months to the next due transmission service", - "type": "number" - }, - "status": { - "description": "The due status of the transmission service", - "enum": [ - "due", - "soon", - "ok" - ], - "type": "string" - } - }, - "required": [ - "status", - "km_to_due", - "months_to_due" - ], - "type": "object" - } - }, - "required": [ - "oil_change", - "tire_rotation", - "brake_inspection", - "air_filter_replacement", - "coolant_flush", - "spark_plug_replacement", - "transmission_service", - "battery_replacement" - ], - "type": "object" -}New value: +null
- Changed
seasonal_checklist1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "checklist": { - "description": "List of checks grouped by area", - "items": { - "properties": { - "area": { - "description": "The area of the car to check (e.g., battery, tires)", - "type": "string" - }, - "checks": { - "description": "List of specific checks to perform in this area", - "items": { - "description": "A specific check to perform", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "area", - "checks" - ], - "type": "object" - }, - "type": "array" - }, - "climate": { - "description": "The climate for which the checklist is tailored", - "type": "string" - }, - "season": { - "description": "The season for which the checklist is generated", - "type": "string" - } - }, - "required": [ - "season", - "climate", - "checklist" - ], - "type": "object" -}New value: +null
- Changed
service_cost_estimate1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "estimates": { - "description": "List of estimated price ranges for each service.", - "items": { - "properties": { - "range": { - "description": "The estimated price range for the service.", - "properties": { - "max": { - "description": "The maximum estimated price.", - "type": "number" - }, - "min": { - "description": "The minimum estimated price.", - "type": "number" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - }, - "service": { - "description": "The service id, e.g. oil_change.", - "type": "string" - } - }, - "required": [ - "service", - "range" - ], - "type": "object" - }, - "type": "array" - }, - "total": { - "description": "The estimated total price range for all services.", - "properties": { - "max": { - "description": "The maximum estimated total price.", - "type": "number" - }, - "min": { - "description": "The minimum estimated total price.", - "type": "number" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "estimates", - "total" - ], - "type": "object" -}New value: +null
- Changed
service_timeline1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "results": { - "description": "List of service timeline entries.", - "items": { - "properties": { - "month": { - "description": "The month in the 12-month projection (1-12)", - "type": "integer" - }, - "odometer": { - "description": "Projected odometer reading at the start of the month", - "type": "number" - }, - "services_due": { - "description": "List of maintenance services due in the month", - "items": { - "description": "Name of the service", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "month", - "odometer", - "services_due" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "results" - ], - "type": "object" -}New value: +null
4 tool updates
- Changed
due_services1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "air_filter_replacement": { + "description": "The air filter replacement returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due air filter replacement", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due air filter replacement", + "type": "number" + }, + "status": { + "description": "The due status of the air filter replacement service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "battery_replacement": { + "description": "The battery replacement returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due battery replacement", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due battery replacement", + "type": "number" + }, + "status": { + "description": "The due status of the battery replacement service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "brake_inspection": { + "description": "The brake inspection returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due brake inspection", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due brake inspection", + "type": "number" + }, + "status": { + "description": "The due status of the brake inspection service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "coolant_flush": { + "description": "The coolant flush returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due coolant flush", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due coolant flush", + "type": "number" + }, + "status": { + "description": "The due status of the coolant flush service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "oil_change": { + "description": "The oil change returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due oil change", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due oil change", + "type": "number" + }, + "status": { + "description": "The due status of the oil change service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "spark_plug_replacement": { + "description": "The spark plug replacement returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due spark plug replacement", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due spark plug replacement", + "type": "number" + }, + "status": { + "description": "The due status of the spark plug replacement service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "tire_rotation": { + "description": "The tire rotation returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due tire rotation", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due tire rotation", + "type": "number" + }, + "status": { + "description": "The due status of the tire rotation service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + }, + "transmission_service": { + "description": "The transmission service returned by the tool.", + "properties": { + "km_to_due": { + "description": "The distance in kilometers to the next due transmission service", + "type": "number" + }, + "months_to_due": { + "description": "The number of months to the next due transmission service", + "type": "number" + }, + "status": { + "description": "The due status of the transmission service", + "enum": [ + "due", + "soon", + "ok" + ], + "type": "string" + } + }, + "required": [ + "status", + "km_to_due", + "months_to_due" + ], + "type": "object" + } + }, + "required": [ + "oil_change", + "tire_rotation", + "brake_inspection", + "air_filter_replacement", + "coolant_flush", + "spark_plug_replacement", + "transmission_service", + "battery_replacement" + ], + "type": "object" +}
- Changed
seasonal_checklist1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "checklist": { + "description": "List of checks grouped by area", + "items": { + "properties": { + "area": { + "description": "The area of the car to check (e.g., battery, tires)", + "type": "string" + }, + "checks": { + "description": "List of specific checks to perform in this area", + "items": { + "description": "A specific check to perform", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "area", + "checks" + ], + "type": "object" + }, + "type": "array" + }, + "climate": { + "description": "The climate for which the checklist is tailored", + "type": "string" + }, + "season": { + "description": "The season for which the checklist is generated", + "type": "string" + } + }, + "required": [ + "season", + "climate", + "checklist" + ], + "type": "object" +}
- Changed
service_cost_estimate1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "estimates": { + "description": "List of estimated price ranges for each service.", + "items": { + "properties": { + "range": { + "description": "The estimated price range for the service.", + "properties": { + "max": { + "description": "The maximum estimated price.", + "type": "number" + }, + "min": { + "description": "The minimum estimated price.", + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "service": { + "description": "The service id, e.g. oil_change.", + "type": "string" + } + }, + "required": [ + "service", + "range" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "The estimated total price range for all services.", + "properties": { + "max": { + "description": "The maximum estimated total price.", + "type": "number" + }, + "min": { + "description": "The minimum estimated total price.", + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "estimates", + "total" + ], + "type": "object" +}
- Changed
service_timeline1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "description": "List of service timeline entries.", + "items": { + "properties": { + "month": { + "description": "The month in the 12-month projection (1-12)", + "type": "integer" + }, + "odometer": { + "description": "Projected odometer reading at the start of the month", + "type": "number" + }, + "services_due": { + "description": "List of maintenance services due in the month", + "items": { + "description": "Name of the service", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "month", + "odometer", + "services_due" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
4 tool updates
- First observed
due_services - First observed
seasonal_checklist - First observed
service_cost_estimate - First observed
service_timeline
Related MCP Connectors
Recalls, known issues, and honest maintenance costs for any US-market vehicle since 1990.
Car repair cost estimates by make, model and repair type. 31 cost guides, VIN decode. Free.
Auto repair quote auditor, labor price benchmarks, and service deals for any US ZIP.
Free NHTSA recalls, complaints and investigations per vehicle, recall alerts, dealer listing events.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables managing personal vehicle history including mileage, maintenance, expenses, reminders, and document references through MCP tools and resources, all stored locally in SQLite.1MIT
- AlicenseAqualityBmaintenanceLets users track equipment maintenance with service entries, costs, and automatically computed due and overdue schedules.8MIT
- AlicenseNot gradedqualityBmaintenanceEnables voice-first household maintenance tracking, turning spoken updates into durable records, service history, and due-date reminders for a concise maintenance brief.MIT
- FlicenseNot gradedqualityBmaintenanceTracks subscriptions and recurring bills with flexible billing cycles, and provides upcoming renewals and spending summaries.-
Glama MCP Gateway
Add one secure layer between your agents and this server.