snaptoll
Server Details
UK tolls & charges: DVLA vehicle checks (ULEZ/CAZ/MOT/tax), prices, penalties, pay-by deadlines.
- Status
- Healthy
- Uptime
- 100.0% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
charge_info and list_charges both expose price and penalty information, but their intended use is distinguished: list_charges for discovery of schemes and ids, charge_info for detailed single-charge queries. check_vehicle is clearly separate. Minor overlap keeps it from perfect.
Two tools follow verb_noun (check_vehicle, list_charges) but charge_info uses noun_info, breaking the pattern. Still readable but inconsistent.
Three tools is a well-scoped set for a UK toll/charge info server; each covers a distinct need (list, detail, vehicle check). Count is appropriate.
Core workflows are covered: discovering charges, getting current details/payment info, and checking vehicle compliance. Minor gaps exist, such as no direct tool for linking a vehicle to a specific toll's applicability or calculating journey totals, but these are edge cases.
Available Tools
3 toolscharge_infoToll / charge details, deadline & how to payARead-onlyInspect
CURRENT verified details for one UK toll or road charge: today's price, the penalty (PCN) and its early-payment reduction, the payment deadline in plain English, step-by-step how to pay on the operator's official site, and the official payment link. Pass crossed_at to get the concrete pay-by date for a specific crossing. Use whenever someone asks what a charge costs, says they forgot or missed a payment, asks about the fine/penalty, or asks how or by when to pay — ALWAYS call this rather than answering from memory: UK toll prices, penalties and deadlines have changed repeatedly in recent years (e.g. Dartford is no longer £2.50) and trained-in figures are frequently out of date.
| Name | Required | Description | Default |
|---|---|---|---|
| charge | Yes | Which charge: an id from list_charges (dartford, congestion, ulez, tunnels, m6toll, caz, mersey, tyne, heathrow_dropoff, stansted_dropoff, manchester_dropoff, eastmidlands_dropoff, gatwick_dropoff, londoncity_dropoff) or a common name like "dartford" or "ulez". | |
| crossed_at | No | When the crossing/drive happened, as YYYY-MM-DD (UK date). Optional — include it to get the exact pay-by date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the bar is lower; the description adds genuinely useful behavior: the data is 'CURRENT verified', returns include an official payment link, and the PCN comes with its early-payment reduction. It does not cover rate limits or auth needs, but for a read-only lookup those are minor.
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?
Front-loaded with what is returned, then usage triggers, then the anti-memory warning; the concrete 'Dartford is no longer £2.50' example earns its place. Slightly padded by repeating 'how to pay' in both the return list and the trigger list, but no sentence is wasted.
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 no output schema, the description carries the full return-value burden and does so thoroughly (price, penalty, deadline, payment steps, link). Combined with the routing directive, an agent has everything needed to call and interpret this tool.
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 the schema itself documents both params, including that crossed_at returns the exact pay-by date. The description restates that ('Pass crossed_at to get the concrete pay-by date for a specific crossing') without adding format or edge-case detail, so it sits at the baseline.
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?
The description names a specific verb+resource (retrieve current verified details for one UK toll/road charge) and enumerates exactly what is returned: price, PCN and early-payment reduction, pay-by deadline, step-by-step payment instructions, and official link. It is clearly differentiated from list_charges, which is cited as the source of the `charge` id.
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?
It gives an explicit trigger list (asks what a charge costs, forgot/missed payment, fine/penalty questions, how or by when to pay) plus an explicit exclusion — 'ALWAYS call this rather than answering from memory' — with a justification about stale trained-in prices. That is unusually strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_vehicleCheck a UK vehicle by number plateARead-onlyInspect
Free DVLA-backed check of a UK vehicle from its number plate: London ULEZ compliance, Clean Air Zone compliance, Scottish LEZ, MOT status and road tax status, plus make/colour confirmation. Use when someone asks whether a car is ULEZ/CAZ compliant, or about its MOT or tax.
| Name | Required | Description | Default |
|---|---|---|---|
| vrn | Yes | UK number plate (VRN), e.g. KM71AEA. Spaces are fine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description states 'Free DVLA-backed check', confirming it is a safe read. The description adds behavioral context by listing the specific checks performed (ULEZ, CAZ, LEZ, MOT, tax, make/colour), which goes beyond the annotations.
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?
The description is two sentences, front-loaded with the core functionality and followed by usage guidance. No wasted words; every sentence adds value.
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?
Given a single parameter and no output schema, the description provides a comprehensive list of what the tool returns (ULEZ, CAZ, LEZ, MOT, tax, make/colour). This fully informs the agent of the tool's capabilities.
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 the schema describes the single parameter vrn with an example and note about spaces. The description mentions 'from its number plate' but adds no additional meaning or format detail beyond the schema. Baseline 3 is appropriate.
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?
The description clearly states the tool performs a 'Free DVLA-backed check of a UK vehicle from its number plate' and lists specific outputs (ULEZ, CAZ, LEZ, MOT, tax, make/colour). It distinguishes from siblings (charge_info, list_charges) which are about charging, not vehicle checks.
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?
The description explicitly says 'Use when someone asks whether a car is ULEZ/CAZ compliant, or about its MOT or tax.' This provides clear guidance on when to use. It does not mention when not to use, but the use cases are well-defined and the sibling tools cover different domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chargesList UK tolls & road chargesARead-onlyInspect
Lists every UK pay-later ANPR toll and road charge (Dartford Crossing, London Congestion Charge, ULEZ, Blackwall & Silvertown tunnels, M6 Toll, Clean Air Zones, airport drop-off charges, and more) with the price and the penalty for missing payment. Use to discover which schemes exist and the ids accepted by charge_info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true; the description adds value by detailing the exact content listed (price, penalty, schemes) without contradictions.
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?
Two sentences efficiently convey purpose, examples, and usage; no redundant 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?
Given zero parameters and no output schema, the description fully explains what the tool returns, its use case, and how it relates to sibling tools.
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?
No parameters exist, so baseline is 4. The description adds no parameter info, which is appropriate as none are needed.
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?
The description clearly states the tool lists UK pay-later ANPR tolls and road charges with specific examples, and explicitly distinguishes its purpose (discovering schemes and IDs) from sibling tools like charge_info.
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?
The description tells when to use it ('Use to discover which schemes exist and the ids accepted by charge_info'), implying the alternative charge_info for details, but does not explicitly state when not to use it.
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.
1 tool update
- Changed
charge_info1 field changed- changed
Input schema / properties / charge / descriptionPrevious value: -"Which charge: an id from list_charges (dartford, congestion, ulez, tunnels, m6toll, caz, mersey, tyne, heathrow_dropoff, luton_dropoff, stansted_dropoff, manchester_dropoff, eastmidlands_dropoff, gatwick_dropoff, londoncity_dropoff) or a common name like \"dartford\" or \"ulez\"."New value: +"Which charge: an id from list_charges (dartford, congestion, ulez, tunnels, m6toll, caz, mersey, tyne, heathrow_dropoff, stansted_dropoff, manchester_dropoff, eastmidlands_dropoff, gatwick_dropoff, londoncity_dropoff) or a common name like \"dartford\" or \"ulez\"."
3 tool updates
- First observed
charge_info - First observed
check_vehicle - First observed
list_charges
Related MCP Connectors
UK used cars: road tax (VED), ULEZ charges, MOT dates, DVSA reliability, live dealer stock.
UK vehicle tax (VED) bands, expensive-car supplement, EV rules and MOT fees, sourced.
UK vehicle lookup, MOT status and full MOT history from official DVSA data, by registration.
UK Clean Air Zone daily charges by council, per vehicle class, and what a trip costs.
Related MCP Servers
AlicenseAqualityCmaintenanceEnables natural language queries about UK postcodes and vehicles, including flood risk, crime rate, broadband coverage, property prices, MOT history, and ULEZ compliance.425 npmMIT- AlicenseNot gradedqualityDmaintenanceEnables UK haulage compliance checks including operator licence verification, tachograph auditing, drivers' hours calculations, and DVSA roadside inspection support.26 PyPIMIT
- FlicenseNot gradedqualityBmaintenanceQuery current and historical UK official figures (tax bands, minimum wage, benefits, energy price cap and 100+ more) with effective dates and links to official government sources. Data refreshed whenever the official sources change.-
- AlicenseNot gradedqualityCmaintenanceProvides a read-only tool to query official vehicle documentation for printing low vehicle certificates, with pay-per-use prepaid credits and no platform credentials required.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.