bildata
Server Details
Danish vehicle registration tax (registreringsafgift) calculator and DMR registration statistics
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Tools target distinct resources and actions: tax calculation (new/used single), multi-year forecast, rates lookup, market-level stats, model lookup, and top-model ranking. The two tax tools (calculate vs forecast) share a domain and could be momentarily confused, but descriptions clearly separate them by vehicle condition and time span.
All tool names use snake_case and follow a consistent verb_noun pattern (get_afgift_rates, get_market_stats, get_model_stats, get_top_models, calculate_registreringsafgift, forecast_registreringsafgift). The pattern is predictable despite mixed English/Danish domain terms.
Six tools are well-scoped for the combined Danish vehicle tax and market statistics domain. Each tool covers a distinct facet (calculation, forecasting, rates, market stats, model lookup, top models), with no obvious redundancy.
The surface covers tax calculation for new/used vehicles, multi-year forecasting, rates, market-level stats, model stats, and top-model rankings. Minor gaps exist: no tool can answer historical monthly rankings older than the 12-month window, and brand totals outside the top 20 are not directly available, though these limitations are documented.
Available Tools
6 toolscalculate_registreringsafgiftAInspect
Calculate DANISH vehicle registration tax (registreringsafgift) for a new or used personbil, varebil or motorcykel under registreringsafgiftsloven. Same engine and validation as bildata.io's public calculator. Amounts in DKK; an estimate, not an official Motorstyrelsen valuation. REQUIRED PAIRS: condition="new" needs bruttovaerdi; condition="used" needs handelspris AND nypris (nypris is the used vehicle's own original price when new, not the new-vehicle price field). ALWAYS send co2 for a petrol, diesel or hybrid PERSONBIL or VAREBIL: an omitted co2 counts as 0 g/km, i.e. battery-electric, and makes the tax far too low with no error raised — zero on an ordinary car, and still only a fraction of the real figure on an expensive one. On motorcykel co2 does not select the drivetrain at all - isElectric does. Send every number as a JSON number (300000, not "300000"), use enum values exactly as listed, and OMIT an optional field you do not know rather than sending null.
| Name | Required | Description | Default |
|---|---|---|---|
| co2 | No | WLTP CO2 in g/km. PERSONBIL and VAREBIL: send it for any fuel-burning vehicle - an omitted value and an explicit 0 are BOTH read as battery-electric (EV phase-in and EV bundfradrag), which makes the tax far too low. Use 0 only for a pure EV. MOTORCYKEL: co2 does not select the drivetrain here; isElectric does, and a motorcykel sent with co2=0 and no isElectric is priced as fuel-burning. | |
| aaben | No | Varebil only: open cargo bed (ladvogn) | |
| avgKm | No | Used: average odometer km of the comparable adverts. Part of the actualKm/avgKm/vehicleAgeYears set — a partial send is silently ignored. | |
| nypris | No | Used vehicles: REQUIRED when condition="used". The SAME vehicle's original price as new in DKK, incl. all taxes. Unused when condition="new" — for a new vehicle use bruttovaerdi. | |
| actualKm | No | Used: actual odometer km. The km regulation is skipped entirely unless actualKm, avgKm, vehicleAgeYears AND handelspris are all present. | |
| condition | Yes | new = first registration of a new vehicle; used = import/revaluation of a used vehicle | |
| elForbrug | No | Electric consumption in Wh/km. Send WITH elRaekkevidde — the battery deduction is (elForbrug/1000) * elRaekkevidde, so either one alone is a no-op. | |
| isElectric | No | MOTORCYKEL: the EV switch for that vehicle type. For personbil and varebil the drivetrain comes from co2 (0 or absent = electric), so this flag does not change the tax — but DO send it for a battery-electric personbil or varebil: it is read as your declaration that the missing co2 is deliberate, and suppresses the warning that the answer looks too low. | |
| targetYear | No | Rules year to calculate under (default: current). A year with no published table silently falls back to the current rates; the answer's rules_year says which table actually applied. | |
| totalvaegt | No | Varebil only: total weight in kg | |
| handelspris | No | Used vehicles: REQUIRED when condition="used". Current Danish trade price in DKK, incl. registration tax. Unused when condition="new". | |
| vehicleType | Yes | Vehicle category under Danish law | |
| bruttovaerdi | No | New vehicles: REQUIRED when condition="new" (unused when condition="used"). Taxable value in DKK, i.e. price incl. VAT and margin BEFORE registration tax. NOT the advertised Danish showroom price, which already contains the tax being calculated. | |
| elRaekkevidde | No | Electric range in km (WLTP). Send WITH elForbrug — either one alone is a no-op. | |
| condition_stand | No | Used: maintenance condition (vedligeholdelsesstand) | |
| vehicleAgeYears | No | Used: vehicle age in years since first registration. Also used on its own for the under-6-months rule, so send it even when you cannot supply the km set. The km regulation additionally needs actualKm, avgKm and handelspris — that part is skipped unless all are present. | |
| allDealerListings | No | Used: true only if EVERY comparable advert is a dealer listing (enables annoncefradrag + leveringsomkostninger) |
forecast_registreringsafgiftAInspect
Project DANISH registration tax for a NEW vehicle across rules-years 2026–2029 (the EV/plug-in phase-in schedule changes the tax each year). Returns per-year results and deltas vs 2026. Amounts in DKK. Estimates, not official valuations. NEW vehicles only, and always the whole 2026-2029 span: for a USED import, or for a single year, use calculate_registreringsafgift instead. Send every number as a JSON number (300000, not "300000").
| Name | Required | Description | Default |
|---|---|---|---|
| co2 | No | WLTP CO2 in g/km. PERSONBIL and VAREBIL: send it for any fuel-burning vehicle - an omitted value and an explicit 0 are BOTH read as battery-electric (EV phase-in and EV bundfradrag), which makes the tax far too low. Use 0 only for a pure EV. MOTORCYKEL behaves differently on THIS tool: an explicit co2=0 counts as electric, but an OMITTED co2 does NOT - the bike is priced as fuel-burning and the tax comes out far too HIGH. Declare an electric motorcykel with isElectric=true. | |
| aaben | No | Varebil only: open cargo bed (ladvogn) | |
| nypris | Yes | Price as new in DKK (taxable value) | |
| isElectric | No | MOTORCYKEL: the EV switch for that vehicle type, and on this tool the only reliable way to declare one - leave it unset with co2 omitted and the bike is priced as fuel-burning. For personbil and varebil the drivetrain comes from co2 (0 or absent = electric), so this flag does not change the tax. | |
| totalvaegt | No | Varebil only: total weight in kg | |
| vehicleType | Yes | Vehicle category under Danish law | |
| electricRange | No | Electric range km | |
| batteryCapacity | No | Battery kWh (used with electricRange to derive Wh/km) | |
| electricConsumption | No | Electric consumption Wh/km (overrides battery/range derivation) |
get_afgift_ratesAInspect
Machine-readable Danish vehicle registration tax rates 2026–2029: skalaknæk (brackets), CO2 tiers, bundfradrag and EV/plug-in phase-in (indfasning) percentages per year. Identical to GET https://bildata.io/api/afgift-prognose/rates. 2027–2029 rates are provisional.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
get_market_statsAInspect
Danish new-vehicle registration statistics from bildata.io (weekly DMR data). Dimensions: fuel_type, brands (top 20), evs, imports (vehicles brought in from abroad, by toldsyn date: counts, share, top makes), monthly_totals (last 12 months incl. leasing series), country_of_origin. kind=all covers every vehicle type; kind=Personbil passenger cars only. as_of is the data cutoff of the underlying extract — a month whose as_of is before month-end is PARTIAL. Market-level ONLY: the brands dimension is the top 20 brands and there is no per-model breakdown here — for a named MODEL use get_model_stats. It is NOT a way to get a brand total for a brand outside the top 20: a brand-only query there returns that brand's individual model rows (default 5, max 10, truncation disclosed in note) and defaults to kind=Personbil where this tool defaults to kind=all, so summing them does not reproduce a brand total from here.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default: all | |
| dimension | Yes | Which slice to return; exactly one per call |
get_model_statsAInspect
Look up Danish registration numbers for a SPECIFIC car model by name — e.g. "Tesla Model Y", "VW ID.4", "Skoda Enyaq". Covers every model since 2018. Use this when the question names a model or brand; get_top_models only covers the top sellers of one month, and get_market_stats only the top 20 brands. A model still selling returns period figures (this month, this year, last year, market share) plus all-time totals. A model with no registration in the last ~3 years returns ONLY lifetime totals and its first/last registration date — the period figures do not exist for it and are listed in unavailableFields; their absence is missing data, NOT zero sales. Spelling is forgiving (ID.4 = ID 4 = id4, Citroen = Citroën) and the response states which row it matched and how, so verify name before quoting the numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default: Personbil (passenger cars) | |
| limit | No | Max matches to return, default 5 | |
| query | Yes | Model or brand name, e.g. "Tesla Model Y" or "Toyota" | |
| grouped | No | Default true: trims collapsed into canonical models (Enyaq 85 -> Skoda Enyaq), matching bildata.io/stats. false returns raw registry variants. |
get_top_modelsAInspect
Top-selling car models (and variants) in Denmark for a given month, from bildata.io's top-50 statistics (passenger cars, monthly, 12-month rolling window). Default: latest month, top 10. as_of is the data cutoff — if it is before month-end, the month is PARTIAL, not complete. A RANKING, bounded by the 12-month window. A model outside that month's top 50 is absent here — look that one up by name with get_model_stats. A month OLDER than the window cannot be answered by any tool on this server: get_model_stats reports fixed periods relative to today (this month, this year, last year, all-time), never an arbitrary past month.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows per list, default 10, max 50 | |
| month | No | YYYY-MM; default latest available |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
calculate_registreringsafgift1 field changed- changed
Input schema / properties / co2 / descriptionPrevious value: -"WLTP CO2 in g/km. Send it for ANY fuel-burning vehicle: an omitted value and an explicit 0 are BOTH read as battery-electric (EV phase-in and EV bundfradrag), which makes the tax far too low. Use 0 only for a pure EV."New value: +"WLTP CO2 in g/km. PERSONBIL and VAREBIL: send it for any fuel-burning vehicle - an omitted value and an explicit 0 are BOTH read as battery-electric (EV phase-in and EV bundfradrag), which makes the tax far too low. Use 0 only for a pure EV. MOTORCYKEL: co2 does not select the drivetrain here; isElectric does, and a motorcykel sent with co2=0 and no isElectric is priced as fuel-burning."
- Changed
forecast_registreringsafgift5 fields changed- added
Input schema / properties / aaben / descriptionAdded value: +"Varebil only: open cargo bed (ladvogn)" - changed
Input schema / properties / co2 / descriptionPrevious value: -"WLTP CO2 g/km (0 for EVs)"New value: +"WLTP CO2 in g/km. PERSONBIL and VAREBIL: send it for any fuel-burning vehicle - an omitted value and an explicit 0 are BOTH read as battery-electric (EV phase-in and EV bundfradrag), which makes the tax far too low. Use 0 only for a pure EV. MOTORCYKEL behaves differently on THIS tool: an explicit co2=0 counts as electric, but an OMITTED co2 does NOT - the bike is priced as fuel-burning and the tax comes out far too HIGH. Declare an electric motorcykel with isElectric=true." - added
Input schema / properties / isElectric / descriptionAdded value: +"MOTORCYKEL: the EV switch for that vehicle type, and on this tool the only reliable way to declare one - leave it unset with co2 omitted and the bike is priced as fuel-burning. For personbil and varebil the drivetrain comes from co2 (0 or absent = electric), so this flag does not change the tax." - added
Input schema / properties / totalvaegt / descriptionAdded value: +"Varebil only: total weight in kg" - added
Input schema / properties / vehicleType / descriptionAdded value: +"Vehicle category under Danish law"
- Changed
get_market_stats1 field changed- added
Input schema / properties / dimension / descriptionAdded value: +"Which slice to return; exactly one per call"
6 tool updates
- First observed
calculate_registreringsafgift - First observed
forecast_registreringsafgift - First observed
get_afgift_rates - First observed
get_market_stats - First observed
get_model_stats - First observed
get_top_models
Related MCP Connectors
Market-value estimates, comparable sales and property tax for Danish homes, from public registers.
UK MOT failure data and official UK, French, Japanese and EU vehicle recalls.
Danish company data from CVR: owners, management, accounts, credit risk, court cases, bankruptcies.
Statistics Denmark (Danmarks Statistik / Statbank) MCP. Keyless REST API: https://api.statbank.dk/v1
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables looking up sourced Danish income tax rates, thresholds and municipal tax figures for 2025–2027, and estimating salary income tax, take-home pay, marginal rates and skattekort details such as trækprocent and månedsfradrag.5MIT
- AlicenseAqualityCmaintenanceComputes car driving time, distance, and 'leave by' time between places in Denmark using public OpenStreetMap services with no API key required.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to compute Portuguese vehicle taxes (ISV and IUC) and to estimate used-car price ranges from structured inputs. Every tax answer returns legal sources, explicit assumptions and a not-tax-advice disclaimer, while price estimates are clearly labelled as synthetic-data demos.MIT
- AlicenseNot gradedqualityCmaintenanceEnables analysis of Danish household electricity consumption to suggest optimal times for shifting usage to save money, using hourly import and grid charges from Eloverblik and spot prices from Energi Data Service.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.