Skip to content

Cashew MCP

sg.cashew/mcpcashew.sgstreamable-httpv1.0.0Scanned

Singapore mortgage rates, bank packages and calculators (23 read-only tools)

23 tools: 2 do something that can't be undone, 13 change things and 8 only read.

Tools: 0 delete, 2 irreversible, 13 write, 8 read.
  • Reads private data · 0
  • Reads text others write · 1
  • Can send data out · 0
  • 6 findings

Anlyon alternative

15 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

23 tools

Can't be undone 2Claude Code: ask
  • calculate_progressive_paymentModel the monthly instalment profile of a Singapore Building Under Construction (BUC) property loan across progressive payment stages.1 finding

    Why it is in this group

    • The name "calculate_progressive_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_progressive_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_progressive_payment" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Progressive payment (BUC) calculator
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_purchase_costCalculate 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…1 finding

    Why it is in this group

    • The name "calculate_purchase_cost" says "purchase": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_purchase_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_purchase_cost" says "purchase": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Purchase cost & funding breakdown
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 13Claude Code: ask
  • calculate_affordabilityEstimate the maximum loan and property price a borrower can afford from income, existing debt commitments and tenure, applying Singapore TDSR/MSR limits.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: Affordability calculator
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_hdb_resale_timelineGenerate a step-by-step dated timeline for an HDB resale purchase, from securing the Option to Purchase through to completion and key collection.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_hdb_resale_timeline" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a step-by-step dated timeline for an HDB resale purchase, from securing the Option to Purchase through to completion and key collection. Each step shows what happens, the date, and any payment due.

    Annotations the server declares

    • title: HDB resale purchase timeline
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_mortgage_repaymentCompute the monthly repayment, total interest and total cost for a hypothetical loan from an interest rate you supply (standard amortisation).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Mortgage repayment calculator
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_mortgage_stamp_dutyCompute the stamp duty payable on a mortgage/loan facility.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Compute the stamp duty payable on a mortgage/loan facility.

    Annotations the server declares

    • title: Mortgage stamp duty
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_package_scheduleCompute the amortisation schedule for a SPECIFIC mortgage package using that package's real effective rates.1 finding

    Why it is in this group

    • The name "calculate_package_schedule" says "schedule": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_package_schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_package_schedule" says "schedule": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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 returns the full canonical schedule: loan facts (`context`), the per-tier breakdown (`periods`), rate structure, totals, and the per-year schedule (`annual`). The month-by-month schedule (`monthly`) is empty unless you pass `includeMonthly: true`. To also generate downloadable files, pass `formats` (`["pdf"]`, `["xlsx"]`, or both) — the public URLs come back under `documents` (null otherwise). Optional `firstPaymentDate` (YYYY-MM-DD, defaults to next month) dates the schedule.

    Annotations the server declares

    • title: Calculate package payment schedule
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_private_resale_timelineGenerate 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.1 finding

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "calculate_private_resale_timeline" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Private resale purchase timeline
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_rental_stamp_dutyCompute the stamp duty payable on a property lease from the rent and lease term.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Compute the stamp duty payable on a property lease from the rent and lease term.

    Annotations the server declares

    • title: Rental stamp duty
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_required_incomeWork out the gross monthly income needed to support a target property price under Singapore TDSR/MSR limits.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: Required-income calculator (reverse affordability)
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_residential_stamp_dutyCompute 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…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Residential stamp duty (BSD + ABSD)
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_sales_proceedsWork 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 t…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Sales proceeds calculator
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_seller_stamp_dutyCompute Seller's Stamp Duty (SSD) from the sale price/value and how long the property has been held.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Compute Seller's Stamp Duty (SSD) from the sale price/value and how long the property has been held.

    Annotations the server declares

    • title: Seller's Stamp Duty (SSD)
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • check_eligibilityRun the regulatory affordability gate for up to four borrowers.1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_eligibility" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run the regulatory affordability gate for up to four 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.

    Annotations the server declares

    • title: Eligibility checker (TDSR / MSR)
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • recommend_packagesRank Singapore mortgage packages for a borrower.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Rank Singapore mortgage packages for a borrower. Returns up to 3 LLM-ranked picks with per-package reasoning, the 3 lowest-rate options, and a lookup of full package details. Core inputs (gather these first; ask the borrower if missing — do not guess): `dealKind` (PURCHASE | REFINANCE); `currentBankId` (required only for REFINANCE — use `list_banks` to resolve the lender name into its UUID); `propertyType` (HDB | PRIVATE | COMMERCIAL); `propertyStatus`; `loanAmount`. `propertyStatus` depends on `propertyType` — only these pairings are valid: HDB → COMPLETED (resale) or BTO (Build-To-Order, new); PRIVATE → COMPLETED (ready-built) or BUC (Built-Under-Construction, new); COMMERCIAL → OWNEROCCUPIED, INVESTMENT or PERSONAL. Do not mix across types (e.g. HDB + BUC or PRIVATE + BTO are invalid). Optional inputs (only refine the ranking): `ratesType` (FIXED | FLOATING) and `userContext` (free-text borrower priorities, timeline, bank relationships, citizenship, etc.). Pass `formats: ["pdf"]` to also generate a one-page comparison document of the recommended set (with per-package verdicts); the download URL comes back under `documents`. Optional `tenureYears` (default 25) sets the document's instalment assumptions. Stateless: if any input or preference changes, call this tool again with the full updated set — never infer an updated answer from a previous response.

    Annotations the server declares

    • title: Recommend mortgage packages
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Only reads 8Show 8 read-only tools
  • analyze_decouplingAnalyse decoupling: the cost versus benefit of transferring one co-owner's share so a borrower is freed up for another purchase (including stamp duty).No findings

    Why it is in this group

    • The name "analyze_decoupling" says "analyze": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Decoupling analysis
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • analyze_sell_one_buy_twoAnalyse a 'sell one, buy two' restructuring: the costs, loan sizing and stamp-duty impact of selling one property to purchase two.No findings

    Why it is in this group

    • The name "analyze_sell_one_buy_two" says "analyze": a word for reading.
    Description, as the server wrote it
    Analyse a 'sell one, buy two' restructuring: the costs, loan sizing and stamp-duty impact of selling one property to purchase two.

    Annotations the server declares

    • title: Sell-one-buy-two analysis
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • calculate_refinance_savingsCompare a borrower's existing mortgage against a new rate and report monthly savings, total savings and break-even months.No findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Refinance savings calculator
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • compare_packagesCompare 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 fle…No findings

    Why it is in this group

    • The name "compare_packages" says "compare": a word for reading.
    Description, as the server wrote it
    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`/`propertyStatus` only label the report header. Pass `formats: ["pdf"]` to also render the one-page comparison document — the download URL comes back under `documents.pdfUrl` (null otherwise). This comparison has no verdict/recommendation section by default because it carries no borrower context; for a personalised ranking with verdicts, use `recommend_packages` (optionally with `formats`). The optional `verdicts`/`recommendedId` inputs only carry over the reasoning from a prior `recommend_packages` call — never author them.

    Annotations the server declares

    • title: Compare mortgage packages
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_index_quotesReturn historical quotes (rate by date) for a market benchmark index such as SORA.No findings

    Why it is in this group

    • The name "get_index_quotes" says "get": a word for reading.
    Description, as the server wrote it
    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` (ISO dates) narrow the range; results are paginated. Quote `rate` values are decimal fractions (0.0356 = 3.56% p.a.).

    Annotations the server declares

    • title: Get market index quotes
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_property_valuationIndicative SPML valuation for a Singapore unit.Reads text others writeNo findings

    Why it is in this group

    • The name "get_property_valuation" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    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 answer, not an error.

    Annotations the server declares

    • title: Get indicative property valuation
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • list_banksList active banks (id + name), sorted by name.No findings

    Why it is in this group

    • The name "list_banks" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List banks
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_market_indicesList market benchmark indices (id, slug, name, currency), sorted by slug.No findings

    Why it is in this group

    • The name "list_market_indices" says "list": a word for reading.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: List market indices
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

