bildata
Server Details
Danish vehicle registration tax (registreringsafgift) calculator and DMR registration statistics
- Status
- Healthy
- Uptime
- 100.0% over 48 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
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) |
TDQS
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.
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.
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.
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.
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.
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.
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) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that results are per-year with deltas vs 2026, amounts are in DKK, outputs are estimates rather than official valuations, and that the tool always returns the full span. This is strong, though it could go further on response structure or edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, reason for multi-year scope, return shape, currency, estimate caveat, usage exclusion, and serialization requirement. Information is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter tool with no output schema, the description covers the essential operational context: scope, return content, currency, estimate status, and when to use a sibling. It could be slightly more specific about the exact shape of the returned per-year results/deltas, but it is otherwise complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter in detail, including type-specific caveats. The tool description adds the cross-cutting instruction that numbers must be sent as JSON numbers, but it does not add per-parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Project DANISH registration tax') on a specific resource ('a NEW vehicle') with a clear time scope (2026–2029). It also explicitly distinguishes itself from the sibling calculate_registreringsafgift by naming when that alternative applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: NEW vehicles and the whole 2026–2029 span. It also names the exact alternative for excluded cases: 'for a USED import, or for a single year, use calculate_registreringsafgift instead.' This leaves no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It usefully discloses machine-readability, the 2026–2029 range, and that 2027–2029 rates are provisional. However, it does not describe the response format, update cadence, or any access considerations, though the operation is clearly a simple read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The core content is front-loaded, the API equivalence is a useful single clause, and the provisional-data caveat is included without extra wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only rates endpoint, the description is nearly complete: it identifies the data domain, years, categories, and provisional status. The absence of an output schema means the description could have specified the exact return shape, but 'machine-readable' plus the field list is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the input schema is empty, so the baseline is 4. The description adds meaningful context by describing the payload of returned data (brackets, tiers, percentages) even though no parameters need explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Danish vehicle registration tax rates'), defines the scope ('2026–2029'), and enumerates the contained data categories (brackets, CO2 tiers, bundfradrag, EV phase-in). This clearly differentiates it from calculation, forecasting, and market/model stats siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied through the resource type: it is the raw rates dataset, as opposed to calculate_registreringsafgift or forecast_registreringsafgift. However, the description never explicitly says 'use this when you need raw rates' or names alternatives, so the agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
TDQS
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 well: it discloses that a month whose as_of precedes month-end is PARTIAL, that brand-only queries elsewhere disclose truncation in a `note` field, and that the kind default differs from the sibling's. It does not cover permissions, rate limits, or the shape of returned rows, so it falls short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core resource and dimensions are front-loaded, but the text is a single dense paragraph with no structural breaks and the final sentence about brand totals is convoluted and partly redundant with the earlier 'Market-level ONLY' caveat. It is informative but could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return semantics, and it does explain what each dimension yields plus the `note` truncation field and the as_of partiality rule. It stops short of describing the actual output structure per dimension, leaving some uncertainty about returned fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and enum descriptions are terse ('Which slice to return'), but the description genuinely expands each dimension value with real semantics: imports is by toldsyn date with counts/share/top makes, monthly_totals covers the last 12 months including leasing series, and brands is limited to the top 20. It also explains kind=all vs kind=Personbil beyond the schema's bare 'Default: all'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Danish new-vehicle registration statistics from bildata.io weekly DMR data) and enumerates the exact dimensions returned (fuel_type, brands, evs, imports, monthly_totals, country_of_origin). It explicitly distinguishes itself from get_model_stats for per-model queries, so an agent can separate it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states both when to use this tool (market-level questions) and when not to (per-model breakdowns, brand totals for brands outside the top 20), and names the correct alternative (get_model_stats) for both exclusions. It even explains why the sibling's output cannot be summed to reproduce this tool's brand totals, which removes a real misuse path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description thoroughly discloses behavior: it differentiates active vs. inactive models, explains that absent period figures are missing data 'NOT zero sales', states that results appear in unavailableFields, and warns that spelling is forgiving and the response indicates how it matched. It even instructs the agent to verify the name field before quoting numbers. This is exceptional transparency for a tool with zero annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose and scope first, then routing guidance, then return behavior for both active and inactive models, then matching/verification caveats. It is long but information-dense with no repetition or filler. The critical edge-case semantics are clearly front-loaded near the relevant behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description carries the full burden and succeeds. It explains what figures are returned for active models, what an inactive model returns, how missing data is represented, and how matching works. It gives an agent enough to select, invoke, and interpret the tool's response correctly, including a caution to verify the matched name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds meaningful value beyond the schema by explaining query semantics: examples of valid queries, forgiving spelling normalization ('ID.4 = ID 4 = id4'), and the need to verify the returned name. It does not elaborate on kind, limit, or grouped, but the schema already covers those fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Look up Danish registration numbers for a SPECIFIC car model by name'. It gives concrete examples and explicit scope ('Covers every model since 2018'), and distinguishes itself from get_top_models and get_market_stats. An agent can immediately tell what this tool does and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: 'Use this when the question names a model or brand'. It also states alternatives and why they are not suitable: get_top_models covers only top sellers of one month and get_market_stats only top 20 brands. No ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and meets it: it discloses partial-month cutoff semantics, 12-month rolling-window bounds, ranking nature, and absence behavior. It also notes rolloff behavior for older months across all tools, which is valuable operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with its core purpose in the first sentence, and every sentence contributes. It is a bit longer than necessary and repeats the 12-month-window idea, so it narrowly misses a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter list tool with no annotations and no output schema, the description covers source, scope, ranking, window bounds, partial-month behavior, default behavior, and cross-tool routing. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds meaning by explaining that the month is a data cutoff with partial-month consequences and by confirming default limit/top-10 behavior. It slightly confuses by using the term 'as_of' for the 'month' parameter, which is the only notable gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Top-selling car models (and variants) in Denmark for a given month' from bildata.io's monthly top-50 passenger-car statistics. It also names the sibling it is not, saying a model outside the top 50 must be handled by get_model_stats, so an agent can disambiguate immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states default usage ('Default: latest month, top 10'), gives an alternative for out-of-top-50 lookups ('look that one up by name with get_model_stats'), and rules out arbitrary past months ('A month OLDER than the window cannot be answered by any tool on this server'). This is explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
UK used cars: road tax (VED), ULEZ charges, MOT dates, DVSA reliability, live dealer stock.
NHTSA & EU car recalls, UK MOT stats, EU car specs/WLTP CO2, EU VAT (VIES), LEI & Cyprus companies
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for looking up Danish vehicle information by registration number or VIN via MotorAPI.dk, including vehicle details, environmental data, equipment, and API usage.1-
- 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 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
- AlicenseAqualityAmaintenanceEnables querying key financial figures from Danish companies' published annual reports via CVR number, using XBRL data from Erhvervsstyrelsen, without an API key.537 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.