Skip to main content
Glama
pace8

mcp-hypotheken-berekenen

Hypotheek MCP Server v5.0

MCP-server voor Nederlandse hypotheekberekeningen. Levert compacte tools, prompts en resources zodat AI-agents (n8n, Claude, GPT, ...) direct hypotheekvragen kunnen afhandelen.


🚀 Quick Start

git clone https://github.com/pace8/hypotheek-mcp-server.git
cd hypotheek-mcp-server
npm install
cp .env.example .env   # vul je REPLIT_API_KEY in
npm run build
npm start
  • npm run dev — TypeScript watch mode

  • npm test — Jest test suites

  • npm run lint — ESLint controle

Meer configuratie-opties staan in docs/CONFIG.md.


🛠️ Beschikbare tools

Tool

Beschrijving

Output

bereken_hypotheek_starter

Maximale hypotheek voor starters

Max bedrag + maandlast + NHG-vergelijking

bereken_hypotheek_doorstromer

Maximale hypotheek voor doorstromers

Max bedrag + maandlast + overwaarde

bereken_hypotheek_uitgebreid

Maatwerkparameters (rente, looptijd, energielabel)

Custom leenbedrag

opzet_hypotheek_starter

Complete financiering voor gewenste woning (starter)

Totaal benodigd bedrag + financieringsmix + maandlast

opzet_hypotheek_doorstromer

Financieringsmix voor doorstromers (bestaand + nieuw)

Benodigd bedrag + overwaarde + maandlasten

opzet_hypotheek_uitgebreid

Opzet met maatwerk leningdelen

Custom opzet, zowel bestaand als nieuw

haal_actuele_rentes_op

Actuele rentes per rentevaste periode

JSON met NHG en niet-NHG tarieven


📚 MCP Resources & Prompts

  • hypotheek://v4/guide/opzet-intake — intake checklist, defaults & velddefinities

  • hypotheek://v4/guide/output-formatting — hoe je tooloutput toont aan klanten

  • hypotheek://v4/guide/quick-ref — toolselectie, formatregels, valkuilen

  • hypotheek://v4/guide/playbook — 10 uitgewerkte voorbeeldgesprekken

Prompts (list_prompts) verwijzen automatisch naar deze resources zodat agents detailinformatie kunnen ophalen wanneer nodig.


🔧 Development notes

  • Config wordt centraal geladen via src/config/index.ts (Zod-validatie)

  • Toolhandlers zitten in src/index.ts en gebruiken gedeelde helperfuncties

  • Markdown-resources wonen in docs/ en worden via src/resources/index.ts beschikbaar gemaakt

  • Testen draaien op Node ≥18 met Jest (ESM + ts-jest)

Zie CHANGELOG.md voor volledige release notes.

Available Tools

7 tools
bereken_hypotheek_doorstromerA

Berekent de maximale hypotheek voor doorstromers (standaard variant). Alle regels uit het doorstromerbeleid gelden ook voor de uitgebreide tool:

Outputvelden (altijd rechtstreeks gebruiken in de terugkoppeling):

  • max_woningbudget → woningbudget inclusief overwaarde en extra leencapaciteit

  • overwaarde_bedrag → vrijvallende winst uit de huidige woning

  • huidige_hypotheek_schuld → resterende schuld die moet worden afgelost

  • extra_leencapaciteit → nieuwe hypotheekruimte bovenop de overwaarde

  • maandlast_nu, maandlast_straks en verschil_maandlast → huidige, toekomstige en delta maandlast

Presentatie richting gebruiker (één compact blok):

  • Toon het woningbudget centraal onder de titel "Uw woningbudget" en licht toe waaruit dit bedrag bestaat in bullets (overwaarde, huidige hypotheek, extra leencapaciteit).

  • Voeg een tweede blok toe "Uw nieuwe maandlast" met maandlast nu, maandlast straks en het verschil (positief/negatief) op eigen regel.

  • Gebruik alleen MCP-waarden; geen eigen herberekeningen behalve eenvoudige weergave/afronding.

Invoerkeuze bestaande hypotheek (verplicht expliciet vragen):

  1. Snelle globale berekening → gebruiker geeft een samenvatting (totale schuld, gemiddelde rente/looptijd, eventuele huidige maandlast). Vul één leningdeel met deze totaalwaarden in.

  2. Detailberekening → gebruiker levert alle leningdelen (hoofdsom, rente, resterende looptijd, hypotheekvorm). Kopieer ze één-op-één in de leningdelen array.

Vraag altijd: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?" en volg de gekozen route.

