Living in the Netherlands
Server Details
Living in NL: legal max rent (points), car by plate (RDW), city budget, current fees with sources.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool targets a different Dutch-living task: vehicle lookup, city-level budget, annual current facts, and per-home rent-point checking. The only minor overlap is rent_limits inside nl_current_facts versus rent_points_check, but the general-figures versus individual-home distinction is clearly stated.
All names use lowercase snake_case and are descriptive, so the set reads consistently. The patterns vary somewhat (resource_by_identifier, resource_metric, nl_current_facts), but there is no confusing mixing of casing or vague verbs.
Four tools is compact and each one covers a distinct high-value area without redundancy. The set is well-scoped for a focused Dutch-living information server.
The surface covers car ownership, monthly budgeting, selected annual facts, and rent-point checks, but the broad 'Living in the Netherlands' domain still has notable gaps such as housing search/purchase, healthcare choices, transport, and direct tax calculation. Some of these are explicitly delegated to another server, but the local tool set remains partial.
Available Tools
4 toolscar_by_plateDutch car lookup by number plate (RDW)ARead-onlyIdempotentInspect
Looks up a Dutch-registered car by its number plate (kenteken) in the official RDW register: make, model, first registration, fuel, CO2 emission, catalogue price, empty weight, when the periodic inspection (APK) is due and whether it is insured. With a taxable income it also gives the company car tax (bijtelling) for 2026, including the electric-car rate locked for 60 months from first registration. Live data from RDW Open Data.
| Name | Required | Description | Default |
|---|---|---|---|
| plate | Yes | Dutch number plate, with or without dashes, e.g. AB-123-C | |
| taxable_income | No | Taxable income per year before the bijtelling, for the company car tax (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile needs no restating. The description adds genuine behavioral context: the data source is live RDW Open Data, one input unlocks the extra bijtelling block, and the electric rate is locked for 60 months from first registration.
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?
One dense paragraph, front-loaded with the core lookup before the conditional bijtelling behaviour and the data-source note. The field enumeration is a long list but each item is a distinct return value, so little is wasted.
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 correctly carries the return-value burden by enumerating the fields produced. Only gaps are failure behaviour for an unknown plate and whether partial or missing RDW records are possible.
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 the baseline is 3. The description nevertheless adds meaning beyond the schema: it explains the causal effect of supplying taxable_income and the 2026/60-month rule attached to it, and confirms plate accepts the dashed or undashed kenteken form.
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 (lookup Dutch-registered car by kenteken) and enumerates the exact fields returned, including APK due date, insured status, and conditional bijtelling. An agent knows precisely what this does and what comes back without opening anything else.
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 makes clear this is a per-plate RDW registry lookup and that taxable_income is only needed when company car tax is wanted, which is actionable usage context. It does not name exclusions or point to alternatives, though the sibling tools (budget, facts, rent points) are unrelated domains so there is little routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monthly_budget_by_cityMonthly budget in a Dutch city: net pay minus rent and fixed costsARead-onlyIdempotentInspect
What is left each month in a Dutch city: net salary (2026 tax, optional 30% ruling and holiday allowance) minus a typical unregulated-sector rent for the home size in that city, the basic health insurance premium (less any healthcare allowance), an average energy bill and the municipal charges for a renter. Cities with their own figures: Amsterdam, Amstelveen, Haarlem, The Hague, Rotterdam, Utrecht, Eindhoven, Helmond, Leeuwarden, Zwolle; any other city uses the national average rent and leaves out municipal charges. Food, transport, internet and water board charges are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City. Default other (national average). | |
| adults | No | Adults in the household (each pays health insurance). Default 1. | |
| gross_annual | Yes | Gross yearly salary in euros, without holiday allowance | |
| home_size_m2 | No | Size of the rented home in m². Default 60. | |
| monthly_rent | No | Actual monthly rent if known, instead of the city average (optional) | |
| holiday_allowance | No | Gets 8% holiday allowance (spread over 12 months here). Default true. | |
| thirty_percent_ruling | No | Has the 30% ruling. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioural context beyond that: the modelled assumptions (unregulated-sector rent, typical energy bill, healthcare allowance netting) and an explicit exclusion list — food, transport, internet and water board charges are omitted.
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 sentences, front-loaded with the outcome ('what is left each month'), followed by the formula and the fallback/exclusion caveats. Dense but every clause carries information; only minor cost is that the middle formula sentence is long.
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?
There is no output schema, so the description carries the burden of explaining the return value — it never says whether the result is a single euro figure or an itemised breakdown (net pay, rent, insurance, energy, municipal charges). Given the tool's computational richness, that omission leaves a real gap even though the inputs are fully documented.
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 the baseline is 3. The description nonetheless adds meaning: it clarifies that rent is derived from home size while monthly_rent can override it, that health insurance scales per adult, and that the 30% ruling and holiday allowance are optional inputs to the net-salary calculation rather than fixed assumptions.
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 computation (monthly leftover) with an enumerated formula: net salary minus rent, health insurance, energy and municipal charges. The scope (Dutch city, renter, 2026 tax) is precise enough that an agent can tell immediately this is a budget calculator, not a rent lookup or a general facts 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?
The city-handling rule (ten named cities have own figures; anything else falls back to national average and drops municipal charges) is effectively usage guidance for choosing the city parameter. But there is no explicit statement of when to call this versus the sibling rent_points_check, or for which user questions it is and is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nl_current_factsCurrent Dutch figures with their source (2026)ARead-onlyIdempotentInspect
Current Dutch amounts that change every year, each with the period it applies to and its official source, so an answer does not rely on outdated knowledge. Topics: health_deductible (Healthcare deductible (eigen risico)), child_benefit (Child benefit (kinderbijslag)), passport_id_fees (Passport and identity card fees), ind_fees (IND application fees (residence permits and naturalisation)), rent_limits (Rent limits and maximum rent increases), minimum_wage (Minimum wage (wettelijk minimumloon)). Ask by topic, or with a short question. For income tax figures use the tax server's dutch_tax_figures tool.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | One of the topics | |
| question | No | A short question or keywords, e.g. "passport cost" or "kinderbijslag" (used when no topic is given) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so safety is covered. The description adds genuinely new behavioral context: results carry the applicable period and an official source, and the year (2026) signals freshness — important since there is no output schema to convey this.
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 freshness rationale come first, then the topic inventory, then the sibling routing rule — a sensible front-loaded order. The topic list is long but earns its place by acting as the human-readable key to the enum; the only slight redundancy is repeating the question-fallback rule already in the schema.
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 compensates by describing the return content (amount + period + source), and it clarifies that both parameters are optional alternatives. Nothing critical is missing, though it does not say what happens if topic and question conflict or if a question matches no topic.
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, but the description goes further by pairing each enum value with a plain-language label (e.g. health_deductible → eigen risico, ind_fees → residence permits and naturalisation), which the raw enum does not provide. It also restates the topic-vs-question precedence, though that is already in 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 names a specific resource (current Dutch yearly figures), states the payload shape (amount, applicable period, official source), and enumerates all six topics with human-readable labels. It also separates itself from the tax-figures tool, so an agent can place it among its siblings without opening the 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 two concrete calling modes ('Ask by topic, or with a short question') and explicitly routes income-tax questions to dutch_tax_figures on the tax server. There is no explicit statement of what this tool should not be used for beyond tax, so it stops short of a full when/when-not map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rent_points_checkDutch rent points check: legal maximum rent and allowed increaseARead-onlyIdempotentInspect
For a rented independent home (zelfstandige woning: own front door, kitchen and toilet) in the Netherlands: from its points under the points system (woningwaarderingsstelsel, WWS), the rental sector (social up to 143 points, regulated mid-rent up to 186, free sector above), the legal maximum basic monthly rent (kale huur) for 2026, whether a current rent is above it, and the maximum yearly rent increase for that sector. The points come from the government's Huurprijscheck on huurcommissie.nl. Rooms (onzelfstandige woonruimte) use a different table and are not covered.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | Points of the home under the points system (from the Huurprijscheck) | |
| current_rent | No | Current basic monthly rent (kale huur, without service costs) in euros (optional) | |
| contract_start | No | Start date of the rental contract, YYYY-MM-DD (optional; mid-rent limits apply to contracts from 1 July 2024) | |
| proposed_increase_pct | No | A rent increase the landlord proposed, in % (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world, non-destructive, so the bar is lower. The description still adds substantive domain behavior: the 2026 reference year, the concrete sector thresholds (143 / 186 points), the fact that increase caps are sector-dependent, and the upstream data source. It omits how proposed_increase_pct is evaluated and what happens when current_rent is absent.
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?
A single front-loaded sentence that leads with the applicable scope before the computation, with the exclusion clause placed at the end where it belongs. It is dense with parentheticals (Dutch terms, thresholds) but every clause carries information; no 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?
There is no output schema, and the description compensates by enumerating the return values (sector, legal max basic rent, above-max flag, max yearly increase). Combined with annotations and full schema coverage this is close to complete; only the treatment of the optional proposed_increase_pct and missing current_rent remains unspecified.
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 reinforces that points come from the Huurprijscheck and that rent means kale huur without service costs, and it explains the threshold logic that gives the points parameter meaning, but it does not add syntax or format detail 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?
Names a specific computation (legal maximum rent and allowed increase) on a specific resource (Dutch rent points / WWS for an independent home), and enumerates the concrete outputs: sector, legal max basic rent 2026, whether current rent exceeds it, max yearly increase. Nothing in the sibling set (car_by_plate, monthly_budget_by_city, nl_current_facts) overlaps, so an agent can route unambiguously.
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 clear applicability scope: rented independent home with own front door, kitchen and toilet, and explicitly excludes rooms (onzelfstandige woonruimte) which use a different table. It also tells the agent where the points input must come from (Huurprijscheck on huurcommissie.nl). It does not name a competing tool or state a triggering user intent, so it falls short of a 5.
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.
4 tool updates
- First observed
car_by_plate - First observed
monthly_budget_by_city - First observed
nl_current_facts - First observed
rent_points_check
Related MCP Connectors
Dutch addresses, neighbourhoods, crime, flood risk, rent and schools. 5 checks a day free, no key.
Dutch tax: net salary, tax return, Box 3, 30% ruling, ZZP, mortgage, WOZ, benefits, job offers.
Dutch address data for AI assistants: BAG building facts, energy labels, reviewed crime signals.
Irish rent, rent limits, house price comps (IE, NL, EU), housing report. x402/MPP paid.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides tools to query Dutch vehicle registration data through the official RDW open API, allowing users to look up vehicle information by license plate, retrieve fuel/emissions data, and search vehicles by brand and model.113 npm1MIT
- AlicenseAqualityCmaintenanceEnables accessing and querying Dutch government open datasets from CBS and data.overheid.nl, with tools for searching, filtering, downloading, and analyzing data using CSV, Parquet, DuckDB, or Pandas.9MIT
- 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.-
- AlicenseNot gradedqualityBmaintenanceEnables querying Dutch property context for an address, returning building, energy, neighborhood, environment, heritage, and school data from public registers, with explicit match verification and signals.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.