Skip to main content
Glama
pace8

mcp-hypotheken-berekenen

bereken_hypotheek_uitgebreid

Calculate personalized mortgage options including home equity, monthly payments, and NHG estimates for home buyers and movers based on income, existing mortgage details, and property specifications.

Instructions

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.

Input Schema

TableJSON 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).

Implementation Reference

  • Main handler function for 'bereken_hypotheek_uitgebreid' tool: validates input, normalizes arguments (especially for doorstromer), builds API payload including custom new loan params, calls Replit API, logs success, and returns formatted response.
    async function handleBerekenUitgebreid(request: any): Promise<ToolResponse> {
      const rawArgs = requireArguments<UitgebreidArguments>(request);
      const normalizedArgs = rawArgs.is_doorstromer
        ? (normalizeDoorstromerArgs(rawArgs) as UitgebreidArguments)
        : rawArgs;
      const logger = createLogger(normalizedArgs.session_id);
    
      validateBaseArguments(normalizedArgs as BaseArguments);
      if (normalizedArgs.is_doorstromer && normalizedArgs.bestaande_hypotheek) {
        validateBestaandeHypotheek(normalizedArgs.bestaande_hypotheek);
      }
    
      enforceRateLimit(normalizedArgs.session_id);
    
      const payload: any = {
        aanvragers: mapAanvragers(normalizedArgs),
      };
    
      if (normalizedArgs.is_doorstromer && normalizedArgs.waarde_huidige_woning && normalizedArgs.bestaande_hypotheek) {
        payload.bestaande_hypotheek = {
          waarde_huidige_woning: normalizedArgs.waarde_huidige_woning,
          leningdelen: normalizedArgs.bestaande_hypotheek.leningdelen,
        };
      }
    
      const maatwerk = (normalizedArgs as any).nieuwe_hypotheek ?? (normalizedArgs as any).nieuwe_lening;
      const nieuweLening = buildNieuweLeningPayload(maatwerk);
      if (nieuweLening) {
        payload.nieuwe_lening = nieuweLening;
      }
    
      if (normalizedArgs.session_id) {
        payload.session_id = normalizedArgs.session_id;
      }
    
      const apiClient = getApiClient();
      const { data } = await apiClient.post(
        REPLIT_API_URL_BEREKENEN,
        payload,
        { correlationId: normalizedArgs.session_id }
      );
    
      logger.info('Toolcall succesvol', { tool: 'bereken_hypotheek_uitgebreid' });
      return successResponse(formatResponse(data, "bereken_hypotheek_uitgebreid"));
    }
  • src/index.ts:766-773 (registration)
    TOOL_HANDLERS object maps tool name 'bereken_hypotheek_uitgebreid' to its handler function handleBerekenUitgebreid, used by CallToolRequestSchema handler.
    const TOOL_HANDLERS: Record<string, ToolHandler> = {
      bereken_hypotheek_starter: handleBerekenStarter,
      bereken_hypotheek_doorstromer: handleBerekenDoorstromer,
      bereken_hypotheek_uitgebreid: handleBerekenUitgebreid,
      haal_actuele_rentes_op: handleActueleRentes,
      opzet_hypotheek_starter: handleOpzetStarter,
      opzet_hypotheek_doorstromer: handleOpzetDoorstromer,
      opzet_hypotheek_uitgebreid: handleOpzetUitgebreid,
  • Tool registration and input schema definition in ListToolsRequestSchema response, including detailed properties for extended params like nieuwe_hypotheek, nieuwe_lening, doorstromer support.
            name: "bereken_hypotheek_uitgebreid",
            description: `Maximale hypotheek – uitgebreide variant. Gebruik dit alleen wanneer er nog GEEN concrete woning is, maar de gebruiker/adviseur expliciet met parameters wil spelen (bijv. andere rentevast-periodes, custom renteklassen, scenariovergelijkingen). Voor een concrete woning altijd de opzet-tools gebruiken. Zodra u dit tool voor een doorstromer inzet (is_doorstromer=true of bestaande_hypotheek ingevuld), gelden dezelfde regels als bij de standaard doorstromer-tool:
    ${DOORSTROMER_OUTPUT_GUIDANCE}`,
            inputSchema: {
              type: "object",
              description: `Alle velden zijn optioneel bovenop de basisintake; zie ${OPZET_GUIDE_URI} voor velduitleg en defaults.`,
              properties: {
                ...baseIntakeProperties,
                is_doorstromer: {
                  type: "boolean",
                  description: "Geeft aan of de aanvrager een doorstromer is.",
                },
                waarde_huidige_woning: {
                  type: "number",
                  description: "Optionele huidige woningwaarde in euro's.",
                },
                bestaande_hypotheek: {
                  ...bestaandeHypotheekSchema,
                },
                nieuwe_woning: {
                  ...nieuweWoningSchema,
                },
                nieuwe_hypotheek: {
                  type: "object",
                  description: `Optionele maatwerk leningparameters (looptijd, rentevast, rente). Detailuitleg: ${OPZET_GUIDE_URI}.`,
                },
                nieuwe_lening: {
                  type: "object",
                  description: `Optionele structuur voor looptijd/rentevast/NHG en renteklassen (detailuitleg: ${OPZET_GUIDE_URI}).`,
                },
                session_id: {
                  type: "string",
                  description: "Optioneel sessie-ID vanuit n8n (voor logging).",
                },
              },
              required: baseIntakeRequired,
            },
  • TypeScript interface defining the input arguments structure for the 'bereken_hypotheek_uitgebreid' tool.
    interface UitgebreidArguments extends BaseArguments {
      is_doorstromer?: boolean;
      waarde_huidige_woning?: number;
      bestaande_hypotheek?: BestaandeHypotheek;
      nieuwe_hypotheek?: NieuweHypotheek;
    }
  • Specific formatting and logging in handler tail for this tool, using formatResponse function tailored for it.
    logger.info('Toolcall succesvol', { tool: 'bereken_hypotheek_uitgebreid' });
    return successResponse(formatResponse(data, "bereken_hypotheek_uitgebreid"));
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.

Install Server

Other Tools

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