Mortgage & Property Finance
FCA MCOB, FCA CONC — UK mortgage compliance and lender criteria matching
Quick Reference
result = agent.check(case_type="residential_mortgage",depth="full_check",modifiers=["debt_consolidation"],documents=[open("fact_find.pdf", "rb")],reference="CASE-2026-00451",)
Case Types
| Name | API ID | Description |
|---|---|---|
| Residential | residential_mortgage | Owner-occupied residential mortgages — purchase, remortgage, product transfer |
| Buy-to-Let | buy_to_let | Standard, specialist/HMO, portfolio landlord, consumer BTL, let-to-buy |
| Equity Release | equity_release | Lifetime mortgages, home reversion plans, retirement interest-only (RIO) |
| Self Build | self_build | Custom and self-build mortgages with staged release |
| Second Charges | second_charge | Second charge secured loans on residential property |
| Bridging | bridging_finance | Short-term bridging loans for property purchase or development |
| Commercial | commercial_mortgage | Commercial property — investment and owner-occupier |
| Development | development_finance | Property development with staged drawdown and development costings |
| Protection | protection | Life, critical illness, income protection, buildings & contents review |
Modifiers
Repayment & Structure
| Name | API ID | Description |
|---|---|---|
| Interest Only | interest_only | Adds repayment vehicle assessment, IO suitability, minimum equity requirement checks |
| Part & Part | part_and_part | Split repayment — part capital & interest, part interest only |
| Limited Company | limited_company | Company structure verification, director checks, net profit assessment |
| Joint Borrower Sole Proprietor | jbsp | Joint income assessment where only one party is on the title deed |
| Portfolio Landlord | portfolio_landlord | Cross-portfolio assessment, aggregate borrowing, professional landlord checks |
Purpose
| Name | API ID | Description |
|---|---|---|
| Remortgage | remortgage | Existing lender comparison, switching rationale, day-1 remortgage checks |
| Capital Raising | capital_raising | Checks vary by sub-purpose (see below) |
| Let-to-Buy | let_to_buy | Converting existing home to BTL while purchasing new residence |
| Further Advance | further_advance | Additional borrowing on existing mortgage |
| Product Transfer | product_transfer | Rate switch on existing mortgage — limited re-underwriting |
Capital Raising Sub-Purposes
debt_consolidationhome_improvementsbusiness_purposesdivorce_settlementpurchase_landpurchase_btlApplicant
| Name | API ID | Description |
|---|---|---|
| First Time Buyer | first_time_buyer | FTB-specific criteria, scheme eligibility, LTV caps |
| Vulnerable Customer | vulnerable_customer | Vulnerability assessment, enhanced suitability, support documentation |
| Self Employed | self_employed | SA302/tax calculations, 1-3 years accounts, declining profits assessment |
| Contractor | contractor | IT contractor, CIS, umbrella company, fixed-term, zero-hours checks |
| Expat | expat | Foreign currency income, country restrictions, time out of UK, minimum income |
| Foreign National | foreign_national | Visa type checks (skilled worker, spouse, settlement), residency requirements |
| Retired / Lending into Retirement | retirement | Maximum age at end of term, pension income assessment, RIO eligibility |
Property
| Name | API ID | Description |
|---|---|---|
| New Build | new_build | Flat vs house, off-plan, warranties, builder incentives, lender exposure limits |
| Non-Standard Construction | non_standard | Steel frame, timber frame, concrete, PRC, single-skin, BISF |
| Ex-Local Authority | ex_local_authority | Flat vs house distinction, specific LTV caps |
| Flat Above Commercial | flat_above_commercial | Including above food outlets, deck access, basement flats |
| Listed Building | listed_building | Grade 1, Grade 2 distinctions |
| Leasehold | leasehold | Remaining term checks, ground rent escalation (doubling, RPI-linked) |
| Shared Ownership | shared_ownership | Housing association terms, staircasing, minimum share |
Adverse Credit
Each modifier includes time-based variations: discharged less than 3 years, 3-6 years, over 6 years, and ongoing.
| Name | API ID | Description |
|---|---|---|
| CCJs | ccj | County court judgements — amount thresholds (up to/over £500), number, satisfied/unsatisfied, time since |
| Defaults | defaults | Similar time and amount thresholds |
| Bankruptcy | bankruptcy | Discharged timeframes, ongoing/current |
| IVA | iva | Individual voluntary arrangement — discharged timeframes |
| Debt Management Plan | dmp | Timeframes, ongoing status |
| Debt Relief Order | dro | Timeframes |
| Missed Payments | missed_payments | Mortgage/secured, credit card, utility, mobile phone arrears |
| Repossession | repossession | Historical repossession |
| Payday Loans | payday_loans | History of payday loan usage |
Scheme
| Name | API ID | Description |
|---|---|---|
| Help to Buy | help_to_buy | Equity loan scheme, mortgage guarantee |
| Shared Ownership | shared_ownership | Min initial share, re-sale shares |
| Right to Buy | right_to_buy | Discount period checks |
| Deposit Unlock | deposit_unlock | FTB/home mover eligibility, loan amount limits |
| Forces Help to Buy | forces_help_to_buy | Military personnel specific scheme |
| Green Mortgages | green_mortgage | EPC rating requirements, energy efficiency incentives |
Modifiers are additive. A single case can combine multiple modifiers (e.g. residential_mortgage + interest_only + debt_consolidation + vulnerable_customer). The resolution engine automatically determines which criteria apply for the combination.
Depths
| Name | API ID | Duration | Scoring | Price | Description |
|---|---|---|---|---|---|
| Admin Check | admin_check | ~18s | pass_fail | £0.50 | Document presence against network file standards |
| Soft Check | soft_check | ~30s | pass_fail | £0.50 | Admin + income, basic eligibility, obvious blockers |
| Full Check | full_check | ~2 min | rag | £3.00 | Complete regulatory compliance review — suitability, affordability, disclosure |
| Lender Criteria | lender_criteria | ~45s | pass_reject | £3.00 | Case checked against lender's specific 500+ lending criteria |
| Network Review | network_review | ~3 min | rag | £8.00 | Full check + network policy overlay, cross-firm benchmarking |
Scoring Modes
pass_fail
Used by admin_check and soft_check. Binary outcome. Each check returns pass or fail. The overall result is pass if all checks pass, or fail if any check fails.
rag
Used by full_check and network_review. Each check returns green, amber, or red. Amber and red findings include descriptions and remedial actions. The overall triage is the worst-case result across all checks.
pass_reject
Used by lender_criteria. Case either passes all criteria or is rejected with specific failed criteria listed. Each criterion returns pass or reject. The overall result is pass only if every criterion passes.
Worked Example: Residential with Debt Consolidation
Residential mortgage with debt consolidation modifier at full_check depth.
Request
from curvestone import Agentagent = Agent()result = agent.check(case_type="residential_mortgage",depth="full_check",modifiers=["debt_consolidation"],documents=[open("fact_find.pdf", "rb"),open("suitability_letter.pdf", "rb"),],reference="CASE-2026-00451",)
Response
1{2 "id": "job_7kTx9mNpQ2",3 "type": "check",4 "status": "completed",5 "triage": "amber",6 "reference": "CASE-2026-00451",7 "processing_time": "147s",8 "scoring": "rag",9 "checks": [10 { "name": "Suitability of Advice", "triage": "green" },11 { "name": "Income Verification", "triage": "green" },12 { "name": "Affordability Assessment", "triage": "amber" },13 { "name": "Product Selection", "triage": "green" },14 { "name": "Disclosure & Consent", "triage": "green" },15 { "name": "Debt Consolidation Rationale", "triage": "amber" },16 { "name": "Total Cost Comparison", "triage": "green" }17 ],18 "findings": [19 {20 "severity": "amber",21 "check": "Affordability Assessment",22 "finding": "Affordability buffer is within 2% of the lender's stress-test threshold. Disposable income margin after consolidation is £127/month, below the recommended £200 buffer.",23 "remedial_action": "Request an updated income schedule or evidence of additional income sources. Consider whether a longer term reduces monthly outgoings sufficiently."24 },25 {26 "severity": "amber",27 "check": "Debt Consolidation Rationale",28 "finding": "The suitability letter references debt consolidation as a primary objective but does not include a total cost comparison showing the client saves money over the term of the new mortgage versus maintaining existing debts.",29 "remedial_action": "Add a total cost comparison table to the suitability letter showing: (a) current monthly debt payments and total remaining cost, (b) new mortgage payment including consolidated debt, and (c) net saving or cost over the mortgage term."30 }31 ],32 "cost": "£3.20"33}
Ask
Use POST /ask to ask natural-language questions about a completed mortgage job, a document, or lender criteria.
Example questions
- →Why was the suitability letter rated amber?
- →Does this case meet Halifax residential criteria for interest-only?
- →What documents are missing for a bridging finance application?
- →Summarise the key risks for this equity release case.
- →Which lenders accept adverse credit within the last 3 years?
Questions can reference a job_id for context-aware answers grounded in the original documents and findings. £0.05 per turn.
Monitor
Use POST /monitor to set up recurring watches relevant to the mortgage cluster.
| Monitor type | What it watches | Typical schedule |
|---|---|---|
| criteria_update | Lender criteria pages for policy changes | every_15_days |
| regulation_change | FCA MCOB updates and regulatory notices | weekly |
| website_change | AR firm websites and social media content | daily |
Monitors can trigger downstream actions via on_finding — e.g. automatically re-run a check when lender criteria change. £15/month per monitor.