ParametersJSON Schema
NameRequiredDescriptionDefault
inkomen_aanvragerYesBruto jaarinkomen hoofdaanvrager in euro's.
geboortedatum_aanvragerYesInterne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: "Wat is uw leeftijd of geboortedatum?" en deel bij een leeftijd alleen die leeftijd terug.
heeft_partnerYesGeeft aan of een partner mee leent.
inkomen_partnerNoOptioneel partnerinkomen in euro's.
geboortedatum_partnerNoOptionele interne geboortedatum partner (ISO). Vraag ook hier: "Wat is uw leeftijd of geboortedatum?" en houd de afgeleide datum intern.
verplichtingen_pmNoOptionele maandelijkse verplichtingen in euro's.
waarde_huidige_woningYesHuidige marktwaarde van de bestaande woning.
bestaande_hypotheekYesBestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?"
session_idNoOptioneel sessie-ID vanuit n8n (voor logging).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job explaining what the tool calculates (max_woningbudget, overwaarde_bedrag, etc.), how to present results to users (two compact blocks with specific formatting), and detailed input handling requirements. However, it doesn't mention potential limitations, error conditions, or performance characteristics that would make it a perfect 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprehensive but somewhat lengthy and mixes multiple concerns (output fields, presentation guidelines, input approaches). While all information is valuable, it could be more efficiently structured. The first sentence clearly states the purpose, but subsequent sections could be better organized for quicker comprehension by an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mortgage calculation tool with 9 parameters, nested objects, no annotations, and no output schema, the description does an excellent job covering what's needed. It explains output fields, presentation requirements, and input handling scenarios. The main gap is the lack of explicit error handling or edge case guidance, preventing a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining the two input approaches for 'bestaande_hypotheek' (quick global calculation vs detailed calculation) and mandating how to ask users about their preference. This provides crucial context beyond the schema's technical parameter definitions, though it doesn't elaborate on all 9 parameters' business logic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Berekent de maximale hypotheek voor doorstromers (standaard variant)' which translates to 'Calculates the maximum mortgage for movers (standard variant)'. This specifies both the action (calculates maximum mortgage) and the target audience (doorstromers/movers), distinguishing it from sibling tools like bereken_hypotheek_starter and bereken_hypotheek_uitgebreid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus alternatives: 'Alle regels uit het doorstromerbeleid gelden ook voor de uitgebreide tool' indicates this is the standard variant for movers, with an extended tool available. It also specifies detailed input scenarios (quick global calculation vs detailed calculation) and mandates asking the user which approach they prefer, providing clear operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bereken_hypotheek_starterC

Berekent de maximale hypotheek voor starters. Output: maximaal leenbedrag, maandlast en NHG-vergelijking.

ParametersJSON Schema
NameRequiredDescriptionDefault
inkomen_aanvragerYesBruto jaarinkomen hoofdaanvrager in euro's.
geboortedatum_aanvragerYesInterne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: "Wat is uw leeftijd of geboortedatum?" en deel bij een leeftijd alleen die leeftijd terug.
heeft_partnerYesGeeft aan of een partner mee leent.
inkomen_partnerNoOptioneel partnerinkomen in euro's.
geboortedatum_partnerNoOptionele interne geboortedatum partner (ISO). Vraag ook hier: "Wat is uw leeftijd of geboortedatum?" en houd de afgeleide datum intern.
verplichtingen_pmNoOptionele maandelijkse verplichtingen in euro's.
session_idNoOptioneel sessie-ID vanuit n8n (voor logging).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states what the tool calculates, it doesn't describe how it works: what formula or rules are used, whether it's a simulation or official calculation, if there are rate limits, authentication requirements, or data persistence. For a financial calculation tool with 7 parameters and no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences that efficiently state the purpose and output. It's front-loaded with the main function and follows with output details. There's no wasted verbiage, though it could potentially be more structured by separating purpose from output more clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial calculation tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the calculation methodology, accuracy limitations, whether results are binding estimates, or how it differs from sibling tools. The output mentions are helpful but lack detail about format or units. Given the complexity and absence of structured behavioral information, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema - it doesn't explain relationships between parameters (e.g., how partner income affects calculation) or provide context about the calculation methodology. With complete schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Berekent de maximale hypotheek voor starters' (Calculates the maximum mortgage for starters). It specifies the target user group (starters) and mentions the output includes maximum loan amount, monthly costs, and NHG comparison. However, it doesn't explicitly differentiate from sibling tools like bereken_hypotheek_doorstromer or bereken_hypotheek_uitgebreid, which likely target different user groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like bereken_hypotheek_doorstromer and bereken_hypotheek_uitgebreid available, there's no indication of what distinguishes 'starters' from 'doorstromers' or when to choose the 'uitgebreid' version. The description doesn't mention prerequisites, limitations, or comparison to other calculation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bereken_hypotheek_uitgebreidA

Gebruik dit voor maatwerk (rente, looptijd, energielabel). Output: maatwerk leenbedrag met maandlast en NHG-inschatting. Zodra u dit tool voor een doorstromer inzet (is_doorstromer=true of bestaande_hypotheek ingevuld), gelden dezelfde regels als bij de standaard doorstromer-tool:

