Arthr — Australian home loans

Real Australian lender serviceability, plus repayments, borrowing power and stamp duty.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
94%
Vollständigkeit des Schemas
100%
Qualität der Benennung
83%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'estimate_repayments' description lacks action verbin estimate_repayments

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~5,779Tokens (Tool-Definitionen)
~7.5 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (4.51% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mcp": {
      "url": "https://www.arthr.com.au/api/mcp"
    }
  }
}

Remote-Endpunkte

https://www.arthr.com.au/api/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (8)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢estimate_repayments(loanAmount, interestRate, termYears)

Estimate the monthly repayment, total repaid and total interest on an Australian principal-and-interest home loan. Use this when someone asks what a loan would cost them each month, or how much interest they'd pay over the life of a loan.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "loanAmount": {
      "type": "number",
      "description": "Loan amount in AUD.",
      "minimum": 1000,
      "maximum": 50000000
    },
    "interestRate": {
      "type": "number",
      "description": "Annual interest rate as a percentage, e.g. 6.2 for 6.2% p.a.",
      "minimum": 0,
      "maximum": 25
    },
    "termYears": {
      "type": "number",
      "description": "Loan term in years. Defaults to 30.",
      "minimum": 1,
      "maximum": 40
    }
  },
  "required": [
    "loanAmount",
    "interestRate"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "monthlyRepayment": {
      "type": "number",
      "description": "Monthly P&I repayment, AUD."
    },
    "totalRepaid": {
      "type": "number",
      "description": "Total repaid over the full term, AUD."
    },
    "totalInterest": {
      "type": "number",
      "description": "Total interest paid over the term, AUD."
    },
    "loanAmount": {
      "type": "number"
    },
    "interestRate": {
      "type": "number"
    },
    "termYears": {
      "type": "number"
    }
  },
  "required": [
    "monthlyRepayment",
    "totalRepaid",
    "totalInterest"
  ]
}
🟢estimate_borrowing_power(grossAnnualIncome, monthlyExpenses, monthlyDebtRepayments, creditCardLimits, termYears, ...)

Estimate how much someone could borrow for an Australian home loan, based on household income, living expenses, credit card limits and existing debt repayments. Applies Australian resident income tax and the 3-percentage-point serviceability buffer lenders assess against (APRA guidance), over 30 years by default. Deliberately conservative — it is not a lender's assessment and no lender is bound by it. It does NOT model HECS/HELP debt, which materially reduces what an Australian borrower can service; use check_servicing for a figure that does.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "grossAnnualIncome": {
      "type": "number",
      "description": "COMBINED household income before tax, in AUD per year — both incomes added together for a couple. Note this differs from check_servicing, which wants one applicant's income with a partner supplied separately; carrying a figure between the two without adjusting it will either double a second income or lose it.",
      "minimum": 0,
      "maximum": 10000000
    },
    "monthlyExpenses": {
      "type": "number",
      "description": "Living costs in AUD per month — food, transport, utilities, insurance, childcare, subscriptions. Convert carefully: a weekly figure is x52/12, a fortnightly one is x26/12. EXCLUDE rent or mortgage payments they would stop making on buying, and exclude anything passed in the other arguments. Include rent only when they will still be paying it after settlement. IMPORTANT: unlike a lender, this estimate applies NO minimum expense benchmark — it takes the figure as given. An unrealistically low number therefore inflates the answer here while changing nothing at a real lender, which is the main way this tool comes out far above check_servicing. If someone's stated costs look low for their household, that gap is the reason.",
      "minimum": 0,
      "maximum": 200000
    },
    "monthlyDebtRepayments": {
      "type": "number",
      "description": "Repayments on car and personal loans, AUD per month. Pass credit cards as creditCardLimits instead, not as a repayment. Defaults to 0.",
      "minimum": 0,
      "maximum": 200000
    },
    "creditCardLimits": {
      "type": "number",
      "description": "Total credit limit across all cards, AUD — the limit, not the balance and not the monthly payment. Lenders assess the limit whether or not the card is cleared each month, so a card paid off in full still reduces borrowing power, and a forgotten card at zero balance reduces it just as much. Defaults to 0.",
      "minimum": 0,
      "maximum": 1000000
    },
    "termYears": {
      "type": "number",
      "description": "Term to assess over. Defaults to 30. Pass the remaining term for someone refinancing who is keeping their original end date — assessing them over a fresh 30 years overstates what they can service.",
      "minimum": 1,
      "maximum": 40
    },
    "interestRate": {
      "type": "number",
      "description": "The annual rate the loan would sit at, as a percentage, e.g. 6.2. The serviceability buffer is added to this automatically.",
      "minimum": 0,
      "maximum": 25
    }
  },
  "required": [
    "grossAnnualIncome",
    "monthlyExpenses",
    "interestRate"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "borrowingPower": {
      "type": "number",
      "description": "Estimated maximum loan, assessed at the buffered rate, AUD."
    },
    "borrowingPowerAtRate": {
      "type": "number",
      "description": "What the same surplus would fund at the actual rate, with no buffer, AUD."
    },
    "monthlyRepayment": {
      "type": "number",
      "description": "Monthly repayment on the assessed loan at the actual rate, AUD."
    },
    "assessmentRate": {
      "type": "number",
      "description": "Rate used to test serviceability (actual rate + buffer), % p.a."
    },
    "monthlySurplus": {
      "type": "number",
      "description": "Income left after tax, living costs and existing repayments, AUD per month."
    },
    "cardCommitment": {
      "type": "number",
      "description": "What the credit card limits cost per month in assessed commitment, AUD."
    },
    "surplusFactor": {
      "type": "number",
      "description": "Share of the surplus actually lent against. Stated rather than folded in silently, so the annuity reconciles without being reverse-engineered."
    },
    "assessmentBuffer": {
      "type": "number"
    },
    "termYears": {
      "type": "number"
    },
    "modelsHecs": {
      "type": "boolean",
      "description": "Always false. HECS/HELP is not in this model — use check_servicing."
    }
  },
  "required": [
    "borrowingPower",
    "monthlyRepayment",
    "assessmentRate",
    "monthlySurplus"
  ]
}
🟢estimate_refinance_savings(loanAmount, currentRate, newRate, termYears)

