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 vehicle: an omitted co2 counts as 0 g/km, i.e. battery-electric, and collapses the tax to near zero with no error raised. 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. 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.
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)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden, and it discloses key traps: an omitted co2 is read as battery-electric and 'collapses the tax to near zero with no error raised.' It also states the result is an estimate, not an official Motorstyrelsen valuation, and that the engine matches bildata.io's public calculator. It does not describe return shape or side effects, though this is a pure calculation tool.

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 long but earned: every sentence adds a constraint or context needed for correct invocation, from the required new/used pairs to the co2 trap to the JSON-number rule. Critical warnings are front-loaded and highlighted with 'REQUIRED PAIRS' and 'ALWAYS,' making the text dense but efficient for a 17-parameter tool.

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

Completeness4/5

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

For a complex 17-parameter tool with no annotations and no output schema, the description covers the most dangerous input behaviors, conditional requirements, and value semantics. Missing items are explicit routing against forecast_registreringsafgift and any direct description of the response object, though the tool name and 'calculate tax' make the primary output inferable.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds meaning beyond each property's schema entry: it defines required pairs across parameters, clarifies that nypris is the used vehicle's own original price and not the new-vehicle price field, and warns that omitted co2 is treated as 0. This cross-parameter and serialization guidance is genuinely additive, though individual parameters are already well documented in the schema.

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

Purpose5/5

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

The description names a specific verb ('Calculate'), a precise resource ('Danish vehicle registration tax (registreringsafgift)'), and the eligible vehicle types ('personbil, varebil or motorcykel'). It also situates the calculation under 'registreringsafgiftsloven' and distinguishes it from siblings like forecast_registreringsafgift by being the direct calculation tool.

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?

It gives explicit conditional guidance: condition='new' requires bruttovaerdi, condition='used' requires handelspris and nypris, and co2 must always be sent for fuel-burning vehicles. It also instructs on JSON number formatting, enum use, and omitting unknown optional fields. It does not explicitly state when to prefer this over sibling tools such as forecast_registreringsafgift, so it stops short of full alternative routing.

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.

TDQS

A3.9/5.0
Disambiguation4/5

The tax tools (calculate vs forecast) are distinguished by current vs future years, and the stats tools are clearly separated into broad market stats, specific model stats, and top-model rankings. Slight overlap exists between get_market_stats and get_top_models, but the descriptions explicitly call out the difference.

Naming Consistency4/5

All tools follow a snake_case verb_noun pattern and are consistently lowercase. However, naming mixes Danish and English, and the tax term appears both as the full 'registreringsafgift' and the abbreviated 'afgift' in get_afgift_rates.

Tool Count5/5

Six tools is well-scoped for the domain: two tax calculation/projection tools, one rates tool, and three complementary market-statistics tools. Each tool earns its place without redundancy or bloat.

Completeness4/5

The server covers current and future registration tax calculation, machine-readable rates, and multiple levels of Danish market statistics. Minor gaps exist, such as no historical pre-2026 rates and no general model-search/discovery tool, but core workflows are not blocked.

Resources