Outputvelden (altijd rechtstreeks gebruiken in de terugkoppeling):

  • max_woningbudget → woningbudget inclusief overwaarde en extra leencapaciteit

  • overwaarde_bedrag → vrijvallende winst uit de huidige woning

  • huidige_hypotheek_schuld → resterende schuld die moet worden afgelost

  • extra_leencapaciteit → nieuwe hypotheekruimte bovenop de overwaarde

  • maandlast_nu, maandlast_straks en verschil_maandlast → huidige, toekomstige en delta maandlast

Presentatie richting gebruiker (één compact blok):

  • Toon het woningbudget centraal onder de titel "Uw woningbudget" en licht toe waaruit dit bedrag bestaat in bullets (overwaarde, huidige hypotheek, extra leencapaciteit).

  • Voeg een tweede blok toe "Uw nieuwe maandlast" met maandlast nu, maandlast straks en het verschil (positief/negatief) op eigen regel.

  • Gebruik alleen MCP-waarden; geen eigen herberekeningen behalve eenvoudige weergave/afronding.

Invoerkeuze bestaande hypotheek (verplicht expliciet vragen):

  1. Snelle globale berekening → gebruiker geeft een samenvatting (totale schuld, gemiddelde rente/looptijd, eventuele huidige maandlast). Vul één leningdeel met deze totaalwaarden in.

  2. Detailberekening → gebruiker levert alle leningdelen (hoofdsom, rente, resterende looptijd, hypotheekvorm). Kopieer ze één-op-één in de leningdelen array.

Vraag altijd: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?" en volg de gekozen route.