Compare an existing home loan rate against a lower one and estimate the monthly and whole-of-term saving. Use this when someone asks whether refinancing is worth it, or what dropping their rate would save them. Both rates are arguments — this tool does not quote or assume a market rate.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "loanAmount": {
      "type": "number",
      "description": "Outstanding loan balance in AUD.",
      "minimum": 1000,
      "maximum": 50000000
    },
    "currentRate": {
      "type": "number",
      "description": "The rate they're on now, as a percentage, e.g. 6.8.",
      "minimum": 0,
      "maximum": 25
    },
    "newRate": {
      "type": "number",
      "description": "The rate being compared against, as a percentage, e.g. 6.2.",
      "minimum": 0,
      "maximum": 25
    },
    "termYears": {
      "type": "number",
      "description": "Years remaining on the loan. Defaults to 30.",
      "minimum": 1,
      "maximum": 40
    }
  },
  "required": [
    "loanAmount",
    "currentRate",
    "newRate"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "currentRepayment": {
      "type": "number",
      "description": "Monthly repayment at the current rate, AUD."
    },
    "newRepayment": {
      "type": "number",
      "description": "Monthly repayment at the new rate, AUD."
    },
    "monthlySaving": {
      "type": "number",
      "description": "Monthly difference, AUD. Zero if the new rate is higher."
    },
    "totalSaving": {
      "type": "number",
      "description": "Saving over the full remaining term, AUD."
    },
    "loanAmount": {
      "type": "number"
    },
    "currentRate": {
      "type": "number"
    },
    "newRate": {
      "type": "number"
    },
    "termYears": {
      "type": "number"
    }
  },
  "required": [
    "currentRepayment",
    "newRepayment",
    "monthlySaving",
    "totalSaving"
  ]
}
🟢estimate_refinance_break_even(loanAmount, currentRate, newRate, switchingCosts, termYears)

