bereken_hypotheek_starter
Calculate your maximum mortgage amount, monthly payments, and NHG comparison based on your income, age, and partner details.
Instructions
Berekent de maximale hypotheek voor starters. Output: maximaal leenbedrag, maandlast en NHG-vergelijking.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| inkomen_aanvrager | Yes | Bruto jaarinkomen hoofdaanvrager in euro's. | |
| geboortedatum_aanvrager | Yes | Interne geboortedatum hoofdaanvrager (ISO). Vraag de gebruiker altijd: "Wat is uw leeftijd of geboortedatum?" en deel bij een leeftijd alleen die leeftijd terug. | |
| heeft_partner | Yes | Geeft aan of een partner mee leent. | |
| inkomen_partner | No | Optioneel partnerinkomen in euro's. | |
| geboortedatum_partner | No | Optionele interne geboortedatum partner (ISO). Vraag ook hier: "Wat is uw leeftijd of geboortedatum?" en houd de afgeleide datum intern. | |
| verplichtingen_pm | No | Optionele maandelijkse verplichtingen in euro's. | |
| session_id | No | Optioneel sessie-ID vanuit n8n (voor logging). |
Implementation Reference
- src/index.ts:524-548 (handler)The main handler function for the 'bereken_hypotheek_starter' tool. Validates base arguments, enforces rate limiting, constructs payload for the external Replit API, calls the API, logs success, and returns a formatted response using successResponse and formatResponse.async function handleBerekenStarter(request: any): Promise<ToolResponse> { const args = requireArguments<BaseArguments>(request); const logger = createLogger(args.session_id); validateBaseArguments(args); enforceRateLimit(args.session_id); const payload: any = { aanvragers: mapAanvragers(args), }; if (args.session_id) { payload.session_id = args.session_id; } const apiClient = getApiClient(); const { data } = await apiClient.post( REPLIT_API_URL_BEREKENEN, payload, { correlationId: args.session_id } ); logger.info('Toolcall succesvol', { tool: 'bereken_hypotheek_starter' }); return successResponse(formatResponse(data, "bereken_hypotheek_starter")); }
- src/index.ts:766-774 (registration)Registration of all tool handlers, including mapping 'bereken_hypotheek_starter' to its handler function handleBerekenStarter. This object is used in the CallToolRequestSchema handler to dispatch tool calls.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, };
- src/index.ts:781-794 (schema)Tool definition in ListToolsRequestSchema handler, including name, description, and inputSchema (JSON Schema) for 'bereken_hypotheek_starter' which defines the expected arguments like inkomen_aanvrager, geboortedatum_aanvrager, etc.{ name: "bereken_hypotheek_starter", description: `Maximale hypotheek voor starters ZONDER concrete woning. Gebruik deze tool alleen wanneer de gebruiker zich oriënteert ("Wat kan ik lenen?") en er nog geen koopsom/adres bekend is. Zodra de gebruiker een specifiek huis of biedprijs noemt moet u overschakelen naar de opzet-hypotheek tools.`, inputSchema: { type: "object", description: `Gebruik basisintakevelden; zie ${OPZET_GUIDE_URI} voor detaildefinities.`, properties: { ...baseIntakeProperties, session_id: { type: "string", description: "Optioneel sessie-ID vanuit n8n (voor logging).", }, }, required: baseIntakeRequired,
- src/index.ts:546-547 (helper)Specific use of formatResponse tailored for 'bereken_hypotheek_starter', which formats the API response into a user-friendly Dutch summary with scenarios, amounts, and labels.logger.info('Toolcall succesvol', { tool: 'bereken_hypotheek_starter' }); return successResponse(formatResponse(data, "bereken_hypotheek_starter"));