AVnester — Indian Real Estate Intelligence
What this MCP does
Searches Indian property listings and provides locality insights, affordability, loan, tax, stamp-duty, registration, refinancing, and prepayment calculations.
Tools
Input schema
{'type': 'object', 'required': ['propertyValue'], 'properties': {'loanAmount': {'type': 'integer', 'description': 'Loan amount in INR. Pass this when the user states a specific loan (e.g. "â\x82¹50 lakh loan") rather than a property price. Defaults to 80% of propertyValue if omitted.', 'exclusiveMinimum': 0}, 'tenureYears': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan tenure in years. Defaults to 20.'}, 'propertyValue': {'type': 'integer', 'description': 'Property value (price) in INR. When the user states a property/home price, put it here â\x80\x94 an 80% loan is assumed unless loanAmount is also given.', 'exclusiveMinimum': 0}, 'interestRatePercent': {'type': 'number', 'maximum': 30, 'minimum': 1, 'description': 'Annual interest rate (percent). Defaults to current market estimate.'}}}
Output schema
{'type': 'object', 'required': ['inputPropertyValue', 'loanAmount', 'interestRatePercent', 'tenureYears', 'emi', 'totalInterest', 'totalPayment', 'assumptions', 'assumptionNote', 'attribution', 'disclaimer', 'cards'], 'properties': {'emi': {'type': 'integer'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'disclaimer': {'type': 'string'}, 'loanAmount': {'type': 'integer'}, 'assumptions': {'type': 'object', 'required': ['defaultLtvPercent', 'actualLtvPercent', 'downPaymentAmount', 'lenderMaxLoan', 'unfundedAmount', 'interestType', 'notALoanApproval'], 'properties': {'interestType': {'enum': ['reducing-balance']}, 'lenderMaxLoan': {'type': 'integer'}, 'unfundedAmount': {'type': 'integer'}, 'actualLtvPercent': {'type': 'number'}, 'notALoanApproval': {'enum': [True]}, 'defaultLtvPercent': {'type': 'number'}, 'downPaymentAmount': {'type': 'integer'}}, 'additionalProperties': True}, 'attribution': {'enum': ['AVnester']}, 'tenureYears': {'type': 'integer'}, 'totalPayment': {'type': 'integer'}, 'totalInterest': {'type': 'integer'}, 'assumptionNote': {'type': 'string'}, 'inputPropertyValue': {'type': 'integer'}, 'interestRatePercent': {'type': 'number'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['outstandingPrincipal', 'currentRatePercent', 'newRatePercent', 'remainingTenureYears'], 'properties': {'flatCosts': {'type': 'integer', 'minimum': 0, 'description': 'Flat legal + valuation charges in INR. Defaults to â\x82¹12,500.'}, 'newRatePercent': {'type': 'number', 'maximum': 30, 'minimum': 1, 'description': 'New lender annual interest rate (percent).'}, 'processingFeePct': {'type': 'number', 'maximum': 5, 'minimum': 0, 'description': 'New-lender processing fee on the balance (percent). Defaults to 0.5%.'}, 'currentRatePercent': {'type': 'number', 'maximum': 30, 'minimum': 1, 'description': 'Current annual interest rate (percent).'}, 'outstandingPrincipal': {'type': 'integer', 'description': 'Current outstanding home-loan principal in INR.', 'exclusiveMinimum': 0}, 'remainingTenureYears': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Years left on the loan.'}}}
Output schema
{'type': 'object', 'required': ['outstandingPrincipal', 'currentRatePercent', 'newRatePercent', 'remainingTenureYears', 'currentEmi', 'newEmi', 'monthlyEmiSaving', 'currentTotalInterest', 'newTotalInterest', 'grossInterestSaved', 'switchingCost', 'netSaving', 'breakevenMonths', 'worthIt', 'assumptions', 'attribution', 'disclaimer', 'cards'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'newEmi': {'type': 'integer'}, 'worthIt': {'type': 'boolean'}, 'netSaving': {'type': 'integer'}, 'currentEmi': {'type': 'integer'}, 'disclaimer': {'type': 'string'}, 'assumptions': {'type': 'object', 'required': ['interestType', 'tenureHeldConstant', 'floatingForeclosurePenaltyWaived', 'notALoanApproval'], 'properties': {'interestType': {'enum': ['reducing-balance']}, 'notALoanApproval': {'enum': [True]}, 'tenureHeldConstant': {'enum': [True]}, 'floatingForeclosurePenaltyWaived': {'enum': [True]}}, 'additionalProperties': True}, 'attribution': {'enum': ['AVnester']}, 'switchingCost': {'type': 'integer'}, 'newRatePercent': {'type': 'number'}, 'breakevenMonths': {'type': ['integer', 'null']}, 'monthlyEmiSaving': {'type': 'integer'}, 'newTotalInterest': {'type': 'integer'}, 'currentRatePercent': {'type': 'number'}, 'grossInterestSaved': {'type': 'integer'}, 'currentTotalInterest': {'type': 'integer'}, 'outstandingPrincipal': {'type': 'integer'}, 'remainingTenureYears': {'type': 'integer'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['city', 'localities'], 'properties': {'city': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 60, 'minLength': 1, 'description': 'Indian city covering all compared localities.'}, 'localities': {'type': 'array', 'items': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 80, 'minLength': 1}, 'maxItems': 3, 'minItems': 2, 'description': '2â\x80\x933 localities to compare (array, not comma-separated string).'}, 'propertyType': {'enum': ['apartment', 'villa', 'plot', 'independent_house'], 'type': 'string', 'description': 'Property type for comparison.'}}}
Output schema
{'type': 'object', 'required': ['city', 'localities', 'supported', 'comparison', 'attribution', 'handoffUrl', 'disclaimer', 'cards'], 'properties': {'city': {'type': 'string'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'supported': {'type': 'boolean'}, 'comparison': {'type': 'object', 'additionalProperties': {'type': 'object', 'required': ['priceTrends', 'pricePerSqftInr', 'rent2bhkInr', 'rentalYieldPct', 'priceGrowth1YPct', 'asOfMonth', 'sourceCount', 'confidence', 'livabilityScore', 'livabilityScoreBasis', 'investmentGrade', 'strengthTags', 'watchouts', 'highlights'], 'properties': {'asOfMonth': {'type': ['string', 'null']}, 'watchouts': {'type': 'array', 'items': {'type': 'string'}}, 'confidence': {'enum': ['high', 'medium', 'low'], 'type': ['string', 'null']}, 'highlights': {'type': 'array', 'items': {'type': 'string'}}, 'priceTrends': {'type': 'array', 'items': {'type': 'object', 'required': ['period', 'avgPriceInr'], 'properties': {'period': {'type': 'string'}, 'avgPriceInr': {'type': ['number', 'null']}}, 'additionalProperties': True}}, 'rent2bhkInr': {'type': ['number', 'null']}, 'sourceCount': {'type': ['integer', 'null']}, 'strengthTags': {'type': 'array', 'items': {'type': 'string'}}, 'rentalYieldPct': {'type': ['number', 'null']}, 'investmentGrade': {'type': ['string', 'null']}, 'livabilityScore': {'type': ['number', 'null']}, 'pricePerSqftInr': {'type': ['number', 'null']}, 'priceGrowth1YPct': {'type': ['number', 'null']}, 'livabilityScoreBasis': {'enum': ['editorial-estimate'], 'type': ['string', 'null']}}, 'additionalProperties': True}}, 'disclaimer': {'type': 'string'}, 'handoffUrl': {'type': 'string', 'format': 'uri'}, 'localities': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'enum': ['AVnester']}, 'scopeMessage': {'type': 'string'}, 'supportedCities': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['listingIds'], 'properties': {'listingIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 5, 'minItems': 2, 'description': '2â\x80\x935 AVnester listingIds (from search_properties results) to compare. IDs are not guessable â\x80\x94 call search_properties first. Order is preserved in the output.'}}}
Output schema
{'type': 'object', 'required': ['comparison', 'framing', 'attribution', 'disclaimer', 'cards'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'framing': {'type': 'string'}, 'message': {'type': 'string'}, 'comparison': {'type': 'array', 'items': {'type': 'object', 'required': ['listingId', 'listing', 'status', 'metrics'], 'properties': {'status': {'enum': ['found', 'not_found_or_unpublished'], 'type': 'string'}, 'listing': {'type': ['object', 'null'], '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'], 'properties': {'bhk': {'type': ['integer', 'null']}, 'city': {'type': 'string'}, 'price': {'type': 'integer'}, 'title': {'type': 'string'}, 'reraId': {'type': ['string', 'null']}, 'summary': {'type': 'string'}, 'featured': {'type': 'boolean'}, 'locality': {'type': 'string'}, 'verified': {'type': 'boolean'}, 'bathrooms': {'type': ['integer', 'null']}, 'listingId': {'type': 'string'}, 'priceUnit': {'enum': ['INR']}, 'sourceUrl': {'type': 'string', 'format': 'uri'}, 'ageInYears': {'type': ['integer', 'null']}, 'validUntil': {'type': ['string', 'null']}, 'verifiedAt': {'type': ['string', 'null']}, 'attribution': {'enum': ['AVnester']}, 'floorNumber': {'type': ['integer', 'null']}, 'leaseAmount': {'type': ['number', 'null']}, 'listingType': {'enum': ['sale', 'rent'], 'type': 'string'}, 'plotDetails': {'type': ['object', 'null'], 'required': ['dtcpApproved', 'dtcpNumber', 'landClassification', 'facing', 'roadWidthFt', 'gatedCommunity', 'waterAvailability', 'electricity', 'ownershipType', 'plotNumber', 'pincode', 'pattaChittaStatus', 'encumbranceStatus', 'guidelineValueInr', 'plotLengthFt', 'plotBreadthFt'], 'properties': {'facing': {'type': ['string', 'null']}, 'pincode': {'type': ['string', 'null']}, 'dtcpNumber': {'type': ['string', 'null']}, 'plotNumber': {'type': ['string', 'null']}, 'electricity': {'type': ['string', 'null']}, 'roadWidthFt': {'type': ['number', 'null']}, 'dtcpApproved': {'type': ['boolean', 'null']}, 'plotLengthFt': {'type': ['number', 'null']}, 'ownershipType': {'type': ['string', 'null']}, 'plotBreadthFt': {'type': ['number', 'null']}, 'gatedCommunity': {'type': ['boolean', 'null']}, 'encumbranceStatus': {'type': ['string', 'null']}, 'guidelineValueInr': {'type': ['integer', 'null']}, 'pattaChittaStatus': {'type': ['string', 'null']}, 'waterAvailability': {'type': ['string', 'null']}, 'landClassification': {'type': ['string', 'null']}}, 'additionalProperties': True}, 'totalFloors': {'type': ['integer', 'null']}, 'parkingCount': {'type': ['integer', 'null']}, 'pricePerSqft': {'type': ['integer', 'null']}, 'verification': {'type': 'object', 'required': ['documentVerified', 'tier', 'locationVerified', 'locationConfidence', 'lastVerifiedAt', 'method'], 'properties': {'tier': {'type': ['string', 'null']}, 'method': {'type': ['string', 'null']}, 'lastVerifiedAt': {'type': ['string', 'null']}, 'documentVerified': {'type': 'boolean'}, 'locationVerified': {'type': 'boolean'}, 'locationConfidence': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'availableFrom': {'type': ['string', 'null']}, 'carpetAreaSqft': {'type': ['number', 'null']}, 'leaseRefundable': {'type': ['boolean', 'null']}, 'rentalStructure': {'enum': ['monthly', 'lease'], 'type': ['string', 'null']}, 'furnishingStatus': {'enum': ['furnished', 'semi-furnished', 'unfurnished'], 'type': ['string', 'null']}, 'imageThumbnailUrl': {'type': ['string', 'null'], 'format': 'uri'}, 'leaseTenureMonths': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'metrics': {'type': ['object', 'null'], 'required': ['pricePerSqft', 'vsCheapestPercent', 'vsLargestAreaPercent'], 'properties': {'pricePerSqft': {'type': ['integer', 'null']}, 'vsCheapestPercent': {'type': ['integer', 'null']}, 'vsLargestAreaPercent': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'listingId': {'type': 'string'}}, 'additionalProperties': True}}, 'disclaimer': {'type': 'string'}, 'attribution': {'enum': ['AVnester']}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['propertyValue', 'state'], 'properties': {'city': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 60, 'minLength': 1, '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.'}, 'state': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 50, 'minLength': 1, 'description': 'Indian state â\x80\x94 ISO code ("MH"), slug ("maharashtra") or name ("Maharashtra"). Required.'}, 'isUrban': {'type': 'boolean', 'description': 'Urban (default) or rural. Used for the location when city and localBody are absent.'}, 'firstSale': {'type': 'boolean', '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 â\x87\x92 true, resale â\x87\x92 false, ready_to_move decides nothing (may be a resale)."}, 'localBody': {'enum': ['municipal_corporation', 'municipal_council', 'gram_panchayat'], 'type': 'string', '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).'}, 'buyerGender': {'enum': ['male', 'female', 'joint'], 'type': 'string', '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.'}, 'isWomanBuyer': {'type': 'boolean', 'default': False, 'description': 'Backward-compatibility shim â\x80\x94 prefer buyerGender. When true, internally treated as buyerGender="female".'}, 'propertyType': {'enum': ['residential', 'commercial', 'agricultural', 'plot'], 'type': 'string', 'description': 'residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.'}, 'propertyValue': {'type': 'integer', 'maximum': 10000000000, 'description': 'Sale value in INR for stamp-duty calculation.', 'exclusiveMinimum': 0}, 'carpetAreaSqft': {'type': 'integer', 'maximum': 100000, 'description': 'Carpet area (sqft) â\x80\x94 with value, decides the affordable-housing 1% GST slab.', 'exclusiveMinimum': 0}, 'constructionStatus': {'enum': ['under_construction', 'ready_to_move', 'resale'], 'type': 'string', 'description': 'When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit â\x86\x92 GST not computed.'}}}
Output schema
{'type': 'object', 'required': ['propertyValue', 'state', 'supported', 'stateCode', 'stateName', 'stampDuty', 'stampDutyBase', 'surcharges', 'registrationFee', 'registrationCapApplied', 'total', 'rateBasis', 'location', 'rateVerification', 'assumptions', 'rulesVersion', 'rateEffectiveDate', 'attribution', 'disclaimer', 'cards'], 'properties': {'gst': {'type': 'object', 'required': ['ratePct', 'amount', 'applies', 'isAffordable', 'itcAvailableToBuyer', 'basis'], 'properties': {'basis': {'type': 'string'}, 'amount': {'type': 'integer'}, 'applies': {'type': 'boolean'}, 'ratePct': {'type': 'number'}, 'isAffordable': {'type': 'boolean'}, 'itcAvailableToBuyer': {'enum': [False]}}, 'additionalProperties': True}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'state': {'type': 'string'}, 'total': {'type': 'integer'}, 'location': {'type': ['object', 'null'], 'required': ['place', 'localBody', 'source', 'assumed'], 'properties': {'place': {'type': ['object', 'null'], 'required': ['slug', 'name'], 'properties': {'area': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': True}, 'source': {'enum': ['local_body', 'city', 'is_urban', 'default', 'not_applicable'], 'type': 'string'}, 'assumed': {'type': 'boolean'}, 'localBody': {'enum': ['municipal_corporation', 'municipal_council', 'gram_panchayat'], 'type': ['string', 'null']}}, 'additionalProperties': True}, 'rateBasis': {'type': 'string'}, 'stampDuty': {'type': 'integer'}, 'stateCode': {'type': ['string', 'null']}, 'stateName': {'type': ['string', 'null']}, 'supported': {'type': 'boolean'}, 'disclaimer': {'type': 'string'}, 'surcharges': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'ratePct', 'amount'], 'properties': {'name': {'type': 'string'}, 'amount': {'type': 'integer'}, 'ratePct': {'type': 'number'}, 'legalBasis': {'type': 'string'}}, 'additionalProperties': True}}, 'assumptions': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'attribution': {'enum': ['AVnester']}, 'rulesVersion': {'type': ['string', 'null']}, 'totalWithGst': {'type': 'integer'}, 'propertyValue': {'type': 'integer'}, 'stampDutyBase': {'type': 'integer'}, 'registrationFee': {'type': 'integer'}, 'rateVerification': {'type': 'object', 'required': ['status', 'lastVerifiedAt', 'sourceUrl', 'unverifiedComponents'], 'properties': {'status': {'enum': ['verified', 'partial', 'unverified'], 'type': 'string'}, 'sourceUrl': {'type': ['string', 'null']}, 'lastVerifiedAt': {'type': ['string', 'null']}, 'unverifiedComponents': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}, 'rateEffectiveDate': {'type': ['string', 'null']}, 'registrationCapApplied': {'type': 'boolean'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['locality', 'city'], 'properties': {'city': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 60, 'minLength': 1, 'description': 'Indian city (required).'}, 'locality': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 80, 'minLength': 1, 'description': 'Locality name within an Indian city.'}}}
Output schema
{'type': 'object', 'required': ['city', 'locality', 'supported', 'insights', 'freshness', 'attribution', 'handoffUrl', 'disclaimer', 'cards'], 'properties': {'city': {'type': 'string'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'message': {'type': 'string'}, 'insights': {'type': 'object', 'required': ['avgPriceInr', 'pricePerSqftInr', 'rent2bhkInr', 'rentalYieldPct', 'priceGrowth1YPct', 'supplyCount', 'demandPulse', 'livabilityScore', 'livabilityScoreBasis', 'investmentGrade', 'highlights', 'watchouts', 'priceTrends', 'strengthTags'], 'properties': {'watchouts': {'type': 'array', 'items': {'type': 'string'}}, 'highlights': {'type': 'array', 'items': {'type': 'string'}}, 'avgPriceInr': {'type': ['number', 'null']}, 'demandPulse': {'enum': ['low', 'medium', 'high'], 'type': ['string', 'null']}, 'priceTrends': {'type': 'array', 'items': {'type': 'object', 'required': ['period', 'avgPriceInr'], 'properties': {'period': {'type': 'string'}, 'avgPriceInr': {'type': ['number', 'null']}}, 'additionalProperties': True}}, 'rent2bhkInr': {'type': ['number', 'null']}, 'supplyCount': {'type': ['integer', 'null']}, 'strengthTags': {'type': 'array', 'items': {'type': 'string'}}, 'rentalYieldPct': {'type': ['number', 'null']}, 'investmentGrade': {'type': ['string', 'null']}, 'livabilityScore': {'type': ['number', 'null']}, 'pricePerSqftInr': {'type': ['number', 'null']}, 'priceGrowth1YPct': {'type': ['number', 'null']}, 'livabilityScoreBasis': {'enum': ['editorial-estimate'], 'type': ['string', 'null']}}, 'additionalProperties': True}, 'locality': {'type': 'string'}, 'freshness': {'type': 'object', 'required': ['updatedAt', 'sourceCount', 'confidence'], 'properties': {'updatedAt': {'type': ['string', 'null']}, 'confidence': {'enum': ['high', 'medium', 'low'], 'type': ['string', 'null']}, 'sourceCount': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'supported': {'type': 'boolean'}, 'disclaimer': {'type': 'string'}, 'handoffUrl': {'type': 'string', 'format': 'uri'}, 'attribution': {'enum': ['AVnester']}, 'scopeMessage': {'type': 'string'}, 'supportedCities': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['monthlyNetIncome'], 'properties': {'city': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 60, 'minLength': 1, 'description': 'City (manual mode), e.g. "Pune" â\x80\x94 decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.'}, 'state': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 50, 'minLength': 1, 'description': 'Indian state (ISO "MH"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.'}, 'isUrban': {'type': 'boolean', 'description': 'Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.'}, 'assetType': {'enum': ['home', 'plot'], 'type': 'string', 'description': '"home" (flat/villa/house) or "plot" (bare land); manual mode only. Plot â\x86\x92 shorter tenure, no home-loan tax benefit.'}, 'firstSale': {'type': 'boolean', '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."}, 'jointLoan': {'type': 'boolean', 'description': 'Joint home loan â\x80\x94 doubles 80C/24b caps (equal split).'}, 'listingId': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'AVnester listingId (Coimbatore/Chennai catalog). Listing mode â\x80\x94 propertyValue, state and city are then ignored, with a warning.'}, 'localBody': {'enum': ['municipal_corporation', 'municipal_council', 'gram_panchayat'], 'type': 'string', '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.'}, 'annualRent': {'type': 'integer', 'minimum': 0, 'description': 'Annual rent received (let-out).'}, 'cibilScore': {'type': 'integer', 'maximum': 900, 'minimum': 300, 'description': 'Numeric CIBIL score. Omit â\x86\x92 eligibility stays indicative.'}, 'buyerGender': {'enum': ['male', 'female', 'joint'], 'type': 'string', '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.'}, 'tenureYears': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan tenure in years. Defaults to 20.'}, 'propertyValue': {'type': 'integer', 'maximum': 1000000000, 'description': 'Property price in INR (manual mode). Pass with state (and city where it matters).', 'exclusiveMinimum': 0}, 'carpetAreaSqft': {'type': 'integer', 'maximum': 100000, 'description': 'Carpet area (sqft) â\x80\x94 sharpens the affordable-housing GST test (with the â\x82¹45L value cap).', 'exclusiveMinimum': 0}, 'employmentType': {'enum': ['salaried', 'self_employed'], 'type': 'string', 'description': 'Employment type (affects tax standard deduction).'}, 'occupancyIntent': {'enum': ['self_occupied', 'let_out'], 'type': 'string', 'description': 'Self-occupied vs let-out â\x80\x94 changes §24(b) interest treatment. Omitted â\x86\x92 self-occupied.'}, 'residencyStatus': {'enum': ['resident', 'nri'], 'type': 'string', 'description': 'Residency status.'}, 'monthlyNetIncome': {'type': 'integer', 'maximum': 100000000, 'description': 'Buyer monthly take-home income in INR.', 'exclusiveMinimum': 0}, 'savingsAvailable': {'type': 'integer', 'maximum': 10000000000, 'minimum': 0, 'description': 'Liquid cash for down payment + charges â\x80\x94 enables the cash-gap calc.'}, 'annualIncomeForTax': {'type': 'integer', 'minimum': 0, 'description': 'Annual income for tax. Defaults to monthlyNetIncome Ã\x97 12.'}, 'existingMonthlyEmis': {'type': 'integer', 'maximum': 100000000, 'minimum': 0, 'description': 'Existing monthly loan EMIs in â\x82¹ (car/personal/cards). Omitted â\x86\x92 assumed â\x82¹0, which can inflate eligibility and flip the verdict â\x80\x94 ask the buyer.'}, 'interestRatePercent': {'type': 'number', 'maximum': 30, 'minimum': 1, 'description': 'Override annual interest rate. Defaults to indicative market rate.'}, 'isUnderConstruction': {'type': 'boolean', 'description': 'Under-construction â\x86\x92 GST applies; ready-to-move â\x86\x92 no GST. Omitted â\x86\x92 ready-to-move (no GST).'}, 'coApplicantMonthlyIncome': {'type': 'integer', 'maximum': 100000000, 'minimum': 0, 'description': 'Co-applicant monthly income (joint affordability).'}}}
Output schema
{'type': 'object', 'required': ['attribution', 'disclaimer', 'cards'], 'properties': {'emi': {'type': 'object', 'required': ['loanAmount', 'interestRatePercent', 'tenureYears', 'monthlyEmi', 'totalInterest', 'totalPayment'], 'properties': {'loanAmount': {'type': 'integer'}, 'monthlyEmi': {'type': 'integer'}, 'tenureYears': {'type': 'integer'}, 'totalPayment': {'type': 'integer'}, 'totalInterest': {'type': 'integer'}, 'interestRatePercent': {'type': 'number'}}, 'additionalProperties': True}, 'tax': {'type': 'object', 'required': ['recommendedRegime', 'homeLoanTaxBenefitOld', 'netEffectiveAnnualBenefit', 'netEffectiveMonthlyEmi', 'notModeled'], 'properties': {'notModeled': {'type': 'array', 'items': {'type': 'string'}}, 'recommendedRegime': {'enum': ['old', 'new'], 'type': 'string'}, 'homeLoanTaxBenefitOld': {'type': 'integer'}, 'netEffectiveMonthlyEmi': {'type': 'integer'}, 'netEffectiveAnnualBenefit': {'type': 'integer'}}, 'additionalProperties': True}, 'mode': {'enum': ['listing', 'manual'], 'type': 'string'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'trust': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'integer'}}, 'additionalProperties': True}, 'verdict': {'type': 'object', 'required': ['signal', 'headline', 'blockingLever', 'levers', 'confidence'], 'properties': {'levers': {'type': 'array', 'items': {'type': 'object', 'required': ['lever', 'effect'], 'properties': {'lever': {'type': 'string'}, 'effect': {'type': 'string'}, 'amountInr': {'type': 'integer'}}, 'additionalProperties': True}}, 'signal': {'enum': ['AFFORDABLE', 'STRETCH', 'NOT_YET', 'INELIGIBLE'], 'type': 'string'}, 'headline': {'type': 'string'}, 'confidence': {'enum': ['indicative']}, 'blockingLever': {'type': ['string', 'null']}}, 'additionalProperties': True}, 'notFound': {'type': 'boolean'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'assetType': {'enum': ['home', 'plot'], 'type': 'string'}, 'lenderFit': {'type': 'object', 'required': ['lenders', 'eligibleLenders', 'cibilConsidered', 'notAnOffer', 'notALoanApproval', 'summary', 'disclaimer'], 'properties': {'lenders': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'indicativeRatePct', 'eligible', 'fitScore', 'fitReason'], 'properties': {'kind': {'enum': ['bank', 'hfc'], 'type': 'string'}, 'name': {'type': 'string'}, 'eligible': {'type': 'boolean'}, 'fitScore': {'type': 'integer'}, 'fitReason': {'type': 'string'}, 'indicativeRatePct': {'type': 'number'}}, 'additionalProperties': True}}, 'summary': {'type': 'string'}, 'disclaimer': {'type': 'string'}, 'notAnOffer': {'enum': [True]}, 'cibilConsidered': {'type': 'boolean'}, 'eligibleLenders': {'type': 'array', 'items': {'type': 'string'}}, 'notALoanApproval': {'enum': [True]}}, 'additionalProperties': True}, 'disclaimer': {'type': 'string'}, 'assumptions': {'type': 'object', 'required': ['rateSource', 'ltvBasis', 'regimeYear', 'annualIncomeEstimated', 'buyerGender', 'cibilProvided', 'savingsProvided', 'existingEmisProvided', 'occupancyIntent', 'occupancyIntentProvided', 'isUnderConstruction', 'underConstructionProvided', 'seniorCitizenNotModeled'], 'properties': {'ltvBasis': {'type': 'string'}, 'rateSource': {'type': 'string'}, 'regimeYear': {'enum': ['FY2026-27']}, 'buyerGender': {'enum': ['male', 'female', 'joint'], 'type': 'string'}, 'cibilProvided': {'type': 'boolean'}, 'occupancyIntent': {'enum': ['self_occupied', 'let_out'], 'type': 'string'}, 'savingsProvided': {'type': 'boolean'}, 'isUnderConstruction': {'type': 'boolean'}, 'existingEmisProvided': {'type': 'boolean'}, 'annualIncomeEstimated': {'type': 'boolean'}, 'occupancyIntentProvided': {'type': 'boolean'}, 'seniorCitizenNotModeled': {'enum': [True]}, 'underConstructionProvided': {'type': 'boolean'}}, 'additionalProperties': True}, 'attribution': {'enum': ['AVnester']}, 'eligibility': {'type': 'object', 'required': ['maxLoanByFoir', 'maxLoanByLtv', 'eligibleLoan', 'bound', 'ltvPct', 'foirAtEligibleLoanPct', 'foirCeilingPct', 'foirComfortPct', 'cibilBand', 'approvalLikelihood', 'notALoanApproval', 'notAnOffer', 'reasoning'], 'properties': {'bound': {'enum': ['foir', 'ltv'], 'type': 'string'}, 'ltvPct': {'type': 'number'}, 'cibilBand': {'type': ['string', 'null']}, 'reasoning': {'type': 'string'}, 'notAnOffer': {'enum': [True]}, 'eligibleLoan': {'type': 'integer'}, 'maxLoanByLtv': {'type': 'integer'}, 'maxLoanByFoir': {'type': 'integer'}, 'foirCeilingPct': {'type': 'number'}, 'foirComfortPct': {'type': 'number'}, 'notALoanApproval': {'enum': [True]}, 'approvalLikelihood': {'enum': ['high', 'medium', 'low', 'indicative'], 'type': 'string'}, 'foirAtEligibleLoanPct': {'type': 'number'}}, 'additionalProperties': True}, 'affordability': {'type': 'object', 'required': ['propertyValue', 'downPayment', 'stampDutyAndRegistration', 'otherCharges', 'otherChargesBreakdown', 'gst', 'totalCashToClose', 'lifetimeCost', 'savingsAvailable', 'downPaymentGap'], 'properties': {'gst': {'type': 'object', 'required': ['ratePct', 'amount', 'applies', 'isAffordable', 'itcAvailableToBuyer', 'basis'], 'properties': {'basis': {'type': 'string'}, 'amount': {'type': 'integer'}, 'applies': {'type': 'boolean'}, 'ratePct': {'type': 'number'}, 'isAffordable': {'type': 'boolean'}, 'itcAvailableToBuyer': {'enum': [False]}}, 'additionalProperties': True}, 'downPayment': {'type': 'integer'}, 'lifetimeCost': {'type': 'integer'}, 'otherCharges': {'type': 'integer'}, 'propertyValue': {'type': 'integer'}, 'downPaymentGap': {'type': ['integer', 'null']}, 'savingsAvailable': {'type': ['integer', 'null']}, 'totalCashToClose': {'type': 'integer'}, 'otherChargesBreakdown': {'type': 'object', 'required': ['loanProcessingFee', 'legalFee', 'gstUnderConstruction'], 'properties': {'legalFee': {'type': 'integer'}, 'loanProcessingFee': {'type': 'integer'}, 'gstUnderConstruction': {'type': 'integer'}}, 'additionalProperties': True}, 'stampDutyAndRegistration': {'type': 'integer'}}, 'additionalProperties': True}, 'stampDutySupported': {'type': 'boolean'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['listingId'], 'properties': {'listingId': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'AVnester listingId, as returned in search_properties results (the `listingId` field). IDs are not guessable â\x80\x94 call search_properties first. Also the trailing segment of a listing sourceUrl.'}}}
Output schema
{'type': 'object', 'required': ['listing', 'notFound', 'attribution', 'disclaimer', 'cards'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'trust': {'type': 'object', 'required': ['score', 'grade'], 'properties': {'grade': {'type': 'string'}, 'score': {'type': 'integer'}}, 'additionalProperties': True}, 'listing': {'type': ['object', 'null'], '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'], 'properties': {'bhk': {'type': ['integer', 'null']}, 'city': {'type': 'string'}, 'price': {'type': 'integer'}, 'title': {'type': 'string'}, 'reraId': {'type': ['string', 'null']}, 'summary': {'type': 'string'}, 'featured': {'type': 'boolean'}, 'locality': {'type': 'string'}, 'verified': {'type': 'boolean'}, 'bathrooms': {'type': ['integer', 'null']}, 'listingId': {'type': 'string'}, 'priceUnit': {'enum': ['INR']}, 'sourceUrl': {'type': 'string', 'format': 'uri'}, 'ageInYears': {'type': ['integer', 'null']}, 'validUntil': {'type': ['string', 'null']}, 'verifiedAt': {'type': ['string', 'null']}, 'attribution': {'enum': ['AVnester']}, 'floorNumber': {'type': ['integer', 'null']}, 'leaseAmount': {'type': ['number', 'null']}, 'listingType': {'enum': ['sale', 'rent'], 'type': 'string'}, 'plotDetails': {'type': ['object', 'null'], 'required': ['dtcpApproved', 'dtcpNumber', 'landClassification', 'facing', 'roadWidthFt', 'gatedCommunity', 'waterAvailability', 'electricity', 'ownershipType', 'plotNumber', 'pincode', 'pattaChittaStatus', 'encumbranceStatus', 'guidelineValueInr', 'plotLengthFt', 'plotBreadthFt'], 'properties': {'facing': {'type': ['string', 'null']}, 'pincode': {'type': ['string', 'null']}, 'dtcpNumber': {'type': ['string', 'null']}, 'plotNumber': {'type': ['string', 'null']}, 'electricity': {'type': ['string', 'null']}, 'roadWidthFt': {'type': ['number', 'null']}, 'dtcpApproved': {'type': ['boolean', 'null']}, 'plotLengthFt': {'type': ['number', 'null']}, 'ownershipType': {'type': ['string', 'null']}, 'plotBreadthFt': {'type': ['number', 'null']}, 'gatedCommunity': {'type': ['boolean', 'null']}, 'encumbranceStatus': {'type': ['string', 'null']}, 'guidelineValueInr': {'type': ['integer', 'null']}, 'pattaChittaStatus': {'type': ['string', 'null']}, 'waterAvailability': {'type': ['string', 'null']}, 'landClassification': {'type': ['string', 'null']}}, 'additionalProperties': True}, 'totalFloors': {'type': ['integer', 'null']}, 'parkingCount': {'type': ['integer', 'null']}, 'pricePerSqft': {'type': ['integer', 'null']}, 'verification': {'type': 'object', 'required': ['documentVerified', 'tier', 'locationVerified', 'locationConfidence', 'lastVerifiedAt', 'method'], 'properties': {'tier': {'type': ['string', 'null']}, 'method': {'type': ['string', 'null']}, 'lastVerifiedAt': {'type': ['string', 'null']}, 'documentVerified': {'type': 'boolean'}, 'locationVerified': {'type': 'boolean'}, 'locationConfidence': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'availableFrom': {'type': ['string', 'null']}, 'carpetAreaSqft': {'type': ['number', 'null']}, 'leaseRefundable': {'type': ['boolean', 'null']}, 'rentalStructure': {'enum': ['monthly', 'lease'], 'type': ['string', 'null']}, 'furnishingStatus': {'enum': ['furnished', 'semi-furnished', 'unfurnished'], 'type': ['string', 'null']}, 'imageThumbnailUrl': {'type': ['string', 'null'], 'format': 'uri'}, 'leaseTenureMonths': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'message': {'type': 'string'}, 'notFound': {'type': 'boolean'}, 'disclaimer': {'type': 'string'}, 'handoffUrl': {'type': 'string', 'format': 'uri'}, 'attribution': {'enum': ['AVnester']}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['annualIncome', 'homeLoanInterest', 'homeLoanPrincipal'], 'properties': {'ageBand': {'enum': ['below60', 'senior', 'super_senior'], 'type': 'string', 'description': 'Taxpayer age band â\x80\x94 raises the OLD-regime basic exemption (senior 60â\x80\x9380 â\x86\x92 â\x82¹3L, super-senior 80+ â\x86\x92 â\x82¹5L). New regime unaffected. Defaults to below60.'}, 'other80C': {'type': 'integer', 'minimum': 0, 'description': 'Other 80C investments in INR (PF, ELSS, insurance, etc.).'}, 'jointLoan': {'type': 'boolean', 'default': False, 'description': 'Joint loan with a co-borrower â\x80\x94 doubles the 80C/24b caps (equal-split assumption).'}, 'saleValue': {'type': 'integer', 'minimum': 0, 'description': 'NRI only â\x80\x94 sale consideration in INR for §195 TDS computation.'}, 'annualRent': {'type': 'integer', 'minimum': 0, 'description': 'Annual rent received in INR â\x80\x94 required for let_out.'}, 'isSalaried': {'type': 'boolean', 'default': True, 'description': 'Whether the taxpayer is salaried (gets the standard deduction).'}, 'hasForm15CB': {'type': 'boolean', 'description': 'NRI only â\x80\x94 whether Form 15CB CA-attestation is already in hand.'}, 'indexedCost': {'type': 'integer', 'minimum': 0, 'description': 'NRI only â\x80\x94 indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.'}, 'annualIncome': {'type': 'integer', 'description': 'Annual gross income in INR EXCLUDING house property (salary + other income).', 'exclusiveMinimum': 0}, 'propertyType': {'enum': ['self_occupied', 'let_out'], 'type': 'string', 'default': 'self_occupied', 'description': 'Whether the property is self-occupied or let out.'}, 'holdingMonths': {'type': 'integer', 'minimum': 0, 'description': 'NRI only â\x80\x94 holding period in months. â\x89¤24 is STCG; >24 is LTCG.'}, 'nroBalanceUsd': {'type': 'number', 'minimum': 0, 'description': 'NRI only â\x80\x94 NRO account balance in USD equivalent for the repatriation cap math.'}, 'ytdRemittedUsd': {'type': 'number', 'minimum': 0, 'description': 'NRI only â\x80\x94 FY-to-date USD already remitted under the $1M cap.'}, 'residencyStatus': {'enum': ['resident', 'nri'], 'type': 'string', 'description': 'Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.'}, 'homeLoanInterest': {'type': 'integer', 'minimum': 0, 'description': 'Annual home-loan interest paid (INR).'}, 'homeLoanPrincipal': {'type': 'integer', 'minimum': 0, 'description': 'Annual home-loan principal repaid (INR) â\x80\x94 counts toward 80C.'}, 'countryOfResidence': {'type': 'string', 'maxLength': 50, 'description': 'NRI only â\x80\x94 DTAA article lookup hint. Free-form country name.'}, 'otherOldRegimeDeductions': {'type': 'integer', 'minimum': 0, 'description': 'Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.).'}}}
Output schema
{'type': 'object', 'required': ['annualIncome', 'propertyType', 'jointLoan', 'old', 'new', 'recommended', 'annualSaving', 'homeLoanTaxBenefitOld', 'notModeled', 'assumptions', 'attribution', 'disclaimer', 'cards'], 'properties': {'new': {'type': 'object', 'required': ['taxableIncome', 'totalTax', 'deductionsApplied'], 'properties': {'totalTax': {'type': 'integer'}, 'taxableIncome': {'type': 'integer'}, 'deductionsApplied': {'type': 'integer'}}, 'additionalProperties': True}, 'nri': {'type': 'object', 'required': ['countryOfResidence', 'dtaaNote'], 'properties': {'tds': {'type': 'object', 'required': ['section195Rate', 'tdsAmount', 'ltcgTax', 'stcgTax', 'form13EligibilityHint', 'notModeled', 'disclaimer'], 'properties': {'ltcgTax': {'type': 'number'}, 'stcgTax': {'type': 'number'}, 'tdsAmount': {'type': 'number'}, 'disclaimer': {'type': 'string'}, 'notModeled': {'type': 'array', 'items': {'type': 'string'}}, 'section195Rate': {'type': 'number'}, 'form13EligibilityHint': {'type': 'boolean'}}, 'additionalProperties': True}, 'dtaaNote': {'type': 'string'}, 'repatriation': {'type': 'object', 'required': ['availableUsd', 'capUsd', 'requiresCA', 'notModeled', 'disclaimer'], 'properties': {'capUsd': {'type': 'number'}, 'disclaimer': {'type': 'string'}, 'notModeled': {'type': 'array', 'items': {'type': 'string'}}, 'requiresCA': {'type': 'boolean'}, 'availableUsd': {'type': 'number'}}, 'additionalProperties': True}, 'countryOfResidence': {'type': 'string'}}, 'additionalProperties': True}, 'old': {'type': 'object', 'required': ['taxableIncome', 'totalTax', 'deductionsApplied'], 'properties': {'totalTax': {'type': 'integer'}, 'taxableIncome': {'type': 'integer'}, 'deductionsApplied': {'type': 'integer'}}, 'additionalProperties': True}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'jointLoan': {'type': 'boolean'}, 'disclaimer': {'type': 'string'}, 'notModeled': {'type': 'array', 'items': {'type': 'string'}}, 'assumptions': {'type': 'object', 'required': ['regimeYear', 'surchargeNotModeled', 'section80EEAExcluded', 'notTaxAdvice'], 'properties': {'regimeYear': {'enum': ['FY2026-27']}, 'notTaxAdvice': {'enum': [True]}, 'surchargeNotModeled': {'enum': [True]}, 'section80EEAExcluded': {'enum': [True]}}, 'additionalProperties': True}, 'attribution': {'enum': ['AVnester']}, 'recommended': {'enum': ['old', 'new'], 'type': 'string'}, 'annualIncome': {'type': 'integer'}, 'annualSaving': {'type': 'integer'}, 'propertyType': {'enum': ['self_occupied', 'let_out'], 'type': 'string'}, 'residencyStatus': {'enum': ['nri']}, 'homeLoanTaxBenefitOld': {'type': 'integer'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'properties': {'city': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 60, 'minLength': 1, 'description': 'Indian city name (e.g., "Bangalore", "Coimbatore"). Required for results.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Maximum number of listings to return (cap: 20). v1 abuse defense.'}, 'bedrooms': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Number of bedrooms (BHK).'}, 'locality': {'type': 'string', 'pattern': "^[A-Za-z0-9 .,'â\x80\x99()\\-à®\x80-௿à¤\x80-ॿ]+$", 'maxLength': 80, 'minLength': 1, 'description': 'Locality/neighborhood within the city (e.g., "Indiranagar").'}, 'maxPrice': {'type': 'integer', 'minimum': 0, 'description': 'Maximum price in INR.'}, 'minPrice': {'type': 'integer', 'minimum': 0, 'description': 'Minimum price in INR.'}, 'furnishing': {'enum': ['furnished', 'semi-furnished', 'unfurnished'], 'type': 'string', 'description': 'Furnishing status (rental queries).'}, 'propertyType': {'enum': ['apartment', 'villa', 'plot', 'independent_house'], 'type': 'string', 'description': 'Property type.'}, 'rentalStructure': {'enum': ['monthly', 'lease'], 'type': 'string', '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.'}, 'transactionType': {'enum': ['sale', 'rent'], 'type': 'string', 'description': 'Whether to search for sale or rent. Omit to include both.'}}}
Output schema
{'type': 'object', 'required': ['total', 'listings', 'supported', 'attribution', 'handoffUrl', 'disclaimer'], 'properties': {'total': {'type': 'integer'}, 'sortBy': {'type': 'string'}, 'message': {'type': 'string'}, 'listings': {'type': 'array', 'items': {'type': 'object', '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'], 'properties': {'bhk': {'type': ['integer', 'null']}, 'city': {'type': 'string'}, 'rank': {'type': 'integer'}, 'price': {'type': 'integer'}, 'title': {'type': 'string'}, 'reraId': {'type': ['string', 'null']}, 'summary': {'type': 'string'}, 'areaRank': {'type': 'integer'}, 'featured': {'type': 'boolean'}, 'locality': {'type': 'string'}, 'verified': {'type': 'boolean'}, 'bathrooms': {'type': ['integer', 'null']}, 'listingId': {'type': 'string'}, 'priceRank': {'type': 'integer'}, 'priceUnit': {'enum': ['INR']}, 'sourceUrl': {'type': 'string', 'format': 'uri'}, 'valueRank': {'type': 'integer'}, 'ageInYears': {'type': ['integer', 'null']}, 'validUntil': {'type': ['string', 'null']}, 'verifiedAt': {'type': ['string', 'null']}, 'attribution': {'enum': ['AVnester']}, 'floorNumber': {'type': ['integer', 'null']}, 'leaseAmount': {'type': ['number', 'null']}, 'listingType': {'enum': ['sale', 'rent'], 'type': 'string'}, 'plotDetails': {'type': ['object', 'null'], 'required': ['dtcpApproved', 'dtcpNumber', 'landClassification', 'facing', 'roadWidthFt', 'gatedCommunity', 'waterAvailability', 'electricity', 'ownershipType', 'plotNumber', 'pincode', 'pattaChittaStatus', 'encumbranceStatus', 'guidelineValueInr', 'plotLengthFt', 'plotBreadthFt'], 'properties': {'facing': {'type': ['string', 'null']}, 'pincode': {'type': ['string', 'null']}, 'dtcpNumber': {'type': ['string', 'null']}, 'plotNumber': {'type': ['string', 'null']}, 'electricity': {'type': ['string', 'null']}, 'roadWidthFt': {'type': ['number', 'null']}, 'dtcpApproved': {'type': ['boolean', 'null']}, 'plotLengthFt': {'type': ['number', 'null']}, 'ownershipType': {'type': ['string', 'null']}, 'plotBreadthFt': {'type': ['number', 'null']}, 'gatedCommunity': {'type': ['boolean', 'null']}, 'encumbranceStatus': {'type': ['string', 'null']}, 'guidelineValueInr': {'type': ['integer', 'null']}, 'pattaChittaStatus': {'type': ['string', 'null']}, 'waterAvailability': {'type': ['string', 'null']}, 'landClassification': {'type': ['string', 'null']}}, 'additionalProperties': True}, 'totalFloors': {'type': ['integer', 'null']}, 'parkingCount': {'type': ['integer', 'null']}, 'pricePerSqft': {'type': ['integer', 'null']}, 'verification': {'type': 'object', 'required': ['documentVerified', 'tier', 'locationVerified', 'locationConfidence', 'lastVerifiedAt', 'method'], 'properties': {'tier': {'type': ['string', 'null']}, 'method': {'type': ['string', 'null']}, 'lastVerifiedAt': {'type': ['string', 'null']}, 'documentVerified': {'type': 'boolean'}, 'locationVerified': {'type': 'boolean'}, 'locationConfidence': {'type': ['integer', 'null']}}, 'additionalProperties': True}, 'availableFrom': {'type': ['string', 'null']}, 'carpetAreaSqft': {'type': ['number', 'null']}, 'leaseRefundable': {'type': ['boolean', 'null']}, 'rentalStructure': {'enum': ['monthly', 'lease'], 'type': ['string', 'null']}, 'furnishingStatus': {'enum': ['furnished', 'semi-furnished', 'unfurnished'], 'type': ['string', 'null']}, 'imageThumbnailUrl': {'type': ['string', 'null'], 'format': 'uri'}, 'leaseTenureMonths': {'type': ['integer', 'null']}}, 'additionalProperties': True}}, 'supported': {'type': 'boolean'}, 'disclaimer': {'type': 'string'}, 'handoffUrl': {'type': 'string', 'format': 'uri'}, 'attribution': {'enum': ['AVnester']}, 'scopeMessage': {'type': 'string'}, 'supportedCities': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['outstandingPrincipal', 'remainingTenureYears'], 'properties': {'strategy': {'enum': ['reduce_tenure', 'reduce_emi', 'compare_both'], 'type': 'string', '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.'}, 'prepaymentMode': {'enum': ['one_time', 'recurring_annual', 'recurring_monthly', 'one_time_plus_recurring', 'one_time_plus_recurring_monthly'], 'type': 'string', 'default': 'one_time', 'description': 'How the prepayment is made (annual anniversary vs every month).'}, 'prepaymentAmount': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).'}, 'annualRatePercent': {'type': 'number', 'maximum': 30, 'minimum': 1, 'description': 'Current annual interest rate (percent). Defaults to the indicative market rate when omitted.'}, 'outstandingPrincipal': {'type': 'integer', 'description': 'Current outstanding home-loan principal in INR.', 'exclusiveMinimum': 0}, 'remainingTenureYears': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Years left on the loan at the current EMI.'}, 'recurringAnnualAmount': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).'}, 'recurringMonthlyAmount': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).'}}}
Output schema
{'type': 'object', 'required': ['outstandingPrincipal', 'annualRatePercent', 'remainingTenureYears', 'prepaymentMode', 'strategy', 'applied', 'baseline', 'assumptions', 'attribution', 'disclaimer', 'cards'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['template', 'data', 'priority'], 'properties': {'data': {'type': 'object', 'additionalProperties': {}}, 'priority': {'type': 'integer'}, 'template': {'type': 'string'}}, 'additionalProperties': True}}, 'applied': {'type': 'object', 'required': ['oneTime', 'recurringAnnual', 'recurringMonthly'], 'properties': {'oneTime': {'type': 'integer'}, 'recurringAnnual': {'type': 'integer'}, 'recurringMonthly': {'type': 'integer'}}, 'additionalProperties': True}, 'baseline': {'type': 'object', 'required': ['emi', 'payoffMonths', 'totalInterest'], 'properties': {'emi': {'type': 'integer'}, 'payoffMonths': {'type': 'integer'}, 'totalInterest': {'type': 'integer'}}, 'additionalProperties': True}, 'strategy': {'enum': ['reduce_tenure', 'reduce_emi', 'compare_both'], 'type': 'string'}, 'reduceEmi': {'type': 'object', 'required': ['emi', 'payoffMonths', 'totalInterest', 'interestSaved', 'monthsSaved'], 'properties': {'emi': {'type': 'integer'}, 'monthsSaved': {'type': 'integer'}, 'payoffMonths': {'type': 'integer'}, 'interestSaved': {'type': 'integer'}, 'totalInterest': {'type': 'integer'}}, 'additionalProperties': True}, 'disclaimer': {'type': 'string'}, 'assumptions': {'type': 'object', 'required': ['interestType', 'oneTimeAppliedImmediately', 'recurringAppliedAnnually', 'recurringMonthlyAppliedEachMonth', 'floatingRatePrepaymentPenaltyWaived', 'notALoanApproval'], 'properties': {'interestType': {'enum': ['reducing-balance']}, 'notALoanApproval': {'enum': [True]}, 'recurringAppliedAnnually': {'enum': [True]}, 'oneTimeAppliedImmediately': {'enum': [True]}, 'recurringMonthlyAppliedEachMonth': {'enum': [True]}, 'floatingRatePrepaymentPenaltyWaived': {'enum': [True]}}, 'additionalProperties': True}, 'attribution': {'enum': ['AVnester']}, 'reduceTenure': {'type': 'object', 'required': ['emi', 'payoffMonths', 'totalInterest', 'interestSaved', 'monthsSaved'], 'properties': {'emi': {'type': 'integer'}, 'monthsSaved': {'type': 'integer'}, 'payoffMonths': {'type': 'integer'}, 'interestSaved': {'type': 'integer'}, 'totalInterest': {'type': 'integer'}}, 'additionalProperties': True}, 'prepaymentMode': {'enum': ['one_time', 'recurring_annual', 'recurring_monthly', 'one_time_plus_recurring', 'one_time_plus_recurring_monthly'], 'type': 'string'}, 'annualRatePercent': {'type': 'number'}, 'outstandingPrincipal': {'type': 'integer'}, 'remainingTenureYears': {'type': 'integer'}}, 'additionalProperties': True}
Recent tool changes
Similar MCP servers
Superlógica Condomínios
Connects to a condominium ERP for billing, collections, agreements, expenses, bank movements, statements, files, communications, …
DFX Real Estate Intelligence
Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…
RateAPI — live US mortgage, auto, HELOC, personal & deposit rates
Supplies live US lending and deposit rates, financing comparisons, affordability and amortization calculations, eligibility check…
Rafid Intelligence Network
Analyzes Oman properties using rental comparables, yields, costs, and payback metrics, and supports Oman company search, profilin…
Housing Intel
Analyzes housing markets, affordability, mortgage rates, rental yields, property data, employment, metro demand, and investment s…
OpenLMNP
Manages French LMNP furnished-rental accounting, including income, expenses, depreciation, loans, VAT, fiscal calculations, FEC f…
Antevo Wealth
Aggregates household wealth data across investments, liabilities, credit facilities, real assets, markets, risk, exposure, and fi…
DataPorium
Provides market and company data covering stocks, ETFs, crypto, forex, commodities, economic indicators, housing, property listin…