Work out how many months it takes for a refinance to pay for itself once switching costs are counted, and what the net saving is after them. Call this rather than estimate_refinance_savings when someone is deciding whether a switch is worth doing, not just how much a lower rate saves. Switching costs are an argument — this tool does not assume a figure, because they vary by lender and by state and most lenders don't publish theirs. Use lookup_discharge_process for the lender-stated discharge fee where there is one. This models a variable loan: if they are on a fixed rate, the break cost belongs in switchingCosts and usually decides the answer on its own.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "loanAmount": {
      "type": "number",
      "description": "Outstanding loan balance in AUD.",
      "minimum": 1000,
      "maximum": 50000000
    },
    "currentRate": {
      "type": "number",
      "description": "The rate they're on now, as a percentage, e.g. 6.8.",
      "minimum": 0,
      "maximum": 25
    },
    "newRate": {
      "type": "number",
      "description": "The rate being switched to, as a percentage, e.g. 6.2.",
      "minimum": 0,
      "maximum": 25
    },
    "switchingCosts": {
      "type": "number",
      "description": "Total one-off cost of switching in AUD. ASK WHETHER THEY ARE ON A FIXED RATE FIRST. Breaking a fixed term costs thousands to tens of thousands and dwarfs everything else here — a $14,000 break fee turns a nine-month break-even into seven years and reverses the recommendation. It is the figure that decides the answer and the one nobody volunteers, because people think of their loan by its rate, not its term. Then add the current lender's discharge fee, the new lender's application and settlement fees, and state mortgage registration and deregistration. Required: there is no sensible default and a guessed one changes the answer.",
      "minimum": 0,
      "maximum": 200000
    },
    "termYears": {
      "type": "number",
      "description": "Years remaining on the loan. Defaults to 30.",
      "minimum": 1,
      "maximum": 40
    }
  },
  "required": [
    "loanAmount",
    "currentRate",
    "newRate",
    "switchingCosts"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "monthlySaving": {
      "type": "number",
      "description": "Monthly difference, AUD. Zero if the new rate is higher."
    },
    "switchingCosts": {
      "type": "number",
      "description": "The one-off cost supplied, AUD."
    },
    "breakEvenMonths": {
      "type": [
        "number",
        "null"
      ],
      "description": "Months until the accumulated saving covers the switching cost. Null when the new rate is no better, in which case it never breaks even."
    },
    "breaksEvenWithinTerm": {
      "type": "boolean"
    },
    "netSavingFirstYear": {
      "type": "number",
      "description": "Saving over 12 months less switching costs, AUD. Negative early on."
    },
    "netSavingOverTerm": {
      "type": "number",
      "description": "Saving over the remaining term less switching costs, AUD."
    },
    "currentRepayment": {
      "type": "number"
    },
    "newRepayment": {
      "type": "number"
    },
    "totalSaving": {
      "type": "number"
    },
    "loanAmount": {
      "type": "number"
    },
    "currentRate": {
      "type": "number"
    },
    "newRate": {
      "type": "number"
    },
    "termYears": {
      "type": "number"
    }
  },
  "required": [
    "monthlySaving",
    "switchingCosts",
    "breakEvenMonths",
    "netSavingOverTerm"
  ]
}
🟢estimate_equity_and_lvr(propertyValue, loanBalance, situation)

Work out loan-to-value ratio, equity, and — the part that matters — how much of that equity is actually usable. Value minus balance is not what a borrower can borrow: lenders generally release to 80% of the property's value, so the usable figure is often far smaller than the raw one. Set situation="purchase" when the person does not own the property yet and loanBalance is the loan they would take out; the answer is then about their deposit and whether mortgage insurance applies, and "usable equity" is not reported, because for a buyer it is a number that does not exist.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "propertyValue": {
      "type": "number",
      "description": "What the property is worth in AUD — or the purchase price, for a purchase.",
      "minimum": 1000,
      "maximum": 100000000
    },
    "loanBalance": {
      "type": "number",
      "description": "What is still owing in AUD — or, for a purchase, the loan they would take out.",
      "minimum": 0,
      "maximum": 100000000
    },
    "situation": {
      "type": "string",
      "description": "'owner' (default) — they own the property and this is the balance on it. 'purchase' — they are buying, and loanBalance is the proposed loan. Get this right: treating a buyer as an owner reports usable equity computed from a deposit they were never asked about, and the answer looks reasonable while being nonsense.",
      "enum": [
        "owner",
        "purchase"
      ]
    }
  },
  "required": [
    "propertyValue",
    "loanBalance"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "equity": {
      "type": [
        "number",
        "null"
      ],
      "description": "Property value less the loan balance, AUD. Not what can be borrowed. Null for a purchase, where the person owns nothing yet — a strict client must accept the null rather than treat it as a failure."
    },
    "lvr": {
      "type": "number",
      "description": "Loan as a PERCENTAGE of value: 85 means 85%, not 0.85. Note that check_servicing reports the same ratio as a fraction, so do not carry one into the other without converting."
    },
    "usableEquity": {
      "type": [
        "number",
        "null"
      ],
      "description": "What could generally be released without mortgage insurance, AUD — 80% of value less the balance. Zero when already at or above 80%."
    },
    "shortfallToThreshold": {
      "type": "number",
      "description": "How far above the 80% threshold the loan sits, AUD. Zero when below."
    },
    "lmiLikely": {
      "type": "boolean",
      "description": "Whether mortgage insurance is likely in play."
    },
    "lmiThresholdLvr": {
      "type": "number"
    },
    "propertyValue": {
      "type": "number"
    },
    "loanBalance": {
      "type": "number"
    }
  },
  "required": [
    "equity",
    "lvr",
    "usableEquity",
    "lmiLikely"
  ]
}
🟢estimate_stamp_duty(price, state, buyerType)

