AVnester — Indian Real Estate Intelligence
Indian real estate: property search, locality insights, affordability & pan-India stamp-duty tools.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- LOWestimate_stamp_duty_and_registration에서
- LOWget_property_decision_intelligence에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"property-intelligence": {
"url": "https://mcp.avnester.com/public-mcp"
}
}
}원격 엔드포인트
https://mcp.avnester.com/public-mcpstreamable-http할 수 있는 일
도구 목록
도구 (11)
🟢search_properties(city, locality, propertyType, bedrooms, minPrice, ...)
Search residential property listings in Coimbatore and Chennai, Tamil Nadu. Use when the user names a locality, price band, BHK, or transaction type in either city. Returns sanitized listing cards with handoff URLs and a per-listing verified flag; never returns seller contact details. Out-of-scope cities return supported=false + supportedCities + scopeMessage — surface the scopeMessage to the user.
입력 스키마
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"description": "Indian city name (e.g., \"Bangalore\", \"Coimbatore\"). Required for results."
},
"locality": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"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": {
"description": "Whether to search for sale or rent. Omit to include both.",
"type": "string",
"enum": [
"sale",
"rent"
]
},
"rentalStructure": {
"description": "Rental money structure: monthly rent, or a lump-sum lease (one refundable amount for a fixed tenure, no monthly rent). Only meaningful with transactionType=rent. Omit to include both.",
"type": "string",
"enum": [
"monthly",
"lease"
]
},
"furnishing": {
"type": "string",
"enum": [
"furnished",
"semi-furnished",
"unfurnished"
],
"description": "Furnishing status (rental queries)."
},
"limit": {
"default": 10,
"description": "Maximum number of listings to return (cap: 20). v1 abuse defense.",
"type": "integer",
"minimum": 1,
"maximum": 20
}
}
}출력 스키마
{
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"listings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"listingId": {
"type": "string"
},
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"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"
]
},
"rentalStructure": {
"type": [
"string",
"null"
],
"enum": [
"monthly",
"lease"
]
},
"leaseAmount": {
"type": [
"number",
"null"
]
},
"leaseTenureMonths": {
"type": [
"integer",
"null"
]
},
"leaseRefundable": {
"type": [
"boolean",
"null"
]
},
"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"
]
},
"reraId": {
"type": [
"string",
"null"
]
},
"pricePerSqft": {
"type": [
"integer",
"null"
]
},
"verified": {
"type": "boolean"
},
"featured": {
"type": "boolean"
},
"verification": {
"type": "object",
"properties": {
"documentVerified": {
"type": "boolean"
},
"tier": {
"type": [
"string",
"null"
]
},
"locationVerified": {
"type": "boolean"
},
"locationConfidence": {
"type": [
"integer",
"null"
]
},
"lastVerifiedAt": {
"type": [
"string",
"null"
]
},
"method": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true,
"required": [
"documentVerified",
"tier",
"locationVerified",
"locationConfidence",
"lastVerifiedAt",
"method"
]
},
"plotDetails": {
"type": [
"object",
"null"
],
"properties": {
"dtcpApproved": {
"type": [
"boolean",
"null"
]
},
"dtcpNumber": {
"type": [
"string",
"null"
]
},
"landClassification": {
"type": [
"string",
"null"
]
},
"facing": {
"type": [
"string",
"null"
]
},
"roadWidthFt": {
"type": [
"number",
"null"
]
},
"gatedCommunity": {
"type": [
"boolean",
"null"
]
},
"waterAvailability": {
"type": [
"string",
"null"
]
},
"electricity": {
"type": [
"string",
"null"
]
},
"ownershipType": {
"type": [
"string",
"null"
]
},
"plotNumber": {
"type": [
"string",
"null"
]
},
"pincode": {
"type": [
"string",
"null"
]
},
"pattaChittaStatus": {
"type": [
"string",
"null"
]
},
"encumbranceStatus": {
"type": [
"string",
"null"
]
},
"guidelineValueInr": {
"type": [
"integer",
"null"
]
},
"plotLengthFt": {
"type": [
"number",
"null"
]
},
"plotBreadthFt": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true,
"required": [
"dtcpApproved",
"dtcpNumber",
"landClassification",
"facing",
"roadWidthFt",
"gatedCommunity",
"waterAvailability",
"electricity",
"ownershipType",
"plotNumber",
"pincode",
"pattaChittaStatus",
"encumbranceStatus",
"guidelineValueInr",
"plotLengthFt",
"plotBreadthFt"
]
},
"verifiedAt": {
"type": [
"string",
"null"
]
},
"validUntil": {
"type": [
"string",
"null"
]
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"attribution": {
"enum": [
"AVnester"
]
},
"imageThumbnailUrl": {
"type": [
"string",
"null"
],
"format": "uri"
},
"rank": {
"type": "integer"
},
"priceRank": {
"type": "integer"
},
"areaRank": {
"type": "integer"
},
"valueRank": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"listingId",
"title",
"summary",
"city",
"locality",
"bhk",
"bathrooms",
"carpetAreaSqft",
"price",
"priceUnit",
"listingType",
"furnishingStatus",
"parkingCount",
"floorNumber",
"totalFloors",
"ageInYears",
"availableFrom",
"reraId",
"pricePerSqft",
"verified",
"featured",
"verification",
"plotDetails",
"verifiedAt",
"validUntil",
"sourceUrl",
"attribution",
"imageThumbnailUrl"
]
}
},
"sortBy": {
"type": "string"
},
"supported": {
"type": "boolean"
},
"supportedCities": {
"type": "array",
"items": {
"type": "string"
}
},
"scopeMessage": {
"type": "string"
},
"message": {
"type": "string"
},
"attribution": {
"enum": [
"AVnester"
]
},
"handoffUrl": {
"type": "string",
"format": "uri"
},
"disclaimer": {
"type": "string"
}
},
"required": [
"total",
"listings",
"supported",
"attribution",
"handoffUrl",
"disclaimer"
],
"additionalProperties": true
}🟢get_locality_insights(locality, city)
Get aggregated insights for a Coimbatore or Chennai locality: avg price, supply count, demand pulse, livability/investment grade, highlights, watchouts, monthly priceTrends, and strengthTags. Use when the user asks "what is X locality like" about a neighborhood in either city. Out-of-scope cities return supported=false; surface the scopeMessage to the user. Always surface the disclaimer field when returning livability or investment grade.
입력 스키마
{
"type": "object",
"properties": {
"locality": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"description": "Locality name within an Indian city."
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"description": "Indian city (required)."
}
},
"required": [
"locality",
"city"
]
}출력 스키마
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"city": {
"type": "string"
},
"locality": {
"type": "string"
},
"supported": {
"type": "boolean"
},
"supportedCities": {
"type": "array",
"items": {
"type": "string"
}
},
"scopeMessage": {
"type": "string"
},
"insights": {
"type": "object",
"properties": {
"avgPriceInr": {
"type": [
"number",
"null"
]
},
"pricePerSqftInr": {
"type": [
"number",
"null"
]
},
"rent2bhkInr": {
"type": [
"number",
"null"
]
},
"rentalYieldPct": {
"type": [
"number",
"null"
]
},
"priceGrowth1YPct": {
"type": [
"number",
"null"
]
},
"supplyCount": {
"type": [
"integer",
"null"
]
},
"demandPulse": {
"type": [
"string",
"null"
],
"enum": [
"low",
"medium",
"high"
]
},
"livabilityScore": {
"type": [
"number",
"null"
]
},
"livabilityScoreBasis": {
"type": [
"string",
"null"
],
"enum": [
"editorial-estimate"
]
},
"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"
},
"avgPriceInr": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true,
"required": [
"period",
"avgPriceInr"
]
}
},
"strengthTags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"required": [
"avgPriceInr",
"pricePerSqftInr",
"rent2bhkInr",
"rentalYieldPct",
"priceGrowth1YPct",
"supplyCount",
"demandPulse",
"livabilityScore",
"livabilityScoreBasis",
"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": true,
"required": [
"updatedAt",
"sourceCount",
"confidence"
]
},
"attribution": {
"enum": [
"AVnester"
]
},
"handoffUrl": {
"type": "string",
"format": "uri"
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"city",
"locality",
"supported",
"insights",
"freshness",
"attribution",
"handoffUrl",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢compare_localities(city, localities, propertyType)
Compare 2–3 Coimbatore or Chennai localities side-by-side: 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 neighborhoods in these cities. Out-of-scope cities return supported=false; surface the scopeMessage to the user. For comparing specific LISTINGS by ID, use compare_properties instead.
입력 스키마
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"description": "Indian city covering all compared localities."
},
"localities": {
"minItems": 2,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$"
},
"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."
}
},
"required": [
"city",
"localities"
]
}출력 스키마
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"localities": {
"type": "array",
"items": {
"type": "string"
}
},
"supported": {
"type": "boolean"
},
"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": true,
"required": [
"period",
"avgPriceInr"
]
}
},
"pricePerSqftInr": {
"type": [
"number",
"null"
]
},
"rent2bhkInr": {
"type": [
"number",
"null"
]
},
"rentalYieldPct": {
"type": [
"number",
"null"
]
},
"priceGrowth1YPct": {
"type": [
"number",
"null"
]
},
"asOfMonth": {
"type": [
"string",
"null"
]
},
"sourceCount": {
"type": [
"integer",
"null"
]
},
"confidence": {
"type": [
"string",
"null"
],
"enum": [
"high",
"medium",
"low"
]
},
"livabilityScore": {
"type": [
"number",
"null"
]
},
"livabilityScoreBasis": {
"type": [
"string",
"null"
],
"enum": [
"editorial-estimate"
]
},
"investmentGrade": {
"type": [
"string",
"null"
]
},
"strengthTags": {
"type": "array",
"items": {
"type": "string"
}
},
"watchouts": {
"type": "array",
"items": {
"type": "string"
}
},
"highlights": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"required": [
"priceTrends",
"pricePerSqftInr",
"rent2bhkInr",
"rentalYieldPct",
"priceGrowth1YPct",
"asOfMonth",
"sourceCount",
"confidence",
"livabilityScore",
"livabilityScoreBasis",
"investmentGrade",
"strengthTags",
"watchouts",
"highlights"
]
}
},
"attribution": {
"enum": [
"AVnester"
]
},
"handoffUrl": {
"type": "string",
"format": "uri"
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"city",
"localities",
"supported",
"comparison",
"attribution",
"handoffUrl",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢calculate_home_affordability(propertyValue, loanAmount, interestRatePercent, tenureYears)
Estimate the monthly home-loan EMI / monthly payment in India — a home-loan calculator. Deterministic math; not advice or a loan-approval claim. Two modes: pass propertyValue (80% LTV assumed) OR loanAmount for a specific loan (e.g. "₹50 lakh loan"). Use for "what would my EMI be" / "monthly payment on …". The response `assumptionNote` states the basis in plain words. Always surface the disclaimer field.
입력 스키마
{
"type": "object",
"properties": {
"propertyValue": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Property value (price) in INR. When the user states a property/home price, put it here — an 80% loan is assumed unless loanAmount is also given."
},
"loanAmount": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Loan amount in INR. Pass this when the user states a specific loan (e.g. \"₹50 lakh loan\") rather than a property price. 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."
}
},
"required": [
"propertyValue"
]
}출력 스키마
{
"type": "object",
"properties": {
"inputPropertyValue": {
"type": "integer"
},
"loanAmount": {
"type": "integer"
},
"interestRatePercent": {
"type": "number"
},
"tenureYears": {
"type": "integer"
},
"emi": {
"type": "integer"
},
"totalInterest": {
"type": "integer"
},
"totalPayment": {
"type": "integer"
},
"assumptions": {
"type": "object",
"properties": {
"defaultLtvPercent": {
"type": "number"
},
"actualLtvPercent": {
"type": "number"
},
"downPaymentAmount": {
"type": "integer"
},
"lenderMaxLoan": {
"type": "integer"
},
"unfundedAmount": {
"type": "integer"
},
"interestType": {
"enum": [
"reducing-balance"
]
},
"notALoanApproval": {
"enum": [
true
]
}
},
"additionalProperties": true,
"required": [
"defaultLtvPercent",
"actualLtvPercent",
"downPaymentAmount",
"lenderMaxLoan",
"unfundedAmount",
"interestType",
"notALoanApproval"
]
},
"assumptionNote": {
"type": "string"
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"inputPropertyValue",
"loanAmount",
"interestRatePercent",
"tenureYears",
"emi",
"totalInterest",
"totalPayment",
"assumptions",
"assumptionNote",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢simulate_loan_prepayment(outstandingPrincipal, remainingTenureYears, annualRatePercent, prepaymentAmount, recurringAnnualAmount, ...)
Simulate prepaying / repaying an Indian home loan early. Pure deterministic math — no advice, no loan-approval claim. Use for "should I prepay", "early/part/lump-sum repayment", "pay extra each month", "reduce EMI or tenure", "interest saved", or foreclosure. Modes: one-time, recurring yearly, or a fixed extra every month (recurring_monthly). Compares reduce_tenure (keep EMI, finish early) vs reduce_emi (keep tenure, lower EMI). Always surface the disclaimer field.
입력 스키마
{
"type": "object",
"properties": {
"outstandingPrincipal": {
"type": "integer",
"exclusiveMinimum": 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": {
"default": 0,
"description": "One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).",
"type": "integer",
"minimum": 0
},
"recurringAnnualAmount": {
"default": 0,
"description": "Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).",
"type": "integer",
"minimum": 0
},
"recurringMonthlyAmount": {
"default": 0,
"description": "Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).",
"type": "integer",
"minimum": 0
},
"prepaymentMode": {
"default": "one_time",
"description": "How the prepayment is made (annual anniversary vs every month).",
"type": "string",
"enum": [
"one_time",
"recurring_annual",
"recurring_monthly",
"one_time_plus_recurring",
"one_time_plus_recurring_monthly"
]
},
"strategy": {
"default": "compare_both",
"description": "reduce_tenure keeps the EMI and finishes early (bigger saving); reduce_emi keeps the tenure and lowers the EMI; compare_both returns both.",
"type": "string",
"enum": [
"reduce_tenure",
"reduce_emi",
"compare_both"
]
}
},
"required": [
"outstandingPrincipal",
"remainingTenureYears"
]
}출력 스키마
{
"type": "object",
"properties": {
"outstandingPrincipal": {
"type": "integer"
},
"annualRatePercent": {
"type": "number"
},
"remainingTenureYears": {
"type": "integer"
},
"prepaymentMode": {
"type": "string",
"enum": [
"one_time",
"recurring_annual",
"recurring_monthly",
"one_time_plus_recurring",
"one_time_plus_recurring_monthly"
]
},
"strategy": {
"type": "string",
"enum": [
"reduce_tenure",
"reduce_emi",
"compare_both"
]
},
"applied": {
"type": "object",
"properties": {
"oneTime": {
"type": "integer"
},
"recurringAnnual": {
"type": "integer"
},
"recurringMonthly": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"oneTime",
"recurringAnnual",
"recurringMonthly"
]
},
"baseline": {
"type": "object",
"properties": {
"emi": {
"type": "integer"
},
"payoffMonths": {
"type": "integer"
},
"totalInterest": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"emi",
"payoffMonths",
"totalInterest"
]
},
"reduceTenure": {
"type": "object",
"properties": {
"emi": {
"type": "integer"
},
"payoffMonths": {
"type": "integer"
},
"totalInterest": {
"type": "integer"
},
"interestSaved": {
"type": "integer"
},
"monthsSaved": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"emi",
"payoffMonths",
"totalInterest",
"interestSaved",
"monthsSaved"
]
},
"reduceEmi": {
"type": "object",
"properties": {
"emi": {
"type": "integer"
},
"payoffMonths": {
"type": "integer"
},
"totalInterest": {
"type": "integer"
},
"interestSaved": {
"type": "integer"
},
"monthsSaved": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"emi",
"payoffMonths",
"totalInterest",
"interestSaved",
"monthsSaved"
]
},
"assumptions": {
"type": "object",
"properties": {
"interestType": {
"enum": [
"reducing-balance"
]
},
"oneTimeAppliedImmediately": {
"enum": [
true
]
},
"recurringAppliedAnnually": {
"enum": [
true
]
},
"recurringMonthlyAppliedEachMonth": {
"enum": [
true
]
},
"floatingRatePrepaymentPenaltyWaived": {
"enum": [
true
]
},
"notALoanApproval": {
"enum": [
true
]
}
},
"additionalProperties": true,
"required": [
"interestType",
"oneTimeAppliedImmediately",
"recurringAppliedAnnually",
"recurringMonthlyAppliedEachMonth",
"floatingRatePrepaymentPenaltyWaived",
"notALoanApproval"
]
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"outstandingPrincipal",
"annualRatePercent",
"remainingTenureYears",
"prepaymentMode",
"strategy",
"applied",
"baseline",
"assumptions",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢compare_balance_transfer(outstandingPrincipal, currentRatePercent, newRatePercent, remainingTenureYears, processingFeePct, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"outstandingPrincipal": {
"type": "integer",
"exclusiveMinimum": 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."
}
},
"required": [
"outstandingPrincipal",
"currentRatePercent",
"newRatePercent",
"remainingTenureYears"
]
}출력 스키마
{
"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"
},
"newTotalInterest": {
"type": "integer"
},
"grossInterestSaved": {
"type": "integer"
},
"switchingCost": {
"type": "integer"
},
"netSaving": {
"type": "integer"
},
"breakevenMonths": {
"type": [
"integer",
"null"
]
},
"worthIt": {
"type": "boolean"
},
"assumptions": {
"type": "object",
"properties": {
"interestType": {
"enum": [
"reducing-balance"
]
},
"tenureHeldConstant": {
"enum": [
true
]
},
"floatingForeclosurePenaltyWaived": {
"enum": [
true
]
},
"notALoanApproval": {
"enum": [
true
]
}
},
"additionalProperties": true,
"required": [
"interestType",
"tenureHeldConstant",
"floatingForeclosurePenaltyWaived",
"notALoanApproval"
]
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"outstandingPrincipal",
"currentRatePercent",
"newRatePercent",
"remainingTenureYears",
"currentEmi",
"newEmi",
"monthlyEmiSaving",
"currentTotalInterest",
"newTotalInterest",
"grossInterestSaved",
"switchingCost",
"netSaving",
"breakevenMonths",
"worthIt",
"assumptions",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢optimize_home_loan_tax_regime(annualIncome, isSalaried, homeLoanInterest, homeLoanPrincipal, propertyType, ...)
Compare a home-loan borrower's income tax under the OLD vs NEW regime (FY2026-27) and recommend which regime saves more income tax. Pure deterministic slab math — not tax advice. Use when the user asks "old or new tax regime", "home-loan tax benefit", or "section 80C / 24(b) deduction". Models §24(b) interest + §80C principal (+ joint-loan doubling); the response lists benefits it does NOT model (capital gains, HRA, etc.). Always surface the disclaimer field.
입력 스키마
{
"type": "object",
"properties": {
"annualIncome": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Annual gross income in INR EXCLUDING house property (salary + other income)."
},
"isSalaried": {
"default": true,
"description": "Whether the taxpayer is salaried (gets the standard deduction).",
"type": "boolean"
},
"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": {
"default": "self_occupied",
"description": "Whether the property is self-occupied or let out.",
"type": "string",
"enum": [
"self_occupied",
"let_out"
]
},
"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": {
"default": false,
"description": "Joint loan with a co-borrower — doubles the 80C/24b caps (equal-split assumption).",
"type": "boolean"
},
"ageBand": {
"description": "Taxpayer age band — raises the OLD-regime basic exemption (senior 60–80 → ₹3L, super-senior 80+ → ₹5L). New regime unaffected. Defaults to below60.",
"type": "string",
"enum": [
"below60",
"senior",
"super_senior"
]
},
"residencyStatus": {
"description": "Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.",
"type": "string",
"enum": [
"resident",
"nri"
]
},
"countryOfResidence": {
"description": "NRI only — DTAA article lookup hint. Free-form country name.",
"type": "string",
"maxLength": 50
},
"saleValue": {
"description": "NRI only — sale consideration in INR for §195 TDS computation.",
"type": "integer",
"minimum": 0
},
"holdingMonths": {
"description": "NRI only — holding period in months. ≤24 is STCG; >24 is LTCG.",
"type": "integer",
"minimum": 0
},
"indexedCost": {
"description": "NRI only — indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.",
"type": "integer",
"minimum": 0
},
"nroBalanceUsd": {
"description": "NRI only — NRO account balance in USD equivalent for the repatriation cap math.",
"type": "number",
"minimum": 0
},
"ytdRemittedUsd": {
"description": "NRI only — FY-to-date USD already remitted under the $1M cap.",
"type": "number",
"minimum": 0
},
"hasForm15CB": {
"description": "NRI only — whether Form 15CB CA-attestation is already in hand.",
"type": "boolean"
}
},
"required": [
"annualIncome",
"homeLoanInterest",
"homeLoanPrincipal"
]
}출력 스키마
{
"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"
},
"deductionsApplied": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"taxableIncome",
"totalTax",
"deductionsApplied"
]
},
"new": {
"type": "object",
"properties": {
"taxableIncome": {
"type": "integer"
},
"totalTax": {
"type": "integer"
},
"deductionsApplied": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"taxableIncome",
"totalTax",
"deductionsApplied"
]
},
"recommended": {
"type": "string",
"enum": [
"old",
"new"
]
},
"annualSaving": {
"type": "integer"
},
"homeLoanTaxBenefitOld": {
"type": "integer"
},
"notModeled": {
"type": "array",
"items": {
"type": "string"
}
},
"assumptions": {
"type": "object",
"properties": {
"regimeYear": {
"enum": [
"FY2026-27"
]
},
"surchargeNotModeled": {
"enum": [
true
]
},
"section80EEAExcluded": {
"enum": [
true
]
},
"notTaxAdvice": {
"enum": [
true
]
}
},
"additionalProperties": true,
"required": [
"regimeYear",
"surchargeNotModeled",
"section80EEAExcluded",
"notTaxAdvice"
]
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"residencyStatus": {
"enum": [
"nri"
]
},
"nri": {
"type": "object",
"properties": {
"countryOfResidence": {
"type": "string"
},
"dtaaNote": {
"type": "string"
},
"tds": {
"type": "object",
"properties": {
"section195Rate": {
"type": "number"
},
"tdsAmount": {
"type": "number"
},
"ltcgTax": {
"type": "number"
},
"stcgTax": {
"type": "number"
},
"form13EligibilityHint": {
"type": "boolean"
},
"notModeled": {
"type": "array",
"items": {
"type": "string"
}
},
"disclaimer": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"section195Rate",
"tdsAmount",
"ltcgTax",
"stcgTax",
"form13EligibilityHint",
"notModeled",
"disclaimer"
]
},
"repatriation": {
"type": "object",
"properties": {
"availableUsd": {
"type": "number"
},
"capUsd": {
"type": "number"
},
"requiresCA": {
"type": "boolean"
},
"notModeled": {
"type": "array",
"items": {
"type": "string"
}
},
"disclaimer": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"availableUsd",
"capUsd",
"requiresCA",
"notModeled",
"disclaimer"
]
}
},
"additionalProperties": true,
"required": [
"countryOfResidence",
"dtaaNote"
]
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"annualIncome",
"propertyType",
"jointLoan",
"old",
"new",
"recommended",
"annualSaving",
"homeLoanTaxBenefitOld",
"notModeled",
"assumptions",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢estimate_stamp_duty_and_registration(propertyValue, state, city, localBody, firstSale, ...)
Estimate Indian state stamp duty + registration charges on a property purchase. Supports all 28 states + 8 UTs with buyer-gender concessions, urban/rural overrides, and commercial/agricultural multipliers. Pass constructionStatus to also itemize GST (under-construction 1%/5%, ready/resale 0%) for an all-in statutory quote. Returns supported=false for states outside India (supported set named in rateBasis). Not legal/tax advice. Always surface the disclaimer.
입력 스키마
{
"type": "object",
"properties": {
"propertyValue": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 10000000000,
"description": "Sale value in INR for stamp-duty calculation."
},
"state": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$",
"description": "Indian state — ISO code (\"MH\"), slug (\"maharashtra\") or name (\"Maharashtra\"). Required."
},
"city": {
"description": "City or town, e.g. \"Pune\". Decides the rate where the state prices by location (MH, KA, WB, MP, HR): Pune 7%, Mumbai 6%. Send the place as the buyer names it (\"Kharghar\"), not the wider city it is listed under.",
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$"
},
"localBody": {
"description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said).",
"type": "string",
"enum": [
"municipal_corporation",
"municipal_council",
"gram_panchayat"
]
},
"firstSale": {
"description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. Absent: constructionStatus under_construction ⇒ true, resale ⇒ false, ready_to_move decides nothing (may be a resale).",
"type": "boolean"
},
"isWomanBuyer": {
"default": false,
"description": "Backward-compatibility shim — prefer buyerGender. When true, internally treated as buyerGender=\"female\".",
"type": "boolean"
},
"buyerGender": {
"description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession. Overrides isWomanBuyer.",
"type": "string",
"enum": [
"male",
"female",
"joint"
]
},
"propertyType": {
"description": "residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.",
"type": "string",
"enum": [
"residential",
"commercial",
"agricultural",
"plot"
]
},
"isUrban": {
"description": "Urban (default) or rural. Used for the location when city and localBody are absent.",
"type": "boolean"
},
"constructionStatus": {
"description": "When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit → GST not computed.",
"type": "string",
"enum": [
"under_construction",
"ready_to_move",
"resale"
]
},
"carpetAreaSqft": {
"description": "Carpet area (sqft) — with value, decides the affordable-housing 1% GST slab.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
}
},
"required": [
"propertyValue",
"state"
]
}출력 스키마
{
"type": "object",
"properties": {
"propertyValue": {
"type": "integer"
},
"state": {
"type": "string"
},
"supported": {
"type": "boolean"
},
"stateCode": {
"type": [
"string",
"null"
]
},
"stateName": {
"type": [
"string",
"null"
]
},
"stampDuty": {
"type": "integer"
},
"stampDutyBase": {
"type": "integer"
},
"surcharges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"ratePct": {
"type": "number"
},
"amount": {
"type": "integer"
},
"legalBasis": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"name",
"ratePct",
"amount"
]
}
},
"registrationFee": {
"type": "integer"
},
"registrationCapApplied": {
"type": "boolean"
},
"total": {
"type": "integer"
},
"rateBasis": {
"type": "string"
},
"location": {
"type": [
"object",
"null"
],
"properties": {
"place": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"area": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"slug",
"name"
]
},
"localBody": {
"type": [
"string",
"null"
],
"enum": [
"municipal_corporation",
"municipal_council",
"gram_panchayat"
]
},
"source": {
"type": "string",
"enum": [
"local_body",
"city",
"is_urban",
"default",
"not_applicable"
]
},
"assumed": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"place",
"localBody",
"source",
"assumed"
]
},
"rateVerification": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"verified",
"partial",
"unverified"
]
},
"lastVerifiedAt": {
"type": [
"string",
"null"
]
},
"sourceUrl": {
"type": [
"string",
"null"
]
},
"unverifiedComponents": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"required": [
"status",
"lastVerifiedAt",
"sourceUrl",
"unverifiedComponents"
]
},
"assumptions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"code",
"message"
]
}
},
"rulesVersion": {
"type": [
"string",
"null"
]
},
"rateEffectiveDate": {
"type": [
"string",
"null"
]
},
"gst": {
"type": "object",
"properties": {
"ratePct": {
"type": "number"
},
"amount": {
"type": "integer"
},
"applies": {
"type": "boolean"
},
"isAffordable": {
"type": "boolean"
},
"itcAvailableToBuyer": {
"enum": [
false
]
},
"basis": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"ratePct",
"amount",
"applies",
"isAffordable",
"itcAvailableToBuyer",
"basis"
]
},
"totalWithGst": {
"type": "integer"
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"propertyValue",
"state",
"supported",
"stateCode",
"stateName",
"stampDuty",
"stampDutyBase",
"surcharges",
"registrationFee",
"registrationCapApplied",
"total",
"rateBasis",
"location",
"rateVerification",
"assumptions",
"rulesVersion",
"rateEffectiveDate",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢get_property_details(listingId)
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 covers Coimbatore and Chennai; 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.
입력 스키마
{
"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."
}
},
"required": [
"listingId"
]
}출력 스키마
{
"type": "object",
"properties": {
"listing": {
"type": [
"object",
"null"
],
"properties": {
"listingId": {
"type": "string"
},
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"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"
]
},
"rentalStructure": {
"type": [
"string",
"null"
],
"enum": [
"monthly",
"lease"
]
},
"leaseAmount": {
"type": [
"number",
"null"
]
},
"leaseTenureMonths": {
"type": [
"integer",
"null"
]
},
"leaseRefundable": {
"type": [
"boolean",
"null"
]
},
"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"
]
},
"reraId": {
"type": [
"string",
"null"
]
},
"pricePerSqft": {
"type": [
"integer",
"null"
]
},
"verified": {
"type": "boolean"
},
"featured": {
"type": "boolean"
},
"verification": {
"type": "object",
"properties": {
"documentVerified": {
"type": "boolean"
},
"tier": {
"type": [
"string",
"null"
]
},
"locationVerified": {
"type": "boolean"
},
"locationConfidence": {
"type": [
"integer",
"null"
]
},
"lastVerifiedAt": {
"type": [
"string",
"null"
]
},
"method": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true,
"required": [
"documentVerified",
"tier",
"locationVerified",
"locationConfidence",
"lastVerifiedAt",
"method"
]
},
"plotDetails": {
"type": [
"object",
"null"
],
"properties": {
"dtcpApproved": {
"type": [
"boolean",
"null"
]
},
"dtcpNumber": {
"type": [
"string",
"null"
]
},
"landClassification": {
"type": [
"string",
"null"
]
},
"facing": {
"type": [
"string",
"null"
]
},
"roadWidthFt": {
"type": [
"number",
"null"
]
},
"gatedCommunity": {
"type": [
"boolean",
"null"
]
},
"waterAvailability": {
"type": [
"string",
"null"
]
},
"electricity": {
"type": [
"string",
"null"
]
},
"ownershipType": {
"type": [
"string",
"null"
]
},
"plotNumber": {
"type": [
"string",
"null"
]
},
"pincode": {
"type": [
"string",
"null"
]
},
"pattaChittaStatus": {
"type": [
"string",
"null"
]
},
"encumbranceStatus": {
"type": [
"string",
"null"
]
},
"guidelineValueInr": {
"type": [
"integer",
"null"
]
},
"plotLengthFt": {
"type": [
"number",
"null"
]
},
"plotBreadthFt": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true,
"required": [
"dtcpApproved",
"dtcpNumber",
"landClassification",
"facing",
"roadWidthFt",
"gatedCommunity",
"waterAvailability",
"electricity",
"ownershipType",
"plotNumber",
"pincode",
"pattaChittaStatus",
"encumbranceStatus",
"guidelineValueInr",
"plotLengthFt",
"plotBreadthFt"
]
},
"verifiedAt": {
"type": [
"string",
"null"
]
},
"validUntil": {
"type": [
"string",
"null"
]
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"attribution": {
"enum": [
"AVnester"
]
},
"imageThumbnailUrl": {
"type": [
"string",
"null"
],
"format": "uri"
}
},
"additionalProperties": true,
"required": [
"listingId",
"title",
"summary",
"city",
"locality",
"bhk",
"bathrooms",
"carpetAreaSqft",
"price",
"priceUnit",
"listingType",
"furnishingStatus",
"parkingCount",
"floorNumber",
"totalFloors",
"ageInYears",
"availableFrom",
"reraId",
"pricePerSqft",
"verified",
"featured",
"verification",
"plotDetails",
"verifiedAt",
"validUntil",
"sourceUrl",
"attribution",
"imageThumbnailUrl"
]
},
"notFound": {
"type": "boolean"
},
"message": {
"type": "string"
},
"handoffUrl": {
"type": "string",
"format": "uri"
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
},
"trust": {
"type": "object",
"properties": {
"score": {
"type": "integer"
},
"grade": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"score",
"grade"
]
}
},
"required": [
"listing",
"notFound",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢compare_properties(listingIds)
Compare 2–5 AVnester listings by listingId, side-by-side. Get IDs from search_properties first (not guessable). If the user has more than 5 candidates ("compare all"), pick the most relevant 5 (cheapest / largest / best price-per-sqft) and say so. Returns each listing plus pricePerSqft, vsCheapestPercent (0 = cheapest), vsLargestAreaPercent (0 = largest). Covers Coimbatore and Chennai; unknown IDs return not_found_or_unpublished. Does NOT recommend a purchase. Always surface the disclaimer.
입력 스키마
{
"type": "object",
"properties": {
"listingIds": {
"minItems": 2,
"maxItems": 5,
"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."
}
},
"required": [
"listingIds"
]
}출력 스키마
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"comparison": {
"type": "array",
"items": {
"type": "object",
"properties": {
"listingId": {
"type": "string"
},
"listing": {
"type": [
"object",
"null"
],
"properties": {
"listingId": {
"type": "string"
},
"title": {
"type": "string"
},
"summary": {
"type": "string"
},
"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"
]
},
"rentalStructure": {
"type": [
"string",
"null"
],
"enum": [
"monthly",
"lease"
]
},
"leaseAmount": {
"type": [
"number",
"null"
]
},
"leaseTenureMonths": {
"type": [
"integer",
"null"
]
},
"leaseRefundable": {
"type": [
"boolean",
"null"
]
},
"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"
]
},
"reraId": {
"type": [
"string",
"null"
]
},
"pricePerSqft": {
"type": [
"integer",
"null"
]
},
"verified": {
"type": "boolean"
},
"featured": {
"type": "boolean"
},
"verification": {
"type": "object",
"properties": {
"documentVerified": {
"type": "boolean"
},
"tier": {
"type": [
"string",
"null"
]
},
"locationVerified": {
"type": "boolean"
},
"locationConfidence": {
"type": [
"integer",
"null"
]
},
"lastVerifiedAt": {
"type": [
"string",
"null"
]
},
"method": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true,
"required": [
"documentVerified",
"tier",
"locationVerified",
"locationConfidence",
"lastVerifiedAt",
"method"
]
},
"plotDetails": {
"type": [
"object",
"null"
],
"properties": {
"dtcpApproved": {
"type": [
"boolean",
"null"
]
},
"dtcpNumber": {
"type": [
"string",
"null"
]
},
"landClassification": {
"type": [
"string",
"null"
]
},
"facing": {
"type": [
"string",
"null"
]
},
"roadWidthFt": {
"type": [
"number",
"null"
]
},
"gatedCommunity": {
"type": [
"boolean",
"null"
]
},
"waterAvailability": {
"type": [
"string",
"null"
]
},
"electricity": {
"type": [
"string",
"null"
]
},
"ownershipType": {
"type": [
"string",
"null"
]
},
"plotNumber": {
"type": [
"string",
"null"
]
},
"pincode": {
"type": [
"string",
"null"
]
},
"pattaChittaStatus": {
"type": [
"string",
"null"
]
},
"encumbranceStatus": {
"type": [
"string",
"null"
]
},
"guidelineValueInr": {
"type": [
"integer",
"null"
]
},
"plotLengthFt": {
"type": [
"number",
"null"
]
},
"plotBreadthFt": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true,
"required": [
"dtcpApproved",
"dtcpNumber",
"landClassification",
"facing",
"roadWidthFt",
"gatedCommunity",
"waterAvailability",
"electricity",
"ownershipType",
"plotNumber",
"pincode",
"pattaChittaStatus",
"encumbranceStatus",
"guidelineValueInr",
"plotLengthFt",
"plotBreadthFt"
]
},
"verifiedAt": {
"type": [
"string",
"null"
]
},
"validUntil": {
"type": [
"string",
"null"
]
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"attribution": {
"enum": [
"AVnester"
]
},
"imageThumbnailUrl": {
"type": [
"string",
"null"
],
"format": "uri"
}
},
"additionalProperties": true,
"required": [
"listingId",
"title",
"summary",
"city",
"locality",
"bhk",
"bathrooms",
"carpetAreaSqft",
"price",
"priceUnit",
"listingType",
"furnishingStatus",
"parkingCount",
"floorNumber",
"totalFloors",
"ageInYears",
"availableFrom",
"reraId",
"pricePerSqft",
"verified",
"featured",
"verification",
"plotDetails",
"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": true,
"required": [
"pricePerSqft",
"vsCheapestPercent",
"vsLargestAreaPercent"
]
}
},
"additionalProperties": true,
"required": [
"listingId",
"listing",
"status",
"metrics"
]
}
},
"framing": {
"type": "string"
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
}
},
"required": [
"comparison",
"framing",
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}🟢get_property_decision_intelligence(listingId, propertyValue, state, city, firstSale, ...)
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 + itemized GST), regime-aware tax, and an indicative lender-fit triage. Mode A: listingId (Coimbatore/Chennai catalog). Mode B: propertyValue + state (any Indian state). NOT a loan approval, offer, or advice. Always surface the disclaimer.
입력 스키마
{
"type": "object",
"properties": {
"listingId": {
"description": "AVnester listingId (Coimbatore/Chennai catalog). Listing mode — propertyValue, state and city are then ignored, with a warning.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"propertyValue": {
"description": "Property price in INR (manual mode). Pass with state (and city where it matters).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000000
},
"state": {
"description": "Indian state (ISO \"MH\"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.",
"type": "string",
"minLength": 1,
"maxLength": 50,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$"
},
"city": {
"description": "City (manual mode), e.g. \"Pune\" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.",
"type": "string",
"minLength": 1,
"maxLength": 60,
"pattern": "^[A-Za-z0-9 .,'’()\\--ऀ-ॿ]+$"
},
"firstSale": {
"description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. If absent, isUnderConstruction true means true.",
"type": "boolean"
},
"localBody": {
"description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said). Manual mode only.",
"type": "string",
"enum": [
"municipal_corporation",
"municipal_council",
"gram_panchayat"
]
},
"assetType": {
"description": "\"home\" (flat/villa/house) or \"plot\" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.",
"type": "string",
"enum": [
"home",
"plot"
]
},
"monthlyNetIncome": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000000,
"description": "Buyer monthly take-home income in INR."
},
"existingMonthlyEmis": {
"description": "Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.",
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"coApplicantMonthlyIncome": {
"description": "Co-applicant monthly income (joint affordability).",
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"savingsAvailable": {
"description": "Liquid cash for down payment + charges — enables the cash-gap calc.",
"type": "integer",
"minimum": 0,
"maximum": 10000000000
},
"cibilScore": {
"description": "Numeric CIBIL score. Omit → eligibility stays indicative.",
"type": "integer",
"minimum": 300,
"maximum": 900
},
"employmentType": {
"description": "Employment type (affects tax standard deduction).",
"type": "string",
"enum": [
"salaried",
"self_employed"
]
},
"residencyStatus": {
"description": "Residency status.",
"type": "string",
"enum": [
"resident",
"nri"
]
},
"buyerGender": {
"description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession.",
"type": "string",
"enum": [
"male",
"female",
"joint"
]
},
"occupancyIntent": {
"description": "Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.",
"type": "string",
"enum": [
"self_occupied",
"let_out"
]
},
"annualRent": {
"description": "Annual rent received (let-out).",
"type": "integer",
"minimum": 0
},
"jointLoan": {
"description": "Joint home loan — doubles 80C/24b caps (equal split).",
"type": "boolean"
},
"isUnderConstruction": {
"description": "Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).",
"type": "boolean"
},
"carpetAreaSqft": {
"description": "Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"isUrban": {
"description": "Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.",
"type": "boolean"
},
"interestRatePercent": {
"description": "Override annual interest rate. Defaults to indicative market rate.",
"type": "number",
"minimum": 1,
"maximum": 30
},
"tenureYears": {
"description": "Loan tenure in years. Defaults to 20.",
"type": "integer",
"minimum": 1,
"maximum": 40
},
"annualIncomeForTax": {
"description": "Annual income for tax. Defaults to monthlyNetIncome × 12.",
"type": "integer",
"minimum": 0
}
},
"required": [
"monthlyNetIncome"
]
}출력 스키마
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"listing",
"manual"
]
},
"assetType": {
"type": "string",
"enum": [
"home",
"plot"
]
},
"notFound": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"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": true,
"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": true,
"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": true,
"required": [
"loanProcessingFee",
"legalFee",
"gstUnderConstruction"
]
},
"gst": {
"type": "object",
"properties": {
"ratePct": {
"type": "number"
},
"amount": {
"type": "integer"
},
"applies": {
"type": "boolean"
},
"isAffordable": {
"type": "boolean"
},
"itcAvailableToBuyer": {
"enum": [
false
]
},
"basis": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"ratePct",
"amount",
"applies",
"isAffordable",
"itcAvailableToBuyer",
"basis"
]
},
"totalCashToClose": {
"type": "integer"
},
"lifetimeCost": {
"type": "integer"
},
"savingsAvailable": {
"type": [
"integer",
"null"
]
},
"downPaymentGap": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": true,
"required": [
"propertyValue",
"downPayment",
"stampDutyAndRegistration",
"otherCharges",
"otherChargesBreakdown",
"gst",
"totalCashToClose",
"lifetimeCost",
"savingsAvailable",
"downPaymentGap"
]
},
"tax": {
"type": "object",
"properties": {
"recommendedRegime": {
"type": "string",
"enum": [
"old",
"new"
]
},
"homeLoanTaxBenefitOld": {
"type": "integer"
},
"netEffectiveAnnualBenefit": {
"type": "integer"
},
"netEffectiveMonthlyEmi": {
"type": "integer"
},
"notModeled": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": true,
"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": true,
"required": [
"lever",
"effect"
]
}
},
"confidence": {
"enum": [
"indicative"
]
}
},
"additionalProperties": true,
"required": [
"signal",
"headline",
"blockingLever",
"levers",
"confidence"
]
},
"lenderFit": {
"type": "object",
"properties": {
"lenders": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"bank",
"hfc"
]
},
"indicativeRatePct": {
"type": "number"
},
"eligible": {
"type": "boolean"
},
"fitScore": {
"type": "integer"
},
"fitReason": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"name",
"kind",
"indicativeRatePct",
"eligible",
"fitScore",
"fitReason"
]
}
},
"eligibleLenders": {
"type": "array",
"items": {
"type": "string"
}
},
"cibilConsidered": {
"type": "boolean"
},
"notAnOffer": {
"enum": [
true
]
},
"notALoanApproval": {
"enum": [
true
]
},
"summary": {
"type": "string"
},
"disclaimer": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"lenders",
"eligibleLenders",
"cibilConsidered",
"notAnOffer",
"notALoanApproval",
"summary",
"disclaimer"
]
},
"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"
},
"existingEmisProvided": {
"type": "boolean"
},
"occupancyIntent": {
"type": "string",
"enum": [
"self_occupied",
"let_out"
]
},
"occupancyIntentProvided": {
"type": "boolean"
},
"isUnderConstruction": {
"type": "boolean"
},
"underConstructionProvided": {
"type": "boolean"
},
"seniorCitizenNotModeled": {
"enum": [
true
]
}
},
"additionalProperties": true,
"required": [
"rateSource",
"ltvBasis",
"regimeYear",
"annualIncomeEstimated",
"buyerGender",
"cibilProvided",
"savingsProvided",
"existingEmisProvided",
"occupancyIntent",
"occupancyIntentProvided",
"isUnderConstruction",
"underConstructionProvided",
"seniorCitizenNotModeled"
]
},
"stampDutySupported": {
"type": "boolean"
},
"attribution": {
"enum": [
"AVnester"
]
},
"disclaimer": {
"type": "string"
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"priority": {
"type": "integer"
}
},
"additionalProperties": true,
"required": [
"template",
"data",
"priority"
]
}
},
"trust": {
"type": "object",
"properties": {
"score": {
"type": "integer"
},
"grade": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"score",
"grade"
]
}
},
"required": [
"attribution",
"disclaimer",
"cards"
],
"additionalProperties": true
}커뮤니티
증거