RegTail checks UK used cars. Give it a registration plate or a link to an advert and it returns the full report: identity, every MOT test with its defects and advisories, mileage checks, problems by part, signs of a cloned plate, the seller's claims tested against the records, a verdict and a checklist for the viewing. Sources: the DVSA MOT history, the DVLA record, the advert, and our analysis of the national MOT data.
The same five calls work over HTTP (https://regtail.com/api/v1) and as MCP tools (https://regtail.com/mcp), with the same key and the same credits. This page is also plain markdown at https://regtail.com/docs/agents.md, so an agent can read it and set itself up.
Test it in 30 seconds
The key rt_test_sample is public and needs no sign-up. Any key starting rt_test_ returns one real sample car (CX52HHM, the one on our sample report) and spends nothing. Inputs are still checked, so a bad plate still gets a 422.
K="Authorization: Bearer rt_test_sample"
curl -H "$K" https://regtail.com/api/v1/vehicles/AB12CDE
curl -H "$K" -X POST -H "content-type: application/json" -d '{"url": "https://www.ebay.co.uk/itm/366702119761"}' https://regtail.com/api/v1/adverts
curl -H "$K" https://regtail.com/api/v1/vehicles/AB12CDE/advice
curl -H "$K" https://regtail.com/api/v1/credits
curl -H "$K" https://regtail.com/api/v1/plates/AB12CDE
MCP, with the sample key:
{"mcpServers": {"regtail": {"url": "https://regtail.com/mcp", "headers": {"Authorization": "Bearer rt_test_sample"}}}}
To try the MCP endpoint by hand, run the open-source MCP Inspector with npx @modelcontextprotocol/inspector. In the page it opens, choose the Streamable HTTP transport, enter https://regtail.com/mcp, add the header Authorization: Bearer rt_test_sample, connect, then list and call the tools.
Calls and tools
| MCP tool | HTTP | Cost |
|---|---|---|
check_vehicle |
GET /api/v1/vehicles/{plate}?advert_url= |
1 credit |
check_advert |
POST /api/v1/adverts with {"url": "..."} |
1 credit |
viewing_advice |
GET /api/v1/vehicles/{plate}/advice |
Free for 30 days after a paid check of the same car, otherwise 1 credit |
credits_balance |
GET /api/v1/credits |
Free |
decode_plate |
GET /api/v1/plates/{plate} |
Free |
Plates take any spacing and case. Give advert_url with a plate to test the seller's claims in that advert. Every field is in the reference at https://regtail.com/docs and the schema at https://regtail.com/openapi.json, with examples from the sample car.
Get a key
Open https://regtail.com/?account=keys, sign in, and choose Create a new key. The key (rt_live_...) is shown once: put it in your secrets store, never in code. Revoke it on the same screen if it leaks. Send it on every call as Authorization: Bearer rt_live_.... There is no free tier through the API; the free check is on the website.
Connect an agent
Add the server to your agent's MCP settings with your key:
{"mcpServers": {"regtail": {"url": "https://regtail.com/mcp", "headers": {"Authorization": "Bearer rt_live_..."}}}}
Most agent clients read this shape from their MCP settings file. Some name the URL field serverUrl, or take the URL and header as command line options instead. The endpoint is stateless Streamable HTTP and answers in plain JSON. Each tool's description says when to use it, what it costs and what it returns.
Pricing and charges
A paid call spends 1 credit: 1 credit for £2.99, 5 credits for £9.99, 15 credits for £19.99. Bought credits do not expire.
- A call is checked first (key, rate limit, input) and charged only after that. If it then fails, for example no plate can be found in the advert, the credit is refunded.
- Every call is charged on its own: repeating a check repeats the charge, and there is no idempotency key. Keep the response rather than asking again.
- Every check response says
charged(true or false) andcredits_remaining, also sent as theX-Credits-ChargedandX-Credits-Remainingheaders. Sample responses say"sample": true. - Calls are limited to 60 a minute per key, and sample calls to 30 a minute per address.
Errors
Every error has the same shape, over HTTP and as MCP tool errors:
{"error": {"code": "payment_required", "message": "No credits left. Top up at ...", "docs_url": "https://regtail.com/docs/agents#errors", "top_up_url": "...", "credits_remaining": 0}}
| Status | Codes | Meaning |
|---|---|---|
| 401 | unauthorized |
No key, or an unknown or revoked one. |
| 402 | payment_required |
No credits left. Nothing was charged; top_up_url opens the credit packs. |
| 422 | invalid_plate, invalid_url, invalid_request |
Bad input. Nothing is charged. |
| 422 | no_plate, blocked, mismatch |
No plate could be found or trusted in the advert. Refunded; ask for the plate and check it by plate. |
| 429 | rate_limited |
Too many calls. Wait for the Retry-After header's seconds. |
| 5xx | advice_unavailable, server_error |
Our side failed. Nothing is charged; try again later. |
What we do not check
RegTail does not check outstanding finance, the police stolen register or the insurance write-off register: those are private databases. A report says so rather than implying a clear result, and an agent should say so too. Ask the seller for a finance settlement letter, and use a provider that holds those registers if you need them confirmed.
Use of the API is covered by our terms. Questions: sunnier-larches25@icloud.com.