Skip to main content
Glama

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
co2NoWLTP 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.
aabenNoVarebil only: open cargo bed (ladvogn)
avgKmNoUsed: average odometer km of the comparable adverts. Part of the actualKm/avgKm/vehicleAgeYears set — a partial send is silently ignored.
nyprisNoUsed 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.
actualKmNoUsed: actual odometer km. The km regulation is skipped entirely unless actualKm, avgKm, vehicleAgeYears AND handelspris are all present.
conditionYesnew = first registration of a new vehicle; used = import/revaluation of a used vehicle
elForbrugNoElectric consumption in Wh/km. Send WITH elRaekkevidde — the battery deduction is (elForbrug/1000) * elRaekkevidde, so either one alone is a no-op.
isElectricNoMOTORCYKEL: 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.
targetYearNoRules 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.
totalvaegtNoVarebil only: total weight in kg
handelsprisNoUsed vehicles: REQUIRED when condition="used". Current Danish trade price in DKK, incl. registration tax. Unused when condition="new".
vehicleTypeYesVehicle category under Danish law
bruttovaerdiNoNew 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.
elRaekkeviddeNoElectric range in km (WLTP). Send WITH elForbrug — either one alone is a no-op.
condition_standNoUsed: maintenance condition (vedligeholdelsesstand)
vehicleAgeYearsNoUsed: 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.
allDealerListingsNoUsed: true only if EVERY comparable advert is a dealer listing (enables annoncefradrag + leveringsomkostninger)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / co2 / description
      Previous 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."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses that omitted co2 silently reads as battery-electric and produces an implausibly low tax with no error, that motorcykel co2 does not select drivetrain, and that the result is an estimate, not an official Motorstyrelsen valuation.

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

Conciseness5/5

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

The description is dense but every sentence earns its place, with critical requirements front-loaded and clearly labeled via REQUIRED PAIRS and ALWAYS. Uppercase callouts and short clauses make the long text scannable without waste.

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

Completeness5/5

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

Given 17 parameters, conditional dependencies, and no annotations or output schema, the description is remarkably complete for safe invocation. It covers all significant cross-field requirements and silent failure modes; the expected result is clear from the tool name and the statement that amounts are in DKK.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds cross-parameter semantics that the schema does not: required condition/price pairs, the meaning of nypris as the used vehicle's own original new price, the severe co2 pitfall, and the rule to send numbers as JSON numbers and omit unknown fields rather than sending null.

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

Purpose4/5

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

The description clearly states a specific action and resource: calculate Danish registration tax for personbil, varebil, or motorcykel under registreringsafgiftsloven. It does not explicitly name or contrast sibling tools like forecast_registreringsafgift, but the scope is precise enough that an agent can distinguish it from rate-lookup and market-stat tools.

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?

The description gives strong operational guidance: required pairs for new vs. used, mandatory co2 for fuel-burning personbiler/varebiler, motorcykel drivetrain selection, JSON number formatting, and omitting unknown optional fields. It does not explicitly state when to prefer forecast_registreringsafgift or other siblings, so it misses the when-not-to-use alternative.

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