AVnester — Indian Real Estate Intelligence
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Indian real estate: property search, locality insights, affordability & pan-India stamp-duty tools.
| Author | com.avnester.mcp |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 842 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"AVnester — Indian Real Estate Intelligence": {
"url": "https://mcp.avnester.com/public-mcp",
"transport": "streamable-http"
}
}
}
Measured tools (11)
search_propertiesread-onlySearch residential property listings anywhere in Tamil Nadu, India — any city or town. Use when the user names a place, locality, price band, BHK, or transaction type. Returns sanitized listing cards with handoff URLs and a per-listing verification summary (verified + caveats); never returns seller contact details. Places outside Tamil Nadu return supported=false + scopeMessage — surface it.
Parameters:
city— string — City or town in Tamil Nadu (e.g., "Coimbatore", "Madurai"). Omit to search every Tamil Nadu city.limit— integer — Maximum number of listings to return (cap: 20). v1 abuse defense.bedrooms— integer — Number of bedrooms (BHK).locality— string — Locality/neighborhood within the city (e.g., "Saravanampatti").maxPrice— integer — Maximum price in INR.minPrice— integer — Minimum price in INR.furnishing— string — Furnishing status (rental queries).propertyType— string — Property type.rentalStructure— string — 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— string — Whether to search for sale or rent. Omit to include both.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_locality_insightsread-onlyGet aggregated insights for one locality: ₹/sqft, supply count, demand pulse, livability/investment grade, highlights, watchouts, monthly priceTrends, and strengthTags. Use when the user asks "what is X locality like". Covers cities AVnester publishes locality guides for; others return supported=false — surface the scopeMessage. Always surface the disclaimer field when returning livability or investment grade.
Parameters:
locality(required) — string — Locality name within an Indian city.city(required) — string — Indian city (required).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
compare_localitiesread-onlyCompare 2–3 localities in one city side-by-side: price trends, livability, investment grade, strengths, and watchouts. Use when the user asks "X vs Y" or "which is better for buying/renting" about neighborhoods. Covers cities AVnester publishes locality guides for; others return supported=false — surface the scopeMessage. For specific LISTINGS by ID, use compare_properties instead.
Parameters:
city(required) — string — Indian city covering all compared localities.localities(required) — array — 2–3 localities to compare (array, not comma-separated string).propertyType— string — Property type for comparison.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
calculate_home_affordabilityread-onlyEstimate 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.
Parameters:
propertyValue(required) — integer — 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— integer — 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.tenureYears— integer — Loan tenure in years. Defaults to 20.interestRatePercent— number — Annual interest rate (percent). Defaults to current market estimate.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
simulate_loan_prepaymentread-onlySimulate prepaying / repaying an Indian home loan early. 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. Compares reduce_tenure (keep EMI, finish early) vs reduce_emi (keep tenure, lower EMI). emi = next EMI; finalEmi = after the last prepayment. Always surface the disclaimer field.
Parameters:
outstandingPrincipal(required) — integer — Current outstanding home-loan principal in INR.remainingTenureYears(required) — integer — Years left on the loan at the current EMI.strategy— string — reduce_tenure keeps the EMI and finishes early (bigger saving); reduce_emi keeps the tenure and lowers the EMI; compare_both returns both.prepaymentMode— string — How the prepayment is made (annual anniversary vs every month).prepaymentAmount— integer — One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).annualRatePercent— number — Current annual interest rate (percent). Defaults to the indicative market rate when omitted.recurringAnnualAmount— integer — Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).recurringMonthlyAmount— integer — Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
compare_balance_transferread-onlyCompare 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.
Parameters:
outstandingPrincipal(required) — integer — Current outstanding home-loan principal in INR.currentRatePercent(required) — number — Current annual interest rate (percent).newRatePercent(required) — number — New lender annual interest rate (percent).remainingTenureYears(required) — integer — Years left on the loan.flatCosts— integer — Flat legal + valuation charges in INR. Defaults to ₹12,500.processingFeePct— number — New-lender processing fee on the balance (percent). Defaults to 0.5%.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
optimize_home_loan_tax_regimeread-onlyCompare 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.
Parameters:
annualIncome(required) — integer — Annual gross income in INR EXCLUDING house property (salary + other income).homeLoanInterest(required) — integer — Annual home-loan interest paid (INR).homeLoanPrincipal(required) — integer — Annual home-loan principal repaid (INR) — counts toward 80C.ageBand— string — Taxpayer age band — raises the OLD-regime basic exemption (senior 60–80 → ₹3L, super-senior 80+ → ₹5L). New regime unaffected. Defaults to below60.other80C— integer — Other 80C investments in INR (PF, ELSS, insurance, etc.).jointLoan— boolean — Joint loan with a co-borrower — doubles the 80C/24b caps (equal-split assumption).saleValue— integer — NRI only — sale consideration in INR for §195 TDS computation.annualRent— integer — Annual rent received in INR — required for let_out.isSalaried— boolean — Whether the taxpayer is salaried (gets the standard deduction).hasForm15CB— boolean — NRI only — whether Form 15CB CA-attestation is already in hand.indexedCost— integer — NRI only — indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.propertyType— string — Whether the property is self-occupied or let out.holdingMonths— integer — NRI only — holding period in months. ≤24 is STCG; >24 is LTCG.nroBalanceUsd— number — NRI only — NRO account balance in USD equivalent for the repatriation cap math.ytdRemittedUsd— number — NRI only — FY-to-date USD already remitted under the $1M cap.residencyStatus— string — Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.countryOfResidence— string — NRI only — DTAA article lookup hint. Free-form country name.otherOldRegimeDeductions— integer — Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
estimate_stamp_duty_and_registrationread-onlyEstimate 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.
Parameters:
propertyValue(required) — integer — Sale value in INR for stamp-duty calculation.state(required) — string — Indian state — ISO code ("MH"), slug ("maharashtra") or name ("Maharashtra"). Required.city— string — 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.isUrban— boolean — Urban (default) or rural. Used for the location when city and localBody are absent.firstSale— boolean — 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).localBody— string — 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— string — "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— boolean — Backward-compatibility shim — prefer buyerGender. When true, internally treated as buyerGender="female".propertyType— string — residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.carpetAreaSqft— integer — Carpet area (sqft) — with value, decides the affordable-housing 1% GST slab.constructionStatus— string — When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit → GST not computed.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_property_detailsread-onlyFetch full public details for one AVnester listing by its listingId (from search_properties results — IDs are not guessable). Listings cover Tamil Nadu; unknown or unpublished IDs return { listing: null, notFound: true } (never throws, to avoid leaking existence). Use when the user references a specific listing. State verification.caveats beside the verified flag: an approval is not a title, ownership or encumbrance check. Read-only, no side effects.
Parameters:
listingId(required) — string — 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.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
compare_propertiesread-onlyCompare 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 ₹/sqft) and say so. Returns each listing plus pricePerSqft, vsCheapestPercent (0 = cheapest), vsLargestAreaPercent (0 = largest). Unknown IDs return not_found_or_unpublished. Does NOT recommend a purchase. Show verification.caveats with verified. Always surface the disclaimer.
Parameters:
listingIds(required) — array — 2–5 AVnester listingIds (from search_properties results) to compare. IDs are not guessable — call search_properties first. Order is preserved in the output.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_property_decision_intelligenceread-onlyAssess 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: an AVnester listingId. Mode B: propertyValue + state (any Indian state). NOT a loan approval, offer, or advice. Always surface the disclaimer.
Parameters:
monthlyNetIncome(required) — integer — Buyer monthly take-home income in INR.city— string — City (manual mode), e.g. "Pune" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.state— string — Indian state (ISO "MH"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.isUrban— boolean — Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.assetType— string — "home" (flat/villa/house) or "plot" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.firstSale— boolean — 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— boolean — Joint home loan — doubles 80C/24b caps (equal split).listingId— string — An AVnester listingId. Listing mode — propertyValue, state and city are then ignored, with a warning.localBody— string — 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— integer — Annual rent received (let-out).cibilScore— integer — Numeric CIBIL score. Omit → eligibility stays indicative.buyerGender— string — "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— integer — Loan tenure in years. Defaults to 20.propertyValue— integer — Property price in INR (manual mode). Pass with state (and city where it matters).carpetAreaSqft— integer — Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).employmentType— string — Employment type (affects tax standard deduction).occupancyIntent— string — Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.residencyStatus— string — Residency status.savingsAvailable— integer — Liquid cash for down payment + charges — enables the cash-gap calc.annualIncomeForTax— integer — Annual income for tax. Defaults to monthlyNetIncome × 12.existingMonthlyEmis— integer — Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.interestRatePercent— number — Override annual interest rate. Defaults to indicative market rate.isUnderConstruction— boolean — Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).coApplicantMonthlyIncome— integer — Co-applicant monthly income (joint affordability).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.