recommend_packages
Recommend mortgage packages
Rank live Singapore mortgage packages for one borrower and loan. Returns `recommended` (up to 3 picks with `reasoning`), `lowestRateIds` (cheapest eligible first), `isPersonalised` and `packages` (full details by id).
Required: `dealKind` (PURCHASE | REFINANCE), `propertyType` (HDB | PRIVATE | COMMERCIAL), `propertyStatus`, `loanAmount` (SGD); for REFINANCE also `currentBankId` from `list_banks`. Ask for missing facts; do not guess. Valid statuses: HDB: COMPLETED or BTO; PRIVATE: COMPLETED or BUC; COMMERCIAL: OWNEROCCUPIED, INVESTMENT or PERSONAL.
Optional: `ratesType` (FIXED | FLOATING), `userContext` (free-text priorities).
Call again with the full input set whenever anything changes. Not for what-if rates (use `calculate_mortgage_repayment`).
ParametersdealKindrequiredratesTypeloanAmountrequireduserContextpropertyTyperequiredcurrentBankIdcandidateLimitpropertyStatusrequiredlockInPeriodYrsfixedDurationYrs
compare_packages
Compare mortgage packages
Compare 2–3 specific mortgage packages side by side: average rate over the lock-in, benchmark index, effective rate and monthly instalment per year, interest paid per year, and flexibility terms (prepayment, free conversion, sale waiver, penalties, minimum loan).
Required: `packageIds` from `recommend_packages` and `loanAmount` (SGD). Optional: `tenureYears` (default 25); `dealKind`/`propertyType`/`propertyStatus` only label the comparison header.
Not for finding packages: it has no borrower context, so use `recommend_packages` for a personalised ranking. `verdicts`/`recommendedId` only carry over reasoning from a prior `recommend_packages` call; never author them.
ParametersdealKindverdictsloanAmountrequiredpackageIdsrequiredtenureYearspropertyTyperecommendedIdpropertyStatus
List active banks and lenders (id and name), sorted by name. Use it to resolve a borrower's current lender to the `currentBankId` that `recommend_packages` requires for refinance deals. Not a rate source.
Takes no parameters.
get_property_valuation
Get indicative property valuation
Indicative valuation (SGD) for a Singapore residential unit from an external valuation source. Requires `postalCode` and `unitNumber` in FF-SS format (e.g. "04-02"). `propertyType` ("Condo" or "HDB") and `areaSqft` are optional; without `propertyType` both are tried and `propertyTypeUsed` says which valued the unit. `valued: false` means the unit could not be valued: a valid answer, not an error. An estimate, not a formal bank valuation.
ParametersareaSqftpostalCoderequiredunitNumberrequiredpropertyType
calculate_package_schedule
Calculate package payment schedule
Compute the amortisation schedule for a specific mortgage package using that package's real effective rates. Returns loan facts (`context`), the per-tier breakdown (`periods`), rate structure, totals and the per-year schedule (`annual`).
Required: `packageId` from `recommend_packages`, `loanAmount` (SGD) and `tenureYears`. Optional: `includeMonthly: true` fills `monthly`; `firstPaymentDate` (YYYY-MM-DD, defaults to next month).
Not for hypothetical rates: use `calculate_mortgage_repayment` for a what-if rate the borrower holds no package for.
ParameterspackageIdrequiredloanAmountrequiredtenureYearsrequiredincludeMonthlyfirstPaymentDate
list_market_indices
List market indices
List market benchmark indices (id, slug, name, currency), sorted by slug. Use this to resolve a benchmark name like 'SORA' into the `marketIndexId` required by `get_index_quotes`.
Takes no parameters.
get_index_quotes
Get market index quotes
Return historical quotes (rate by date) for a market benchmark index such as SORA. Requires `marketIndexId` from `list_market_indices`. Optional `startDate`/`endDate` (YYYY-MM-DD) narrow the range; results are paginated, newest first. Quote `rate` values are decimal fractions (0.0356 = 3.56% p.a.). Not a package rate: use `recommend_packages` for those.
ParameterspagelimitendDatestartDatemarketIndexIdrequired
calculate_affordability
Affordability calculator
Estimate the maximum loan and property price (SGD) a borrower can afford from monthly income, existing debt commitments and tenure, applying Singapore TDSR/MSR limits. Use this when you know the income and want the budget; for the income a target price needs, use `calculate_required_income`. For joint borrowers with assets and liabilities in detail, use `check_eligibility`.
ParametersagecpfOAcashSavingscitizenshipmonthlyDebtinterestRatepropertyTypestressTestRateloanTenureYearsexistingPropertymonthlyFixedIncomerequiredmonthlyVariableIncome+1 more
calculate_required_income
Required-income calculator
Reverse affordability: work out the gross monthly income (SGD) needed to support a target property price under Singapore TDSR/MSR limits. Use this when you know the target price; for the budget a known income supports, use `calculate_affordability`.
ParametersagecpfOAcashSavingscitizenshipmonthlyDebtinterestRatepropertyTypepropertyPricerequiredstressTestRateloanTenureYearsexistingPropertyexistingPropertiesOwned
calculate_mortgage_repayment
Mortgage repayment calculator
Compute the monthly repayment, total interest and total cost (SGD) for a hypothetical loan from a loan amount, tenure and an interest rate you supply (standard amortisation). Use this for what-if rates; for the real rates of a specific package, use `calculate_package_schedule` instead.
ParametersloanAmountrequiredtenureYearsrequiredinterestRaterequired
calculate_refinance_savings
Refinance savings calculator
Compare a borrower's existing mortgage against a new rate and report monthly savings, total savings (SGD) and break-even months. Set `mode` to 'original' (supply the original loan amount, tenure and start date) or 'remaining' (supply the current outstanding balance and remaining tenure). Not for finding the new package: use `recommend_packages` for that.
ParametersmoderequirednewRaterequiredcurrentRaterequiredloanStartYearloanStartMonthnewTenureYearsremainingAmountrefinancingCostsoriginalLoanAmountoriginalTenureYearsremainingTenureYearsearlyRedemptionPenalty
calculate_residential_stamp_duty
Residential stamp duty (BSD + ABSD)
Compute Buyer's Stamp Duty (BSD) and Additional Buyer's Stamp Duty (ABSD) in SGD for a Singapore residential purchase, given the price or value, buyer type (singaporean | pr | foreigner | entity | trust) and the number of residential properties already owned. For the full upfront cost of a purchase, use `calculate_purchase_cost`.
ParameterspricerequiredbuyerTypepropertyTypepurchaseTypeexistingPropertiesOwned
calculate_rental_stamp_duty
Rental stamp duty
Compute the Singapore stamp duty (SGD) payable on a property lease or tenancy from the rent and lease term. Not for purchases: use `calculate_residential_stamp_duty` for BSD and ABSD.
ParametershasPremiummonthlyRentrequiredpremiumAmountleasePeriodMonths
calculate_mortgage_stamp_duty
Mortgage stamp duty
Compute the Singapore stamp duty (SGD) payable on a mortgage or loan facility from the loan amount. Not for purchases: use `calculate_residential_stamp_duty` for BSD and ABSD.
ParametersloanAmountrequired
calculate_seller_stamp_duty
Seller's Stamp Duty (SSD)
Compute Singapore Seller's Stamp Duty (SSD, in SGD) from the sale price or value and how long the residential property has been held. For net cash from a sale, use `calculate_sales_proceeds`.
ParameterspricerequiredsaleDaterequiredpurchaseDaterequired
analyze_sell_one_buy_two
Sell-one-buy-two analysis
Analyse a 'sell one, buy two' plan where two co-owners sell their joint home. Returns the sale proceeds (cash after loan, CPF refunds, SSD and legal fees) and each buyer's resulting cash and CPF. With `buy1`, it compares buying one replacement jointly or under either buyer alone; with `buy2Property1` and `buy2Property2`, each buyer buying one property (both pairings). Every option is given at 30- and 35-year tenures with max loan, LTV, instalment, downpayment, stamp duties, cash/CPF shortfalls, TDSR used and an affordability verdict.
Parametersbuy1buyer1requiredbuyer2requiredvaluationrequiredbuyer1Sharesbuyer2Sharesbuy2Property1buy2Property2buyer1CpfUsagebuyer2CpfUsageoutstandingLoansellerStampDuty+1 more
check_eligibility
Eligibility checker (TDSR / MSR)
Run the regulatory affordability gate for one main borrower and up to three joint borrowers. Given each borrower's income, rental, pledged/unpledged assets and liabilities plus a proposed loan, returns the qualifying income (after MAS haircuts), the TDSR and MSR for the proposed loan, the income-weighted average age (IWAA), and the maximum loan under both HDB/EC and private property rules. Use this upstream of `recommend_packages` to confirm what a borrower can qualify for.
ParametersasOfDateborrowersrequiredpropertyTypetargetLtvCapageConventionbenchmarkRateloanTenureYearscombinationSplittargetLoanAmountproposedLoanAmountrequiredtargetPurchasePriceexistingHousingLoans
analyze_decoupling
Decoupling analysis
Analyse decoupling, where one co-owner of a Singapore property transfers their share to the other: the seller's cash proceeds (after loan, CPF refund, SSD and legal fees), the buyer's financing of the share, BSD and ABSD, and the cost of each option for a planned next purchase. All amounts in SGD.
ParametersbuyerrequiredsellerrequiredvaluationrequiredoutstandingLoannewPropertyPrice
calculate_sales_proceeds
Sales proceeds calculator
Work out what a seller walks away with when selling a property: cash proceeds after redeeming the outstanding loan, refunding each owner’s CPF (principal plus accrued interest, 1 to 4 owners), and paying agent commission (with 9% GST), legal and miscellaneous fees. Flags a negative sale when the deductions exceed the selling price.
ParametersownersrequiredlegalFeessellingPricerequiredagentFeePercentmiscellaneousFeesoutstandingLoanAmount
calculate_purchase_cost
Purchase cost & funding breakdown
Calculate the full upfront cost of purchasing a Singapore residential property (HDB or private resale), with each cost line attributed to its funding source (cash, CPF or bank loan). Returns option fee, exercise fee, stamp duties (BSD and ABSD), downpayment breakdown, and a sufficiency check against available funds.
ParametersltvcpfFirstbuyerTypeloanAmountpropertyTyperequiredavailableCashpurchasePricerequiredavailableCpfOAlegalFeeFundinglegalFeeOverridestampDutyFundingminimumCashPercent+2 more
calculate_hdb_resale_timeline
HDB resale purchase timeline
Generate a step-by-step dated timeline for an HDB resale purchase, from securing the Option to Purchase through to completion and key collection. Returns the ordered steps (what happens, the date, any payment due and its CPF/cash split), a summary (total payments, CPF and cash totals, completion date, duration in days), BSD and ABSD, the funding split (LTV, downpayment, minimum cash, cash-or-CPF remainder, monthly instalment when a rate and tenure are given), the completion date used, and self-checks.
ParameterscpfUsagelegalFeebuyerTypeoptionFeeotherFeesloanAmountoptionDaterequiredexerciseFeetenureYearsexerciseDaterequiredinterestRatepurchasePricerequired+3 more
calculate_private_resale_timeline
Private resale purchase timeline
Generate a step-by-step dated timeline for a private (non-HDB) resale purchase, with the 1% option fee, 4% exercise payment, stamp duties and completion payment at the right steps. Exercise date defaults to 14 calendar days inclusive of the option date if not entered.
ParameterscpfUsagelegalFeebuyerTypeotherFeesloanAmountoptionDaterequiredtenureYearsexerciseDateinterestRatepurchasePricerequiredcompletionDateoptionExpiryDaterequired+1 more
calculate_progressive_payment
Progressive payment (BUC) calculator
Model the monthly instalment profile of a Singapore Building Under Construction (BUC) property loan across progressive payment stages. Handles fixed and floating rate packages, per-stage cash/CPF/loan funding split, drawdown timing, rate stepping by year, and optional prepayments. Set includeSchedule to true for the full month-by-month amortisation schedule (summary is always included).
ParametersstagesotpDaterequiredtopDaterequiredrateModeloanAmountloanQuantumprepaymentsratePerYearrequiredtenureYearsrequiredlockInMonthspurchasePricerequiredreferenceRate+7 more