Model Context Protocol (MCP) server for freee API integration
Cashew is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Live Singapore mortgage rates, package recommendations and home-loan calculators.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http cashew-mcp https://www.cashew.sg/mcp
# 2 — ask your agent for something these tools do
# recommend_packages, compare_packages, list_banks and 20 more
Cashew costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http cashew-mcp https://www.cashew.sg/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
23 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Rank Singapore mortgage packages for a borrower. Returns recommended (up to 3 picks, each with a package id and reasoning; ranked by the LLM when userContext is given, otherwise the cheapest package of each rate structure), lowestRateIds (up to 3 package ids, cheapest eligible first), isPersonalised (whether userContext shaped the ranking), and packages, a lookup of full package deta
| Parameter | Type | Required | Notes |
|---|---|---|---|
| propertyType | string | yes | The kind of property securing the loan: an HDB flat, a private home or a commercial property. Only packages offered for it are considered, and it decides which propertyStatus values are valid. |
| propertyStatus | string | yes | Stage or use of the property, which must suit propertyType. For HDB: COMPLETED for a resale flat, BTO for a new Build-To-Order flat. For PRIVATE: COMPLETED for a ready-built home, BUC for one still |
| dealKind | string | yes | PURCHASE (new loan) or REFINANCE (switching lender). |
| loanAmount | integer | yes | Amount the borrower wants to borrow, in SGD. Packages whose loan-size range does not cover it are excluded. |
| ratesType | string | no | Optional rate type: FIXED or FLOATING. This is a hard filter on the candidate pool, not a ranking hint. Omit it when the borrower stated no preference, so a mix of rate types stays eligible. |
| fixedDurationYrs | no | Optional filter: keep only packages whose fixed-rate period lasts this many years. Pass an array to accept any of several. Only applied when ratesType is FIXED. | |
| lockInPeriodYrs | integer | no | Optional filter: the longest lock-in, in years, the borrower will accept. Packages with a longer lock-in are excluded; packages without one always qualify. |
| currentBankId | string | no | The borrower's current lender, as the bank id returned by list_banks. Needed for REFINANCE deals, where that bank's packages are left out; ignored for PURCHASE. |
| userContext | no | Optional free-text summary of the borrower's priorities, timeline, bank relationships, citizenship, employment, family changes, etc. Only refines the LLM ranking; omit if there are no stated prioritie | |
| candidateLimit | integer | no | How many candidate packages the ranker weighs for each of its slots (floating, 2-year fixed, longest fixed); values above 8 have no further effect. Leave unset unless deliberately narrowing the choice |
| tenureYears | integer | no | Repayment period, in years, for the instalments shown in the comparison document; only used with formats. 25 when omitted. |
| formats | array | no | Document formats to generate for the recommended set (currently only "pdf"); the download URL is returned under documents. Omit/empty for data only. |
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). Pass packageIds from recommend_packages, plus loanAmount and optionally tenureYears (default 25). dealKind/propertyType/`pr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| packageIds | array | yes | 2–3 package ids to compare, e.g. from recommend_packages. |
| loanAmount | integer | yes | Loan principal in SGD (whole dollars). |
| tenureYears | integer | no | Repayment period, in years, used for each package’s instalment and interest. |
| dealKind | string | no | Whether the loan is a new PURCHASE or a REFINANCE from another lender. Only labels the report header; the comparison is unchanged. |
| propertyType | string | no | The kind of property securing the loan (HDB flat, private home or commercial). Only labels the report header; the comparison is unchanged. |
| propertyStatus | string | no | Stage or use of the property, e.g. COMPLETED (resale or ready-built), BTO or BUC (new, under construction). Only labels the report header; the comparison is unchanged. |
| formats | array | no | Document formats to generate and upload (currently only "pdf"); the download URL is returned under documents. Omit/empty for data only. |
| verdicts | array | no | Per-package verdict texts carried over from a prior recommend_packages call (the LLM reasoning). Adds the verdict row to the comparison; omit for a verdict-free report. Do not author these by hand. |
| recommendedId | string | no | The rank-1 package from the prior recommend_packages call; its column is highlighted as "Recommended". Only meaningful together with verdicts. |
| maskBankIdentity | boolean | no | When true and a bank has maskIdentity set, replace the bank name with "Confidential Rate" and hide the logo in the comparison report. |
List active banks (id + name), sorted by name. Use this to map a borrower's current lender name to the currentBankId UUID required by recommend_packages for refinance deals.
No parameter schema on file.
Indicative SPML valuation for a Singapore unit. Requires postal code and unit number in FF-SS format (e.g. "04-02"). propertyType ("Condo" or "HDB") and areaSqft are optional — when propertyType is omitted, both types are probed and the one that values the unit is used (propertyTypeUsed in the result tells you which). A valued: false result means SPML could not value the unit — that is a valid
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postalCode | string | yes | Postal code of the building the unit is in, e.g. "248973". |
| unitNumber | string | yes | Floor and stack of the unit, e.g. "04-02" for floor 4, stack 02. |
| propertyType | string | no | Whether the unit is a private condominium or an HDB flat. Omit to auto-detect: both are probed and the one that values the unit is used (propertyTypeUsed reports which). |
| areaSqft | number | no | Optional built-in/strata area in sqft; can rescue a "$0" valuation. |
Compute the amortisation schedule for a SPECIFIC mortgage package using that package's real effective rates. Use this once the borrower has picked a package from recommend_packages; for a hypothetical "what-if" rate the borrower does not yet hold a package for, use calculate_mortgage_repayment instead. Pass a packageId from recommend_packages, plus loanAmount and tenureYears. Always r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| packageId | string | yes | Package id, as returned by recommend_packages. |
| loanAmount | integer | yes | Amount borrowed under this package, in SGD. |
| tenureYears | integer | yes | Repayment period of the loan, in years; the schedule amortises over it. |
| maskBankIdentity | boolean | no | When true and the bank has maskIdentity set, replace the bank name with "Confidential Rate" and hide the logo in generated documents. |
| firstPaymentDate | string | no | First repayment month as an ISO date (YYYY-MM-DD). Defaults to next month. |
| includeMonthly | boolean | no | Include the full month-by-month schedule (monthly[]) in the response. Omitted/false returns an empty monthly[] to keep the payload small. |
| formats | array | no | Document formats to generate and upload (pdf, xlsx); the resulting download URLs are returned under documents. Omit/empty for data only. |
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.
No parameter schema on file.
Return historical quotes (rate by date) for a market benchmark index such as SORA. Requires marketIndexId — use list_market_indices to resolve a benchmark name/slug into its UUID. Optional startDate/endDate narrow the range; results are paginated, newest first. Quote rate values are decimal fractions (0.0356 = 3.56% p.a.).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| marketIndexId | string | yes | Market index UUID. Resolve a benchmark name/slug via list_market_indices. |
| startDate | string | no | Earliest quote date to include. Omit for no lower bound. |
| endDate | string | no | Latest quote date to include. Omit for no upper bound. |
| page | integer | no | Page of results to return, counting from 1; totalPages gives the last. |
| limit | integer | no | Number of quotes per page. |
Estimate the maximum loan and property price a borrower can afford from income, existing debt commitments and tenure, applying Singapore TDSR/MSR limits. Use this when you know the income and want the budget; to go the other way (a target price → the income needed), use calculate_required_income.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| monthlyFixedIncome | number | yes | Gross fixed monthly income (salary), in SGD. |
| monthlyVariableIncome | number | no | Gross variable monthly income (bonus/commission), in SGD; haircut 30% under TDSR. |
| monthlyDebt | number | no | Total existing monthly debt commitments (other loans, cards), in SGD. |
| cashSavings | number | no | Cash available for downpayment, in SGD. |
| cpfOA | number | no | CPF Ordinary Account balance usable, in SGD. |
| loanTenureYears | integer | no | Repayment period, in years, over which the maximum loan is sized. |
| interestRate | number | no | Assumed annual interest rate, as a percentage (e.g. 4.0 = 4%, not 0.04). |
| age | integer | no | Age of the (oldest) borrower. |
| propertyType | string | no | Property type: hdb, ec (Executive Condominium) or private. Sets MSR/LTV rules. |
| citizenship | string | no | Buyer citizenship: singaporean, pr or foreigner. Drives ABSD rate. |
| existingProperty | boolean | no | True if the borrower already owns ≥1 property (affects ABSD and LTV). |
| existingPropertiesOwned | integer | no | Count of residential properties already owned; sets the ABSD tier (0, 1 or 2+). Takes precedence over existingProperty when provided. |
| stressTestRate | number | no | Override the TDSR/MSR stress-test rate (percentage); defaults to the MAS floor. |
Reverse affordability: work out the gross monthly income needed to support a target property price under Singapore TDSR/MSR limits. Use this when you know the target property price; to go the other way (income → maximum budget), use calculate_affordability.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| propertyPrice | number | yes | Target property purchase price, in SGD. |
| citizenship | string | no | Buyer's residency status (Singapore citizen, permanent resident or foreigner); sets the ABSD rate. |
| propertyType | string | no | Type of property: an HDB flat, an Executive Condominium (ec) or private. HDB and EC purchases are also held to the MSR limit. |
| existingProperty | boolean | no | True if the borrower already owns ≥1 property (affects ABSD and LTV). |
| existingPropertiesOwned | integer | no | Count of residential properties already owned; sets the ABSD tier (0, 1 or 2+). Takes precedence over existingProperty when provided. |
| cashSavings | number | no | Cash available for downpayment, in SGD. |
| cpfOA | number | no | CPF Ordinary Account balance usable, in SGD. |
| monthlyDebt | number | no | Total existing monthly debt commitments, in SGD. |
| loanTenureYears | integer | no | Loan tenure in years. |
| interestRate | number | no | Assumed annual interest rate, as a percentage (e.g. 4.0 = 4%, not 0.04). |
| age | integer | no | Age of the (oldest) borrower. |
| stressTestRate | number | no | Override the TDSR/MSR stress-test rate (percentage); defaults to the MAS floor. |
Compute the monthly repayment, total interest and total cost for a hypothetical loan from an interest rate you supply (standard amortisation). Use this for "what-if" rates; for the real rates of a specific package the borrower has chosen, use calculate_package_schedule instead.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| loanAmount | number | yes | Amount borrowed, in SGD. |
| interestRate | number | yes | Hypothetical annual interest rate held for the whole tenure, as a percentage (e.g. 3.5 = 3.5%, not 0.035). |
| tenureYears | integer | yes | Loan tenure in years. |
Compare a borrower's existing mortgage against a new rate and report monthly savings, total savings 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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | yes | Use 'original' when supplying the loan's original terms and start date, 'remaining' when supplying the current outstanding balance and tenure left. |
| originalLoanAmount | number | no | Mode 'original': the amount first borrowed, in SGD. Today's balance is worked out from it. |
| originalTenureYears | integer | no | Mode 'original': the tenure the loan was first taken over, in years. |
| loanStartYear | integer | no | Mode 'original': calendar year the loan started, e.g. 2021. |
| loanStartMonth | integer | no | Mode 'original': month the loan started, as a number (1 = January). |
| remainingAmount | number | no | Mode 'remaining': the balance still owed today, in SGD. |
| remainingTenureYears | integer | no | Mode 'remaining': years left to repay on the current loan. |
| currentRate | number | yes | Annual rate on the existing loan, as a percentage (e.g. 4.0 = 4%). |
| newRate | number | yes | Annual rate offered on the new loan, as a percentage (e.g. 3.2 = 3.2%). |
| newTenureYears | integer | no | Tenure of the new loan, in years. Omit to keep the current loan’s remaining tenure. |
| refinancingCosts | number | no | One-off cost of switching (legal and valuation fees), in SGD; deducted from the savings and recouped in the break-even. |
| earlyRedemptionPenalty | number | no | Penalty the current bank charges for repaying within its lock-in, in SGD; treated as a switching cost like refinancingCosts. |
Compute Buyer's Stamp Duty (BSD) and Additional Buyer's Stamp Duty (ABSD) for a Singapore residential purchase, given price/value, buyer type (singaporean | pr | foreigner | entity | trust) and the number of residential properties already owned.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchaseType | string | no | How the property will be held. entity (a company) or trust applies that ABSD rate whatever buyerType says; for the individual options the rate follows buyerType. |
| propertyType | string | no | Type of residential property being bought. It does not change the result: BSD and ABSD depend on price, buyer and properties already owned. |
| price | number | yes | Purchase price or market value (whichever higher), in SGD. |
| buyerType | string | no | Residency or legal status of the buyer (citizen, permanent resident, foreigner, company or trust); sets the ABSD rate. |
| existingPropertiesOwned | integer | no | Count of residential properties the buyer already owns (sets the ABSD tier). |
Compute the stamp duty payable on a property lease from the rent and lease term.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| monthlyRent | number | yes | Monthly rent under the lease, in SGD. |
| leasePeriodMonths | integer | no | Lease term in months. |
| hasPremium | boolean | no | True if the lease carries a lump-sum premium. |
| premiumAmount | number | no | One-off premium paid on top of the rent, in SGD; only counted when hasPremium is true. |
Compute the stamp duty payable on a mortgage/loan facility.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| loanAmount | number | yes | Mortgage/loan facility amount, in SGD. |
Compute Seller's Stamp Duty (SSD) from the sale price/value and how long the property has been held.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| price | number | yes | Sale price or market value (whichever higher), in SGD. |
| purchaseDate | string | yes | Date the property was acquired (ISO date, YYYY-MM-DD). |
| saleDate | string | yes | Date the property is/was sold (ISO date, YYYY-MM-DD). |
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-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| valuation | number | yes | Expected sale price of the jointly owned property being sold, in SGD. |
| outstandingLoan | number | no | Loan still owed on the property being sold, repaid from the sale, in SGD. |
| buyer1CpfUsage | number | no | CPF (with accrued interest) buyer 1 must refund on sale, in SGD. |
| buyer2CpfUsage | number | no | CPF (with accrued interest) buyer 2 must refund on sale, in SGD. |
| buyer1Shares | number | no | Buyer 1's ownership share of the sold property, in percent; splits the cash proceeds. |
| buyer2Shares | number | no | Buyer 2's ownership share of the sold property, in percent; splits the cash proceeds. Omit to use 100 minus buyer1Shares. |
| sellerStampDuty | number | no | Seller's Stamp Duty payable on the sale, in SGD. |
| sellingLegalFees | number | no | Conveyancing fees for the sale, deducted from the proceeds, in SGD. |
| buyer1 | object | yes | Income/CPF profile of buyer 1. |
| buyer2 | object | yes | Income/CPF profile of buyer 2. |
| buy1 | object | no | The single property in the "buy one" scenario. |
| buy2Property1 | object | no | First property in the "buy two" scenario. |
| buy2Property2 | object | no | Second property in the "buy two" scenario. |
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 thi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| borrowers | array | yes | The main borrower followed by any joint borrowers; their qualifying incomes and liabilities are pooled. |
| loanTenureYears | integer | no | Loan tenure being tested, in years; checked against the longest tenure these borrowers can get. |
| proposedLoanAmount | number | yes | The loan amount being tested, in SGD. |
| benchmarkRate | number | no | MAS medium-term stress rate, as a percentage (e.g. 4.0 = 4%, not 0.04). |
| propertyType | string | no | Property type: hdb, ec or private. Sets the maximum loan tenure (35y private and EC, 30y HDB) and the lower-LTV-tier triggers. EC also carries MSR, like HDB. |
| asOfDate | string | no | Reference date (ISO YYYY-MM-DD) for age and IWAA; defaults to today. |
| ageConvention | string | no | How borrower age is computed; defaults to birth-date. The tRPC router resolves it per bank from the bank slug. |
| combinationSplit | number | no | For the pledge/show combination: fraction of the income gap covered by pledged funds; the remainder is covered by show funds. Defaults to 0.5. |
| existingHousingLoans | integer | no | Number of outstanding housing loans held. Selects the LTV tier (0 -> full, 1 -> second, 2+ -> third). Defaults to 0 when omitted. |
| targetPurchasePrice | number | no | Optional target purchase price, in SGD. When set, the result includes toReachTarget: the loan needed at the first-loan LTV and the eligible funds to reach it. |
| targetLtvCap | number | no | Optional manual LTV cap for the target loan, as a decimal (e.g. 0.6 = 60%). When set and below the applicable LTV, toReachTarget is sized at this lower LTV so the loan and unlock figures reflect a sma |
| targetLoanAmount | number | no | Optional target loan amount, in SGD. With targetPurchasePrice it sets the LTV (loan / price, capped at the applicable LTV) and takes precedence over targetLtvCap. Without a price, the price is derived |
Analyse decoupling: the cost versus benefit of transferring one co-owner's share so a borrower is freed up for another purchase (including stamp duty).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| valuation | number | yes | Current market value of the whole property, in SGD; each party's share is valued pro rata. |
| outstandingLoan | number | no | Loan still owed on the whole property, in SGD; split between the parties by share. |
| seller | object | yes | The co-owner transferring out their share. |
| buyer | object | yes | The co-owner buying out the share and refinancing. |
| newPropertyPrice | number | no | Price of a subsequent property purchase the freed-up buyer plans, in SGD. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sellingPrice | number | yes | Price the property sells for, in SGD; every deduction comes out of it. |
| outstandingLoanAmount | number | no | Home loan still owed, repaid from the sale on completion, in SGD. |
| owners | array | yes | CPF usage per owner (1 to 4 owners). Include every owner; use zeros for an owner who used no CPF. |
| agentFeePercent | number | no | Agent commission as a share of the selling price, as a percentage (e.g. 1.5 = 1.5%, not 0.015), before the 9% GST added on top. |
| legalFees | number | no | Conveyancing fees for the sale, deducted from the proceeds, in SGD. |
| miscellaneousFees | number | no | Other selling costs (repairs, valuation, admin), in SGD. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| propertyType | string | yes | Whether this is an HDB resale flat or a private property; sets the option and exercise fees, default legal and valuation fees, and stamp-duty funding. |
| purchasePrice | number | yes | Agreed purchase price, in SGD; fees, stamp duties and downpayment follow from it. |
| availableCpfOA | number | no | CPF Ordinary Account balance the buyer can put towards the purchase, in SGD; checked in cpfSufficiency. |
| availableCash | number | no | Cash the buyer can put towards the purchase, in SGD; checked in cashSufficiency. |
| cpfFirst | boolean | no | When true, fund CPF-eligible costs from a single CPF pool capped at availableCpfOA (CPF first, remainder cash), overriding the per-item cash/cpf funding sources. ABSD stays cash. |
| loanAmount | number | no | Bank loan amount, in SGD. Takes precedence over ltv; with neither, a 75% loan is assumed. |
| ltv | number | no | Loan as a fraction of the purchase price (e.g. 0.75 = 75%). Used only when loanAmount is omitted. |
| minimumCashPercent | number | no | Minimum cash component as a percentage of price: 5 or 10 on a first housing loan, 25 with one already outstanding. |
| legalFeeFunding | string | no | Pay the legal/conveyancing fee from cash or from CPF. |
| stampDutyFunding | string | no | Pay the stamp duties (BSD and ABSD) from cash or from CPF. Omit for the usual convention: HDB pays BSD from CPF, private from cash, and ABSD is paid in cash. |
| buyerType | string | no | Residency or legal status of the buyer; sets the ABSD rate. |
| existingPropertiesOwned | integer | no | Residential properties the buyer already owns; sets the ABSD tier. |
| valuationFeeOverride | number | no | Override for valuation fee, in SGD. Defaults to $120 (HDB) or $350 (private). |
| legalFeeOverride | number | no | Legal/conveyancing fee to use instead of the standard estimate ($2,000 HDB, $3,000 private), in SGD. |
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 r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchasePrice | number | yes | Agreed resale price of the HDB flat, in SGD; sets the stamp duties and downpayment. |
| loanAmount | number | no | Housing loan amount, in SGD; 0 for a cash purchase. Sets the LTV band, the minimum cash and the completion payment. |
| cpfUsage | number | no | CPF OA savings the buyer will put towards the purchase, in SGD. Drawn down in step order against the legal fee, stamp duty and completion payment, the only payments CPF may make here; each payment rep |
| optionDate | string | yes | Date the Option to Purchase is granted, e.g. 2026-08-01; the timeline starts here. |
| optionExpiryDate | string | yes | Last day to exercise the option (ISO 8601). |
| exerciseDate | string | yes | Date the option is exercised (ISO 8601). |
| completionDate | string | no | Completion date (ISO 8601). Defaults to exerciseDate + 70 calendar days if not provided. |
| buyerType | string | no | Residency or legal status of the buyer; sets the ABSD rate. |
| existingPropertiesOwned | integer | no | Residential properties the buyer already owns; sets the ABSD tier. |
| optionFee | number | no | Fee paid to the seller when the Option to Purchase is granted, in SGD; HDB caps it at $1,000. |
| exerciseFee | number | no | Fee paid to the seller when the option is exercised, in SGD. |
| legalFee | number | no | Conveyancing fee for the purchase, in SGD; part of the total outlay. |
| otherFees | number | no | Other costs (valuation, repairs, admin), in SGD. Reported alongside legal fees and stamp duty as part of the total outlay. |
| interestRate | number | no | Annual loan interest rate, as a percentage (e.g. 3.5 = 3.5%). Supply with tenureYears to get funding.monthlyInstalment; otherwise it is null. |
| tenureYears | integer | no | Loan tenure in years. Supply with interestRate to get funding.monthlyInstalment. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchasePrice | number | yes | Agreed purchase price of the private property, in SGD; sets the option fee, exercise payment, stamp duties and downpayment. |
| loanAmount | number | no | Housing loan amount, in SGD; 0 for a cash purchase. Sets the LTV band, the minimum cash and the completion payment. |
| cpfUsage | number | no | CPF OA savings the buyer will put towards the purchase, in SGD. Drawn down in step order against the legal fee and completion payment, the only payments CPF may make; each payment reports its cpf an |
| optionDate | string | yes | Option to Purchase date (ISO 8601). |
| optionExpiryDate | string | yes | Last day to exercise the option (ISO 8601). |
| exerciseDate | string | no | Exercise date (ISO 8601). Defaults to optionDate + 13 calendar days if not provided. |
| completionDate | string | no | Completion date (ISO 8601). Defaults to exerciseDate + 70 calendar days if not provided. |
| buyerType | string | no | Residency or legal status of the buyer; sets the ABSD rate. |
| existingPropertiesOwned | integer | no | Residential properties the buyer already owns; sets the ABSD tier. |
| legalFee | number | no | Conveyancing fee for the purchase, in SGD; part of the total outlay. |
| otherFees | number | no | Other costs (valuation, repairs, admin), in SGD. Reported alongside legal fees and stamp duty as part of the total outlay. |
| interestRate | number | no | Annual loan interest rate, as a percentage (e.g. 3.5 = 3.5%). Supply with tenureYears to get funding.monthlyInstalment; otherwise it is null. |
| tenureYears | integer | no | Loan tenure in years. Supply with interestRate to get funding.monthlyInstalment. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| purchasePrice | number | yes | Purchase price of the BUC property, in SGD; each stage's payment is a share of it. |
| loanQuantum | number | no | Loan as a fraction of the price (e.g. 0.75 = 75%). Used only when loanAmount is omitted; with neither, 75% is assumed. |
| loanAmount | number | no | Loan amount in SGD. Takes precedence over loanQuantum. |
| tenureYears | integer | yes | Loan tenure in years, counted from the first drawdown. |
| otpDate | string | yes | Option to Purchase date (ISO 8601). |
| topDate | string | yes | Expected Temporary Occupation Permit date (ISO 8601). |
| cscOffsetMonths | integer | no | Months from TOP to CSC (default 12). |
| rateMode | string | no | How each year's rate is set: 'fixed' takes it from ratePerYear; 'floating' uses referenceRate plus that year's spreadPerYear and ignores ratePerYear. |
| ratePerYear | array | yes | Annual interest rates by year as percentages (e.g. [2.5, 2.5, 3.0, 3.5, 3.5, 3.5] for years 1-5 and thereafter). Last value applies to all subsequent years. |
| referenceRate | number | no | Floating mode only: the benchmark rate such as 3M SORA, as a percentage (e.g. 3.5 = 3.5%), to which each year's spread is added. Omitted, it is taken as 0, so the rate is the spread alone. Ignored in |
| spreadPerYear | array | no | Spread per year for floating mode, as percentages. Last value applies to all subsequent years. |
| stages | array | no | Custom stage schedule. Defaults to the standard 10-stage BUC schedule. Percentages must sum to 100. |
| minimumCashPercent | number | no | Minimum cash downpayment as a percentage of the purchase price (e.g. 5 = 5%); CPF or cash covers the rest of the equity. |
| availableCpfOA | number | no | Available CPF Ordinary Account balance, in SGD. When set, each stage’s equity CPF portion is capped at the remaining OA balance and the rest is funded by cash. When omitted, CPF covers all equity abov |
| prepayments | array | no | Optional list of prepayments. |
| prepaymentOutcome | string | no | What happens after a prepayment: lower instalment or shorter tenure. |
| lockInMonths | integer | no | Lock-in period in months from first drawdown. |
| prepaymentPenaltyPercent | number | no | Penalty as a percentage of prepaid amount if within lock-in period. |
| includeSchedule | boolean | no | If true, include the full month-by-month amortisation schedule in output. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Cashew or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| recommend_packages | untrusted-input | untrusted-input: keyword "download" |
| compare_packages | untrusted-input | untrusted-input: keyword "download" |
| list_banks | no tags | |
| get_property_valuation | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| calculate_package_schedule | no tags | |
| list_market_indices | no tags | |
| get_index_quotes | no tags | |
| calculate_affordability | no tags | |
| calculate_required_income | no tags | |
| calculate_mortgage_repayment | no tags | |
| calculate_refinance_savings | no tags | |
| calculate_residential_stamp_duty | no tags | |
| calculate_rental_stamp_duty | no tags | |
| calculate_mortgage_stamp_duty | no tags | |
| calculate_seller_stamp_duty | no tags | |
| analyze_sell_one_buy_two | no tags | |
| check_eligibility | no tags | |
| analyze_decoupling | no tags | |
| calculate_sales_proceeds | no tags | |
| calculate_purchase_cost | no tags | |
| calculate_hdb_resale_timeline | no tags | |
| calculate_private_resale_timeline | no tags | |
| calculate_progressive_payment | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.4.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Cashew can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.