dk-tax
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dk-taxhow much tax would I pay on 900,000 kr in Aarhus in 2026?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
danish-tax-mcp
MCP server for Danish personal income tax. It has the yearly rates and thresholds, each with the official source it came from, calculators for income tax, the skattekort, share income and property tax, and lookups in SKAT's positivliste and Den juridiske vejledning.
The results are estimates for planning. What you actually owe is set by your årsopgørelse from Skattestyrelsen.
Install
You need uv. For Claude Code:
claude mcp add dk-tax -- uvx danish-tax-mcpOther MCP clients can run the same command over stdio. To pin a version, use
uvx danish-tax-mcp@0.4.1.
Related MCP server: Dutch Tax Income Calculator MCP
Tools
Tool | |
| The figure keys for a year, with name and unit |
| Values with source, date checked and status |
| Kommuneskat, kirkeskat, skatteloftsnedslag and grundskyld |
| Income tax for an unmarried employee, with take-home pay and marginal rate |
| Income tax for a married couple living together at year end, with what moves between the spouses (personfradrag, kapitalindkomst, underskud) |
| Trækprocent and månedsfradrag from a forskudsopgørelse, monthly payout, share vests and expected restskat, with an optional spouse (2026 onwards) |
| Ejendomsværdiskat and grundskyld for an owner-occupied home, including the years it is bought and sold, with the cap on grundskyld increases (2026 onwards). Enter the valuation for the year before the income year: the 2026 tax uses the 2025 ejendomsværdi and grundværdi |
| Skat af aktieindkomst (27 % and 42 %) for one person or a married couple, with withheld udbytteskat, losses on listed and unlisted shares, and amounts carried forward |
| The year's taxable gain or loss on ETFs and other investeringsselskaber (lagerbeskatning), split into aktieindkomst and kapitalindkomst |
| Whether a fund is on SKAT's list of aktiebaserede investeringsselskaber for a year, read live from skat.dk |
| The current text of a section of Den juridiske vejledning, read live from info.skat.dk |
The two lookups fetch public pages from skat.dk and info.skat.dk and cache them in
~/.cache/dk-tax. Your query is matched locally and is not sent anywhere.
Example questions:
Hvad er topskattegrænsen i 2027?
How much tax do I pay on 900.000 kr. in Aarhus?
What happens to my trækprocent if I put my bonus and RSUs in the forskudsopgørelse?
Hvad bliver ejendomsværdiskatten på en lejlighed vurderet til 4 mio. kr. i Aarhus?
How much tax do I pay if I sell shares with a gain of 120.000 kr.?
My spouse is on unpaid parental leave. How much of their personfradrag can I use?
Is IE00B4L5Y983 on the positivliste, and how is it taxed?
My ETF was worth 200.000 kr. on 1 January and 230.000 kr. on 31 December, and I bought for 20.000 kr. What is taxed?
How much interest do I pay on restskat if I pay it in May?
Coverage
Income years 2025 to 2027, and all 98 kommuner. 2023 is included only because the official worked example is from that year. Foreign withholding tax on dividends and business income are not covered yet.
Testing
The salary calculator reproduces svmn.dk's worked example for 2023 to the øre, and the
skatteloft reduction matches svmn.dk's table for every kommune in 2025 to 2027. The
skattekort formulas reproduce SKAT's examples. Where the law doesn't settle something
(mostly rounding), the assumption is written down in the module docstring in calc/.
The aktieindkomst split is checked against the 2026 examples in Den juridiske vejledning
(C.E.3.2.4.1.2).
uv run pytest
uv run dk-tax # start the serverData
One YAML file per year in src/dk_tax/figures/:
bundskat:
name: Bundskatteprocent # term used in the source
value: 12.01 # as printed: 12.01 means 12,01 %
unit: percent # percent or DKK
source: https://svmn.dk/...
verified: 2026-11-01
status: verified # verified, secondary, unverified or proposed
note: PSL § 6.Keys are the Danish terms with æ, ø, å written as ae, oe, aa. They follow the law of each year, so 2025 has the old 15 % topskat and no mellemskat.
New figures come out every autumn. CONTRIBUTING.md describes how to add a year.
License
MIT
Available Tools
5 toolsestimate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| bonus | No | ||
| kommune | Yes | ||
| atp_full_time | No | ||
| bonus_payments | No | ||
| monthly_salary | Yes | ||
| vests_per_year | No | ||
| pension_own_pct | No | ||
| other_deductions | No | ||
| bonus_has_pension | No | ||
| folkekirke_member | Yes | ||
| share_withholding | No | none | |
| net_capital_income | No | ||
| share_compensation | No | ||
| pension_employer_pct | No | ||
| share_withholding_rate | No | ||
| include_bonus_in_forskud | No | ||
| include_shares_in_forskud | No | ||
| within_15_years_of_pension | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| kommune | Yes | |
| payslip | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it explains that shares are B-income with nothing withheld, the resulting restskat and the 31 December voluntary-payment interest consequence, the three withholding models, that assumptions live in dk_tax.calc.payslip, and that it is not tax advice. It does not explicitly state that the call is side-effect-free (an estimate), though the verb and output framing imply it.
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?
Purpose and usage lead, then a compact semi-colon separated parameter glossary; dense but nearly every clause carries tax-domain information an agent could not infer. Minor waste: the pointer 'see share_vest' references a tool that is not among the listed siblings, which adds ambiguity rather than clarity.
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?
Output schema exists, so return values need not be described, and the assumptions pointer plus the 'cite sources with income year / flag unverified' instruction are valuable. Against 19 parameters and 0% schema coverage, however, roughly half the inputs remain opaque, and the relationship to estimate_salary_tax is never resolved.
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 0% across 19 parameters, so the description must compensate. It does explain the highest-risk ones well (monthly_salary includes the employee's own pension share; pension_*_pct is a percentage of monthly_salary; bonus spread over bonus_payments; the share_withholding enum values), but leaves kommune, folkekirke_member, atp_full_time, other_deductions, bonus_has_pension, net_capital_income, vests_per_year, share_withholding_rate and within_15_years_of_pension entirely unexplained in both schema and prose.
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 a well-defined output set: predicts skattekort (trækprocent, månedsfradrag), normal-month and bonus-month payout, and year-end restskat from 2026 onwards. That is far more specific than the name alone. It does not, however, distinguish itself from the sibling estimate_salary_tax, which an agent could plausibly confuse with this tool.
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?
Gives a clear use context ('questions about monthly take-home pay or what to enter in the forskudsopgørelse') and an operational rule: one scenario per call, call twice to compare when the include_*_in_forskud flags differ. Missing an explicit when-not / use-estimate_salary_tax-instead statement against the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| atp_own | No | ||
| kommune | Yes | ||
| pension_own | No | ||
| atp_employer | No | ||
| gross_salary | Yes | ||
| atp_full_time | No | ||
| other_deductions | No | ||
| pension_employer | No | ||
| folkekirke_member | Yes | ||
| net_capital_income | No | ||
| private_ratepension | No | ||
| other_personal_income | No | ||
| within_15_years_of_pension | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tax | Yes | |
| kommune | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does substantial work: it discloses the key output fields (til_udbetaling, effektiv_skatteprocent, marginalskat), the provenance behavior (source, verified date, status per figure, all_verified), and a 'Not tax advice' caveat. It does not state whether the tool is a pure computation with no side effects, nor any rate-limit or auth expectations.
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?
Purpose is front-loaded in a single opening sentence, and the per-parameter bullets are terse and scannable rather than prose-heavy. The length is justified by 14 parameters, though the final sentence partially restates output fields that an output schema already covers.
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 14-parameter, annotation-free estimation tool this is close to complete: input conventions, unit conventions, output highlights, provenance semantics and known limitations are all present. The remaining gap is that required kommune and several optional income/adjustment parameters are undefined, which for a domain-specific tax tool could lead to malformed calls.
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 0%, so the description must compensate and it largely does: gross_salary gets a precise inclusion/exclusion rule (own pension share included, employer share excluded, bonus and RSU vests count), and pension_own, pension_employer, private_ratepension, atp_full_time, atp_own, atp_employer and other_deductions are all given meaning the bare titles lack. Three non-obvious parameters — net_capital_income, other_personal_income and within_15_years_of_pension — receive no explanation at all, and kommune is left undefined despite a get_kommune sibling.
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: 'Estimate a single (unmarried) employee's Danish income tax for one year, with the full breakdown.' Scope and the single/unmarried restriction are explicit, and the closing 'Not covered' line further bounds it. It does not name the obvious sibling (estimate_payslip) or explain how the two differ, so it stops short of full sibling differentiation.
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?
'Use this instead of doing tax arithmetic yourself' plus 'All amounts are yearly DKK, not percent' and the percentage-to-kroner conversion instruction give clear operational context and prevent predictable input errors. Exclusions (married couples, aktieindkomst, ejendomsværdiskat) act as when-not guidance. What is missing is routing guidance toward get_kommune for the required kommune value or toward estimate_payslip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| figures | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden, and it handles the highest-risk trait well: values are raw as printed (percent as 12.01, not 0.1201; amounts in whole DKK), which prevents unit-scaling errors that annotations would never have covered. It also discloses that each figure carries provenance and a verification status. It does not say what happens when a key is unknown or unavailable for the requested year, which is the main remaining behavioral gap.
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?
Three short blocks, front-loaded with what the tool returns, then the value-format warning, then the discovery pointer. Every sentence earns its place: the scaling warning prevents a concrete error class, and the list_figures line prevents an invalid call. No restatement of the tool name or filler.
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?
An output schema exists, so the description is not obligated to document return values, yet it adds the one thing the schema cannot convey: the raw scaling convention and the presence of source/verified/status metadata. For a two-parameter lookup tool this is close to sufficient. Missing only failure behavior for unknown keys or years.
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 0%, so the description must supply meaning for both parameters. It does partially: "income year" clarifies the intent of year, and the list_figures pointer tells the agent where the keys vocabulary comes from. It never states the year format (four-digit calendar year vs. income/tax year bounds) or what a key string looks like, so half the semantic burden still falls on the caller.
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 verb and resource ("Get Danish tax figures for an income year") and immediately enumerates what comes back with each figure: source, verified date and status. That scope, plus the explicit pointer to list_figures for key discovery, lets an agent separate this retrieval tool from the sibling estimators 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 gives a concrete prerequisite and alternative: "Use list_figures to discover keys," which tells the agent it cannot call this blind with arbitrary key strings. It also prescribes post-retrieval behavior (cite source and income year, flag non-'verified' status). It stops short of saying when to prefer get_figures over estimate_salary_tax or estimate_payslip, so the boundary with the estimation siblings is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| kommune | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| source | Yes | |
| status | Yes | |
| kommune | Yes | |
| verified | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses that percentages are printed in Danish decimal convention (24.52 = 24,52 %) and that kirkeskat only applies to Folkekirken members, which is genuine domain behavior. It does not state that this is a read-only lookup, where the data comes from, or whether all years/municipalities are covered.
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 short paragraphs, front-loaded with the core purpose and followed by the two clarifications that matter most (percentage format, kirkeskat membership caveat). No filler, though the four untranslated Danish tax terms are listed without any gloss for an agent unfamiliar with them.
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?
An output schema exists, so return values need not be described, and the domain caveats cover the trickiest interpretation issue. The notable gap is `year`: with two required parameters and no schema documentation, the description should say what years are valid and what happens for an unsupported year.
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 0%, so the description must explain both parameters. It does well for `kommune` by giving concrete examples ('Aarhus', 'Lyngby-Taarbæk'), including a hyphenated name. However, `year` is never mentioned at all — no format, no valid range, no indication of which years have data — leaving half the parameters undocumented.
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 verb and a precise set of resources (kommuneskat, kirkeskat, skatteloftsnedslag, grundskyldspromille), so an agent knows exactly what data is returned. It does not explicitly distinguish itself from siblings like estimate_salary_tax or get_figures, but the municipal-tax-rate scope is narrow enough to be unambiguous.
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?
Usage is only implied: an agent can infer this is a per-municipality, per-year rate lookup. There is no statement of when to prefer it over estimate_salary_tax or estimate_payslip (e.g. 'use this to obtain rates that feed the estimators'), and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| figures | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose that this is a discovery/listing step returning keys with name and unit rather than values, plus the year-dependent variance in key sets. It omits safety/permission context and pagination or size behavior, which are minor for a small reference listing.
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?
Three short sentences, front-loaded with the core action and return content, then routing guidance, then the year-variance caveat. Nothing is redundant and no sentence could be dropped without losing information.
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?
An output schema exists, so return-value documentation is not required, and the description covers purpose, alternative routing, and year sensitivity. The remaining gap is the semantics of the year argument (calendar vs. income year definition, valid bounds), which the empty schema leaves entirely to the description.
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 0% for the single required integer `year`, so the description must supply meaning. It clarifies that the parameter is an income year and that different years yield different keys, but gives no valid range, format, or out-of-range behavior.
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 ("List the tax figure keys available for an income year") plus what each entry contains (name and unit). The second sentence explicitly distinguishes it from the sibling get_figures, so an agent can separate the two without opening either 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?
Gives an explicit workflow: use this to find keys, then call get_figures to fetch values. It also warns that the valid key set varies by year with concrete examples (2025 topskat vs. 2026 mellemskat/toptopskat), which tells the agent when a cached key list is unsafe to reuse.
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.
5 tool updates
v0.4.1- First observed
estimate_payslip - First observed
estimate_salary_tax - First observed
get_figures - First observed
get_kommune - First observed
list_figures
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Read-only European tax, salary and benefit calculators with official sources and unknowns.
Danish vehicle registration tax (registreringsafgift) calculator and DMR registration statistics
Market-value estimates, comparable sales and property tax for Danish homes, from public registers.
Swedish personal-finance calculators with 2026 tax rules: rent vs buy, leasing, savings, mortgages
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceCalculate income tax (UK/US brackets), EU VAT, UK corporation tax, and capital gains tax. Provides estimates only - not professional tax advice.2 npm22 PyPIMIT
- FlicenseNot gradedqualityBmaintenanceEnables Dutch income tax calculations: converts gross to net salary, net to gross, compares multiple salary scenarios, and provides tax bracket data for supported years. Every result includes a detailed breakdown and a thetax.nl permalink.-
- AlicenseAqualityCmaintenanceEnables AI assistants to calculate Swiss income, wealth, inheritance, capital payment, and corporate taxes for any municipality, compare tax burdens, and find cheapest locations without an API key.13MIT
- AlicenseAqualityBmaintenanceEnables deterministic salary and net/gross pay calculations for the German public sector and free salaries, following the official BMF tax computation plan, including allowances, family benefits, and tax/social contributions.41MIT