Servidor MCP

bildata

io.bildata/bildata
Comercio y retail Datos y analítica Público y accesible MCP 2025-11-25

Qué hace este MCP

Calculates Danish vehicle registration tax and provides Danish vehicle registration and model sales statistics.

calculate_registreringsafgift
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['vehicleType', 'condition'], 'properties': {'co2': {'type': 'number', 'description': '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': {'type': 'boolean', 'description': 'Varebil only: open cargo bed (ladvogn)'}, 'avgKm': {'type': 'number', 'description': 'Used: average odometer km of the comparable adverts. Part of the actualKm/avgKm/vehicleAgeYears set — a partial send is silently ignored.'}, 'nypris': {'type': 'number', 'description': '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': {'type': 'number', 'description': 'Used: actual odometer km. The km regulation is skipped entirely unless actualKm, avgKm, vehicleAgeYears AND handelspris are all present.'}, 'condition': {'enum': ['new', 'used'], 'type': 'string', 'description': 'new = first registration of a new vehicle; used = import/revaluation of a used vehicle'}, 'elForbrug': {'type': 'number', 'description': 'Electric consumption in Wh/km. Send WITH elRaekkevidde — the battery deduction is (elForbrug/1000) * elRaekkevidde, so either one alone is a no-op.'}, 'isElectric': {'type': 'boolean', 'description': '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': {'type': 'number', 'description': "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': {'type': 'number', 'description': 'Varebil only: total weight in kg'}, 'handelspris': {'type': 'number', 'description': 'Used vehicles: REQUIRED when condition="used". Current Danish trade price in DKK, incl. registration tax. Unused when condition="new".'}, 'vehicleType': {'enum': ['personbil', 'varebil', 'motorcykel'], 'type': 'string', 'description': 'Vehicle category under Danish law'}, 'bruttovaerdi': {'type': 'number', 'description': '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': {'type': 'number', 'description': 'Electric range in km (WLTP). Send WITH elForbrug — either one alone is a no-op.'}, 'condition_stand': {'enum': ['under_middel', 'middel', 'over_middel'], 'type': 'string', 'description': 'Used: maintenance condition (vedligeholdelsesstand)'}, 'vehicleAgeYears': {'type': 'number', 'description': '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': {'type': 'boolean', 'description': 'Used: true only if EVERY comparable advert is a dealer listing (enables annoncefradrag + leveringsomkostninger)'}}, 'additionalProperties': False}
forecast_registreringsafgift
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").
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['vehicleType', 'nypris'], 'properties': {'co2': {'type': 'number', 'description': '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': {'type': 'boolean', 'description': 'Varebil only: open cargo bed (ladvogn)'}, 'nypris': {'type': 'number', 'description': 'Price as new in DKK (taxable value)'}, 'isElectric': {'type': 'boolean', 'description': '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': {'type': 'number', 'description': 'Varebil only: total weight in kg'}, 'vehicleType': {'enum': ['personbil', 'varebil', 'motorcykel'], 'type': 'string', 'description': 'Vehicle category under Danish law'}, 'electricRange': {'type': 'number', 'description': 'Electric range km'}, 'batteryCapacity': {'type': 'number', 'description': 'Battery kWh (used with electricRange to derive Wh/km)'}, 'electricConsumption': {'type': 'number', 'description': 'Electric consumption Wh/km (overrides battery/range derivation)'}}, 'additionalProperties': False}
get_afgift_rates
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
get_market_stats
Danish new-vehicle registration statistics from bildata.io (weekly DMR data). Dimensions: fuel_type, brands (top 20), evs, imports (top imported 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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dimension'], 'properties': {'kind': {'enum': ['all', 'Personbil'], 'type': 'string', 'description': 'Default: all'}, 'dimension': {'enum': ['fuel_type', 'brands', 'evs', 'imports', 'monthly_totals', 'country_of_origin'], 'type': 'string', 'description': 'Which slice to return; exactly one per call'}}, 'additionalProperties': False}
get_model_stats
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'kind': {'enum': ['all', 'Personbil'], 'type': 'string', 'description': 'Default: Personbil (passenger cars)'}, 'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Max matches to return, default 5'}, 'query': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Model or brand name, e.g. "Tesla Model Y" or "Toyota"'}, 'grouped': {'type': 'boolean', 'description': 'Default true: trims collapsed into canonical models (Enyaq 85 -> Skoda Enyaq), matching bildata.io/stats. false returns raw registry variants.'}}, 'additionalProperties': False}
get_top_models
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.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Rows per list, default 10, max 50'}, 'month': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}$', 'description': 'YYYY-MM; default latest available'}}, 'additionalProperties': False}
Añadido
get_top_models
17 de September de 2026 a las 12:39
Añadido
get_model_stats
17 de September de 2026 a las 12:39
Añadido
get_market_stats
17 de September de 2026 a las 12:39
Añadido
forecast_registreringsafgift
17 de September de 2026 a las 12:39
Añadido
get_afgift_rates
17 de September de 2026 a las 12:39
Añadido
calculate_registreringsafgift
17 de September de 2026 a las 12:39