ParametersJSON Schema
NameRequiredDescriptionDefault
inkomen_aanvragerYesBruto jaarinkomen hoofdaanvrager in euro's.
geboortedatum_aanvragerYesInterne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: "Wat is uw leeftijd of geboortedatum?" en deel bij een leeftijd alleen die leeftijd terug.
heeft_partnerYesGeeft aan of een partner mee leent.
inkomen_partnerNoOptioneel partnerinkomen in euro's.
geboortedatum_partnerNoOptionele interne geboortedatum partner (ISO). Vraag ook hier: "Wat is uw leeftijd of geboortedatum?" en houd de afgeleide datum intern.
verplichtingen_pmNoOptionele maandelijkse verplichtingen in euro's.
is_doorstromerNoGeeft aan of de aanvrager een doorstromer is.
waarde_huidige_woningNoOptionele huidige woningwaarde in euro's.
bestaande_hypotheekNoBestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?"
nieuwe_woningNoKerngegevens nieuwe woning (detailuitleg: hypotheek://v4/guide/opzet-intake).
nieuwe_hypotheekNoOptionele maatwerk leningparameters (looptijd, rentevast, rente). Detailuitleg: hypotheek://v4/guide/opzet-intake.
nieuwe_leningNoOptionele structuur voor looptijd/rentevast/NHG en renteklassen (detailuitleg: hypotheek://v4/guide/opzet-intake).
session_idNoOptioneel sessie-ID vanuit n8n (voor logging).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job describing output format, presentation requirements, and input handling logic (the two calculation approaches for existing mortgages). It explains what the tool returns and how to present it to users. However, it doesn't mention potential limitations like rate limits, error conditions, or authentication requirements, which prevents a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprehensive but lengthy and could be more front-loaded. While every section adds value, the structure mixes purpose, output format, presentation guidelines, and input handling without clear separation. The core purpose is stated early, but the detailed formatting instructions and calculation approaches could be more efficiently organized to help agents quickly grasp the tool's essence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (13 parameters, nested objects, no output schema, no annotations), the description does an excellent job providing context. It explains output fields, presentation requirements, and input handling logic. However, without an output schema, the description doesn't fully document the return structure's data types or potential error responses, and it doesn't address edge cases or limitations, leaving some gaps for a complex financial calculation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters thoroughly. The description adds significant value by explaining the two approaches for handling 'bestaande_hypotheek' (quick global calculation vs. detailed calculation) and providing guidance on how to ask users about their preference. This contextual information about parameter usage goes beyond what the schema provides, though it doesn't cover all parameters equally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Gebruik dit voor maatwerk (rente, looptijd, energielabel). Output: maatwerk leenbedrag met maandlast en NHG-inschatting.' It specifies the verb (calculate/bereken), resource (mortgage/hypotheek), and distinguishes it from siblings by emphasizing 'maatwerk' (customization) for advanced scenarios with specific parameters like interest rate, term, and energy label.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: it states when to use this tool (for customized calculations with specific parameters) and references sibling tools ('dezelfde regels als bij de standaard doorstromer-tool'). It also specifies when it applies to 'doorstromer' scenarios (when is_doorstromer=true or bestaande_hypotheek is filled), creating clear boundaries versus alternatives like bereken_hypotheek_starter or bereken_hypotheek_doorstromer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

haal_actuele_rentes_opB

Haalt actuele hypotheekrentes op per rentevaste periode. Output: overzicht met NHG- en niet-NHG-tarieven.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the output format ('overzicht met NHG- en niet-NHG-tarieven'), which adds some context, but lacks details on critical behaviors like data freshness, source reliability, rate limits, error handling, or authentication needs. For a data-fetching tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: two sentences that directly state the purpose and output. There is no wasted text, repetition, or unnecessary elaboration. It efficiently communicates the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose and output format, but lacks behavioral details (e.g., how current the rates are, any limitations). For a tool fetching financial data, more context on data currency and reliability would be beneficial, but it meets the basic threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so a baseline score of 4 is appropriate. It does mention the output includes NHG and non-NHG rates, which provides context on what data is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Haalt actuele hypotheekrentes op per rentevaste periode' (Fetches current mortgage rates per fixed-rate period). It specifies the verb ('haalt op') and resource ('hypotheekrentes'), and distinguishes from siblings by focusing on rate retrieval rather than calculation or setup. However, it doesn't explicitly differentiate from potential similar rate-fetching tools that might exist elsewhere.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any of the sibling tools (e.g., bereken_hypotheek_* for calculations or opzet_hypotheek_* for setup), nor does it specify prerequisites, constraints, or scenarios where this tool is appropriate. Usage is implied only by the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opzet_hypotheek_doorstromerA

Berekent de hypotheekopzet voor doorstromers met bestaande woning. Output: benodigd bedrag, financiering per component en maandlasten (bestaand versus nieuw).

Invoerbeleid bestaande hypotheek (verplicht expliciet vragen):

  • Stel altijd de vraag: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?"

  • Bij snelle globale berekening: laat de gebruiker één samenvattende set waarden geven (totale schuld, gemiddelde rente, resterende looptijd, optioneel huidige maandlast) en vul hiermee één leningdeel.

  • Bij detailberekening: laat de gebruiker alle leningdelen kopiëren/plakken (hoofdsom, rente, looptijd, rentevast, hypotheekvorm) en vul de leningdelen-array één-op-één.

ParametersJSON Schema
NameRequiredDescriptionDefault
aanvragerYesGegevens van de (hoofd)aanvrager. Vraag altijd: "Wat is uw leeftijd of geboortedatum?" en gebruik opgegeven leeftijden alleen intern.
waarde_huidige_woningYesMarktwaarde van de huidige woning.
bestaande_hypotheekYesBestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?"
nieuwe_woningYesKerngegevens nieuwe woning (detailuitleg: hypotheek://v4/guide/opzet-intake).
session_idNoOptioneel sessie-ID vanuit n8n (voor logging).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden of behavioral disclosure. It explains the tool's interactive behavior (mandatory questions to ask users), input handling policies for different calculation types, and output structure. However, it doesn't mention computational limitations, error conditions, or performance characteristics that might be relevant for a complex financial calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized but not optimally structured. The first sentence clearly states purpose and output, but the detailed input policy section dominates. While necessary for usage guidance, it creates a front-loaded structure that could be more balanced. Every sentence earns its place, but the flow could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 5 parameters, 100% schema coverage, no annotations, and no output schema, the description provides strong contextual completeness. It explains the tool's purpose, usage procedures, and behavioral expectations. The main gap is the lack of output format details beyond high-level categories, which would be helpful given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds value by explaining the conceptual approach to handling existing mortgages (global vs detailed calculation) and how this affects the 'leningdelen' array parameter. However, it doesn't provide additional semantic context for other parameters beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Berekent de hypotheekopzet voor doorstromers met bestaande woning' (Calculates mortgage setup for movers with existing property). It specifies the exact output format and distinguishes itself from siblings by focusing on 'doorstromers' (movers) with existing properties, unlike starter or uitgebreid variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance with mandatory questions to ask users: 'Wilt u een snelle globale berekening... of een detailberekening...' (Do you want a quick global calculation... or a detailed calculation...). It clearly explains when to use each approach and how to handle input based on user choice, offering complete procedural guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opzet_hypotheek_starterB

Berekent de hypotheekopzet voor starters. Output: totaal benodigd bedrag, financieringsoverzicht en maandlast.

ParametersJSON Schema
NameRequiredDescriptionDefault
aanvragerYesGegevens van de (hoofd)aanvrager. Vraag altijd: "Wat is uw leeftijd of geboortedatum?" en gebruik opgegeven leeftijden alleen intern.
nieuwe_woningYesKerngegevens nieuwe woning (detailuitleg: hypotheek://v4/guide/opzet-intake).
session_idNoOptioneel sessie-ID vanuit n8n (voor logging).

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the calculation function and output format. It doesn't disclose important behavioral traits like whether this is a read-only calculation or if it creates records, what permissions might be needed, whether it has rate limits, or how it handles errors. The output description is helpful but insufficient for a tool with complex nested parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with a single sentence that front-loads the core purpose and follows with output details. Every element serves a purpose, though it could be slightly more structured by separating purpose from output specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mortgage calculation tool with nested objects, no annotations, and no output schema, the description is insufficient. It doesn't explain the calculation methodology, assumptions, limitations, or error conditions. The output description helps but doesn't compensate for the lack of behavioral context needed for proper tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The tool description adds no parameter-specific information beyond what's already documented in the comprehensive input schema descriptions. It doesn't explain relationships between parameters or provide additional context about how the calculation uses these inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Berekent' - calculates) and resource ('hypotheekopzet voor starters' - mortgage setup for starters), and distinguishes it from siblings by specifying it's for 'starters' rather than 'doorstromer' or 'uitgebreid' variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the sibling tools like 'opzet_hypotheek_doorstromer' or 'opzet_hypotheek_uitgebreid'. It doesn't explain what makes a 'starter' different from other mortgage applicants or when to choose this specific variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opzet_hypotheek_uitgebreidA

GEAVANCEERDE opzet hypotheek berekening met VOLLEDIGE controle over alle parameters. Geschikt voor zowel starters als doorstromers.

Output bevat alles van de starter/doorstromer tools, plus:

  • Mogelijkheid om elk leningdeel handmatig te definiëren

  • Custom rentepercentages, looptijden en rentevast periodes

  • NHG, energielabel en verbouwing/duurzaamheidsbudget in één scenario

  • Volledige balans check en praktische toelichtingen

Gebruik deze tool alleen wanneer afwijkende parameters nodig zijn; anders de specifieke starter/doorstromer varianten gebruiken.

Doorstromer invoerbeleid:

  • Vraag óók hier: "Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?"

  • Snelle route → één samenvattend leningdeel (totale schuld, gemiddelde rente/looptijd, optionele maandlast).

  • Detailroute → volledige lijst leningdelen met de exacte waarden per deel. Kopieer deze rechtstreeks in de leningdelen array.

ParametersJSON Schema
NameRequiredDescriptionDefault
aanvragerYesGegevens van de (hoofd)aanvrager. Vraag altijd: "Wat is uw leeftijd of geboortedatum?" en gebruik opgegeven leeftijden alleen intern.
is_doorstromerNoIs dit een doorstromer met bestaande woning en hypotheek?
waarde_huidige_woningNoOPTIONEEL - Alleen voor doorstromers: huidige woningwaarde in euro's
bestaande_hypotheekNoOPTIONEEL - Alleen voor doorstromers: gegevens van de bestaande hypotheek.
nieuwe_woningYesGegevens van de nieuwe woning die gekocht wordt
nieuwe_leningNoOPTIONEEL - Specifieke parameters voor de nieuwe lening. Gebruik deze sectie om looptijd, rentevast periode, NHG of renteklassen aan te passen.
session_idNoOPTIONEEL - Sessie ID voor het traceren van de conversatie. Haal deze waarde uit de n8n chat trigger: 'When chat message received' -> sessionId variabele.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It effectively discloses behavioral traits: it's a calculation tool (not a transaction), mentions comprehensive output content, specifies two distinct input workflows for movers, and indicates it handles complex scenarios with manual parameter control. It doesn't mention performance characteristics or error handling, but covers core behavioral aspects well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (overview, output features, usage guidelines, mover input policy). It's appropriately sized for a complex tool, though the mover policy section is quite detailed. Every sentence adds value, but some redundancy exists between the overview and output features list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex mortgage calculation tool with no annotations and no output schema, the description does well. It explains the tool's advanced nature, when to use it, what it includes beyond sibling tools, and provides specific input workflows. The main gap is lack of output format description, but given the complexity and good parameter coverage, it's mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some context about 'deviating parameters' and the mover input policies, but doesn't provide additional parameter meaning beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs an 'advanced mortgage calculation with FULL control over all parameters' and specifies it's suitable for both starters and movers. It distinguishes from siblings by mentioning it includes everything from the starter/mover tools plus additional features like manual loan part definition, custom rates, and comprehensive balance checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use this tool only when deviating parameters are needed; otherwise use the specific starter/mover variants.' It also includes detailed mover input policies with two distinct calculation routes (quick vs. detailed), giving clear when-to-use instructions and alternatives.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • Changedbereken_hypotheek_uitgebreid1 field changed
      • removedInput schema / properties / eigen_vermogen
        Removed value: -{
        -  "default": 0,
        -  "description": "Optioneel beschikbaar eigen geld in euro's.",
        -  "type": "number"
        -}
    • Changedopzet_hypotheek_doorstromer9 fields changed
      • addedInput schema / properties / aanvrager
        Added value: +{
        +  "description": "Gegevens van de (hoofd)aanvrager. Vraag altijd: \"Wat is uw leeftijd of geboortedatum?\" en gebruik opgegeven leeftijden alleen intern.",
        +  "properties": {
        +    "eigen_vermogen": {
        +      "default": 0,
        +      "description": "Beschikbaar eigen geld in euro's (optioneel).",
        +      "type": "number"
        +    },
        +    "geboortedatum_aanvrager": {
        +      "description": "Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug.",
        +      "type": "string"
        +    },
        +    "geboortedatum_partner": {
        +      "description": "Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern.",
        +      "type": "string"
        +    },
        +    "heeft_partner": {
        +      "description": "Geeft aan of een partner mee leent.",
        +      "type": "boolean"
        +    },
        +    "inkomen_aanvrager": {
        +      "description": "Bruto jaarinkomen hoofdaanvrager in euro's.",
        +      "type": "number"
        +    },
        +    "inkomen_partner": {
        +      "description": "Optioneel partnerinkomen in euro's.",
        +      "type": "number"
        +    },
        +    "verplichtingen_pm": {
        +      "default": 0,
        +      "description": "Optionele maandelijkse verplichtingen in euro's.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "inkomen_aanvrager",
        +    "geboortedatum_aanvrager",
        +    "heeft_partner"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / eigen_vermogen
        Removed value: -{
        -  "default": 0,
        -  "description": "Optioneel beschikbaar eigen geld in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / geboortedatum_aanvrager
        Removed value: -{
        -  "description": "Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug.",
        -  "type": "string"
        -}
      • removedInput schema / properties / geboortedatum_partner
        Removed value: -{
        -  "description": "Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern.",
        -  "type": "string"
        -}
      • removedInput schema / properties / heeft_partner
        Removed value: -{
        -  "description": "Geeft aan of een partner mee leent.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / inkomen_aanvrager
        Removed value: -{
        -  "description": "Bruto jaarinkomen hoofdaanvrager in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / inkomen_partner
        Removed value: -{
        -  "description": "Optioneel partnerinkomen in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / verplichtingen_pm
        Removed value: -{
        -  "default": 0,
        -  "description": "Optionele maandelijkse verplichtingen in euro's.",
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "inkomen_aanvrager",
        -  "geboortedatum_aanvrager",
        -  "heeft_partner",
        -  "waarde_huidige_woning",
        -  "bestaande_hypotheek",
        -  "nieuwe_woning"
        -]New value: +[
        +  "aanvrager",
        +  "waarde_huidige_woning",
        +  "bestaande_hypotheek",
        +  "nieuwe_woning"
        +]
    • Changedopzet_hypotheek_starter9 fields changed
      • addedInput schema / properties / aanvrager
        Added value: +{
        +  "description": "Gegevens van de (hoofd)aanvrager. Vraag altijd: \"Wat is uw leeftijd of geboortedatum?\" en gebruik opgegeven leeftijden alleen intern.",
        +  "properties": {
        +    "eigen_vermogen": {
        +      "default": 0,
        +      "description": "Beschikbaar eigen geld in euro's (optioneel).",
        +      "type": "number"
        +    },
        +    "geboortedatum_aanvrager": {
        +      "description": "Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug.",
        +      "type": "string"
        +    },
        +    "geboortedatum_partner": {
        +      "description": "Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern.",
        +      "type": "string"
        +    },
        +    "heeft_partner": {
        +      "description": "Geeft aan of een partner mee leent.",
        +      "type": "boolean"
        +    },
        +    "inkomen_aanvrager": {
        +      "description": "Bruto jaarinkomen hoofdaanvrager in euro's.",
        +      "type": "number"
        +    },
        +    "inkomen_partner": {
        +      "description": "Optioneel partnerinkomen in euro's.",
        +      "type": "number"
        +    },
        +    "verplichtingen_pm": {
        +      "default": 0,
        +      "description": "Optionele maandelijkse verplichtingen in euro's.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "inkomen_aanvrager",
        +    "geboortedatum_aanvrager",
        +    "heeft_partner"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / eigen_vermogen
        Removed value: -{
        -  "default": 0,
        -  "description": "Optioneel beschikbaar eigen geld in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / geboortedatum_aanvrager
        Removed value: -{
        -  "description": "Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug.",
        -  "type": "string"
        -}
      • removedInput schema / properties / geboortedatum_partner
        Removed value: -{
        -  "description": "Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern.",
        -  "type": "string"
        -}
      • removedInput schema / properties / heeft_partner
        Removed value: -{
        -  "description": "Geeft aan of een partner mee leent.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / inkomen_aanvrager
        Removed value: -{
        -  "description": "Bruto jaarinkomen hoofdaanvrager in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / inkomen_partner
        Removed value: -{
        -  "description": "Optioneel partnerinkomen in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / verplichtingen_pm
        Removed value: -{
        -  "default": 0,
        -  "description": "Optionele maandelijkse verplichtingen in euro's.",
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "inkomen_aanvrager",
        -  "geboortedatum_aanvrager",
        -  "heeft_partner",
        -  "nieuwe_woning"
        -]New value: +[
        +  "aanvrager",
        +  "nieuwe_woning"
        +]
    • Changedopzet_hypotheek_uitgebreid9 fields changed
      • addedInput schema / properties / aanvrager
        Added value: +{
        +  "description": "Gegevens van de (hoofd)aanvrager. Vraag altijd: \"Wat is uw leeftijd of geboortedatum?\" en gebruik opgegeven leeftijden alleen intern.",
        +  "properties": {
        +    "eigen_vermogen": {
        +      "default": 0,
        +      "description": "Beschikbaar eigen geld in euro's (optioneel).",
        +      "type": "number"
        +    },
        +    "geboortedatum_aanvrager": {
        +      "description": "Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug.",
        +      "type": "string"
        +    },
        +    "geboortedatum_partner": {
        +      "description": "Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern.",
        +      "type": "string"
        +    },
        +    "heeft_partner": {
        +      "description": "Geeft aan of een partner mee leent.",
        +      "type": "boolean"
        +    },
        +    "inkomen_aanvrager": {
        +      "description": "Bruto jaarinkomen hoofdaanvrager in euro's.",
        +      "type": "number"
        +    },
        +    "inkomen_partner": {
        +      "description": "Optioneel partnerinkomen in euro's.",
        +      "type": "number"
        +    },
        +    "verplichtingen_pm": {
        +      "default": 0,
        +      "description": "Optionele maandelijkse verplichtingen in euro's.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "inkomen_aanvrager",
        +    "geboortedatum_aanvrager",
        +    "heeft_partner"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / eigen_vermogen
        Removed value: -{
        -  "default": 0,
        -  "description": "Eigen geld beschikbaar in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / geboortedatum_aanvrager
        Removed value: -{
        -  "description": "Interne geboortedatum aanvrager (ISO). Vraag de gebruiker: \"Wat is uw leeftijd of geboortedatum?\" en houd afgeleide datums voor uzelf.",
        -  "type": "string"
        -}
      • removedInput schema / properties / geboortedatum_partner
        Removed value: -{
        -  "description": "OPTIONEEL - Interne geboortedatum partner. Vraag dezelfde leeftijd/geboortedatum-vraag en deel alleen de leeftijd terug indien relevant.",
        -  "type": "string"
        -}
      • removedInput schema / properties / heeft_partner
        Removed value: -{
        -  "description": "Heeft de aanvrager een partner die mee aanvraagt?",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / inkomen_aanvrager
        Removed value: -{
        -  "description": "Bruto jaarinkomen van de hoofdaanvrager in euro's",
        -  "type": "number"
        -}
      • removedInput schema / properties / inkomen_partner
        Removed value: -{
        -  "description": "OPTIONEEL - Bruto jaarinkomen van de partner in euro's.",
        -  "type": "number"
        -}
      • removedInput schema / properties / verplichtingen_pm
        Removed value: -{
        -  "default": 0,
        -  "description": "Maandelijkse verplichtingen in euro's.",
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "inkomen_aanvrager",
        -  "geboortedatum_aanvrager",
        -  "heeft_partner",
        -  "nieuwe_woning"
        -]New value: +[
        +  "aanvrager",
        +  "nieuwe_woning"
        +]
  2. 6 tool updates
    • Changedbereken_hypotheek_doorstromer4 fields changed
      • changedInput schema / properties / bestaande_hypotheek / description
        Previous value: -"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake)."New value: +"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: \"Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?\""
      • changedInput schema / properties / bestaande_hypotheek / properties / leningdelen / description
        Previous value: -"Minimaal één leningdeel met restschuld en rente."New value: +"Minimaal één leningdeel. Gebruik één samenvattend leningdeel voor een snelle globale berekening of voeg alle afzonderlijke leningdelen toe voor een nauwkeurige detailberekening."
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum hoofdaanvrager (YYYY-MM-DD)."New value: +"Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"Optionele geboortedatum partner (YYYY-MM-DD)."New value: +"Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern."
    • Changedbereken_hypotheek_starter2 fields changed
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum hoofdaanvrager (YYYY-MM-DD)."New value: +"Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"Optionele geboortedatum partner (YYYY-MM-DD)."New value: +"Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern."
    • Changedbereken_hypotheek_uitgebreid4 fields changed
      • changedInput schema / properties / bestaande_hypotheek / description
        Previous value: -"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake)."New value: +"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: \"Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?\""
      • changedInput schema / properties / bestaande_hypotheek / properties / leningdelen / description
        Previous value: -"Minimaal één leningdeel met restschuld en rente."New value: +"Minimaal één leningdeel. Gebruik één samenvattend leningdeel voor een snelle globale berekening of voeg alle afzonderlijke leningdelen toe voor een nauwkeurige detailberekening."
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum hoofdaanvrager (YYYY-MM-DD)."New value: +"Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"Optionele geboortedatum partner (YYYY-MM-DD)."New value: +"Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern."
    • Changedopzet_hypotheek_doorstromer4 fields changed
      • changedInput schema / properties / bestaande_hypotheek / description
        Previous value: -"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake)."New value: +"Bestaande leningdelen voor doorstromer (detailuitleg: hypotheek://v4/guide/opzet-intake). VRAAG ALTIJD: \"Wilt u een snelle globale berekening (met een samenvatting van uw hypotheek) of een detailberekening waarbij u alle leningdelen invoert?\""
      • changedInput schema / properties / bestaande_hypotheek / properties / leningdelen / description
        Previous value: -"Minimaal één leningdeel met restschuld en rente."New value: +"Minimaal één leningdeel. Gebruik één samenvattend leningdeel voor een snelle globale berekening of voeg alle afzonderlijke leningdelen toe voor een nauwkeurige detailberekening."
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum hoofdaanvrager (YYYY-MM-DD)."New value: +"Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"Optionele geboortedatum partner (YYYY-MM-DD)."New value: +"Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern."
    • Changedopzet_hypotheek_starter2 fields changed
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum hoofdaanvrager (YYYY-MM-DD)."New value: +"Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: \"Wat is uw leeftijd of geboortedatum?\" en deel bij een leeftijd alleen die leeftijd terug."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"Optionele geboortedatum partner (YYYY-MM-DD)."New value: +"Optionele interne geboortedatum partner (ISO). Vraag ook hier: \"Wat is uw leeftijd of geboortedatum?\" en houd de afgeleide datum intern."
    • Changedopzet_hypotheek_uitgebreid2 fields changed
      • changedInput schema / properties / geboortedatum_aanvrager / description
        Previous value: -"Geboortedatum aanvrager in formaat YYYY-MM-DD"New value: +"Interne geboortedatum aanvrager (ISO). Vraag de gebruiker: \"Wat is uw leeftijd of geboortedatum?\" en houd afgeleide datums voor uzelf."
      • changedInput schema / properties / geboortedatum_partner / description
        Previous value: -"OPTIONEEL - Geboortedatum partner in formaat YYYY-MM-DD."New value: +"OPTIONEEL - Interne geboortedatum partner. Vraag dezelfde leeftijd/geboortedatum-vraag en deel alleen de leeftijd terug indien relevant."
  3. 7 tool updates
    • Removedbereken_hypotheek
    • Addedbereken_hypotheek_doorstromer
    • Addedbereken_hypotheek_starter
    • Addedbereken_hypotheek_uitgebreid
    • Addedopzet_hypotheek_doorstromer
    • Addedopzet_hypotheek_starter
    • Addedopzet_hypotheek_uitgebreid
  4. 2 tool updates
    • First observedbereken_hypotheek
    • First observedhaal_actuele_rentes_op

TDQS

B3.4/5.0
Disambiguation2/5

There is significant overlap and unclear boundaries between tools. For example, 'bereken_hypotheek_doorstromer' and 'bereken_hypotheek_uitgebreid' both handle doorstromers with similar outputs and rules, while 'opzet_hypotheek_doorstromer' and 'opzet_hypotheek_uitgebreid' also overlap in functionality. The descriptions indicate that the uitgebreid tools are for advanced cases, but the distinctions are not clearly defined, leading to potential confusion about which tool to use for a given scenario.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in Dutch, using 'bereken_' or 'haal_' or 'opzet_' as prefixes followed by descriptive nouns (e.g., 'hypotheek_doorstromer', 'actuele_rentes_op'). The naming is uniform across all tools, making it easy to predict and understand the purpose of each tool based on its name.

Tool Count3/5

With 7 tools, the count is reasonable for a mortgage calculation domain, but it feels borderline due to redundancy. The tools cover starters, doorstromers, and advanced cases, but the overlap suggests the set could be consolidated without losing functionality. It's not excessive, but the scope might be slightly over-partitioned.

Completeness4/5

The tool set covers key mortgage calculation scenarios: starters, doorstromers, interest rates, and advanced setups, with detailed input and output specifications. However, there are minor gaps, such as no explicit tool for updating or deleting calculations, and some tools (e.g., 'bereken_hypotheek_uitgebreid' and 'opzet_hypotheek_uitgebreid') seem to duplicate functionality, which could lead to confusion rather than filling a true gap. Overall, the core workflows are well-covered.

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pace8/mcp-hypotheken-berekenen'

If you have feedback or need assistance with the MCP directory API, please join our Discord server