Skip to main content
Glama

Estimate MOT pass odds by age and mileage

mot_outlook
Read-only

Odds that a used car passes its next MOT first time, for its age and mileage, counted from DVSA's own MOT test records with odometer readings (Great Britain) — and how those odds move one mileage band lower or higher for a car of the same age. Pass make and model as well: for the models we cover it adds that model's pass rate at the same mileage, compared fairly against cars of the same ages, and it says plainly when a model is not covered rather than guessing. It is a rate across the tested fleet, not a prediction for one car. Use when someone asks whether a high-mileage car will pass its MOT, how much mileage matters for an MOT, or whether a particular used car is likely to need MOT work.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
makeNoManufacturer, e.g. "Ford". Optional, but needed (with model) for the model-level comparison.
modelNoModel, e.g. "Focus". Optional; see make.
mileageYesCurrent odometer reading in miles.
age_yearsNoAge in whole years, only if the registration year is not known.
registration_yearNoYear the car was FIRST registered (V5C), e.g. 2016. Age is counted from it the way the DVSA figures were. Preferred over age_years.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
carYes
modelNo
notesNo
metricNo
sourceNo
statusYesok, no_mot_due_yet or no_data.
caveatsNo
licenceNo
data_yearNo
next_stepNo
publisherNo
cell_testsNo
matched_onNo
attributionNo
explanationNo
licence_urlNo
mileage_bandNo
sample_periodNo
tests_countedNo
mileage_for_ageNo
same_figures_asNo
how_mileage_changes_itNo
first_time_pass_rate_percentNoThe share of cars of this age and mileage that pass their MOT first time, as a percentage.
all_mileages_this_age_percentNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "all_mileages_this_age_percent": {
      +      "type": "number"
      +    },
      +    "attribution": {
      +      "type": "string"
      +    },
      +    "car": {
      +      "properties": {
      +        "age_years": {
      +          "type": "integer"
      +        },
      +        "make": {
      +          "type": "string"
      +        },
      +        "mileage_miles": {
      +          "type": "number"
      +        },
      +        "model": {
      +          "type": "string"
      +        },
      +        "registration_year": {
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "caveats": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "cell_tests": {
      +      "type": "integer"
      +    },
      +    "data_year": {
      +      "type": "integer"
      +    },
      +    "explanation": {
      +      "type": "string"
      +    },
      +    "first_time_pass_rate_percent": {
      +      "description": "The share of cars of this age and mileage that pass their MOT first time, as a percentage.",
      +      "type": "number"
      +    },
      +    "how_mileage_changes_it": {
      +      "type": "object"
      +    },
      +    "licence": {
      +      "type": "string"
      +    },
      +    "licence_url": {
      +      "type": "string"
      +    },
      +    "matched_on": {
      +      "type": "string"
      +    },
      +    "metric": {
      +      "type": "string"
      +    },
      +    "mileage_band": {
      +      "type": "string"
      +    },
      +    "mileage_for_age": {
      +      "type": "object"
      +    },
      +    "model": {
      +      "type": "object"
      +    },
      +    "next_step": {
      +      "type": "string"
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "publisher": {
      +      "type": "string"
      +    },
      +    "same_figures_as": {
      +      "type": "string"
      +    },
      +    "sample_period": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "ok, no_mot_due_yet or no_data.",
      +      "type": "string"
      +    },
      +    "tests_counted": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "car"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it as a safe, closed-world read, so the safety bar is met. The description adds genuinely new behavioral facts: the data provenance (DVSA test records, Great Britain), the fleet-level nature versus per-car prediction, and that uncovered models are reported plainly rather than guessed — the last point being important for trusting the model-level output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and keeps everything in one dense paragraph with no filler sentences. It is slightly long and mildly repetitive (coverage caveats appear twice: "for the models we cover" and "says plainly when a model is not covered"), which keeps it off a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation here. The description still covers provenance, scope, model-coverage behavior, and usage triggers, leaving only minor gaps such as how the mileage-band output is presented alongside the base estimate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes beyond it by explaining the semantic role of make/model (adds a model pass rate compared fairly against same-age cars, and only for covered models) and of the mileage-band movement, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — the odds a used car passes its next MOT first time by age and mileage — plus the data source (DVSA MOT records with odometer readings, GB). It also distinguishes itself from get_model_reliability and check_mot_due_date by framing the output as a fleet pass rate with optional model comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three explicit trigger scenarios (will a high-mileage car pass, how much mileage matters, is this car likely to need MOT work), which is strong when-to-use guidance. It also excludes a misuse case ("a rate across the tested fleet, not a prediction for one car"), but never names a sibling tool as the alternative, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources