Skip to main content
Glama
dk-tax
by mikaelbdj

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Danish personal tax figures (rates, thresholds, deductions) per income year, each with its official source. Never state a Danish tax figure from memory: look it up here and cite its source and income year. Not tax advice.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_figuresA

List the tax figure keys available for an income year, with name and unit.

Use this to find the right keys, then fetch values with get_figures.
Keys differ between years when the law changed (e.g. 2025 has the old 15 %
topskat; mellemskat and toptopskat start in 2026).
get_figuresA

Get Danish tax figures for an income year, each with source, verified date and status.

Values are exactly as printed in the source: percent as 12.01 (not 0.1201),
amounts in whole DKK. When answering, cite the source and the income year,
and say so if status is not 'verified'. Use list_figures to discover keys.
get_kommuneB

Get a municipality's kommuneskat, kirkeskat, skatteloftsnedslag and grundskyldspromille.

`kommune` is the municipality name, e.g. 'Aarhus' or 'Lyngby-Taarbæk'.
Percentages as printed (24.52 means 24,52 %). Kirkeskat applies only to
members of Folkekirken.
estimate_salary_taxA

Estimate a single (unmarried) employee's Danish income tax for one year, with the full breakdown.

Use this instead of doing tax arithmetic yourself. All amounts are yearly DKK, not percent.
gross_salary: total salary INCLUDING the employee's own pension share and EXCLUDING the
  employer's share; bonus and RSU vests count as salary. If the user gives pension as
  percentages of salary, convert them to kroner first.
pension_own / pension_employer: contributions to an employer-administered pension.
private_ratepension: what the person pays into a ratepension themselves.
atp_full_time: use the statutory full-time ATP amounts; set False and pass atp_own /
  atp_employer for part-time or other ATP.
other_deductions: other ligningsmæssige fradrag (befordring, union dues, ...).
The result includes til_udbetaling (take-home), effektiv_skatteprocent and marginalskat
(share of the next 1.000 kr. that goes to tax), and the source, verified date and status
of every figure used: cite them with the income year, and flag any figure that is not
'verified' (all_verified tells you at a glance). Not covered: married couples,
aktieindkomst, ejendomsværdiskat. Not tax advice.
estimate_payslipA

Predict the skattekort (trækprocent, månedsfradrag) and what is actually paid out in a normal month and in the bonus month, plus the year-end restskat, from 2026 onwards.

Use this for questions about monthly take-home pay or what to enter in the
forskudsopgørelse. One scenario per call: the include_*_in_forskud flags say whether the
bonus and the shares are entered in the forskudsopgørelse; call twice to compare.
monthly_salary: DKK per month INCLUDING the employee's own pension share.
pension_*_pct: percent of monthly_salary (e.g. 4 and 8).
bonus: the year's total bonus in DKK, paid in bonus_payments equal parts (4 = quarterly). share_compensation: the year's RSU vest value in DKK.
  Shares are B-income: the employer withholds nothing, so if they are left out of the
  forskudsopgørelse the tax comes as restskat (year_end.restskat > 0); paying it
  voluntarily before 31 December avoids interest.
share_withholding: "none" = shares are B-income, nothing withheld (skat.dk's general rule);
  "traekprocent" = the employer keeps back shares to cover the tax at the skattekort's
  percentage (withhold-to-cover, common in private companies); "fixed" = at
  share_withholding_rate percent. Ask the employer which applies; see share_vest.
Cite the sources with the income year and flag any figure that is not 'verified'.
Assumptions are listed in dk_tax.calc.payslip. Not tax advice.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

The five tools have mostly distinct purposes: list_figures (key discovery) vs get_figures (value retrieval) form a clearly explained discover/fetch pair, and get_kommune targets a specific local-rate resource. The weakest boundary is between estimate_salary_tax (annual, single employee, full breakdown) and estimate_payslip (monthly skattekort/take-home, 2026+), which both answer 'what do I pay in tax' and could be confused for salary questions.

Naming Consistency5/5

All names are snake_case and follow a verb_noun pattern (list_figures, get_figures, get_kommune, estimate_salary_tax, estimate_payslip). Verbs are predictable by intent: list/get for lookups, estimate for calculations.

Tool Count5/5

Five tools is well-scoped for a domain-specific tax data server: one discovery tool, one lookup, one sub-resource lookup, and two calculation entry points. Nothing looks redundant or padding.

Completeness4/5

The lifecycle is covered end to end: discover figure keys, fetch values with provenance, get municipal rates, then compute annual and monthly outcomes. Gaps are real but acknowledged in descriptions (married couples, aktieindkomst, ejektivskat/ejendomsværdiskat are unsupported, and there is no way to list available years).

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues