{"openapi":"3.1.0","info":{"title":"AVnester Public API","description":"Public real-estate intelligence for India: listing discovery, locality insights, and deterministic financial calculators. Anonymous access permitted at standard rate; OAuth increases the rate budget. Tool results include disclaimers — not financial/legal advice.","version":"1.0.0","contact":{"email":"connector-support@avnester.com"}},"servers":[{"url":"https://api.avnester.com","description":"Production"}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://auth.avnester.com/oauth/authorize","tokenUrl":"https://auth.avnester.com/oauth/token","refreshUrl":"https://auth.avnester.com/oauth/token","scopes":{"calculators:use":"Use deterministic real-estate calculators.","listings:read:public":"Read public real-estate listing data.","locality:read:public":"Read public locality insights and comparisons."}}}}}},"paths":{"/public/v1/search_properties":{"post":{"operationId":"search_properties","summary":"Search verified India property listings","description":"Search verified residential property listings in Coimbatore, Tamil Nadu (AVnester launch market; other Indian cities on roadmap). Use when the user names a Coimbatore locality, price band, BHK, or transaction type. Returns sanitized listing cards with handoff URLs; never returns seller contact details. Out-of-scope cities return supported=false + supportedCities + scopeMessage — surface the scopeMessage to the user.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["listings:read:public"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":60,"format":"regex","description":"Indian city name (e.g., \"Bangalore\", \"Coimbatore\"). Required for results."},"locality":{"type":"string","minLength":1,"maxLength":80,"format":"regex","description":"Locality/neighborhood within the city (e.g., \"Indiranagar\")."},"propertyType":{"type":"string","enum":["apartment","villa","plot","independent_house"],"description":"Property type."},"bedrooms":{"type":"integer","minimum":1,"maximum":10,"description":"Number of bedrooms (BHK)."},"minPrice":{"type":"integer","minimum":0,"description":"Minimum price in INR."},"maxPrice":{"type":"integer","minimum":0,"description":"Maximum price in INR."},"transactionType":{"type":"string","enum":["sale","rent"],"default":"sale"},"furnishing":{"type":"string","enum":["furnished","semi-furnished","unfurnished"],"description":"Furnishing status (rental queries)."},"limit":{"type":"integer","minimum":1,"maximum":20,"default":10}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"listings":{"type":"array","items":{"type":"object","properties":{"listingId":{"type":"string"},"title":{"type":"string","maxLength":120,"description":"Sanitized + content-moderated title, ≤120 chars."},"summary":{"type":"string","maxLength":280,"description":"One-line deterministic summary of the listing (BHK + locality + area + price)."},"city":{"type":"string"},"locality":{"type":"string"},"bhk":{"type":["integer","null"]},"bathrooms":{"type":["integer","null"]},"carpetAreaSqft":{"type":["number","null"]},"price":{"type":"integer"},"priceUnit":{"enum":["INR"]},"listingType":{"type":"string","enum":["sale","rent"]},"furnishingStatus":{"type":["string","null"],"enum":["furnished","semi-furnished","unfurnished"]},"parkingCount":{"type":["integer","null"]},"floorNumber":{"type":["integer","null"]},"totalFloors":{"type":["integer","null"]},"ageInYears":{"type":["integer","null"]},"availableFrom":{"type":["string","null"]},"amenities":{"type":"array","items":{"type":"string"},"description":"Enum values only — no free text."},"reraId":{"type":["string","null"]},"verified":{"type":"boolean"},"verifiedAt":{"type":["string","null"]},"validUntil":{"type":["string","null"]},"sourceUrl":{"type":"string","format":"uri","description":"Handoff URL — funnel value for anonymous traffic."},"attribution":{"enum":["AVnester"]},"imageThumbnailUrl":{"type":["string","null"],"format":"uri"}},"additionalProperties":false,"required":["listingId","title","summary","city","locality","bhk","bathrooms","carpetAreaSqft","price","priceUnit","listingType","furnishingStatus","parkingCount","floorNumber","totalFloors","ageInYears","availableFrom","amenities","reraId","verified","verifiedAt","validUntil","sourceUrl","attribution","imageThumbnailUrl"]}},"supported":{"type":"boolean","description":"True when the input city is within AVnester operational coverage. False when out of scope (numeric fields are then 0 / empty); supportedCities + scopeMessage name the supported set."},"supportedCities":{"type":"array","items":{"type":"string"}},"scopeMessage":{"type":"string"},"attribution":{"enum":["AVnester"]},"handoffUrl":{"type":"string","format":"uri"},"disclaimer":{"type":"string"}},"additionalProperties":false,"required":["total","listings","supported","attribution","handoffUrl","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/get_locality_insights":{"post":{"operationId":"get_locality_insights","summary":"Get locality market insights","description":"Get aggregated insights for a Coimbatore locality (AVnester launch market; other Indian cities on roadmap): avg price, supply count, demand pulse, livability/investment grade, highlights, watchouts, 12-month priceTrends, and strengthTags. Use when the user asks \"what is X locality like\" about a Coimbatore neighborhood. Out-of-scope cities return supported=false; surface the scopeMessage to the user. Always surface the disclaimer field when returning livability or investment grade.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["locality:read:public"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locality":{"type":"string","minLength":1,"maxLength":80,"format":"regex","description":"Locality name within an Indian city."},"city":{"type":"string","minLength":1,"maxLength":60,"format":"regex","description":"Indian city (required)."}},"additionalProperties":false,"required":["locality","city"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"city":{"type":"string"},"locality":{"type":"string"},"supported":{"type":"boolean","description":"True when the input city is within AVnester operational coverage. False when out of scope (insights all null); supportedCities + scopeMessage name the supported set."},"supportedCities":{"type":"array","items":{"type":"string"}},"scopeMessage":{"type":"string"},"insights":{"type":"object","properties":{"avgPriceInr":{"type":["number","null"]},"supplyCount":{"type":["integer","null"]},"demandPulse":{"type":["string","null"],"enum":["low","medium","high"]},"livabilityScore":{"type":["number","null"]},"investmentGrade":{"type":["string","null"]},"highlights":{"type":"array","items":{"type":"string"}},"watchouts":{"type":"array","items":{"type":"string"}},"priceTrends":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string","description":"ISO YYYY-MM month label."},"avgPriceInr":{"type":["number","null"]}},"additionalProperties":false,"required":["period","avgPriceInr"]},"description":"Last 12 months of average price per unit, chronological oldest-first."},"strengthTags":{"type":"array","items":{"type":"string"},"description":"Up to 6 plain-English strength tags from the locality profile."}},"additionalProperties":false,"required":["avgPriceInr","supplyCount","demandPulse","livabilityScore","investmentGrade","highlights","watchouts","priceTrends","strengthTags"]},"freshness":{"type":"object","properties":{"updatedAt":{"type":["string","null"]},"sourceCount":{"type":["integer","null"]},"confidence":{"type":["string","null"],"enum":["high","medium","low"]}},"additionalProperties":false,"required":["updatedAt","sourceCount","confidence"]},"attribution":{"enum":["AVnester"]},"handoffUrl":{"type":"string","format":"uri"},"disclaimer":{"type":"string"}},"additionalProperties":false,"required":["city","locality","supported","insights","freshness","attribution","handoffUrl","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/compare_localities":{"post":{"operationId":"compare_localities","summary":"Compare Indian localities head-to-head","description":"Compare 2–3 Coimbatore localities side-by-side (AVnester launch market; other Indian cities on roadmap): price trends, livability, investment grade, strengths, and watchouts. Use when the user asks \"X vs Y\" or \"which is better between X and Y for buying/renting\" about Coimbatore neighborhoods. Out-of-scope cities return supported=false; surface the scopeMessage to the user. For comparing specific LISTINGS by ID, use compare_properties instead.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["locality:read:public"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"city":{"type":"string","minLength":1,"maxLength":60,"format":"regex","description":"Indian city covering all compared localities."},"localities":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80,"format":"regex"},"description":"2–3 localities to compare (array, not comma-separated string)."},"propertyType":{"type":"string","enum":["apartment","villa","plot","independent_house"],"description":"Property type for comparison."}},"additionalProperties":false,"required":["city","localities"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"city":{"type":"string"},"localities":{"type":"array","items":{"type":"string"}},"supported":{"type":"boolean","description":"True when the input city is within AVnester operational coverage. False when out of scope (comparison is then empty); supportedCities + scopeMessage name the supported set."},"supportedCities":{"type":"array","items":{"type":"string"}},"scopeMessage":{"type":"string"},"comparison":{"type":"object","additionalProperties":{"type":"object","properties":{"priceTrends":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"avgPriceInr":{"type":["number","null"]}},"additionalProperties":false,"required":["period","avgPriceInr"]}},"livabilityScore":{"type":["number","null"]},"investmentGrade":{"type":["string","null"]},"strengthTags":{"type":"array","items":{"type":"string"}},"watchouts":{"type":"array","items":{"type":"string"}},"highlights":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"required":["priceTrends","livabilityScore","investmentGrade","strengthTags","watchouts","highlights"]}},"attribution":{"enum":["AVnester"]},"handoffUrl":{"type":"string","format":"uri"},"disclaimer":{"type":"string"}},"additionalProperties":false,"required":["city","localities","supported","comparison","attribution","handoffUrl","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/calculate_home_affordability":{"post":{"operationId":"calculate_home_affordability","summary":"Estimate home-loan EMI (calculator)","description":"Estimate the monthly home-loan EMI for a property value in India. Pure deterministic math — no advice, no recommendation, no loan-approval / eligibility claim. Use when the user asks \"what would my EMI be\" or wants to compare loan scenarios. The response includes an `assumptions` field documenting the default 80% loan-to-value when loanAmount is omitted. Always surface the disclaimer field in your reply.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"propertyValue":{"type":"integer","minimum":0,"description":"Property value in INR."},"loanAmount":{"type":"integer","minimum":0,"description":"Loan amount in INR. Defaults to 80% of propertyValue if omitted."},"interestRatePercent":{"type":"number","minimum":1,"maximum":30,"description":"Annual interest rate (percent). Defaults to current market estimate."},"tenureYears":{"type":"integer","minimum":1,"maximum":40,"description":"Loan tenure in years. Defaults to 20."}},"additionalProperties":false,"required":["propertyValue"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"inputPropertyValue":{"type":"integer"},"loanAmount":{"type":"integer"},"interestRatePercent":{"type":"number"},"tenureYears":{"type":"integer"},"emi":{"type":"integer","description":"Monthly EMI in INR."},"totalInterest":{"type":"integer"},"totalPayment":{"type":"integer"},"assumptions":{"type":"object","properties":{"defaultLtvPercent":{"enum":[80],"description":"Loan-to-value AVnester assumes when loanAmount is not supplied."},"actualLtvPercent":{"type":"number","description":"LTV actually used for this calculation (80 by default, derived otherwise)."},"downPaymentAmount":{"type":"integer","description":"Property value minus loan amount."},"interestType":{"enum":["reducing-balance"],"description":"EMI formula uses reducing-balance, the Indian-market standard."},"notALoanApproval":{"enum":[true],"description":"Explicit reminder — this calculator does NOT decide loan eligibility or bank approval."}},"additionalProperties":false,"required":["defaultLtvPercent","actualLtvPercent","downPaymentAmount","interestType","notALoanApproval"]},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not financial advice."}},"additionalProperties":false,"required":["inputPropertyValue","loanAmount","interestRatePercent","tenureYears","emi","totalInterest","totalPayment","assumptions","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/simulate_loan_prepayment":{"post":{"operationId":"simulate_loan_prepayment","summary":"Simulate home-loan prepayment (calculator)","description":"Simulate the impact of prepaying an Indian home loan. Pure deterministic math — no advice, no loan-approval/eligibility claim. Use when the user asks \"should I prepay\", \"reduce EMI or tenure\", \"how much interest will I save\", or about part-payment / foreclosure. Compares two strategies: reduce_tenure (keep EMI, finish early — bigger saving) vs reduce_emi (keep tenure, lower EMI). Always surface the disclaimer field.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"outstandingPrincipal":{"type":"integer","minimum":0,"description":"Current outstanding home-loan principal in INR."},"remainingTenureYears":{"type":"integer","minimum":1,"maximum":40,"description":"Years left on the loan at the current EMI."},"annualRatePercent":{"type":"number","minimum":1,"maximum":30,"description":"Current annual interest rate (percent). Defaults to the indicative market rate when omitted."},"prepaymentAmount":{"type":"integer","minimum":0,"default":0},"recurringAnnualAmount":{"type":"integer","minimum":0,"default":0},"prepaymentMode":{"type":"string","enum":["one_time","recurring_annual","one_time_plus_recurring"],"default":"one_time"},"strategy":{"type":"string","enum":["reduce_tenure","reduce_emi","compare_both"],"default":"compare_both"}},"additionalProperties":false,"required":["outstandingPrincipal","remainingTenureYears"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"outstandingPrincipal":{"type":"integer"},"annualRatePercent":{"type":"number"},"remainingTenureYears":{"type":"integer"},"prepaymentMode":{"type":"string","enum":["one_time","recurring_annual","one_time_plus_recurring"]},"strategy":{"type":"string","enum":["reduce_tenure","reduce_emi","compare_both"]},"applied":{"type":"object","properties":{"oneTime":{"type":"integer","description":"One-time prepayment actually applied (INR)."},"recurringAnnual":{"type":"integer","description":"Recurring annual prepayment actually applied (INR)."}},"additionalProperties":false,"required":["oneTime","recurringAnnual"]},"baseline":{"type":"object","properties":{"emi":{"type":"integer"},"payoffMonths":{"type":"integer"},"totalInterest":{"type":"integer"}},"additionalProperties":false,"required":["emi","payoffMonths","totalInterest"]},"reduceTenure":{"type":"object","properties":{"emi":{"type":"integer","description":"Monthly EMI under this strategy (INR). For reduce_emi the new lower EMI; for reduce_tenure equals the baseline EMI."},"payoffMonths":{"type":"integer","description":"Months from now until the loan closes."},"totalInterest":{"type":"integer","description":"Total interest paid from now to closure (INR)."},"interestSaved":{"type":"integer","description":"Interest saved vs. not prepaying (INR)."},"monthsSaved":{"type":"integer","description":"Months saved vs. baseline (0 for reduce_emi)."}},"additionalProperties":false,"required":["emi","payoffMonths","totalInterest","interestSaved","monthsSaved"]},"reduceEmi":{"type":"object","properties":{"emi":{"type":"integer","description":"Monthly EMI under this strategy (INR). For reduce_emi the new lower EMI; for reduce_tenure equals the baseline EMI."},"payoffMonths":{"type":"integer","description":"Months from now until the loan closes."},"totalInterest":{"type":"integer","description":"Total interest paid from now to closure (INR)."},"interestSaved":{"type":"integer","description":"Interest saved vs. not prepaying (INR)."},"monthsSaved":{"type":"integer","description":"Months saved vs. baseline (0 for reduce_emi)."}},"additionalProperties":false,"required":["emi","payoffMonths","totalInterest","interestSaved","monthsSaved"]},"assumptions":{"type":"object","properties":{"interestType":{"enum":["reducing-balance"]},"oneTimeAppliedImmediately":{"enum":[true],"description":"The one-time prepayment is applied immediately, before the next EMI."},"recurringAppliedAnnually":{"enum":[true],"description":"Recurring prepayments are applied on each 12-month anniversary."},"floatingRatePrepaymentPenaltyWaived":{"enum":[true],"description":"From 1 Jan 2026, RBI bars prepayment/foreclosure penalties on individual floating-rate home loans. Verify your loan type with your lender."},"notALoanApproval":{"enum":[true],"description":"Explicit reminder — this calculator does NOT decide loan eligibility or bank approval."}},"additionalProperties":false,"required":["interestType","oneTimeAppliedImmediately","recurringAppliedAnnually","floatingRatePrepaymentPenaltyWaived","notALoanApproval"]},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not financial advice."}},"additionalProperties":false,"required":["outstandingPrincipal","annualRatePercent","remainingTenureYears","prepaymentMode","strategy","applied","baseline","assumptions","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/compare_balance_transfer":{"post":{"operationId":"compare_balance_transfer","summary":"Compare home-loan balance transfer (calculator)","description":"Compare staying on your current home loan vs. transferring (refinancing) to a lower rate. Pure deterministic math — no advice, no loan-approval claim. Use when the user asks \"should I switch lenders / transfer my loan / refinance\". Returns new EMI, interest saved over the remaining tenure, switching cost, net saving, and the breakeven month. Always surface the disclaimer field in your reply.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"outstandingPrincipal":{"type":"integer","minimum":0,"description":"Current outstanding home-loan principal in INR."},"currentRatePercent":{"type":"number","minimum":1,"maximum":30,"description":"Current annual interest rate (percent)."},"newRatePercent":{"type":"number","minimum":1,"maximum":30,"description":"New lender annual interest rate (percent)."},"remainingTenureYears":{"type":"integer","minimum":1,"maximum":40,"description":"Years left on the loan."},"processingFeePct":{"type":"number","minimum":0,"maximum":5,"description":"New-lender processing fee on the balance (percent). Defaults to 0.5%."},"flatCosts":{"type":"integer","minimum":0,"description":"Flat legal + valuation charges in INR. Defaults to ₹12,500."}},"additionalProperties":false,"required":["outstandingPrincipal","currentRatePercent","newRatePercent","remainingTenureYears"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"outstandingPrincipal":{"type":"integer"},"currentRatePercent":{"type":"number"},"newRatePercent":{"type":"number"},"remainingTenureYears":{"type":"integer"},"currentEmi":{"type":"integer"},"newEmi":{"type":"integer"},"monthlyEmiSaving":{"type":"integer"},"currentTotalInterest":{"type":"integer","description":"Interest over the remaining tenure at the current rate."},"newTotalInterest":{"type":"integer"},"grossInterestSaved":{"type":"integer"},"switchingCost":{"type":"integer","description":"Processing fee + flat costs (no foreclosure penalty on floating-rate loans since RBI 1 Jan 2026)."},"netSaving":{"type":"integer","description":"Gross interest saved minus switching cost."},"breakevenMonths":{"type":["integer","null"]},"worthIt":{"type":"boolean","description":"True when net saving is positive and the new rate is lower."},"assumptions":{"type":"object","properties":{"interestType":{"enum":["reducing-balance"]},"tenureHeldConstant":{"enum":[true],"description":"EMI is recomputed at the new rate over the same remaining tenure."},"floatingForeclosurePenaltyWaived":{"enum":[true],"description":"From 1 Jan 2026, RBI bars foreclosure penalties on individual floating-rate home loans."},"notALoanApproval":{"enum":[true]}},"additionalProperties":false,"required":["interestType","tenureHeldConstant","floatingForeclosurePenaltyWaived","notALoanApproval"]},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not financial advice."}},"additionalProperties":false,"required":["outstandingPrincipal","currentRatePercent","newRatePercent","remainingTenureYears","currentEmi","newEmi","monthlyEmiSaving","currentTotalInterest","newTotalInterest","grossInterestSaved","switchingCost","netSaving","breakevenMonths","worthIt","assumptions","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/optimize_home_loan_tax_regime":{"post":{"operationId":"optimize_home_loan_tax_regime","summary":"Optimize home-loan tax regime (calculator)","description":"Compare income tax under the OLD vs NEW regime (FY2026-27) for a home-loan borrower and recommend which saves more. Pure deterministic math — not tax advice. Use when the user asks \"old or new regime\", \"home loan tax benefit\", or \"section 80C/24b\". Models §24(b) interest + §80C principal (+ joint-loan doubling); the response lists property tax benefits it does NOT model (capital gains, HRA, etc.). Always surface the disclaimer field.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"annualIncome":{"type":"integer","minimum":0,"description":"Annual gross income in INR EXCLUDING house property (salary + other income)."},"isSalaried":{"type":"boolean","default":true},"homeLoanInterest":{"type":"integer","minimum":0,"description":"Annual home-loan interest paid (INR)."},"homeLoanPrincipal":{"type":"integer","minimum":0,"description":"Annual home-loan principal repaid (INR) — counts toward 80C."},"propertyType":{"type":"string","enum":["self_occupied","let_out"],"default":"self_occupied"},"annualRent":{"type":"integer","minimum":0,"description":"Annual rent received in INR — required for let_out."},"other80C":{"type":"integer","minimum":0,"description":"Other 80C investments in INR (PF, ELSS, insurance, etc.)."},"otherOldRegimeDeductions":{"type":"integer","minimum":0,"description":"Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.)."},"jointLoan":{"type":"boolean","default":false},"ageBand":{"type":"string","enum":["below60","senior","super_senior"]}},"additionalProperties":false,"required":["annualIncome","homeLoanInterest","homeLoanPrincipal"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"annualIncome":{"type":"integer"},"propertyType":{"type":"string","enum":["self_occupied","let_out"]},"jointLoan":{"type":"boolean"},"old":{"type":"object","properties":{"taxableIncome":{"type":"integer"},"totalTax":{"type":"integer","description":"Total tax including 4% cess (INR)."},"deductionsApplied":{"type":"integer","description":"Total deductions applied under this regime (INR)."}},"additionalProperties":false,"required":["taxableIncome","totalTax","deductionsApplied"]},"new":{"type":"object","properties":{"taxableIncome":{"type":"integer"},"totalTax":{"type":"integer","description":"Total tax including 4% cess (INR)."},"deductionsApplied":{"type":"integer","description":"Total deductions applied under this regime (INR)."}},"additionalProperties":false,"required":["taxableIncome","totalTax","deductionsApplied"]},"recommended":{"type":"string","enum":["old","new"],"description":"The regime with the lower total tax."},"annualSaving":{"type":"integer","description":"Annual tax saved by choosing the recommended regime over the other (INR)."},"homeLoanTaxBenefitOld":{"type":"integer","description":"Tax value of the home-loan deductions under the OLD regime (INR)."},"notModeled":{"type":"array","items":{"type":"string"},"description":"Property tax benefits NOT modeled — surface these so the user consults a CA."},"assumptions":{"type":"object","properties":{"regimeYear":{"enum":["FY2026-27"]},"surchargeNotModeled":{"enum":[true],"description":"Surcharge on income above ₹50L is not modeled."},"section80EEAExcluded":{"enum":[true],"description":"§80EE/80EEA are sunset (sanction windows closed 2017/2022) and not applied."},"notTaxAdvice":{"enum":[true]}},"additionalProperties":false,"required":["regimeYear","surchargeNotModeled","section80EEAExcluded","notTaxAdvice"]},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not tax advice."}},"additionalProperties":false,"required":["annualIncome","propertyType","jointLoan","old","new","recommended","annualSaving","homeLoanTaxBenefitOld","notModeled","assumptions","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/estimate_stamp_duty_and_registration":{"post":{"operationId":"estimate_stamp_duty_and_registration","summary":"Estimate stamp duty + registration (calculator)","description":"Estimate Indian state stamp duty + registration charges on a property purchase. Supports all 28 states + 8 UTs with per-state buyer-gender concessions, urban/rural overrides, and commercial/agricultural multipliers. Returns supported=false + zero numerics when the input state is outside India (supported states named in rateBasis). Not legal/tax advice. Always surface the disclaimer field in your reply.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"propertyValue":{"type":"integer","minimum":0,"description":"Sale value in INR for stamp-duty calculation."},"state":{"type":"string","minLength":2,"maxLength":50,"default":"Tamil Nadu"},"isWomanBuyer":{"type":"boolean","default":false},"buyerGender":{"type":"string","enum":["male","female","joint"]},"propertyType":{"type":"string","enum":["residential","commercial","agricultural"]},"isUrban":{"type":"boolean"}},"additionalProperties":false,"required":["propertyValue"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"propertyValue":{"type":"integer"},"state":{"type":"string"},"supported":{"type":"boolean","description":"True when the input state has a published rate table; false when AVnester does not support the input state (numeric fields are then 0 and rateBasis names the supported set)."},"stampDuty":{"type":"integer"},"registrationFee":{"type":"integer"},"total":{"type":"integer"},"rateBasis":{"type":"string","description":"Plain-English explanation of which state-published rate was applied, OR a refusal message when supported=false."},"rateEffectiveDate":{"type":"string","description":"ISO date when the applied rate took effect. Verify against the state sub-registrar for the most current rate."},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not legal/tax advice."}},"additionalProperties":false,"required":["propertyValue","state","supported","stampDuty","registrationFee","total","rateBasis","rateEffectiveDate","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/get_property_details":{"post":{"operationId":"get_property_details","summary":"Get one AVnester property by ID","description":"Fetch full public details for one AVnester listing by its listingId. Get the listingId from search_properties results first (the `listingId` field) — IDs are not guessable, so this tool is the natural follow-up to a search. AVnester's catalog is currently Coimbatore-only; unknown or unpublished IDs return { listing: null, notFound: true } (never throws, to avoid leaking existence). Use when the user references a specific listing. Read-only, no side effects.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["listings:read:public"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listingId":{"type":"string","minLength":1,"maxLength":80,"description":"AVnester listingId, as returned in search_properties results (the `listingId` field). IDs are not guessable — call search_properties first. Also the trailing segment of a listing sourceUrl."}},"additionalProperties":false,"required":["listingId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"listing":{"type":["object","null"],"properties":{"listingId":{"type":"string"},"title":{"type":"string","maxLength":120,"description":"Sanitized + content-moderated title, ≤120 chars."},"summary":{"type":"string","maxLength":280,"description":"One-line deterministic summary of the listing (BHK + locality + area + price)."},"city":{"type":"string"},"locality":{"type":"string"},"bhk":{"type":["integer","null"]},"bathrooms":{"type":["integer","null"]},"carpetAreaSqft":{"type":["number","null"]},"price":{"type":"integer"},"priceUnit":{"enum":["INR"]},"listingType":{"type":"string","enum":["sale","rent"]},"furnishingStatus":{"type":["string","null"],"enum":["furnished","semi-furnished","unfurnished"]},"parkingCount":{"type":["integer","null"]},"floorNumber":{"type":["integer","null"]},"totalFloors":{"type":["integer","null"]},"ageInYears":{"type":["integer","null"]},"availableFrom":{"type":["string","null"]},"amenities":{"type":"array","items":{"type":"string"},"description":"Enum values only — no free text."},"reraId":{"type":["string","null"]},"verified":{"type":"boolean"},"verifiedAt":{"type":["string","null"]},"validUntil":{"type":["string","null"]},"sourceUrl":{"type":"string","format":"uri","description":"Handoff URL — funnel value for anonymous traffic."},"attribution":{"enum":["AVnester"]},"imageThumbnailUrl":{"type":["string","null"],"format":"uri"}},"additionalProperties":false,"required":["listingId","title","summary","city","locality","bhk","bathrooms","carpetAreaSqft","price","priceUnit","listingType","furnishingStatus","parkingCount","floorNumber","totalFloors","ageInYears","availableFrom","amenities","reraId","verified","verifiedAt","validUntil","sourceUrl","attribution","imageThumbnailUrl"]},"notFound":{"type":"boolean","description":"True when the listing ID does not exist OR was unpublished OR failed moderation. Reviewer must not infer existence from this field."},"handoffUrl":{"type":"string","format":"uri"},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string"}},"additionalProperties":false,"required":["listing","notFound","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/compare_properties":{"post":{"operationId":"compare_properties","summary":"Compare AVnester properties (trade-offs)","description":"Compare 2–5 AVnester listings by listingId. Get the listingIds from search_properties results first (the `listingId` field) — IDs are not guessable. Returns each listing PLUS objective metrics: pricePerSqft, vsCheapestPercent (0 for cheapest, positive for pricier), vsLargestAreaPercent (0 for largest, negative for smaller). Coimbatore-only catalog; unknown IDs return not_found_or_unpublished. Does NOT recommend a final purchase. Always surface the disclaimer field.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["listings:read:public"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listingIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"description":"2–5 AVnester listingIds (from search_properties results) to compare. IDs are not guessable — call search_properties first. Order is preserved in the output."}},"additionalProperties":false,"required":["listingIds"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"comparison":{"type":"array","items":{"type":"object","properties":{"listingId":{"type":"string"},"listing":{"type":["object","null"],"properties":{"listingId":{"type":"string"},"title":{"type":"string","maxLength":120,"description":"Sanitized + content-moderated title, ≤120 chars."},"summary":{"type":"string","maxLength":280,"description":"One-line deterministic summary of the listing (BHK + locality + area + price)."},"city":{"type":"string"},"locality":{"type":"string"},"bhk":{"type":["integer","null"]},"bathrooms":{"type":["integer","null"]},"carpetAreaSqft":{"type":["number","null"]},"price":{"type":"integer"},"priceUnit":{"enum":["INR"]},"listingType":{"type":"string","enum":["sale","rent"]},"furnishingStatus":{"type":["string","null"],"enum":["furnished","semi-furnished","unfurnished"]},"parkingCount":{"type":["integer","null"]},"floorNumber":{"type":["integer","null"]},"totalFloors":{"type":["integer","null"]},"ageInYears":{"type":["integer","null"]},"availableFrom":{"type":["string","null"]},"amenities":{"type":"array","items":{"type":"string"},"description":"Enum values only — no free text."},"reraId":{"type":["string","null"]},"verified":{"type":"boolean"},"verifiedAt":{"type":["string","null"]},"validUntil":{"type":["string","null"]},"sourceUrl":{"type":"string","format":"uri","description":"Handoff URL — funnel value for anonymous traffic."},"attribution":{"enum":["AVnester"]},"imageThumbnailUrl":{"type":["string","null"],"format":"uri"}},"additionalProperties":false,"required":["listingId","title","summary","city","locality","bhk","bathrooms","carpetAreaSqft","price","priceUnit","listingType","furnishingStatus","parkingCount","floorNumber","totalFloors","ageInYears","availableFrom","amenities","reraId","verified","verifiedAt","validUntil","sourceUrl","attribution","imageThumbnailUrl"]},"status":{"type":"string","enum":["found","not_found_or_unpublished"]},"metrics":{"type":["object","null"],"properties":{"pricePerSqft":{"type":["integer","null"]},"vsCheapestPercent":{"type":["integer","null"]},"vsLargestAreaPercent":{"type":["integer","null"]}},"additionalProperties":false,"required":["pricePerSqft","vsCheapestPercent","vsLargestAreaPercent"]}},"additionalProperties":false,"required":["listingId","listing","status","metrics"]}},"framing":{"type":"string","description":"Safer \"trade-offs\" framing instructed by checklist §16 — does NOT recommend a final purchase."},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string"}},"additionalProperties":false,"required":["comparison","framing","attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}},"/public/v1/get_property_decision_intelligence":{"post":{"operationId":"get_property_decision_intelligence","summary":"Home purchase decision intelligence","description":"Assess whether a buyer can afford a specific Indian home — ONE verdict (AFFORDABLE / STRETCH / NOT_YET / INELIGIBLE) combining indicative eligibility (FOIR/LTV/CIBIL), EMI, true cash-to-close (down payment + stamp duty + registration), and regime-aware tax. Mode A: listingId (Coimbatore catalog). Mode B: propertyValue + state (any Indian state). NOT a loan approval, offer, or advice. Always surface the disclaimer.","x-openai-isConsequential":false,"tags":["public"],"security":[{},{"oauth2":["calculators:use"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listingId":{"type":"string","minLength":1,"maxLength":80},"propertyValue":{"type":"integer","minimum":0,"maximum":1000000000},"state":{"type":"string","minLength":1,"maxLength":50,"format":"regex"},"monthlyNetIncome":{"type":"integer","minimum":0,"maximum":100000000,"description":"Buyer monthly take-home income in INR."},"existingMonthlyEmis":{"type":"integer","minimum":0,"maximum":100000000},"coApplicantMonthlyIncome":{"type":"integer","minimum":0,"maximum":100000000},"savingsAvailable":{"type":"integer","minimum":0,"maximum":10000000000},"cibilScore":{"type":"integer","minimum":300,"maximum":900},"employmentType":{"type":"string","enum":["salaried","self_employed"]},"residencyStatus":{"type":"string","enum":["resident","nri"]},"buyerGender":{"type":"string","enum":["male","female","joint"]},"occupancyIntent":{"type":"string","enum":["self_occupied","let_out"]},"annualRent":{"type":"integer","minimum":0},"jointLoan":{"type":"boolean"},"isUnderConstruction":{"type":"boolean"},"isUrban":{"type":"boolean"},"interestRatePercent":{"type":"number","minimum":1,"maximum":30},"tenureYears":{"type":"integer","minimum":1,"maximum":40},"annualIncomeForTax":{"type":"integer","minimum":0}},"additionalProperties":false,"required":["monthlyNetIncome"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["listing","manual"]},"notFound":{"type":"boolean"},"eligibility":{"type":"object","properties":{"maxLoanByFoir":{"type":"integer"},"maxLoanByLtv":{"type":"integer"},"eligibleLoan":{"type":"integer"},"bound":{"type":"string","enum":["foir","ltv"]},"ltvPct":{"type":"number"},"foirAtEligibleLoanPct":{"type":"number"},"foirCeilingPct":{"type":"number"},"foirComfortPct":{"type":"number"},"cibilBand":{"type":["string","null"]},"approvalLikelihood":{"type":"string","enum":["high","medium","low","indicative"]},"notALoanApproval":{"enum":[true]},"notAnOffer":{"enum":[true]},"reasoning":{"type":"string"}},"additionalProperties":false,"required":["maxLoanByFoir","maxLoanByLtv","eligibleLoan","bound","ltvPct","foirAtEligibleLoanPct","foirCeilingPct","foirComfortPct","cibilBand","approvalLikelihood","notALoanApproval","notAnOffer","reasoning"]},"emi":{"type":"object","properties":{"loanAmount":{"type":"integer"},"interestRatePercent":{"type":"number"},"tenureYears":{"type":"integer"},"monthlyEmi":{"type":"integer"},"totalInterest":{"type":"integer"},"totalPayment":{"type":"integer"}},"additionalProperties":false,"required":["loanAmount","interestRatePercent","tenureYears","monthlyEmi","totalInterest","totalPayment"]},"affordability":{"type":"object","properties":{"propertyValue":{"type":"integer"},"downPayment":{"type":"integer"},"stampDutyAndRegistration":{"type":"integer"},"otherCharges":{"type":"integer"},"otherChargesBreakdown":{"type":"object","properties":{"loanProcessingFee":{"type":"integer"},"legalFee":{"type":"integer"},"gstUnderConstruction":{"type":"integer"}},"additionalProperties":false,"required":["loanProcessingFee","legalFee","gstUnderConstruction"]},"totalCashToClose":{"type":"integer"},"lifetimeCost":{"type":"integer"},"savingsAvailable":{"type":["integer","null"]},"downPaymentGap":{"type":["integer","null"]}},"additionalProperties":false,"required":["propertyValue","downPayment","stampDutyAndRegistration","otherCharges","otherChargesBreakdown","totalCashToClose","lifetimeCost","savingsAvailable","downPaymentGap"]},"tax":{"type":"object","properties":{"recommendedRegime":{"type":"string","enum":["old","new"]},"homeLoanTaxBenefitOld":{"type":"integer"},"netEffectiveAnnualBenefit":{"type":"integer","description":"Honest: 0 when the new regime wins (home-loan deductions forgone)."},"netEffectiveMonthlyEmi":{"type":"integer"},"notModeled":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"required":["recommendedRegime","homeLoanTaxBenefitOld","netEffectiveAnnualBenefit","netEffectiveMonthlyEmi","notModeled"]},"verdict":{"type":"object","properties":{"signal":{"type":"string","enum":["AFFORDABLE","STRETCH","NOT_YET","INELIGIBLE"]},"headline":{"type":"string"},"blockingLever":{"type":["string","null"]},"levers":{"type":"array","items":{"type":"object","properties":{"lever":{"type":"string"},"amountInr":{"type":"integer"},"effect":{"type":"string"}},"additionalProperties":false,"required":["lever","effect"]}},"confidence":{"enum":["indicative"]}},"additionalProperties":false,"required":["signal","headline","blockingLever","levers","confidence"]},"assumptions":{"type":"object","properties":{"rateSource":{"type":"string"},"ltvBasis":{"type":"string"},"regimeYear":{"enum":["FY2026-27"]},"annualIncomeEstimated":{"type":"boolean"},"buyerGender":{"type":"string","enum":["male","female","joint"]},"cibilProvided":{"type":"boolean"},"savingsProvided":{"type":"boolean"},"seniorCitizenNotModeled":{"enum":[true]}},"additionalProperties":false,"required":["rateSource","ltvBasis","regimeYear","annualIncomeEstimated","buyerGender","cibilProvided","savingsProvided","seniorCitizenNotModeled"]},"stampDutySupported":{"type":"boolean"},"attribution":{"enum":["AVnester"]},"disclaimer":{"type":"string","description":"Mandatory disclaimer — not a loan approval, offer, or financial advice."}},"additionalProperties":false,"required":["attribution","disclaimer"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":"integer"}}}}}}}}}},"tags":[{"name":"public","description":"AVnester v1 public tools — read-only, India-scoped, India-resident data."}]}