6 warn
  • The server marks "calculate_package_schedule" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_package_schedule" says "schedule": a word for a change.

    What this check looks for
  • The server marks "check_eligibility" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

    What this check looks for
  • The server marks "calculate_purchase_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_purchase_cost" says "purchase": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "calculate_hdb_resale_timeline" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "calculate_private_resale_timeline" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.

    What this check looks for
  • The server marks "calculate_progressive_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "calculate_progressive_payment" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http cashew https://www.cashew.sg/mcp
claude mcp add --transport http cashew https://www.cashew.sg/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__cashew__compare_packages",
      "mcp__cashew__list_banks",
      "mcp__cashew__get_property_valuation",
      "mcp__cashew__list_market_indices",
      "mcp__cashew__get_index_quotes",
      "mcp__cashew__calculate_refinance_savings",
      "mcp__cashew__analyze_sell_one_buy_two",
      "mcp__cashew__analyze_decoupling"
    ],
    "ask": [
      "mcp__cashew__recommend_packages",
      "mcp__cashew__calculate_package_schedule",
      "mcp__cashew__calculate_affordability",
      "mcp__cashew__calculate_required_income",
      "mcp__cashew__calculate_mortgage_repayment",
      "mcp__cashew__calculate_residential_stamp_duty",
      "mcp__cashew__calculate_rental_stamp_duty",
      "mcp__cashew__calculate_mortgage_stamp_duty",
      "mcp__cashew__calculate_seller_stamp_duty",
      "mcp__cashew__check_eligibility",
      "mcp__cashew__calculate_sales_proceeds",
      "mcp__cashew__calculate_purchase_cost",
      "mcp__cashew__calculate_hdb_resale_timeline",
      "mcp__cashew__calculate_private_resale_timeline",
      "mcp__cashew__calculate_progressive_payment"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as cashew. Review it before you use it.

Capability tags behind 1 rule
  • mcp__cashew__get_property_valuation untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/sg.cashew/mcp/verify?hash=0d306fc3bb817afdcecd36cd5d75214788758e799bbdd4eb47a3a910c36eb681" | jq -e '.changed == false'

Pinned hash 0d306fc3bb81, from Oct 28, 2026, 20:19 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/sg.cashew/mcp/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for sg.cashew/mcp
[![anlyon.dev](https://anlyon.dev/badge/sg.cashew/mcp.svg)](https://anlyon.dev/servers/sg.cashew/mcp)

Source: MCP Registry · repository. Synced Oct 28, 2026, 20:18 UTC.