Estimate stamp (transfer) duty on an Australian residential property purchase, for any state or territory, including first-home and owner-occupier concessions. Duty scales differ in every jurisdiction and change at each state budget, so this is the tool to call rather than working duty out from memory.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "price": {
      "type": "number",
      "description": "Purchase price in AUD.",
      "minimum": 0,
      "maximum": 100000000
    },
    "state": {
      "type": "string",
      "description": "State or territory the property is in.",
      "enum": [
        "NSW",
        "VIC",
        "QLD",
        "WA",
        "SA",
        "TAS",
        "ACT",
        "NT"
      ]
    },
    "buyerType": {
      "type": "string",
      "description": "Buyer situation. 'first-home' applies first-home exemptions and concessions where the state offers them; 'owner-occupier' applies standing owner-occupier rates; 'investor' applies the general scale. Defaults to owner-occupier.",
      "enum": [
        "first-home",
        "owner-occupier",
        "investor"
      ]
    }
  },
  "required": [
    "price",
    "state"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "duty": {
      "type": "number",
      "description": "Duty payable for this buyer type, AUD."
    },
    "standardDuty": {
      "type": "number",
      "description": "Full duty before any concession, AUD."
    },
    "concession": {
      "type": "number",
      "description": "Amount saved by the concession, AUD."
    },
    "concessionLabel": {
      "type": [
        "string",
        "null"
      ],
      "description": "Name of the concession applied, or null if none."
    },
    "effectiveRate": {
      "type": "number",
      "description": "Duty as a percentage of the price."
    },
    "price": {
      "type": "number"
    },
    "state": {
      "type": "string"
    },
    "buyerType": {
      "type": "string"
    }
  },
  "required": [
    "duty",
    "standardDuty",
    "concession",
    "effectiveRate"
  ]
}
🟢lookup_discharge_process(lender)

Look up how to discharge a mortgage with a specific Australian lender — the name of the form, a link to it on the lender's own site, where the completed form is submitted, the lender-stated processing time, the discharge fee where the lender publishes one, and the phone number. This is the first step in refinancing away from a lender or selling. Every field is taken from the lender's own published material and dated; where a lender publishes no timeframe or fee, that is reported rather than guessed. Call this instead of describing a discharge process from memory.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lender": {
      "type": "string",
      "description": "The lender. Accepts the slug, the full or legal name, or the shorthand — \"nab\", \"NAB\" and \"National Australia Bank\" all resolve to the same row. Covered: Commonwealth Bank, ANZ, Westpac, NAB, St.George Bank, Bank of Melbourne, Bankwest, ING, Ubank, Bank of Queensland, Macquarie Bank, BankSA, Suncorp Bank, ME Bank, Bendigo Bank, AMP Bank.",
      "examples": [
        "cba",
        "anz",
        "westpac",
        "nab",
        "stgeorge",
        "bank-of-melbourne",
        "bankwest",
        "ing",
        "ubank",
        "boq",
        "macquarie",
        "banksa",
        "suncorp",
        "me-bank",
        "bendigo",
        "amp"
      ]
    }
  },
  "required": [
    "lender"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "lender": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "formName": {
      "type": "string",
      "description": "The lender's own name for the form."
    },
    "formKind": {
      "type": "string",
      "enum": [
        "pdf",
        "online",
        "page",
        "phone"
      ],
      "description": "How the form is obtained. 'phone' means the lender publishes no form at all and you have to ring and ask for it."
    },
    "formUrl": {
      "type": "string",
      "description": "Link to the form on the lender's own domain."
    },
    "submitTo": {
      "type": "string",
      "description": "Where the completed form goes."
    },
    "businessDays": {
      "type": [
        "number",
        "null"
      ],
      "description": "Lender-stated minimum processing time, or null if they publish none."
    },
    "feeAud": {
      "type": [
        "number",
        "null"
      ],
      "description": "Discharge fee in AUD, only where the lender publishes it. Null for almost every lender — the fee sits in the loan contract."
    },
    "phone": {
      "type": "string"
    },
    "note": {
      "type": "string",
      "description": "Anything specific about this lender's process."
    },
    "source": {
      "type": "string",
      "description": "The lender's own page about discharging."
    },
    "verified": {
      "type": "string",
      "description": "ISO date this row was last checked against the source."
    }
  },
  "required": [
    "lender",
    "formName",
    "formKind",
    "formUrl",
    "submitTo",
    "phone",
    "verified"
  ]
}
🟢check_servicing(grossAnnualIncome, monthlyExpenses, propertyValue, loanAmount, partnerAnnualIncome, ...)

