mcp
Cited, receipt-backed US home-buying data & calculators — education-only, every number sourced.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- LOWtrue_cost_estimate에서
- LOWpressure_check에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"mcp": {
"url": "https://candidcost.com/api/mcp"
}
}
}원격 엔드포인트
https://candidcost.com/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (10)
🟢true_cost_estimate(homePrice, downPaymentPct, rateAnnualPct, termYears, state, ...)
Estimate the full monthly cost of owning a home — principal & interest, property tax, insurance, PMI, HOA, and maintenance — and contrast it with the lender "approval" payment (PITI+PMI) to reveal the hidden monthly gap. Dollar inputs are US dollars; all money in the response is integer cents; rates are fixed-precision percent strings.
입력 스키마
{
"type": "object",
"properties": {
"homePrice": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000000,
"description": "Home price in US dollars"
},
"downPaymentPct": {
"default": 10,
"description": "Down payment as a percent of price (0–100)",
"type": "number",
"minimum": 0,
"maximum": 100
},
"rateAnnualPct": {
"default": 6.5,
"description": "Annual interest rate percent, e.g. 6.5",
"type": "number",
"minimum": 0,
"maximum": 25
},
"termYears": {
"default": 30,
"description": "Loan term in years (default 30)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"state": {
"description": "Two-letter US state code (e.g. \"NJ\"). When provided and propertyTaxRatePct is omitted, the Census ACS effective property-tax rate for that state is used.",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"county": {
"description": "5-digit county FIPS code. When provided and its Census county rate is available, it takes priority over the state rate (more accurate).",
"type": "string",
"pattern": "^\\d{5}$"
},
"propertyTaxRatePct": {
"description": "Annual property tax rate, % of value. Overrides county/state-derived rates when supplied.",
"type": "number",
"minimum": 0,
"maximum": 10
},
"insuranceAnnual": {
"default": 1584,
"description": "Annual homeowners insurance premium, US dollars",
"type": "number",
"minimum": 0
},
"hoaMonthly": {
"default": 0,
"description": "Monthly HOA dues, US dollars",
"type": "number",
"minimum": 0
},
"maintenanceRatePct": {
"default": 1,
"description": "Annual maintenance reserve, % of home value (baseline before age adjustment)",
"type": "number",
"minimum": 0,
"maximum": 10
},
"pmiAnnualRatePct": {
"default": 0.5,
"description": "Annual PMI rate, % of loan, applied while LTV > 80%",
"type": "number",
"minimum": 0,
"maximum": 5
},
"homeYearBuilt": {
"description": "Year the home was built. Scales the maintenance reserve by age band: ×1.5 pre-1980, ×1.2 1980–2005, ×1.0 2006+.",
"type": "integer",
"minimum": 1800,
"maximum": 2100
}
},
"required": [
"homePrice"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢affordability_estimate(grossMonthlyIncome, monthlyDebts, downPayment, rateAnnualPct, termYears, ...)
Compute front-end (housing) and back-end (total debt) DTI budgets from income and debts, and the home price implied by the binding limit. Reports the standard 28/36 thresholds without ever telling the user what they "can afford". Dollar inputs are US dollars; money in the response is integer cents.
입력 스키마
{
"type": "object",
"properties": {
"grossMonthlyIncome": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000,
"description": "Gross monthly income, US dollars"
},
"monthlyDebts": {
"default": 0,
"description": "Recurring monthly debt payments (cards, autos, student loans), US dollars",
"type": "number",
"minimum": 0
},
"downPayment": {
"default": 45000,
"description": "Down payment available, US dollars",
"type": "number",
"minimum": 0
},
"rateAnnualPct": {
"default": 6.5,
"description": "Annual interest rate percent",
"type": "number",
"minimum": 0,
"maximum": 25
},
"termYears": {
"default": 30,
"description": "Loan term in years (default 30)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"propertyTaxRatePct": {
"default": 1.26,
"description": "Annual property tax rate, % of value",
"type": "number",
"minimum": 0,
"maximum": 10
},
"insuranceAnnual": {
"default": 1584,
"description": "Annual homeowners insurance premium, US dollars",
"type": "number",
"minimum": 0
},
"frontEndLimitPct": {
"default": 28,
"description": "Housing DTI ceiling percent (default 28)",
"type": "number",
"minimum": 1,
"maximum": 100
},
"backEndLimitPct": {
"default": 36,
"description": "Total DTI ceiling percent (default 36)",
"type": "number",
"minimum": 1,
"maximum": 100
}
},
"required": [
"grossMonthlyIncome"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢fee_benchmarks(state, metric)
Return closing-cost and rate-spread percentile distributions (p25/p50/p75 + mean) for a US state, computed from the row-level CFPB HMDA LAR for originated, first-lien, home-purchase loans. Cells with fewer than 25 records are suppressed. Dollar metrics are integer cents (…Cents); percent metrics are fixed-precision strings (…Pct). Each distribution carries a ledger receipt hash for verification.
입력 스키마
{
"type": "object",
"properties": {
"state": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "Two-letter US state code, e.g. \"MA\""
},
"metric": {
"description": "One of: total_loan_costs, origination_charges, rate_spread, interest_rate. Omit to return all metrics.",
"type": "string"
}
},
"required": [
"state"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢benchmark_rates
Return the latest benchmark mortgage rates (e.g. 30-year and 15-year fixed) from the Federal Reserve (FRED), each with its observation date and ledger receipt. Rates are fixed-precision percent strings.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_dpa_programs(state, buyer)
Find down payment assistance (DPA) programs by US state and/or buyer type. Includes national programs. Each result links to its official government source and carries a ledger receipt and last-verified date.
입력 스키마
{
"type": "object",
"properties": {
"state": {
"description": "Two-letter US state code to filter by",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"buyer": {
"description": "Buyer type filter, e.g. \"first-time\", \"veteran\", \"rural\", \"teacher\"",
"type": "string",
"maxLength": 40
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢decode_loan_estimate_fee(fee)
Classify a mortgage Loan Estimate fee by CFPB section and control class (set by lender, shoppable, third-party, government, or prepaid), with a plain-language explanation and an educational question a buyer could ask. Omit "fee" to list the full catalog.
입력 스키마
{
"type": "object",
"properties": {
"fee": {
"description": "Fee name or keyword, e.g. \"origination\", \"title\"",
"type": "string",
"maxLength": 80
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢payment_shock_estimate(purchasePrice, sellersCurrentAnnualTax, state, county, reassessRatePct, ...)
Estimate why a mortgage payment often jumps in year two: escrow at closing is sized from the seller's current tax bill, but the county reassesses at your purchase price, and RESPA spreads the resulting escrow shortage over 12 months. Given the purchase price, the seller's current annual tax (from the listing), a state (or county FIPS) for the reassessment rate, and insurance, returns the year-1 escrow, the year-2 ongoing escrow, the temporary catch-up peak, and the jump. Money is integer cents. This decomposes the mechanics; it is not a prediction of your specific bill.
입력 스키마
{
"type": "object",
"properties": {
"purchasePrice": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000000,
"description": "Purchase price in US dollars"
},
"sellersCurrentAnnualTax": {
"type": "number",
"minimum": 0,
"description": "Seller's current annual property tax in US dollars (from the listing)"
},
"state": {
"description": "Two-letter US state code for the reassessment rate",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"county": {
"description": "5-digit county FIPS; its Census effective rate takes priority over the state rate",
"type": "string",
"pattern": "^\\d{5}$"
},
"reassessRatePct": {
"description": "Effective annual property-tax rate at reassessment, %. Overrides county/state.",
"type": "number",
"minimum": 0,
"maximum": 10
},
"insuranceAnnual": {
"default": 1584,
"description": "Annual homeowners insurance, US dollars",
"type": "number",
"minimum": 0
}
},
"required": [
"purchasePrice",
"sellersCurrentAnnualTax"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢pressure_check(earnestMoney, overpay, downPaymentPct, rateAnnualPct, termYears)
Decompose the tradeoff a rushed buyer faces: the earnest money at risk by walking away versus what overpaying to "win" costs over the life of the loan. Given the earnest money at risk, the overpay amount over your walk-away price, down-payment percent, rate, and term, returns the cash and financed shares of the overpay, the extra monthly P&I, the lifetime cost of overpaying, and its ratio to the earnest money. Money is integer cents. Educational decomposition — it names the two numbers so they can be compared; it never tells the user to walk or stay.
입력 스키마
{
"type": "object",
"properties": {
"earnestMoney": {
"type": "number",
"minimum": 0,
"maximum": 10000000,
"description": "Earnest money at risk if you walk away after removing contingencies, US dollars"
},
"overpay": {
"type": "number",
"minimum": 0,
"maximum": 10000000,
"description": "How much over your walk-away price the pressure would push you to pay, US dollars"
},
"downPaymentPct": {
"default": 10,
"description": "Down payment as a percent of price (0–100); splits the overpay into cash-at-close vs. financed",
"type": "number",
"minimum": 0,
"maximum": 100
},
"rateAnnualPct": {
"default": 6.5,
"description": "Annual interest rate percent, e.g. 6.5",
"type": "number",
"minimum": 0,
"maximum": 25
},
"termYears": {
"default": 30,
"description": "Loan term in years (default 30)",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"earnestMoney",
"overpay"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢rent_vs_buy_estimate(homePrice, monthlyRent, downPaymentPct, rateAnnualPct, termYears, ...)
Compare the net cost of owning against renting over a holding period and find the break-even year. Owning nets upfront cash and recurring carrying costs against sale proceeds (appreciated value − selling costs − remaining loan); renting nets rent paid against the investment gain on the cash a buyer would tie up. Dollar inputs are US dollars; money in the response is integer cents. Appreciation, rent growth, and investment return are user-set assumptions. Tax deductions are excluded (documented simplification). Educational decomposition — it reports both net costs and the break-even year; it never says rent or buy.
입력 스키마
{
"type": "object",
"properties": {
"homePrice": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000000,
"description": "Home price in US dollars"
},
"monthlyRent": {
"type": "number",
"minimum": 0,
"description": "Comparable monthly rent in US dollars"
},
"downPaymentPct": {
"default": 10,
"description": "Down payment as a percent of price",
"type": "number",
"minimum": 0,
"maximum": 100
},
"rateAnnualPct": {
"default": 6.5,
"description": "Annual interest rate percent",
"type": "number",
"minimum": 0,
"maximum": 25
},
"termYears": {
"default": 30,
"description": "Loan term in years",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"holdingYears": {
"default": 7,
"description": "How many years you plan to stay before selling",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"propertyTaxRatePct": {
"default": 1.1,
"description": "Annual property tax rate, % of value",
"type": "number",
"minimum": 0,
"maximum": 10
},
"insuranceAnnual": {
"default": 1800,
"description": "Annual homeowners insurance, US dollars",
"type": "number",
"minimum": 0
},
"maintenanceRatePct": {
"default": 1,
"description": "Annual maintenance reserve, % of home value",
"type": "number",
"minimum": 0,
"maximum": 10
},
"hoaMonthly": {
"default": 0,
"description": "Monthly HOA dues, US dollars",
"type": "number",
"minimum": 0
},
"closingCostPct": {
"default": 3,
"description": "Upfront buy-side closing costs, % of price",
"type": "number",
"minimum": 0,
"maximum": 20
},
"sellingCostPct": {
"default": 6,
"description": "Selling costs at exit, % of future value",
"type": "number",
"minimum": 0,
"maximum": 20
},
"annualAppreciationPct": {
"default": 3,
"description": "Assumed annual home-price appreciation percent",
"type": "number",
"minimum": -20,
"maximum": 30
},
"annualRentIncreasePct": {
"default": 3,
"description": "Assumed annual rent increase percent",
"type": "number",
"minimum": 0,
"maximum": 30
},
"investmentReturnPct": {
"default": 5,
"description": "Assumed annual return a renter earns on invested cash percent",
"type": "number",
"minimum": 0,
"maximum": 30
}
},
"required": [
"homePrice",
"monthlyRent"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢verify_receipt(hash)
Verify a CandidCost ledger receipt hash (full sha256 or short "3f9a…c21e" form). Confirms the receipt exists and that its dataset hash chain is intact, proving the underlying data has not been altered since ingestion.
입력 스키마
{
"type": "object",
"properties": {
"hash": {
"type": "string",
"minLength": 4,
"maxLength": 80,
"description": "The receipt content hash to verify"
}
},
"required": [
"hash"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거