Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

NL Tax Calculator

REMOTE · NLTAXCALCULATOR.NL

Dutch tax: net salary, tax return, Box 3, 30% ruling, cross-border (DE/BE/UK/IN), WOZ, benefits.

+3 this week 80 Trust /100

Last scanned (9 hours ago)

Scores higher than 81% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security80
Transport & Reachability100
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 10114 tokens (~194/item across 52 items; 39 tools + 13 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
  • Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "transfer_tax_netherlands" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 41 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +1
    • Tool “box3_wealth_tax” rewrote its description, which is the text the model reads security
    • New prompt “american_in_netherlands” functional
    • New prompt “assets_in_home_country” functional
    • New prompt “couple_tax_planning” functional
    • New prompt “cross_border_work” functional
    • New prompt “freelance_or_employee” functional
    • New prompt “losing_my_job_netherlands” functional
    • New resource “treaties” functional
    • Server version: 1.3.0 → 1.4.0 functional
    • “box3_wealth_tax” added an optional parameter “country” cosmetic
    • “box3_wealth_tax” added an optional parameter “other_assets_abroad” cosmetic
    • “box3_wealth_tax” added an optional parameter “property_abroad” cosmetic
    • “box3_wealth_tax” added an optional parameter “tax_withheld_abroad” cosmetic
  • 31 Oct 26 0
    • Schema quality: 7530 → 9833 ▼ functional
    • Schema quality: 7530 → 9282 ▼ functional
    • New tool “cross_border_salary_netherlands” functional
    • New tool “dba_false_self_employment_check” functional
    • New tool “fiscal_partner_split_netherlands” functional
    • New tool “job_offer_comparison” functional
    • New tool “minimum_wage_netherlands” functional
    • New tool “personal_loan_affordability” functional
    • New tool “salary_country_comparison” functional
    • New tool “woz_objection_netherlands” functional
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +4
    • The server rewrote its instructions, which are the text every model session reads security
    • Schema quality: 221 → 175 ▲ functional
    • The server now declares the “prompts” capability functional
    • The server now declares the “resources” capability functional
    • First check of Schema quality: 100 functional
    • New prompt “buying_a_home_netherlands” functional
    • New prompt “check_dutch_job_offer” functional
    • New prompt “dutch_tax_return_walkthrough” functional
    • New prompt “explain_belastingdienst_letter” functional
    • New prompt “moving_to_netherlands” functional
    • New prompt “prepare_m_form” functional
    • New prompt “thirty_percent_ruling_check” functional
    • New resource “accuracy” functional
    • New resource “deadlines-employee” functional
    • New resource “figures-2024” functional
    • New resource “figures-2025” functional
    • New resource “figures-2026” functional
    • New resource “figures-2026-full” functional
    • New resource “figures-history” functional
    • New resource “glossary-en” functional
    • New resource “glossary-nl” functional
    • New resource “guides-en” functional
    • New resource “guides-nl” functional
    • New resource “job-ad-terms” functional
    • Server version: 1.2.0 → 1.3.0 functional
    • New tool “dutch_tax_deadlines” functional
    • New tool “dutch_tax_figures” functional
    • New tool “dutch_term_explained” functional
  • 26 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Schema quality: 3039 → 6209 ▼ functional
    • Server version: 1.1.0 → 1.2.0 functional
    • New tool “aow_state_pension” functional
    • New tool “arrival_departure_year_m_form” functional
    • New tool “birth_parental_leave_pay” functional
    • New tool “box3_2028_actual_return_system” functional
    • New tool “company_car_tax_netherlands” functional
    • New tool “employee_vs_zzp_vs_bv” functional
    • New tool “freelance_hourly_rate” functional
    • New tool “gift_tax_netherlands” functional
    • New tool “health_insurance_cost_netherlands” functional
    • New tool “inheritance_tax_netherlands” functional
    • New tool “marginal_rate_allowance_cliff” functional
    • New tool “pension_annuity_room_jaarruimte” functional
    • New tool “rent_vs_buy_netherlands” functional
    • New tool “rsu_tax_netherlands” functional
    • New tool “thirty_percent_ruling_timeline” functional
  • 25 Oct 26 +1
    • Tool “benefits_toeslagen_check” changed its title: Dutch benefits (toeslagen) eligibility estimate → Healthcare allowance (zorgtoeslag) and other Dutch benefits (toeslagen) estimate cosmetic

    1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://nltaxcalculator.nl/dutch-tax/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=nltaxcalculator.nl CN=WE1,O=Google Trust Services,C=US 31 Oct 2026 29 Jan 2027 ECDSA 256 ECDSA-SHA256 f2712dada95ef1a213bd4b869d6b86ee
SANs: nltaxcalculator.nl, *.nltaxcalculator.nl
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of nltaxcalculator.nl. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
nl. present 17153 13 Verified
nltaxcalculator.nl. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy default-src 'self'; script-src 'self' 'unsafe-inline' https://pagead2.googlesyndication.com https://*.googlesyndication.com https://*.google.com https://*.googleadservices.com https://*.doubleclick.net https://challenges.cloudflare.com; style-src 'self' 'unsafe-inline'; font-src 'self'; connect-src 'self' https://*.supabase.co wss://*.supabase.co https://*.googlesyndication.com https://*.google.com https://*.doubleclick.net https://*.adtrafficquality.google https://challenges.cloudflare.com https://opendata.rdw.nl; img-src 'self' data: blob: https://flagcdn.com https://i.ytimg.com https://*.googlesyndication.com https://*.google.com https://*.gstatic.com https://*.doubleclick.net; frame-src 'self' https://googleads.g.doubleclick.net https://tpc.googlesyndication.com https://pagead2.googlesyndication.com https://*.google.com https://*.googlesyndication.com https://*.adtrafficquality.google https://challenges.cloudflare.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
x-content-type-options nosniff
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://nltaxcalculator.nl/dutch-tax/api/mcp Verified 200
http (plaintext) http://nltaxcalculator.nl/dutch-tax/api/mcp HTTPS enforced 301 https://nltaxcalculator.nl/dutch-tax/api/mcp
MCP tools · 39 exposed · ~9,182 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
aow_state_pension ~120

The Dutch state pension (AOW) from 1 July 2026 for a single person or someone with a partner: 2% of the full AOW for every insured year in the Netherlands in the 50 years before AOW age, gross and net a month, and the holiday allowance.

NameTypeReqDescription
insured_yearsnumberyesYears lived or worked in the Netherlands in the 50 years before AOW age, 0-50
living_situationstring–Living alone or with a partner. Default single.

No output schema declared.

No examples provided.

arrival_departure_year_m_form ~170

For the year someone arrives in or leaves the Netherlands (the M-form, migration tax return): the salary earned while resident, the Dutch tax on it with the tax credits for that part of the year, and the net pay a month during the resident period.

NameTypeReqDescription
datestringyesRegistration date in the municipality (arriving) or departure date (leaving), YYYY-MM-DD, 2024-2026
gross_annualnumberyesGross salary for a full year at this pay, euros
holiday_allowance_on_topboolean–Add 8% holiday allowance. Default false.
scenariostringyesMoving to the Netherlands or leaving it
thirty_percent_rulingboolean–The 30% ruling applies. Default false.

No output schema declared.

No examples provided.

benefits_toeslagen_check ~322

Estimates which main Dutch household benefits are likely for 2026, from income, assets, rent and children's ages, with indicative yearly amounts. Read-only; it does not apply for anything, and the Belastingdienst decides eligibility. Covers healthcare allowance (zorgtoeslag), rent allowance (huurtoeslag), child benefit (kinderbijslag), child budget (kindgebonden budget), the conditions for childcare allowance (kinderopvangtoeslag), the working-parent tax credit (IACK) and exemption from municipal taxes (kwijtschelding).

NameTypeReqDescription
assetsnumber–Household savings and investments on 1 January. Default 0.
child_agesarray–Ages of children under 18 living with you, e.g. [2, 7]. Default none.
housingstring–Rent, own home, or other (e.g. living with parents). Default rent.
incomenumberyesYour yearly gross income (toetsingsinkomen), euros
monthly_rentnumber–Basic monthly rent (kale huur, without service costs). Needed for rent allowance.
partner_incomenumber–Partner's yearly gross income. Omit if you have no (benefits) partner.
partner_worksboolean–Partner has paid work. Default true.
uses_childcareboolean–Uses registered daycare, a childminder or after-school care. Default false.
you_workboolean–You have paid work. Default true.

No output schema declared.

No examples provided.

birth_parental_leave_pay ~255

Income during leave after a birth in the Netherlands (2026): maternity leave (UWV, 100% up to the daily wage cap), birth leave for the partner (1 week by the employer, up to 5 extra weeks at 70% from UWV) and paid parental leave (9 weeks at 70% from UWV), with what each parent receives and loses compared with normal pay.

NameTypeReqDescription
birth_parent_gross_monthlynumberyesGross monthly salary of the parent giving birth, euros
holiday_pay_on_topboolean–Salaries are without the 8% holiday allowance (it comes on top). Default true.
parental_leave_weeks_birth_parentnumber–Paid parental leave weeks for the birth parent, 0-9. Default 9.
parental_leave_weeks_partnernumber–Paid parental leave weeks for the partner, 0-9. Default 9.
partner_extra_birth_leave_weeksnumber–Extra birth leave weeks the partner takes, 0-5. Default 5.
partner_gross_monthlynumber–Gross monthly salary of the partner, euros (0 if not working). Default 0.

No output schema declared.

No examples provided.

box3_2028_actual_return_system ~249

The planned new Dutch Box 3 (Wet werkelijk rendement, from 2028): tax on the actual return of the year (interest, dividends, price changes of investments incl. unrealised, rental income, minus interest and costs), compared with today's notional system. A plan; details can still change.

NameTypeReqDescription
debtsnumber–Box 3 debts, euros. Default 0.
dividendsnumber–Dividends received, euros. Default 0.
fiscal_partnerboolean–Fiscal partners (double tax-free amount). Default false.
interest_paidnumber–Interest paid on those debts, euros. Default 0.
interest_receivednumber–Interest received in the year, euros. Default 0.
investments_endnumber–The same holdings on 31 December, euros. Default = start.
investments_startnumber–Shares, ETFs, crypto on 1 January, euros. Default 0.
net_purchasesnumber–Bought minus sold during the year, euros. Default 0.
savingsnumber–Savings on 1 January, euros. Default 0.

No output schema declared.

No examples provided.

box3_actual_return_estimate ~300

When the actual return on Box 3 assets was lower than the notional return, the Belastingdienst taxes the actual return instead (following the Supreme Court rulings). For one tax year from 2017 to 2026 this compares the notional Box 3 tax with the tax on the actual return (interest, dividends, rent and value changes minus interest paid), and estimates the difference that could be refunded and which procedure applies to that year. Read-only calculation; it submits nothing and is not tax advice.

NameTypeReqDescription
assessed_box3_taxnumber–The Box 3 tax on the actual assessment, if known (more exact than the estimate)
debtsnumber–Box 3 debts on 1 January
dividends_and_rentnumber–Dividends and net rental income received
fiscal_partnerboolean–Amounts are a fiscal-partner couple's total. Default false.
interest_paidnumber–Interest paid on Box 3 debts
interest_receivednumber–Interest received in the year
other_assetsnumber–Investments and other assets on 1 January
savingsnumber–Savings on 1 January of that year
value_changenumber–End value minus start value of investments, corrected for purchases and sales (negative for a loss)
yearnumberyesTax year, 2017 to 2026

No output schema declared.

No examples provided.

box3_wealth_tax ~360

Box 3 tax on savings and investments in the Netherlands for 2026 (the notional-return system): the tax-free allowance, the notional return on savings, investments and debts, and the 36% tax. Optionally for fiscal partners (double allowance). With a country and property or savings abroad (an expat's home country), also the treaty relief: the property is exempt, tax withheld abroad is credited.

NameTypeReqDescription
countrystring–For assets in another country (2-letter code, e.g. IN, GB, DE, PL): the country, for the treaty relief. Leave out when everything is in the Netherlands.
debtsnumber–Debts in Box 3 on 1 January (not the mortgage on your own home), euros
fiscal_partnerboolean–Filing together with a fiscal partner (amounts are the couple's total). Default false.
investmentsnumber–Investments and other assets (shares, crypto, a second home) on 1 January, euros
other_assets_abroadnumber–Savings and investments in that country on 1 January, euros. Not included in savings or investments. Taxed here; tax withheld there is credited.
property_abroadnumber–Value of a home or land in that country on 1 January (your share), euros. Not included in investments. Exempt from Dutch Box 3 under the treaty, but it still counts for spreading the tax-free allowan…
savingsnumber–Bank and savings balances on 1 January, euros
tax_withheld_abroadnumber–Tax already withheld in that country on those other assets (interest, dividends) for the year, euros.

No output schema declared.

No examples provided.

company_car_tax_netherlands ~165

The yearly addition to income (bijtelling) for private use of a company car in the Netherlands in 2026, for electric and fuel cars (with the 60-month lock-in of an electric car's rate and cap from its first registration), and the extra income tax at the employee's marginal rate.

NameTypeReqDescription
catalog_valuenumberyesThe car's list price (catalogue value incl. BPM and VAT), euros
electricboolean–Fully electric. Default false.
first_registration_yearnumber–Year the car was first registered (sets an electric car's rate for 60 months). Default 2026.
taxable_incomenumber–Taxable income before the bijtelling, euros a year. Default 60000.

No output schema declared.

No examples provided.

cross_border_salary_netherlands ~551

Salary between the Netherlands and Germany, Belgium, the United Kingdom, India, Poland or Romania under the tax treaty and EU social security rules. mode "move": the year someone moves to the Netherlands (2026): Dutch tax on the resident part, the home country's tax on the salary before the move (Germany with progression; India's 182-day test for its April-March year), whether the home country also taxes the Dutch salary, and social security when posted. mode "commute": someone living in one country and working for an employer in the other: the salary split by working days (Germany: up to 34 home-working days from 2026 do not shift the taxing right), which country relieves double tax and how, and which country's social security applies (25% rule, telework framework agreement). Each answer cites the treaty articles. Salary only; Belgian and Polish tax amounts are not calculated yet.

NameTypeReqDescription
countrystringyesThe other country: DE, BE, GB, IN, PL or RO
days_in_residencenumber–commute: working days worked in the country of residence, home working included. Default 0.
fx_per_eurnumber–move: 1 euro = this many units of the home currency (optional; ignored for euro countries)
gross_annualnumber–commute: gross yearly salary in euros
holiday_allowanceboolean–move: 8% holiday allowance on the Dutch salary. Default true.
home_salary_before_movenumber–move: salary earned in the home country in 2026 before the move, in its currency. Default 0.
lives_instring–commute: where the person lives; the employer is in the other country. Default other (lives abroad, works for a Dutch employer).
modestringyesmove = the year of moving to the Netherlands; commute = living in one country, working in the other
move_datestring–move: first day living in the Netherlands, YYYY-MM-DD in 2026
nl_gross_annualnumber–move: Dutch gross salary for a full year, euros, without holiday allowance
postedboolean–move: still employed and posted by the home employer. Default false.
telework_requestboolean–commute: employer and employee jointly asked to apply the EU telework framework agreement. Default false.
thirty_percent_rulingboolean–move: 30% ruling on the Dutch salary. Default false.
working_daysnumber–commute: total working days in the year. Default 220.

No output schema declared.

No examples provided.

dba_false_self_employment_check ~374

Indicates whether a Dutch freelance (ZZP) assignment risks being treated as disguised employment (schijnzelfstandigheid) under the DBA rules the Belastingdienst enforces again since 2025: authority, integration in the organisation, personal work and pay, and acting as an entrepreneur. Answer each question yes, partly or no; at least 4. An indication only; the official check is the Belastingdienst Webmodule Beoordeling Arbeidsrelatie.

NameTypeReqDescription
clientCarriesRiskstring–If something goes wrong, does the client carry the cost instead of the freelancer?
coreWorkstring–Is the work part of the client's normal, ongoing business?
howWhenWherestring–Does the client decide how, when and where the work is done?
investsOwnMeansstring–Does the freelancer pay for their own tools, training, insurance and marketing?
longAssignmentstring–Has the assignment lasted more than a year, or does it have no clear end?
looksLikeStaffstring–Does the freelancer work like staff, with the client's email address, badge or a place in a team?
mustDoPersonallystring–Must the freelancer do the work personally, without being able to send a replacement?
paidForTimestring–Is the pay per hour or per month, whatever the result?
sameInstructionsstring–Does the freelancer get the same instructions as employees doing the same work?
setsHoursstring–Does the client set the hours or days worked?
setsOwnRatestring–Does the freelancer set and negotiate their own rate?
severalClientsstring–Does the freelancer work for several clients, with no single client giving most of the income?

No output schema declared.

No examples provided.

dutch_tax_changes_2027 ~144

Compares income tax on a gross salary in 2026 with the Belastingplan 2027 proposal (presented on Prinsjesdag 2026, a proposal until Parliament votes): brackets and tax credits, and the 30% ruling dropping to 27% unless it started before 2024.

NameTypeReqDescription
gross_annualnumberyesGross annual salary in euros, without holiday allowance
ruling_started_before_2024boolean–The ruling started before 2024 (keeps 30% in 2027). Default false.
thirty_percent_rulingboolean–Has the 30% ruling. Default false.

No output schema declared.

No examples provided.

dutch_tax_deadlines ~304

The coming deadlines for someone in the Netherlands, from today: the income tax return, provisional assessments, the 30% ruling application window and its end, allowances (toeslagen) changes, health insurance switching, Box 3, pension (jaarruimte) and leaving the country.

NameTypeReqDescription
allowancesboolean–Receives allowances (toeslagen). Default false.
childrenboolean–Has children. Default false.
employeeboolean–Works as an employee. Default true.
homeownerboolean–Owns the home they live in. Default false.
job_start_datestring–Start date of the Dutch job, YYYY-MM-DD (for the 30% ruling window). Optional.
leaving_datestring–Date of leaving the Netherlands, YYYY-MM-DD. Optional.
little_employer_pensionboolean–No or a small employer pension. Default false.
provisional_assessmentboolean–Gets or pays a provisional assessment (voorlopige aanslag). Default false.
ruling_start_datestring–Start date of a granted ruling, YYYY-MM-DD. Optional.
savings_above_allowanceboolean–Savings and investments above the Box 3 tax-free allowance. Default false.
self_employedboolean–Self-employed (ZZP). Default false.
thirty_percent_rulingstring–The 30% ruling status. Default none.

No output schema declared.

No examples provided.

dutch_tax_figures ~171

Looks up official Dutch tax figures for 2024, 2025 or 2026 with the source of each: tax brackets and rates, tax credits, Box 3 allowance and returns, the own home (eigenwoningforfait), the 30% ruling norm and cap, self-employed deductions, and for 2026 also allowances, NHG, the BV, visa salary norms, gift and inheritance tax, company cars and health insurance.

NameTypeReqDescription
querystring–Words to search for, in English or Dutch, e.g. "box 3 allowance", "arbeidskorting", "zelfstandigenaftrek". Empty lists the groups.
yearnumber–Tax year: 2024, 2025 or 2026. Default 2026.

No output schema declared.

No examples provided.

dutch_term_explained ~184

Explains Dutch terms from tax letters, job ads, housing, health and government (vakantiegeld, aanslag, toeslagen, eigen risico, jaarruimte, cao, ORT, IKB, WOZ, BSN, DigiD...). Job-ad terms are explained in 20 languages (en, nl, de, fr, pl, tr, ar, uk, ru, hi, ro, bg, it, es, pt, zh, el, hu, id, fa); the other terms in English or Dutch, for the assistant to translate.

NameTypeReqDescription
languagestring–Two-letter language code for the explanation, e.g. pl, tr, hi. Default en.
termstringyesThe Dutch term, or its English meaning (e.g. "vakantiegeld" or "holiday allowance")

No output schema declared.

No examples provided.

employee_vs_zzp_vs_bv ~227

For one yearly budget (what a client or employer pays, excl. VAT) in the Netherlands in 2026: the net income as an employee (the budget covers salary and employer costs), as a freelancer (ZZP, with the entrepreneur deductions) and through your own BV (salary at least the customary wage, corporate tax and Box 2 on the dividend).

NameTypeReqDescription
business_costsnumber–Yearly business costs as ZZP or BV, euros. Default 5000.
bv_extra_costsnumber–Extra yearly cost of running a BV (accountant, annual accounts), euros. Default 3000.
bv_salarynumber–Salary the BV pays you, euros a year. Default the customary wage (or less if the BV can't pay it).
meets_hours_criterionboolean–At least 1,225 hours a year in the business (for the ZZP deductions). Default true.
yearly_budgetnumberyesYearly amount the client or employer pays, excl. VAT, euros

No output schema declared.

No examples provided.

fiscal_partner_split_netherlands ~389

For Dutch fiscal partners (married, registered or chosen in the tax return): finds the split of the own-home result (eigenwoningforfait minus mortgage interest), the joint Box 3 income and shared deductions between the two partners that gives the lowest total income tax, and how much it saves against 50/50 and against putting everything with the higher earner. Partners may divide these freely in the tax return (aangifte).

NameTypeReqDescription
debtsnumber–Joint Box 3 debts on 1 January. Default 0.
investmentsnumber–Joint investments on 1 January. Default 0.
mortgage_interest_annualnumber–Deductible mortgage interest per year. Default 0.
partner_a_gross_annualnumberyesPartner A gross yearly salary in euros (holiday allowance included)
partner_a_pension_annualnumber–Partner A own pension contribution per year. Default 0.
partner_a_thirty_percent_rulingboolean–Partner A has the 30% ruling. Default false.
partner_b_gross_annualnumberyesPartner B gross yearly salary in euros (0 if no income)
partner_b_pension_annualnumber–Partner B own pension contribution per year. Default 0.
partner_b_thirty_percent_rulingboolean–Partner B has the 30% ruling. Default false.
savingsnumber–Joint savings on 1 January. Default 0.
shared_deductionsnumber–Shared personal deductions above the threshold (gifts, specific healthcare costs). Default 0.
tax_yearnumber–Tax year 2024-2026. Default 2026.
woz_valuenumber–WOZ value of the shared own home. Default 0 (renting).

No output schema declared.

No examples provided.

freelance_hourly_rate ~207

The hourly rate a freelancer (ZZP) in the Netherlands needs in 2026 to take home a target net amount a month, after holidays, sick days and hours that can't be invoiced, business costs, the entrepreneur deductions, income tax and the Zvw contribution.

NameTypeReqDescription
business_costsnumber–Yearly business costs excl. VAT, euros. Default 3000.
holiday_weeksnumber–Weeks off a year, incl. public holidays. Default 6.
hours_per_weeknumber–Working hours a week. Default 40.
non_billable_percentnumber–Share of working hours not invoiced (sales, admin), %. Default 20.
sick_daysnumber–Sick days a year. Default 10.
starterboolean–Gets the starters deduction (one of the first five years). Default false.
target_net_monthlynumberyesNet income wanted a month, euros

No output schema declared.

No examples provided.

freelancer_tax_netherlands ~209

Estimates 2026 Dutch income tax for a self-employed person (ZZP / eenmanszaak) from yearly revenue and business costs: profit, the self-employed deduction (1,225-hour criterion), starters deduction, SME profit exemption, tax credits, the separate income-related healthcare contribution (Zvw) and the income left after tax. Also shows the VAT charged on the revenue. Read-only calculation; it files nothing and is not tax advice.

NameTypeReqDescription
business_costsnumber–Deductible business costs a year, excluding VAT. Default 0.
meets_hours_criterionboolean–Works at least 1,225 hours a year on the business. Default true.
revenuenumberyesYearly revenue in euros, excluding VAT
starterboolean–Qualifies for the starters deduction (new entrepreneur). Default false.
vat_ratenumber–VAT rate charged in %: 21, 9 or 0. Default 21.

No output schema declared.

No examples provided.

gift_tax_netherlands ~198

Gift tax in the Netherlands for 2026: the yearly exemption for children and others, the one-time raised exemption (general or for study) for a recipient aged 18-40, the rates per relationship and whether a gift tax return must be filed. The recipient pays; Dutch tax applies when the giver lives in the Netherlands.

NameTypeReqDescription
amountnumberyesTotal given by this giver this year (both parents count as one giver), euros
giver_lives_in_netherlandsboolean–The giver lives in the Netherlands. Default true.
one_time_exemptionstring–Claim the one-time raised exemption. Default none.
recipient_aged_18_to_40boolean–The recipient (or their partner) is 18-40 on the day of the gift. Default false.
relationshipstringyesThe recipient is the giver's child, grandchild, or anyone else

No output schema declared.

No examples provided.

gross_salary_for_target_net ~128

Reverse salary calculation for salary negotiations in the Netherlands (2026): the gross annual and monthly salary needed to take home a given net amount, with or without holiday allowance and the 30% ruling.

NameTypeReqDescription
holiday_allowance_on_topboolean–The salary gets 8% holiday allowance on top. Default true.
target_net_monthlynumberyesNet pay wanted per month in euros (yearly net / 12, so including holiday allowance when that is on)
thirty_percent_rulingboolean–Will have the 30% ruling. Default false.

No output schema declared.

No examples provided.

health_insurance_cost_netherlands ~166

The yearly cost of basic health insurance in the Netherlands in 2026: premium (with the discount for a voluntary extra deductible), the deductible (eigen risico) actually paid for expected care costs, and the healthcare allowance (zorgtoeslag) for the income.

NameTypeReqDescription
allowance_partnerboolean–Has an allowance partner. Default false.
annual_incomenumberyesYearly income for the healthcare allowance, euros
expected_care_costsnumber–Expected care costs a year that fall under the deductible, euros. Default 0.
extra_deductiblenumber–Voluntary extra deductible, euros. Default 0.
monthly_premiumnumber–Basic insurance premium a month, euros. Default 160.

No output schema declared.

No examples provided.

income_tax_return_netherlands ~422

Estimates the whole 2026 Dutch income tax return: Box 1 salary tax with the tax credits and the 30% ruling, the own home (eigenwoningforfait and mortgage interest, with the best split between fiscal partners), Box 3 on savings and investments, and tax-treaty relief for real estate abroad (exempt in the Netherlands). With the payroll tax already withheld it says whether you get money back or have to pay.

NameTypeReqDescription
debtsnumber–Box 3 debts on 1 January (not the own-home mortgage)
foreign_property_countrystring–ISO country code of that property, e.g. IN, GB, US, ES. Default: other (the same relief applies without a treaty).
foreign_property_valuenumber–Value of real estate abroad (already included in investments), for treaty relief
gross_annualnumberyesGross annual salary in euros, without holiday allowance
holiday_allowance_on_topboolean–Add the 8% holiday allowance on top. Default true.
investmentsnumber–Investments and other assets on 1 January, INCLUDING the value of any property abroad
mortgage_interest_annualnumber–Mortgage interest paid in the year on the own home, euros
partner_gross_annualnumber–Fiscal partner's gross annual salary (filing together). Omit for a single filer.
partner_payroll_tax_withheldnumber–Payroll tax withheld for the partner. Optional.
payroll_tax_withheldnumber–Payroll tax (loonheffing) withheld in the year, from the annual statement (jaaropgaaf). Optional: without it no refund/payment is given.
savingsnumber–Savings on 1 January (couple total if filing together)
thirty_percent_rulingboolean–Has the 30% ruling. Default false.
woz_valuenumber–WOZ value of the own home (main residence). Omit if renting.

No output schema declared.

No examples provided.

inheritance_tax_netherlands ~111

Inheritance tax in the Netherlands for 2026 for one heir: the exemption for a partner, child, disabled child, grandchild, parent or anyone else, and the rates of each group. Due when the deceased lived in the Netherlands.

NameTypeReqDescription
amountnumberyesValue of this heir's share, euros
deceased_lived_in_netherlandsboolean–The deceased lived in the Netherlands. Default true.
relationshipstringyesThe heir's relationship to the deceased

No output schema declared.

No examples provided.

job_loss_planner ~275

For an employee whose Dutch contract ends: the statutory transition payment (transitievergoeding), unemployment benefit (WW) amount and duration under UWV rules, and for expats the highly skilled migrant / Blue Card search period end date and the last start date for a new job to keep the 30% ruling.

NameTypeReqDescription
employment_endstringyesLast day of the contract, YYYY-MM-DD
employment_startstringyesStart date at this employer, YYYY-MM-DD
four_of_five_yearsboolean–Worked in at least 4 of the last 5 calendar years. Default true.
gross_monthlynumberyesGross base salary per month in euros, without holiday allowance
holiday_payboolean–Receives 8% holiday allowance. Default true.
permitstring–none (EU citizen), hsm (highly skilled migrant) or bluecard. Default none.
permit_two_yearsboolean–Has held the permit for 2 years or more when the job ends. Default false.
thirty_percent_rulingboolean–Has the 30% ruling. Default false.
work_history_start_yearnumber–First calendar year with 208+ paid hours in NL or the EU. Default: the employment start year.

No output schema declared.

No examples provided.

job_offer_comparison ~82

Compares two or three Dutch job offers by what is left after income tax in 2026: base salary, 8% holiday allowance, the 30% ruling (with its salary norm), the employee pension contribution and a bonus. Returns net per year and per month for each and the difference.

NameTypeReqDescription
offersarrayyesThe offers to compare

No output schema declared.

No examples provided.

marginal_rate_allowance_cliff ~193

For a salary in the Netherlands in 2026: the allowances a household gets (healthcare and rent allowance, child budget), the net income including them, and the share of the next €1,000 of salary that is kept after extra income tax and lost allowances. Also lists the salary ranges where a raise is mostly lost.

NameTypeReqDescription
assetsnumber–Savings and investments on 1 January, euros. Default 0.
children_agesarray–Ages of children under 18. Default none.
gross_annualnumberyesGross annual salary, euros (10000-100000)
monthly_rentnumber–Monthly rent for rent allowance, 0 if owning. Default 0.
partnerboolean–Has an allowance partner. Default false.
partner_incomenumber–The partner's yearly income, euros. Default 0.

No output schema declared.

No examples provided.

minimum_wage_netherlands ~154

The Dutch statutory minimum wage (wettelijk minimumloon) from 1 July 2026: the hourly rate for an age (21 and older get the full adult rate), and for a number of hours a week the gross pay per month and per year with the 8% holiday allowance (vakantiegeld), what is left after income tax, and the healthcare allowance (zorgtoeslag) a single person could get. Single employee without the 30% ruling or a pension contribution.

NameTypeReqDescription
agenumber–Age of the employee. Default 21 (the full adult rate applies from 21).
hours_per_weeknumber–Contract hours a week. Default 40.

No output schema declared.

No examples provided.

mortgage_netherlands ~245

For buying a home in the Netherlands in 2026: an indicative maximum mortgage on income, the monthly annuity payment, the first-year mortgage interest deduction worked out with the real Box 1 calculation (eigenwoningforfait, the deduction capped at the second-bracket rate), net monthly cost and whether NHG (national mortgage guarantee) is possible.

NameTypeReqDescription
claimant_gross_incomenumber–Gross income of the partner who takes the interest deduction. Default: the household income.
gross_annual_incomenumberyesHousehold gross annual income in euros (both partners together)
interest_rate_percentnumber–Yearly interest rate in %, e.g. 3.9. Default 4. Use a current quote when you have one.
loan_amountnumber–Mortgage amount. Default: the price (Dutch mortgages go up to 100% of the value).
other_monthly_debtnumber–Other monthly debt payments (student loan, car loan). Default 0.
pricenumberyesPurchase price of the home in euros
term_yearsnumber–Term in years. Default 30.

No output schema declared.

No examples provided.

net_salary_netherlands ~183

Gross-to-net salary in the Netherlands for 2026: income tax with the general and labour tax credits, optional 8% holiday allowance on top, the 30% ruling (with its salary norm and cap) and a pension contribution. Returns net per month and per year and the effective tax rate. Single employee below state pension age.

NameTypeReqDescription
gross_annualnumberyesGross annual salary in euros, without holiday allowance (e.g. 60000)
holiday_allowance_on_topboolean–Add the 8% holiday allowance (vakantiegeld) on top of the gross salary. Default false.
pension_percentnumber–Employee pension contribution as % of salary, 0-30. Default 0.
thirty_percent_rulingboolean–The employee has the 30% ruling. Default false.

No output schema declared.

No examples provided.

pension_annuity_room_jaarruimte ~216

How much an employee or freelancer in the Netherlands may deposit into an annuity (lijfrente) or pension bank account in 2026 and deduct in Box 1: the jaarruimte from last year's income and factor A, unused room from earlier years (reserveringsruimte), and the tax the remaining room saves.

NameTypeReqDescription
already_paidnumber–Annuity premiums already paid in 2026, euros. Default 0.
factor_anumber–Factor A on the 2025 pension statement (UPO); 0 without an employer pension. Default 0.
last_year_incomenumberyes2025 income from work or business, euros
this_year_taxable_incomenumber–2026 taxable Box 1 income, for the tax saving. Default the same as last year.
unused_room_earlier_yearsnumber–Unused room from 2016-2025, euros. Default 0.

No output schema declared.

No examples provided.

personal_loan_affordability ~183

Checks a personal loan or other consumer credit in the Netherlands against a conservative guideline: total credit repayments of at most about 15% of net monthly income. Returns the monthly instalment for the amount, rate and term, the room left, and whether it fits. A rule of thumb, not a lender decision; Dutch lenders use NIBUD/NVB tables and check BKR registration.

NameTypeReqDescription
annual_interest_pctnumber–Yearly interest rate in %. Default 7.5.
existing_monthly_debt_paymentsnumber–Other monthly credit repayments (car lease, other loans). Default 0.
loan_amountnumberyesAmount to borrow in euros
net_monthly_incomenumberyesNet income per month in euros
term_yearsnumber–Loan term in years. Default 5.

No output schema declared.

No examples provided.

rent_vs_buy_netherlands ~306

Compares the net cost of renting and of buying a home in the Netherlands over a number of years: rent with yearly increases and the return on the down payment if it stays invested (after Box 3), against mortgage payments, maintenance, the mortgage interest deduction and the equity built up.

NameTypeReqDescription
down_paymentnumber–Own money put in (also pays the buying costs), euros. Default 10% of the price.
fiscal_partnerboolean–Filing with a fiscal partner. Default false.
gross_incomenumber–Gross income of the person who deducts the mortgage interest, euros a year. Default 60000.
home_value_growth_percentnumber–Yearly change in the home's value, %. Default 2.
interest_rate_percentnumber–Mortgage interest rate, % a year. Default 3.9.
investment_return_percentnumber–What the down payment would earn if invested instead, % a year. Default 4.
maintenance_percentnumber–Yearly maintenance and owners' association costs, % of the value. Default 1.
monthly_rentnumberyesRent now, euros a month
property_valuenumberyesPrice of the home to buy, euros
rent_increase_percentnumber–Yearly rent increase, %. Default 3.
yearsnumber–Years to compare, 1-30. Default 10.

No output schema declared.

No examples provided.

rsu_tax_netherlands ~214

Tax on restricted stock units in the Netherlands: each vest is taxed as wages in Box 1 at the value on the vesting day (with or without the 30% ruling), and shares you keep fall into Box 3 the next year. Year by year, with sell-to-cover or keeping the shares.

NameTypeReqDescription
grant_valuenumberyesValue of the whole grant today, euros
keep_sharesboolean–Keep the net shares (true) or sell everything at vesting. Default false.
other_box3_assetsnumber–Other savings and investments, euros. Default 0.
salarynumberyesGross base salary a year, euros
share_growth_percentnumber–Expected share price change a year, %. Default 0.
thirty_percent_rulingboolean–The 30% ruling applies. Default false.
vest_yearsnumber–Years over which it vests evenly, 1-6. Default 4.

No output schema declared.

No examples provided.

salary_country_comparison ~255

Compares take-home pay in the Netherlands (2026, optionally with holiday allowance and the 30% ruling) with a salary in India, the United States, the United Kingdom, Germany, France, Greece, Spain, Romania, Bulgaria or China, converted to euros. Income tax and employee social contributions per country in a simplified model; pensions and local taxes are left out, as described in each country note.

NameTypeReqDescription
countrystringyesCountry to compare with: IN, US, GB, DE, FR, GR, ES, RO, BG or CN
fx_per_eurnumber–Exchange rate: 1 euro = this many units of the other currency. Default: an indicative rate; ignored for euro countries.
home_gross_annualnumberyesGross yearly salary in that country, in its own currency
nl_gross_annualnumberyesGross yearly salary offered in the Netherlands, in euros, without holiday allowance
nl_holiday_allowanceboolean–The Dutch offer pays 8% holiday allowance on top. Default true.
nl_thirty_percent_rulingboolean–The 30% ruling applies in the Netherlands. Default false.

No output schema declared.

No examples provided.

thirty_percent_ruling_timeline ~239

Net income year by year for an employee with the Dutch 30% ruling: 30%, then 27% from 2027 for rulings that started in 2024 or later, the salary norm, the end of the ruling after five years, and Box 3 on Dutch and foreign assets (partial non-resident status only for rulings that started before 2024).

NameTypeReqDescription
dutch_assetsnumber–Savings and investments in the Netherlands, euros. Default 0.
fiscal_partnerboolean–Has a fiscal partner (double Box 3 allowance). Default false.
foreign_investmentsnumber–Investments abroad, euros. Default 0.
foreign_savingsnumber–Savings abroad, euros. Default 0.
gross_annualnumberyesGross annual salary in euros
partial_non_residentboolean–Chose partial non-resident status (only for rulings that started before 2024). Default false.
start_yearnumber–Year the ruling started (January assumed), 2019-2026. Default 2025.

No output schema declared.

No examples provided.

transfer_tax_netherlands ~138

Overdrachtsbelasting in 2026 when buying a home in the Netherlands: 2% for a home you live in, 0% for first-time buyers aged 18-34 up to a €555,000 price, 8% for other homes.

NameTypeReqDescription
buyer_agenumber–Age of the buyer. Default 40.
first_time_starter_exemptionboolean–The buyer has never used the starters exemption. Default true.
own_homeboolean–The buyer will live in it as their main home. Default true.
pricenumberyesPurchase price / value in euros

No output schema declared.

No examples provided.

us_tax_for_americans_in_netherlands ~217

For a US citizen or green-card holder with a Dutch salary: Dutch tax, the creditable part (AOW/Anw premiums are not creditable under the US-Dutch totalization agreement), and the US tax for 2026 under the Foreign Earned Income Exclusion and under the Foreign Tax Credit, incl. the child tax credit and its refundable part.

NameTypeReqDescription
childrennumber–Qualifying children under 17 with an SSN. Default 0.
filing_statusstring–US filing status. Default single.
gross_annual_eurnumberyesDutch gross annual salary in euros, without holiday allowance
other_us_income_usdnumber–Other US-taxed income, e.g. US dividends, in dollars. Default 0.
thirty_percent_rulingboolean–Has the Dutch 30% ruling. Default false.
usd_per_eurnumber–Exchange rate, dollars per euro. Default 1.13.

No output schema declared.

No examples provided.

visa_salary_check ~241

Checks whether a salary meets the 2026 IND salary requirement for a Dutch highly skilled migrant (kennismigrant) permit or an EU Blue Card. Holiday allowance does not count; a 13th month counts only when paid monthly. Also checks the 30% ruling salary norm.

NameTypeReqDescription
includes_holiday_payboolean–The salary amount includes the 8% holiday allowance. Default false.
perstring–Whether salary is per year or per month. Default year.
permitstring–hsm = highly skilled migrant, bluecard = EU Blue Card. Default hsm.
recent_graduateboolean–Graduated within the last 3 years or on an orientation-year permit (reduced norm). Default false.
salarynumberyesGross salary in euros, as in the offer
thirteenth_monthstring–A 13th month: none, paid as a lump sum (does not count), or paid in 12 monthly parts (counts). Default none.
under_30boolean–Applicant is under 30 on the day the application is filed. Default false.

No output schema declared.

No examples provided.

woz_objection_netherlands ~315

Checks whether objecting to a Dutch WOZ value (the municipal home valuation) is worth it: compares the WOZ value with comparable sales by price per m², and shows what a lower value saves a year in eigenwoningforfait (Box 1) and OZB property tax, and the 6-week objection deadline. Without comparable sales it still gives the yearly OZB and how objecting works. Objecting is free; the decision (WOZ-beschikking) says the value and the date.

NameTypeReqDescription
comparablesarray–Comparable homes sold around the valuation date (1 January of the year before the WOZ year): price and living area. Two or more make the comparison usable.
decision_datestring–Date on the WOZ decision, YYYY-MM-DD, for the deadline (optional)
living_area_m2number–Living area of the home in m² (needed to compare with sales)
ozb_rate_pctnumber–OZB owner rate of the municipality, % of the WOZ value (on the tax assessment). Default 0.1.
taxable_incomenumber–Box 1 taxable income, to work out the tax rate on the eigenwoningforfait. Default: the 37.56% rate.
woz_valuenumberyesWOZ value on the decision, in euros
woz_yearnumber–The year on the WOZ decision. Default 2026.

No output schema declared.

No examples provided.

Install

How do I install the NL Tax Calculator MCP server?

NL Tax Calculator is a hosted endpoint at https://nltaxcalculator.nl/dutch-tax/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · nltaxcalculator.nl

# add to Claude Code
claude mcp add --transport http nl-nltaxcalculator-dutch-tax 'https://nltaxcalculator.nl/dutch-tax/api/mcp'
Common questions

What is the NL Tax Calculator MCP server?

NL Tax Calculator is an MCP server listed in the public MCP registry as nl.nltaxcalculator/dutch-tax. Dutch tax: net salary, tax return, Box 3, 30% ruling, cross-border (DE/BE/UK/IN), WOZ, benefits. This page covers its hosted endpoint (https://nltaxcalculator.nl/dutch-tax/api/mcp).

Is the NL Tax Calculator MCP server safe to use?

NL Tax Calculator scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the NL Tax Calculator MCP server expose?

NL Tax Calculator exposes 39 tools: net_salary_netherlands, box3_wealth_tax, minimum_wage_netherlands, woz_objection_netherlands, salary_country_comparison, and 34 more. Their descriptions and schemas cost roughly 9,182 tokens of context every time the server is loaded.

Does the NL Tax Calculator MCP server require authentication?

No. We connected to NL Tax Calculator without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the NL Tax Calculator MCP server still maintained?

NL Tax Calculator is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.