accueil / serveurs / Recherche & Web / com.avnester.mcp/property-intelligence
com.avnester.mcp/property-intelligence
serveur MCP (Model Context Protocol) · avnester-public 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.avnester.mcp/property-intelligence est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.avnester.mcp/property-intelligence » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 11 outils
- calculate_home_affordability≈ 736 tokens
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.
Paramètres, retour & exemple (4)
ParamètresloanAmount· integer · optionnel
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 · optionnel
Loan tenure in years. Defaults to 20.propertyValue· integer · requis
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.interestRatePercent· number · optionnel
Annual interest rate (percent). Defaults to current market estimate.
Exemple d'appel{"name": "calculate_home_affordability", "arguments": {"propertyValue": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"emi": 1, "cards": [], "disclaimer": "texte", "loanAmount": 1, "assumptions": {}, "attribution": "AVnester", "tenureYears": 1, "totalPayment": 1, "totalInterest": 1, "assumptionNote": "texte", "inputPropertyValue": 1, "interestRatePercent": 1}} - compare_balance_transfer≈ 822 tokens
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.
Paramètres, retour & exemple (6)
ParamètresflatCosts· integer · optionnel
Flat legal + valuation charges in INR. Defaults to ₹12,500.newRatePercent· number · requis
New lender annual interest rate (percent).processingFeePct· number · optionnel
New-lender processing fee on the balance (percent). Defaults to 0.5%.currentRatePercent· number · requis
Current annual interest rate (percent).outstandingPrincipal· integer · requis
Current outstanding home-loan principal in INR.remainingTenureYears· integer · requis
Years left on the loan.
Exemple d'appel{"name": "compare_balance_transfer", "arguments": {"newRatePercent": 1, "currentRatePercent": 1, "outstandingPrincipal": 1, "remainingTenureYears": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cards": [], "newEmi": 1, "worthIt": true, "netSaving": 1, "currentEmi": 1, "disclaimer": "texte", "assumptions": {}, "attribution": "AVnester", "switchingCost": 1, "newRatePercent": 1, "breakevenMonths": 1, "monthlyEmiSaving": 1}} - compare_localities≈ 912 tokens
Compare 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.
Paramètres, retour & exemple (3)
Paramètrescity· string · requis
Indian city covering all compared localities.localities· array · requis
2–3 localities to compare (array, not comma-separated string).propertyType· string · optionnel · apartment | villa | plot | independent_house
Property type for comparison.
Exemple d'appel{"name": "compare_localities", "arguments": {"city": "texte", "localities": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"city": "texte", "cards": [], "supported": true, "comparison": {}, "disclaimer": "texte", "handoffUrl": "texte", "localities": [], "attribution": "AVnester", "scopeMessage": "texte", "supportedCities": [], "resolvedLocalities": {}}} - compare_properties≈ 1456 tokens
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 ₹/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.
Paramètres, retour & exemple (1)
ParamètreslistingIds· array · requis
2–5 AVnester listingIds (from search_properties results) to compare. IDs are not guessable — call search_properties first. Order is preserved in the output.
Exemple d'appel{"name": "compare_properties", "arguments": {"listingIds": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cards": [], "framing": "texte", "message": "texte", "comparison": [], "disclaimer": "texte", "attribution": "AVnester"}} - estimate_stamp_duty_and_registration≈ 1672 tokens
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.
Paramètres, retour & exemple (11)
Paramètrescity· string · optionnel
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· string · requis
Indian state — ISO code ("MH"), slug ("maharashtra") or name ("Maharashtra"). Required.isUrban· boolean · optionnel
Urban (default) or rural. Used for the location when city and localBody are absent.firstSale· boolean · optionnel
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 · optionnel · municipal_corporation | municipal_council | gram_panchayat
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 · optionnel · male | female | joint
"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 · optionnel
Backward-compatibility shim — prefer buyerGender. When true, internally treated as buyerGender="female".propertyType· string · optionnel · residential | commercial | agricultural | plot
residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.propertyValue· integer · requis
Sale value in INR for stamp-duty calculation.carpetAreaSqft· integer · optionnel
Carpet area (sqft) — with value, decides the affordable-housing 1% GST slab.constructionStatus· string · optionnel · under_construction | ready_to_move | resale
When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit → GST not computed.
Exemple d'appel{"name": "estimate_stamp_duty_and_registration", "arguments": {"state": "texte", "propertyValue": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"gst": {}, "cards": [], "state": "texte", "total": 1, "location": {}, "rateBasis": "texte", "stampDuty": 1, "stateCode": "texte", "stateName": "texte", "supported": true, "disclaimer": "texte", "surcharges": []}} - get_locality_insights≈ 909 tokens
Get 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.
Paramètres, retour & exemple (2)
Paramètrescity· string · requis
Indian city (required).locality· string · requis
Locality name within an Indian city.
Exemple d'appel{"name": "get_locality_insights", "arguments": {"city": "texte", "locality": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"city": "texte", "cards": [], "message": "texte", "insights": {}, "locality": "texte", "freshness": {}, "supported": true, "disclaimer": "texte", "handoffUrl": "texte", "attribution": "AVnester", "scopeMessage": "texte", "supportedCities": []}} - get_property_decision_intelligence≈ 2960 tokens
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: an AVnester listingId. Mode B: propertyValue + state (any Indian state). NOT a loan approval, offer, or advice. Always surface the disclaimer.
Paramètres, retour & exemple (24)
Paramètrescity· string · optionnel
City (manual mode), e.g. "Pune" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.state· string · optionnel
Indian state (ISO "MH"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.isUrban· boolean · optionnel
Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.assetType· string · optionnel · home | plot
"home" (flat/villa/house) or "plot" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.firstSale· boolean · optionnel
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 · optionnel
Joint home loan — doubles 80C/24b caps (equal split).listingId· string · optionnel
An AVnester listingId. Listing mode — propertyValue, state and city are then ignored, with a warning.localBody· string · optionnel · municipal_corporation | municipal_council | gram_panchayat
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 · optionnel
Annual rent received (let-out).cibilScore· integer · optionnel
Numeric CIBIL score. Omit → eligibility stays indicative.buyerGender· string · optionnel · male | female | joint
"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 · optionnel
Loan tenure in years. Defaults to 20.propertyValue· integer · optionnel
Property price in INR (manual mode). Pass with state (and city where it matters).carpetAreaSqft· integer · optionnel
Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).employmentType· string · optionnel · salaried | self_employed
Employment type (affects tax standard deduction).occupancyIntent· string · optionnel · self_occupied | let_out
Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.residencyStatus· string · optionnel · resident | nri
Residency status.monthlyNetIncome· integer · requis
Buyer monthly take-home income in INR.savingsAvailable· integer · optionnel
Liquid cash for down payment + charges — enables the cash-gap calc.annualIncomeForTax· integer · optionnel
Annual income for tax. Defaults to monthlyNetIncome × 12.existingMonthlyEmis· integer · optionnel
Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.interestRatePercent· number · optionnel
Override annual interest rate. Defaults to indicative market rate.isUnderConstruction· boolean · optionnel
Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).coApplicantMonthlyIncome· integer · optionnel
Co-applicant monthly income (joint affordability).
Exemple d'appel{"name": "get_property_decision_intelligence", "arguments": {"monthlyNetIncome": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"emi": {}, "tax": {}, "mode": "listing", "cards": [], "trust": {}, "verdict": {}, "notFound": true, "warnings": [], "assetType": "home", "lenderFit": {}, "disclaimer": "texte", "assumptions": {}}} - get_property_details≈ 1340 tokens
Fetch 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.
Paramètres, retour & exemple (1)
ParamètreslistingId· string · requis
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.
Exemple d'appel{"name": "get_property_details", "arguments": {"listingId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cards": [], "trust": {}, "listing": {}, "message": "texte", "notFound": true, "disclaimer": "texte", "handoffUrl": "texte", "attribution": "AVnester"}} - optimize_home_loan_tax_regime≈ 1592 tokens
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.
Paramètres, retour & exemple (18)
ParamètresageBand· string · optionnel · below60 | senior | super_senior
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 · optionnel
Other 80C investments in INR (PF, ELSS, insurance, etc.).jointLoan· boolean · optionnel
Joint loan with a co-borrower — doubles the 80C/24b caps (equal-split assumption).saleValue· integer · optionnel
NRI only — sale consideration in INR for §195 TDS computation.annualRent· integer · optionnel
Annual rent received in INR — required for let_out.isSalaried· boolean · optionnel
Whether the taxpayer is salaried (gets the standard deduction).hasForm15CB· boolean · optionnel
NRI only — whether Form 15CB CA-attestation is already in hand.indexedCost· integer · optionnel
NRI only — indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.annualIncome· integer · requis
Annual gross income in INR EXCLUDING house property (salary + other income).propertyType· string · optionnel · self_occupied | let_out
Whether the property is self-occupied or let out.holdingMonths· integer · optionnel
NRI only — holding period in months. ≤24 is STCG; >24 is LTCG.nroBalanceUsd· number · optionnel
NRI only — NRO account balance in USD equivalent for the repatriation cap math.ytdRemittedUsd· number · optionnel
NRI only — FY-to-date USD already remitted under the $1M cap.residencyStatus· string · optionnel · resident | nri
Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.homeLoanInterest· integer · requis
Annual home-loan interest paid (INR).homeLoanPrincipal· integer · requis
Annual home-loan principal repaid (INR) — counts toward 80C.countryOfResidence· string · optionnel
NRI only — DTAA article lookup hint. Free-form country name.otherOldRegimeDeductions· integer · optionnel
Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.).
Exemple d'appel{"name": "optimize_home_loan_tax_regime", "arguments": {"annualIncome": 1, "homeLoanInterest": 1, "homeLoanPrincipal": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"new": {}, "nri": {}, "old": {}, "cards": [], "jointLoan": true, "disclaimer": "texte", "notModeled": [], "assumptions": {}, "attribution": "AVnester", "recommended": "old", "annualIncome": 1, "annualSaving": 1}} - search_properties≈ 1663 tokens
Search 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.
Paramètres, retour & exemple (10)
Paramètrescity· string · optionnel
City or town in Tamil Nadu (e.g., "Coimbatore", "Madurai"). Omit to search every Tamil Nadu city.limit· integer · optionnel
Maximum number of listings to return (cap: 20). v1 abuse defense.bedrooms· integer · optionnel
Number of bedrooms (BHK).locality· string · optionnel
Locality/neighborhood within the city (e.g., "Saravanampatti").maxPrice· integer · optionnel
Maximum price in INR.minPrice· integer · optionnel
Minimum price in INR.furnishing· string · optionnel · furnished | semi-furnished | unfurnished
Furnishing status (rental queries).propertyType· string · optionnel · apartment | villa | plot | independent_house
Property type.rentalStructure· string · optionnel · monthly | lease
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 · optionnel · sale | rent
Whether to search for sale or rent. Omit to include both.
Exemple d'appel{"name": "search_properties", "arguments": {"city": "texte", "limit": 1, "bedrooms": 1, "locality": "texte", "maxPrice": 1, "minPrice": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"total": 1, "sortBy": "texte", "message": "texte", "listings": [], "supported": true, "disclaimer": "texte", "handoffUrl": "texte", "attribution": "AVnester", "scopeMessage": "texte", "supportedCities": []}} - simulate_loan_prepayment≈ 1312 tokens
Simulate 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.
Paramètres, retour & exemple (8)
Paramètresstrategy· string · optionnel · reduce_tenure | reduce_emi | compare_both
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 · optionnel · one_time | recurring_annual | recurring_monthly | one_time_plus_recurring | one_time_plus_recurring_monthly
How the prepayment is made (annual anniversary vs every month).prepaymentAmount· integer · optionnel
One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).annualRatePercent· number · optionnel
Current annual interest rate (percent). Defaults to the indicative market rate when omitted.outstandingPrincipal· integer · requis
Current outstanding home-loan principal in INR.remainingTenureYears· integer · requis
Years left on the loan at the current EMI.recurringAnnualAmount· integer · optionnel
Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).recurringMonthlyAmount· integer · optionnel
Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).
Exemple d'appel{"name": "simulate_loan_prepayment", "arguments": {"outstandingPrincipal": 1, "remainingTenureYears": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cards": [], "applied": {}, "baseline": {}, "strategy": "reduce_tenure", "reduceEmi": {}, "disclaimer": "texte", "assumptions": {}, "attribution": "AVnester", "reduceTenure": {}, "prepaymentMode": "one_time", "annualRatePercent": 1, "outstandingPrincipal": 1}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».