Run a REAL serviceability calculation across a panel of Australian lenders and get back, per lender, how much they would lend, whether they would lend at all, the rate they'd assess at, and — where they decline — why. This is not an estimate: it is the same calculation a broker runs. Use it once you have income, monthly living costs and a property value; prefer estimate_borrowing_power before that, for a fast rough figure. It is the only tool here that models HECS/HELP debt, and the only one that can tell you a lender says no. It takes seconds rather than milliseconds, so call it when the answer matters, not to explore.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "grossAnnualIncome": {
      "type": "number",
      "description": "The APPLICANT'S OWN income before tax, AUD per year — not the household total. This differs from estimate_borrowing_power, which takes a combined figure. Passing a household number here and also setting partnerAnnualIncome counts the second income twice and overstates capacity badly. One person's income here; a second applicant goes in partnerAnnualIncome, and only for a genuinely joint application.",
      "minimum": 0,
      "maximum": 10000000
    },
    "monthlyExpenses": {
      "type": "number",
      "description": "Living costs per MONTH, AUD — food, transport, utilities, insurance, childcare, subscriptions. Australians almost always quote this weekly or fortnightly, so convert carefully: a weekly figure is x52/12 and a fortnightly one is x26/12. Multiplying by 4 or 2 understates the year by a month and inflates capacity. EXCLUDE rent or a mortgage they would stop paying after settlement, and exclude anything passed in another argument — card limits and loan repayments are counted separately and would be double-counted. NOTE: lenders apply a minimum household expense benchmark, so a figure below it changes nothing — a household of two with two children sees no difference between $1,600 and $4,500. Do not report a low figure as the reason for a good result; below the benchmark it is not the reason for anything.",
      "minimum": 0,
      "maximum": 200000
    },
    "propertyValue": {
      "type": "number",
      "description": "The property's value, or the purchase price being considered, AUD. Required for a real servicing run — the panel can't be asked without it.",
      "minimum": 0,
      "maximum": 100000000
    },
    "loanAmount": {
      "type": "number",
      "description": "The loan being SOUGHT, AUD — not an existing balance, which is what the refinance tools mean by the same name. Supply it when testing whether a specific loan is serviceable. Omitting it does NOT ask an open question — upstream assumes a loan of about 80% of the property value and reports whether THAT services, which can read as nine lenders declining when nobody asked about a specific loan. Read max_capacity per lender for how much they would actually lend.",
      "minimum": 0,
      "maximum": 100000000
    },
    "partnerAnnualIncome": {
      "type": "number",
      "description": "A SECOND BORROWER'S income before tax, AUD per year — someone who will be named on the loan and legally liable for it. Set it ONLY for a genuinely joint application. It is not for a parent helping with repayments, a guarantor, a housemate, or anyone contributing money without going on the loan: none of those are income a lender assesses, and adding them here can turn 'no lender will lend' into 'every lender will', which is the most damaging wrong answer this tool can give. If someone is helping but not borrowing, leave this out and say a guarantor arrangement is a question for a broker.",
      "minimum": 0,
      "maximum": 10000000
    },
    "creditCardLimits": {
      "type": "number",
      "description": "Total credit limit across all cards, AUD — the limit, not the balance. Lenders assess the limit whether or not the card is cleared monthly.",
      "minimum": 0,
      "maximum": 1000000
    },
    "otherMonthlyRepayments": {
      "type": "number",
      "description": "Car and personal loan repayments, AUD per month.",
      "minimum": 0,
      "maximum": 200000
    },
    "hecsBalance": {
      "type": "number",
      "description": "Outstanding HECS/HELP debt, AUD. Worth asking for even when it seems small: it is the most common Australian debt and it moves the answer by tens of thousands. The calculator tools cannot model it; this can.",
      "minimum": 0,
      "maximum": 500000
    },
    "dependants": {
      "type": "number",
      "description": "Number of dependent children.",
      "minimum": 0,
      "maximum": 20
    },
    "postcode": {
      "type": "string",
      "description": "Australian postcode of the property. Worth supplying: it determines the state, and stamp duty differs by more than a percentage point between them — a five-figure difference in the cash needed at settlement. Without it, or without state, duty is estimated at a flat rate and the answer says so."
    },
    "state": {
      "type": "string",
      "description": "State or territory of the property. Use when known — it is more direct than a postcode and takes precedence over one. Drives stamp duty and first-home concessions.",
      "enum": [
        "NSW",
        "VIC",
        "QLD",
        "WA",
        "SA",
        "TAS",
        "ACT",
        "NT"
      ]
    },
    "propertyPurpose": {
      "type": "string",
      "description": "Whether they'll live in it or rent it out.",
      "enum": [
        "owner_occupied",
        "investment"
      ]
    },
    "expectedRentalIncome": {
      "type": "number",
      "description": "Annual gross rent, AUD, for an investment purchase. KNOWN LIMITATION: this is passed to the lender panel but does not currently move the answer — $200,000 of rent changes capacity by zero. The value reaches the panel correctly, so the gap is on their side and is being chased. Until it is resolved, do not tell an investor that their expected rent has been taken into account, because it has not, and a real lender would count most of it.",
      "minimum": 0,
      "maximum": 5000000
    },
    "firstHomeBuyer": {
      "type": "boolean",
      "description": "Whether this is their first home. Worth asking rather than assuming: with a state supplied it can remove stamp duty entirely — a NSW first home buyer under $800,000 pays nil where anyone else pays around $31,000 — and that lands in the cash they need on settlement day. Leaving it out quotes them the full duty."
    },
    "focus": {
      "type": "string",
      "description": "Which question to shape the answer around. 'capacity' — how much could they borrow. 'affordability' — can they afford a specific price. 'rates' — what rate the panel offers them. 'repayments' — what it would cost monthly. Defaults to capacity.",
      "enum": [
        "capacity",
        "affordability",
        "rates",
        "repayments"
      ]
    },
    "targetPrice": {
      "type": "number",
      "description": "With focus=affordability, the purchase price being tested.",
      "minimum": 0,
      "maximum": 100000000
    },
    "deposit": {
      "type": "number",
      "description": "Deposit available, AUD. Borrowing capacity is a serviceability question and does not depend on it, so this never changes what a lender will lend — but supply it anyway and the answer will also say what price that buys, which is usually the question behind the question.",
      "minimum": 0,
      "maximum": 100000000
    }
  },
  "required": [
    "grossAnnualIncome",
    "monthlyExpenses",
    "propertyValue"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "description": "Always 'lender_panel' — the result came from a live panel of lenders rather than from arthr's own model."
    },
    "lenders": {
      "type": "array",
      "description": "One entry per lender. `does_service` false with a `fail_reason` is the most useful thing here — it says what to fix, not just that the answer was no. Present for focus=capacity, rates and repayments. ABSENT for focus=affordability, which answers a different question and returns aggregate counts with max_affordable_price instead.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "max_capacity": {
            "type": "number"
          },
          "does_service": {
            "type": "boolean"
          },
          "rate": {
            "type": [
              "number",
              "null"
            ]
          },
          "assessment_rate": {
            "type": [
              "number",
              "null"
            ]
          },
          "monthly_surplus": {
            "type": [
              "number",
              "null"
            ]
          },
          "dti": {
            "type": [
              "number",
              "null"
            ]
          },
          "fail_reason": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "range": {
      "type": "object",
      "description": "Low, mid and high capacity across the panel."
    },
    "lvr": {
      "type": "number",
      "description": "Loan as a PERCENTAGE of value, normalised to match estimate_equity_and_lvr: 85 means 85%. Upstream reports it as a fraction; it is converted here so one ratio does not have two units on one server."
    },
    "monthly_repayment": {
      "type": "object"
    },
    "summary": {
      "type": "string"
    }
  },
  "required": [
    "source"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet8 Tools
verifiziertVersion nicht aufgezeichnet8 Tools