Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,542Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:eca0591cc3c64c8ba7ea4915d0a72cf9cfc70894ef6123124d7901f275030f9d
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": "AVnester is a public MCP server for Indian residential real-estate intelligence. Property listings are open in any city or town in Tamil Nadu (622 cities and towns); locality insights cover Coimbatore, Chennai, Madurai, Tiruchirappalli, Tiruppur, Erode, Tirunelveli and Vellore; all financial calculators work for any Indian city/state.\n\nThese are the ONLY tools available. When a question matches one, CALL that tool by name — do NOT answer from memory and do NOT tell the user a capability is missing without checking this list first:\n- search_properties — Search India property listings\n- get_locality_insights — Get locality market insights\n- compare_localities — Compare Indian localities head-to-head\n- calculate_home_affordability — Estimate home-loan EMI (calculator)\n- simulate_loan_prepayment — Simulate home-loan prepayment (calculator)\n- compare_balance_transfer — Compare home-loan balance transfer (calculator)\n- optimize_home_loan_tax_regime — Optimize home-loan tax regime (calculator)\n- estimate_stamp_duty_and_registration — Estimate stamp duty + registration (calculator)\n- get_property_details — Get one AVnester property by ID\n- compare_properties — Compare AVnester properties (trade-offs)\n- get_property_decision_intelligence — Home purchase decision intelligence\n\nThe home-finance tools are closely related — pick by the user's intent (do NOT substitute an adjacent one):\n- monthly EMI / \"what would my EMI be\" / affordability of a price → calculate_home_affordability\n- prepay / repay early / early repayment / part-pay / part payment / lump-sum repayment / foreclose / recurring extra payment / reduce EMI vs reduce tenure / interest saved by paying early → simulate_loan_prepayment\n- switch lender / transfer the loan / refinance to a lower rate / breakeven of switching → compare_balance_transfer\n- old vs new tax regime / home-loan tax benefit / section 80C or 24(b) deduction → optimize_home_loan_tax_regime\n- stamp duty / registration charges by Indian state → estimate_stamp_duty_and_registration\n- can I afford / am I eligible — ONE buy/no-buy verdict from income + CIBIL + cash-to-close → get_property_decision_intelligence\n\nAll financial tools (EMI/affordability, prepayment, balance transfer, tax regime, stamp duty, decision intelligence) are deterministic calculators — no advice, no loan approval. Every response carries a `disclaimer` field; always surface it. Out-of-scope cities return supported=false with a supportedCities list — relay the scopeMessage instead of inventing an answer.", "tools": [ { "description": "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.", "inputSchema": { "properties": { "interestRatePercent": { "description": "Annual interest rate (percent). Defaults to current market estimate.", "maximum": 30, "minimum": 1, "type": "number" }, "loanAmount": { "description": "Loan amount in INR. Pass this when the user states a specific loan (e.g. \"₹50 lakh loan\") rather than a property price. Defaults to 80% of propertyValue if omitted.", "exclusiveMinimum": 0, "type": "integer" }, "propertyValue": { "description": "Property value (price) in INR. When the user states a property/home price, put it here — an 80% loan is assumed unless loanAmount is also given.", "exclusiveMinimum": 0, "type": "integer" }, "tenureYears": { "description": "Loan tenure in years. Defaults to 20.", "maximum": 40, "minimum": 1, "type": "integer" } }, "required": [ "propertyValue" ], "type": "object" }, "name": "calculate_home_affordability", "outputSchema": { "additionalProperties": true, "properties": { "assumptionNote": { "type": "string" }, "assumptions": { "additionalProperties": true, "properties": { "actualLtvPercent": { "type": "number" }, "defaultLtvPercent": { "type": "number" }, "downPaymentAmount": { "type": "integer" }, "interestType": { "enum": [ "reducing-balance" ] }, "lenderMaxLoan": { "type": "integer" }, "notALoanApproval": { "enum": [ true ] }, "unfundedAmount": { "type": "integer" } }, "required": [ "defaultLtvPercent", "actualLtvPercent", "downPaymentAmount", "lenderMaxLoan", "unfundedAmount", "interestType", "notALoanApproval" ], "type": "object" }, "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "emi": { "type": "integer" }, "inputPropertyValue": { "type": "integer" }, "interestRatePercent": { "type": "number" }, "loanAmount": { "type": "integer" }, "tenureYears": { "type": "integer" }, "totalInterest": { "type": "integer" }, "totalPayment": { "type": "integer" } }, "required": [ "inputPropertyValue", "loanAmount", "interestRatePercent", "tenureYears", "emi", "totalInterest", "totalPayment", "assumptions", "assumptionNote", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "Compare staying on your current home loan vs. transferring (refinancing) to a lower rate. Pure deterministic math — no advice, no loan-approval claim. Use when the user asks \"should I switch lenders / transfer my loan / refinance\". Returns new EMI, interest saved over the remaining tenure, switching cost, net saving, and the breakeven month. Always surface the disclaimer field.", "inputSchema": { "properties": { "currentRatePercent": { "description": "Current annual interest rate (percent).", "maximum": 30, "minimum": 1, "type": "number" }, "flatCosts": { "description": "Flat legal + valuation charges in INR. Defaults to ₹12,500.", "minimum": 0, "type": "integer" }, "newRatePercent": { "description": "New lender annual interest rate (percent).", "maximum": 30, "minimum": 1, "type": "number" }, "outstandingPrincipal": { "description": "Current outstanding home-loan principal in INR.", "exclusiveMinimum": 0, "type": "integer" }, "processingFeePct": { "description": "New-lender processing fee on the balance (percent). Defaults to 0.5%.", "maximum": 5, "minimum": 0, "type": "number" }, "remainingTenureYears": { "description": "Years left on the loan.", "maximum": 40, "minimum": 1, "type": "integer" } }, "required": [ "outstandingPrincipal", "currentRatePercent", "newRatePercent", "remainingTenureYears" ], "type": "object" }, "name": "compare_balance_transfer", "outputSchema": { "additionalProperties": true, "properties": { "assumptions": { "additionalProperties": true, "properties": { "floatingForeclosurePenaltyWaived": { "enum": [ true ] }, "interestType": { "enum": [ "reducing-balance" ] }, "notALoanApproval": { "enum": [ true ] }, "tenureHeldConstant": { "enum": [ true ] } }, "required": [ "interestType", "tenureHeldConstant", "floatingForeclosurePenaltyWaived", "notALoanApproval" ], "type": "object" }, "attribution": { "enum": [ "AVnester" ] }, "breakevenMonths": { "type": [ "integer", "null" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "currentEmi": { "type": "integer" }, "currentRatePercent": { "type": "number" }, "currentTotalInterest": { "type": "integer" }, "disclaimer": { "type": "string" }, "grossInterestSaved": { "type": "integer" }, "monthlyEmiSaving": { "type": "integer" }, "netSaving": { "type": "integer" }, "newEmi": { "type": "integer" }, "newRatePercent": { "type": "number" }, "newTotalInterest": { "type": "integer" }, "outstandingPrincipal": { "type": "integer" }, "remainingTenureYears": { "type": "integer" }, "switchingCost": { "type": "integer" }, "worthIt": { "type": "boolean" } }, "required": [ "outstandingPrincipal", "currentRatePercent", "newRatePercent", "remainingTenureYears", "currentEmi", "newEmi", "monthlyEmiSaving", "currentTotalInterest", "newTotalInterest", "grossInterestSaved", "switchingCost", "netSaving", "breakevenMonths", "worthIt", "assumptions", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "city": { "description": "Indian city covering all compared localities.", "maxLength": 60, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "localities": { "description": "2–3 localities to compare (array, not comma-separated string).", "items": { "maxLength": 80, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "maxItems": 3, "minItems": 2, "type": "array" }, "propertyType": { "description": "Property type for comparison.", "enum": [ "apartment", "villa", "plot", "independent_house" ], "type": "string" } }, "required": [ "city", "localities" ], "type": "object" }, "name": "compare_localities", "outputSchema": { "additionalProperties": true, "properties": { "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "city": { "type": "string" }, "comparison": { "additionalProperties": { "additionalProperties": true, "properties": { "asOfMonth": { "type": [ "string", "null" ] }, "confidence": { "enum": [ "high", "medium", "low", null ], "type": [ "string", "null" ] }, "highlights": { "items": { "type": "string" }, "type": "array" }, "investmentGrade": { "type": [ "string", "null" ] }, "livabilityScore": { "type": [ "number", "null" ] }, "livabilityScoreBasis": { "enum": [ "editorial-estimate", null ], "type": [ "string", "null" ] }, "priceGrowth1YPct": { "type": [ "number", "null" ] }, "pricePerSqftInr": { "type": [ "number", "null" ] }, "priceTrends": { "items": { "additionalProperties": true, "properties": { "avgPriceInr": { "type": [ "number", "null" ] }, "estimated": { "type": [ "boolean", "null" ] }, "period": { "type": "string" }, "pricePerSqftInr": { "type": [ "number", "null" ] } }, "required": [ "period", "avgPriceInr" ], "type": "object" }, "type": "array" }, "rent2bhkInr": { "type": [ "number", "null" ] }, "rentalYieldPct": { "type": [ "number", "null" ] }, "sourceCount": { "type": [ "integer", "null" ] }, "strengthTags": { "items": { "type": "string" }, "type": "array" }, "watchouts": { "items": { "type": "string" }, "type": "array" } }, "required": [ "priceTrends", "pricePerSqftInr", "rent2bhkInr", "rentalYieldPct", "priceGrowth1YPct", "asOfMonth", "sourceCount", "confidence", "livabilityScore", "livabilityScoreBasis", "investmentGrade", "strengthTags", "watchouts", "highlights" ], "type": "object" }, "type": "object" }, "disclaimer": { "type": "string" }, "handoffUrl": { "format": "uri", "type": "string" }, "localities": { "items": { "type": "string" }, "type": "array" }, "scopeMessage": { "type": "string" }, "supported": { "type": "boolean" }, "supportedCities": { "items": { "type": "string" }, "type": "array" } }, "required": [ "city", "localities", "supported", "comparison", "attribution", "handoffUrl", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "listingIds": { "description": "2–5 AVnester listingIds (from search_properties results) to compare. IDs are not guessable — call search_properties first. Order is preserved in the output.", "items": { "maxLength": 80, "minLength": 1, "type": "string" }, "maxItems": 5, "minItems": 2, "type": "array" } }, "required": [ "listingIds" ], "type": "object" }, "name": "compare_properties", "outputSchema": { "additionalProperties": true, "properties": { "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "comparison": { "items": { "additionalProperties": true, "properties": { "listing": { "additionalProperties": true, "properties": { "ageInYears": { "type": [ "integer", "null" ] }, "attribution": { "enum": [ "AVnester" ] }, "availableFrom": { "type": [ "string", "null" ] }, "bathrooms": { "type": [ "integer", "null" ] }, "bhk": { "type": [ "integer", "null" ] }, "carpetAreaSqft": { "type": [ "number", "null" ] }, "city": { "type": "string" }, "featured": { "type": "boolean" }, "floorNumber": { "type": [ "integer", "null" ] }, "furnishingStatus": { "enum": [ "furnished", "semi-furnished", "unfurnished", null ], "type": [ "string", "null" ] }, "imageThumbnailUrl": { "format": "uri", "type": [ "string", "null" ] }, "leaseAmount": { "type": [ "number", "null" ] }, "leaseRefundable": { "type": [ "boolean", "null" ] }, "leaseTenureMonths": { "type": [ "integer", "null" ] }, "listingId": { "type": "string" }, "listingType": { "enum": [ "sale", "rent" ], "type": "string" }, "locality": { "type": "string" }, "parkingCount": { "type": [ "integer", "null" ] }, "plotDetails": { "additionalProperties": true, "properties": { "dtcpApproved": { "type": [ "boolean", "null" ] }, "dtcpNumber": { "type": [ "string", "null" ] }, "electricity": { "type": [ "string", "null" ] }, "encumbranceStatus": { "type": [ "string", "null" ] }, "facing": { "type": [ "string", "null" ] }, "gatedCommunity": { "type": [ "boolean", "null" ] }, "guidelineValueInr": { "type": [ "integer", "null" ] }, "landClassification": { "type": [ "string", "null" ] }, "ownershipType": { "type": [ "string", "null" ] }, "pattaChittaStatus": { "type": [ "string", "null" ] }, "pincode": { "type": [ "string", "null" ] }, "plotBreadthFt": { "type": [ "number", "null" ] }, "plotLengthFt": { "type": [ "number", "null" ] }, "plotNumber": { "type": [ "string", "null" ] }, "roadWidthFt": { "type": [ "number", "null" ] }, "waterAvailability": { "type": [ "string", "null" ] } }, "required": [ "dtcpApproved", "dtcpNumber", "landClassification", "facing", "roadWidthFt", "gatedCommunity", "waterAvailability", "electricity", "ownershipType", "plotNumber", "pincode", "pattaChittaStatus", "encumbranceStatus", "guidelineValueInr", "plotLengthFt", "plotBreadthFt" ], "type": [ "object", "null" ] }, "price": { "type": "integer" }, "pricePerSqft": { "type": [ "integer", "null" ] }, "priceUnit": { "enum": [ "INR" ] }, "rentalStructure": { "enum": [ "monthly", "lease", null ], "type": [ "string", "null" ] }, "reraId": { "type": [ "string", "null" ] }, "sourceUrl": { "format": "uri", "type": "string" }, "summary": { "type": "string" }, "title": { "type": "string" }, "totalFloors": { "type": [ "integer", "null" ] }, "validUntil": { "type": [ "string", "null" ] }, "verification": { "additionalProperties": true, "properties": { "adminReviewed": { "type": "boolean" }, "caveats": { "items": { "type": "string" }, "type": "array" }, "documentVerified": { "type": "boolean" }, "lastVerifiedAt": { "type": [ "string", "null" ] }, "locationConfidence": { "type": [ "integer", "null" ] }, "locationVerified": { "type": "boolean" }, "method": { "type": [ "string", "null" ] }, "tier": { "type": [ "string", "null" ] } }, "required": [ "tier", "locationVerified", "locationConfidence", "lastVerifiedAt", "method" ], "type": "object" }, "verified": { "type": "boolean" }, "verifiedAt": { "type": [ "string", "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" ], "type": [ "object", "null" ] }, "listingId": { "type": "string" }, "metrics": { "additionalProperties": true, "properties": { "pricePerSqft": { "type": [ "integer", "null" ] }, "vsCheapestPercent": { "type": [ "integer", "null" ] }, "vsLargestAreaPercent": { "type": [ "integer", "null" ] } }, "required": [ "pricePerSqft", "vsCheapestPercent", "vsLargestAreaPercent" ], "type": [ "object", "null" ] }, "status": { "enum": [ "found", "not_found_or_unpublished" ], "type": "string" } }, "required": [ "listingId", "listing", "status", "metrics" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "framing": { "type": "string" }, "message": { "type": "string" } }, "required": [ "comparison", "framing", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "buyerGender": { "description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession. Overrides isWomanBuyer.", "enum": [ "male", "female", "joint" ], "type": "string" }, "carpetAreaSqft": { "description": "Carpet area (sqft) — with value, decides the affordable-housing 1% GST slab.", "exclusiveMinimum": 0, "maximum": 100000, "type": "integer" }, "city": { "description": "City or town, e.g. \"Pune\". Decides the rate where the state prices by location (MH, KA, WB, MP, HR): Pune 7%, Mumbai 6%. Send the place as the buyer names it (\"Kharghar\"), not the wider city it is listed under.", "maxLength": 60, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "constructionStatus": { "description": "When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit → GST not computed.", "enum": [ "under_construction", "ready_to_move", "resale" ], "type": "string" }, "firstSale": { "description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. Absent: constructionStatus under_construction ⇒ true, resale ⇒ false, ready_to_move decides nothing (may be a resale).", "type": "boolean" }, "isUrban": { "description": "Urban (default) or rural. Used for the location when city and localBody are absent.", "type": "boolean" }, "isWomanBuyer": { "default": false, "description": "Backward-compatibility shim — prefer buyerGender. When true, internally treated as buyerGender=\"female\".", "type": "boolean" }, "localBody": { "description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said).", "enum": [ "municipal_corporation", "municipal_council", "gram_panchayat" ], "type": "string" }, "propertyType": { "description": "residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.", "enum": [ "residential", "commercial", "agricultural", "plot" ], "type": "string" }, "propertyValue": { "description": "Sale value in INR for stamp-duty calculation.", "exclusiveMinimum": 0, "maximum": 10000000000, "type": "integer" }, "state": { "description": "Indian state — ISO code (\"MH\"), slug (\"maharashtra\") or name (\"Maharashtra\"). Required.", "maxLength": 50, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" } }, "required": [ "propertyValue", "state" ], "type": "object" }, "name": "estimate_stamp_duty_and_registration", "outputSchema": { "additionalProperties": true, "properties": { "assumptions": { "items": { "additionalProperties": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "type": "array" }, "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "gst": { "additionalProperties": true, "properties": { "amount": { "type": "integer" }, "applies": { "type": "boolean" }, "basis": { "type": "string" }, "isAffordable": { "type": "boolean" }, "itcAvailableToBuyer": { "enum": [ false ] }, "ratePct": { "type": "number" } }, "required": [ "ratePct", "amount", "applies", "isAffordable", "itcAvailableToBuyer", "basis" ], "type": "object" }, "location": { "additionalProperties": true, "properties": { "assumed": { "type": "boolean" }, "localBody": { "enum": [ "municipal_corporation", "municipal_council", "gram_panchayat", null ], "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "properties": { "area": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug", "name" ], "type": [ "object", "null" ] }, "source": { "enum": [ "local_body", "city", "is_urban", "default", "not_applicable" ], "type": "string" } }, "required": [ "place", "localBody", "source", "assumed" ], "type": [ "object", "null" ] }, "propertyValue": { "type": "integer" }, "rateBasis": { "type": "string" }, "rateEffectiveDate": { "type": [ "string", "null" ] }, "rateVerification": { "additionalProperties": true, "properties": { "lastVerifiedAt": { "type": [ "string", "null" ] }, "sourceUrl": { "type": [ "string", "null" ] }, "status": { "enum": [ "verified", "partial", "unverified" ], "type": "string" }, "unverifiedComponents": { "items": { "type": "string" }, "type": "array" } }, "required": [ "status", "lastVerifiedAt", "sourceUrl", "unverifiedComponents" ], "type": "object" }, "registrationCapApplied": { "type": "boolean" }, "registrationFee": { "type": "integer" }, "rulesVersion": { "type": [ "string", "null" ] }, "stampDuty": { "type": "integer" }, "stampDutyBase": { "type": "integer" }, "state": { "type": "string" }, "stateCode": { "type": [ "string", "null" ] }, "stateName": { "type": [ "string", "null" ] }, "supported": { "type": "boolean" }, "surcharges": { "items": { "additionalProperties": true, "properties": { "amount": { "type": "integer" }, "legalBasis": { "type": "string" }, "name": { "type": "string" }, "ratePct": { "type": "number" } }, "required": [ "name", "ratePct", "amount" ], "type": "object" }, "type": "array" }, "total": { "type": "integer" }, "totalWithGst": { "type": "integer" } }, "required": [ "propertyValue", "state", "supported", "stateCode", "stateName", "stampDuty", "stampDutyBase", "surcharges", "registrationFee", "registrationCapApplied", "total", "rateBasis", "location", "rateVerification", "assumptions", "rulesVersion", "rateEffectiveDate", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "city": { "description": "Indian city (required).", "maxLength": 60, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "locality": { "description": "Locality name within an Indian city.", "maxLength": 80, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" } }, "required": [ "locality", "city" ], "type": "object" }, "name": "get_locality_insights", "outputSchema": { "additionalProperties": true, "properties": { "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "city": { "type": "string" }, "disclaimer": { "type": "string" }, "freshness": { "additionalProperties": true, "properties": { "confidence": { "enum": [ "high", "medium", "low", null ], "type": [ "string", "null" ] }, "sourceCount": { "type": [ "integer", "null" ] }, "updatedAt": { "type": [ "string", "null" ] } }, "required": [ "updatedAt", "sourceCount", "confidence" ], "type": "object" }, "handoffUrl": { "format": "uri", "type": "string" }, "insights": { "additionalProperties": true, "properties": { "avgPriceInr": { "type": [ "number", "null" ] }, "demandPulse": { "enum": [ "low", "medium", "high", null ], "type": [ "string", "null" ] }, "highlights": { "items": { "type": "string" }, "type": "array" }, "investmentGrade": { "type": [ "string", "null" ] }, "livabilityScore": { "type": [ "number", "null" ] }, "livabilityScoreBasis": { "enum": [ "editorial-estimate", null ], "type": [ "string", "null" ] }, "priceGrowth1YPct": { "type": [ "number", "null" ] }, "pricePerSqftInr": { "type": [ "number", "null" ] }, "priceTrends": { "items": { "additionalProperties": true, "properties": { "avgPriceInr": { "type": [ "number", "null" ] }, "estimated": { "type": [ "boolean", "null" ] }, "period": { "type": "string" }, "pricePerSqftInr": { "type": [ "number", "null" ] } }, "required": [ "period", "avgPriceInr" ], "type": "object" }, "type": "array" }, "rent2bhkInr": { "type": [ "number", "null" ] }, "rentalYieldPct": { "type": [ "number", "null" ] }, "strengthTags": { "items": { "type": "string" }, "type": "array" }, "supplyCount": { "type": [ "integer", "null" ] }, "watchouts": { "items": { "type": "string" }, "type": "array" } }, "required": [ "avgPriceInr", "pricePerSqftInr", "rent2bhkInr", "rentalYieldPct", "priceGrowth1YPct", "supplyCount", "demandPulse", "livabilityScore", "livabilityScoreBasis", "investmentGrade", "highlights", "watchouts", "priceTrends", "strengthTags" ], "type": "object" }, "locality": { "type": "string" }, "message": { "type": "string" }, "scopeMessage": { "type": "string" }, "supported": { "type": "boolean" }, "supportedCities": { "items": { "type": "string" }, "type": "array" } }, "required": [ "city", "locality", "supported", "insights", "freshness", "attribution", "handoffUrl", "disclaimer", "cards" ], "type": "object" } }, { "description": "Assess whether a buyer can afford a specific Indian home — ONE verdict (AFFORDABLE / STRETCH / NOT_YET / INELIGIBLE) combining indicative eligibility (FOIR/LTV/CIBIL), EMI, true cash-to-close (down payment + stamp duty + registration + 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.", "inputSchema": { "properties": { "annualIncomeForTax": { "description": "Annual income for tax. Defaults to monthlyNetIncome × 12.", "minimum": 0, "type": "integer" }, "annualRent": { "description": "Annual rent received (let-out).", "minimum": 0, "type": "integer" }, "assetType": { "description": "\"home\" (flat/villa/house) or \"plot\" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.", "enum": [ "home", "plot" ], "type": "string" }, "buyerGender": { "description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession.", "enum": [ "male", "female", "joint" ], "type": "string" }, "carpetAreaSqft": { "description": "Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).", "exclusiveMinimum": 0, "maximum": 100000, "type": "integer" }, "cibilScore": { "description": "Numeric CIBIL score. Omit → eligibility stays indicative.", "maximum": 900, "minimum": 300, "type": "integer" }, "city": { "description": "City (manual mode), e.g. \"Pune\" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.", "maxLength": 60, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "coApplicantMonthlyIncome": { "description": "Co-applicant monthly income (joint affordability).", "maximum": 100000000, "minimum": 0, "type": "integer" }, "employmentType": { "description": "Employment type (affects tax standard deduction).", "enum": [ "salaried", "self_employed" ], "type": "string" }, "existingMonthlyEmis": { "description": "Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.", "maximum": 100000000, "minimum": 0, "type": "integer" }, "firstSale": { "description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. If absent, isUnderConstruction true means true.", "type": "boolean" }, "interestRatePercent": { "description": "Override annual interest rate. Defaults to indicative market rate.", "maximum": 30, "minimum": 1, "type": "number" }, "isUnderConstruction": { "description": "Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).", "type": "boolean" }, "isUrban": { "description": "Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.", "type": "boolean" }, "jointLoan": { "description": "Joint home loan — doubles 80C/24b caps (equal split).", "type": "boolean" }, "listingId": { "description": "An AVnester listingId. Listing mode — propertyValue, state and city are then ignored, with a warning.", "maxLength": 80, "minLength": 1, "type": "string" }, "localBody": { "description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said). Manual mode only.", "enum": [ "municipal_corporation", "municipal_council", "gram_panchayat" ], "type": "string" }, "monthlyNetIncome": { "description": "Buyer monthly take-home income in INR.", "exclusiveMinimum": 0, "maximum": 100000000, "type": "integer" }, "occupancyIntent": { "description": "Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.", "enum": [ "self_occupied", "let_out" ], "type": "string" }, "propertyValue": { "description": "Property price in INR (manual mode). Pass with state (and city where it matters).", "exclusiveMinimum": 0, "maximum": 1000000000, "type": "integer" }, "residencyStatus": { "description": "Residency status.", "enum": [ "resident", "nri" ], "type": "string" }, "savingsAvailable": { "description": "Liquid cash for down payment + charges — enables the cash-gap calc.", "maximum": 10000000000, "minimum": 0, "type": "integer" }, "state": { "description": "Indian state (ISO \"MH\"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.", "maxLength": 50, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "tenureYears": { "description": "Loan tenure in years. Defaults to 20.", "maximum": 40, "minimum": 1, "type": "integer" } }, "required": [ "monthlyNetIncome" ], "type": "object" }, "name": "get_property_decision_intelligence", "outputSchema": { "additionalProperties": true, "properties": { "affordability": { "additionalProperties": true, "properties": { "downPayment": { "type": "integer" }, "downPaymentGap": { "type": [ "integer", "null" ] }, "gst": { "additionalProperties": true, "properties": { "amount": { "type": "integer" }, "applies": { "type": "boolean" }, "basis": { "type": "string" }, "isAffordable": { "type": "boolean" }, "itcAvailableToBuyer": { "enum": [ false ] }, "ratePct": { "type": "number" } }, "required": [ "ratePct", "amount", "applies", "isAffordable", "itcAvailableToBuyer", "basis" ], "type": "object" }, "lifetimeCost": { "type": "integer" }, "otherCharges": { "type": "integer" }, "otherChargesBreakdown": { "additionalProperties": true, "properties": { "gstUnderConstruction": { "type": "integer" }, "legalFee": { "type": "integer" }, "loanProcessingFee": { "type": "integer" }, "technicalValuation": { "type": "integer" } }, "required": [ "loanProcessingFee", "legalFee", "gstUnderConstruction" ], "type": "object" }, "propertyValue": { "type": "integer" }, "savingsAvailable": { "type": [ "integer", "null" ] }, "stampDutyAndRegistration": { "type": "integer" }, "totalCashToClose": { "type": "integer" } }, "required": [ "propertyValue", "downPayment", "stampDutyAndRegistration", "otherCharges", "otherChargesBreakdown", "gst", "totalCashToClose", "lifetimeCost", "savingsAvailable", "downPaymentGap" ], "type": "object" }, "assetType": { "enum": [ "home", "plot" ], "type": "string" }, "assumptions": { "additionalProperties": true, "properties": { "annualIncomeEstimated": { "type": "boolean" }, "buyerGender": { "enum": [ "male", "female", "joint" ], "type": "string" }, "cibilProvided": { "type": "boolean" }, "existingEmisProvided": { "type": "boolean" }, "isUnderConstruction": { "type": "boolean" }, "ltvBasis": { "type": "string" }, "occupancyIntent": { "enum": [ "self_occupied", "let_out" ], "type": "string" }, "occupancyIntentProvided": { "type": "boolean" }, "rateSource": { "type": "string" }, "regimeYear": { "enum": [ "FY2026-27" ] }, "savingsProvided": { "type": "boolean" }, "seniorCitizenNotModeled": { "enum": [ true ] }, "underConstructionProvided": { "type": "boolean" } }, "required": [ "rateSource", "ltvBasis", "regimeYear", "annualIncomeEstimated", "buyerGender", "cibilProvided", "savingsProvided", "existingEmisProvided", "occupancyIntent", "occupancyIntentProvided", "isUnderConstruction", "underConstructionProvided", "seniorCitizenNotModeled" ], "type": "object" }, "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "eligibility": { "additionalProperties": true, "properties": { "approvalLikelihood": { "enum": [ "high", "medium", "low", "indicative" ], "type": "string" }, "bound": { "enum": [ "foir", "ltv" ], "type": "string" }, "cibilBand": { "type": [ "string", "null" ] }, "eligibleLoan": { "type": "integer" }, "foirAtEligibleLoanPct": { "type": "number" }, "foirCeilingPct": { "type": "number" }, "foirComfortPct": { "type": "number" }, "ltvPct": { "type": "number" }, "maxLoanByFoir": { "type": "integer" }, "maxLoanByLtv": { "type": "integer" }, "notALoanApproval": { "enum": [ true ] }, "notAnOffer": { "enum": [ true ] }, "reasoning": { "type": "string" } }, "required": [ "maxLoanByFoir", "maxLoanByLtv", "eligibleLoan", "bound", "ltvPct", "foirAtEligibleLoanPct", "foirCeilingPct", "foirComfortPct", "cibilBand", "approvalLikelihood", "notALoanApproval", "notAnOffer", "reasoning" ], "type": "object" }, "emi": { "additionalProperties": true, "properties": { "interestRatePercent": { "type": "number" }, "loanAmount": { "type": "integer" }, "monthlyEmi": { "type": "integer" }, "tenureYears": { "type": "integer" }, "totalInterest": { "type": "integer" }, "totalPayment": { "type": "integer" } }, "required": [ "loanAmount", "interestRatePercent", "tenureYears", "monthlyEmi", "totalInterest", "totalPayment" ], "type": "object" }, "lenderFit": { "additionalProperties": true, "properties": { "cibilConsidered": { "type": "boolean" }, "disclaimer": { "type": "string" }, "eligibleLenders": { "items": { "type": "string" }, "type": "array" }, "lenders": { "items": { "additionalProperties": true, "properties": { "eligible": { "type": "boolean" }, "fitReason": { "type": "string" }, "fitScore": { "type": "integer" }, "indicativeRatePct": { "type": "number" }, "kind": { "enum": [ "bank", "hfc" ], "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "kind", "indicativeRatePct", "eligible", "fitScore", "fitReason" ], "type": "object" }, "type": "array" }, "notALoanApproval": { "enum": [ true ] }, "notAnOffer": { "enum": [ true ] }, "source": { "additionalProperties": true, "properties": { "effectiveDate": { "type": "string" }, "lastVerifiedAt": { "type": "string" }, "sourceUrl": { "type": "string" } }, "required": [ "effectiveDate", "sourceUrl", "lastVerifiedAt" ], "type": "object" }, "summary": { "type": "string" } }, "required": [ "lenders", "eligibleLenders", "cibilConsidered", "notAnOffer", "notALoanApproval", "summary", "disclaimer" ], "type": "object" }, "mode": { "enum": [ "listing", "manual" ], "type": "string" }, "notFound": { "type": "boolean" }, "stampDutySupported": { "type": "boolean" }, "tax": { "additionalProperties": true, "properties": { "homeLoanTaxBenefitOld": { "type": "integer" }, "netEffectiveAnnualBenefit": { "type": "integer" }, "netEffectiveMonthlyEmi": { "type": "integer" }, "notModeled": { "items": { "type": "string" }, "type": "array" }, "recommendedRegime": { "enum": [ "old", "new" ], "type": "string" } }, "required": [ "recommendedRegime", "homeLoanTaxBenefitOld", "netEffectiveAnnualBenefit", "netEffectiveMonthlyEmi", "notModeled" ], "type": "object" }, "trust": { "additionalProperties": true, "properties": { "grade": { "type": "string" }, "score": { "type": "integer" } }, "required": [ "score", "grade" ], "type": "object" }, "verdict": { "additionalProperties": true, "properties": { "blockingLever": { "type": [ "string", "null" ] }, "confidence": { "enum": [ "indicative" ] }, "headline": { "type": "string" }, "levers": { "items": { "additionalProperties": true, "properties": { "amountInr": { "type": "integer" }, "effect": { "type": "string" }, "lever": { "type": "string" } }, "required": [ "lever", "effect" ], "type": "object" }, "type": "array" }, "signal": { "enum": [ "AFFORDABLE", "STRETCH", "NOT_YET", "INELIGIBLE" ], "type": "string" } }, "required": [ "signal", "headline", "blockingLever", "levers", "confidence" ], "type": "object" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "listingId": { "description": "AVnester listingId, as returned in search_properties results (the `listingId` field). IDs are not guessable — call search_properties first. Also the trailing segment of a listing sourceUrl.", "maxLength": 80, "minLength": 1, "type": "string" } }, "required": [ "listingId" ], "type": "object" }, "name": "get_property_details", "outputSchema": { "additionalProperties": true, "properties": { "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "handoffUrl": { "format": "uri", "type": "string" }, "listing": { "additionalProperties": true, "properties": { "ageInYears": { "type": [ "integer", "null" ] }, "attribution": { "enum": [ "AVnester" ] }, "availableFrom": { "type": [ "string", "null" ] }, "bathrooms": { "type": [ "integer", "null" ] }, "bhk": { "type": [ "integer", "null" ] }, "carpetAreaSqft": { "type": [ "number", "null" ] }, "city": { "type": "string" }, "featured": { "type": "boolean" }, "floorNumber": { "type": [ "integer", "null" ] }, "furnishingStatus": { "enum": [ "furnished", "semi-furnished", "unfurnished", null ], "type": [ "string", "null" ] }, "imageThumbnailUrl": { "format": "uri", "type": [ "string", "null" ] }, "leaseAmount": { "type": [ "number", "null" ] }, "leaseRefundable": { "type": [ "boolean", "null" ] }, "leaseTenureMonths": { "type": [ "integer", "null" ] }, "listingId": { "type": "string" }, "listingType": { "enum": [ "sale", "rent" ], "type": "string" }, "locality": { "type": "string" }, "parkingCount": { "type": [ "integer", "null" ] }, "plotDetails": { "additionalProperties": true, "properties": { "dtcpApproved": { "type": [ "boolean", "null" ] }, "dtcpNumber": { "type": [ "string", "null" ] }, "electricity": { "type": [ "string", "null" ] }, "encumbranceStatus": { "type": [ "string", "null" ] }, "facing": { "type": [ "string", "null" ] }, "gatedCommunity": { "type": [ "boolean", "null" ] }, "guidelineValueInr": { "type": [ "integer", "null" ] }, "landClassification": { "type": [ "string", "null" ] }, "ownershipType": { "type": [ "string", "null" ] }, "pattaChittaStatus": { "type": [ "string", "null" ] }, "pincode": { "type": [ "string", "null" ] }, "plotBreadthFt": { "type": [ "number", "null" ] }, "plotLengthFt": { "type": [ "number", "null" ] }, "plotNumber": { "type": [ "string", "null" ] }, "roadWidthFt": { "type": [ "number", "null" ] }, "waterAvailability": { "type": [ "string", "null" ] } }, "required": [ "dtcpApproved", "dtcpNumber", "landClassification", "facing", "roadWidthFt", "gatedCommunity", "waterAvailability", "electricity", "ownershipType", "plotNumber", "pincode", "pattaChittaStatus", "encumbranceStatus", "guidelineValueInr", "plotLengthFt", "plotBreadthFt" ], "type": [ "object", "null" ] }, "price": { "type": "integer" }, "pricePerSqft": { "type": [ "integer", "null" ] }, "priceUnit": { "enum": [ "INR" ] }, "rentalStructure": { "enum": [ "monthly", "lease", null ], "type": [ "string", "null" ] }, "reraId": { "type": [ "string", "null" ] }, "sourceUrl": { "format": "uri", "type": "string" }, "summary": { "type": "string" }, "title": { "type": "string" }, "totalFloors": { "type": [ "integer", "null" ] }, "validUntil": { "type": [ "string", "null" ] }, "verification": { "additionalProperties": true, "properties": { "adminReviewed": { "type": "boolean" }, "caveats": { "items": { "type": "string" }, "type": "array" }, "documentVerified": { "type": "boolean" }, "lastVerifiedAt": { "type": [ "string", "null" ] }, "locationConfidence": { "type": [ "integer", "null" ] }, "locationVerified": { "type": "boolean" }, "method": { "type": [ "string", "null" ] }, "tier": { "type": [ "string", "null" ] } }, "required": [ "tier", "locationVerified", "locationConfidence", "lastVerifiedAt", "method" ], "type": "object" }, "verified": { "type": "boolean" }, "verifiedAt": { "type": [ "string", "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" ], "type": [ "object", "null" ] }, "message": { "type": "string" }, "notFound": { "type": "boolean" }, "trust": { "additionalProperties": true, "properties": { "grade": { "type": "string" }, "score": { "type": "integer" } }, "required": [ "score", "grade" ], "type": "object" } }, "required": [ "listing", "notFound", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "ageBand": { "description": "Taxpayer age band — raises the OLD-regime basic exemption (senior 60–80 → ₹3L, super-senior 80+ → ₹5L). New regime unaffected. Defaults to below60.", "enum": [ "below60", "senior", "super_senior" ], "type": "string" }, "annualIncome": { "description": "Annual gross income in INR EXCLUDING house property (salary + other income).", "exclusiveMinimum": 0, "type": "integer" }, "annualRent": { "description": "Annual rent received in INR — required for let_out.", "minimum": 0, "type": "integer" }, "countryOfResidence": { "description": "NRI only — DTAA article lookup hint. Free-form country name.", "maxLength": 50, "type": "string" }, "hasForm15CB": { "description": "NRI only — whether Form 15CB CA-attestation is already in hand.", "type": "boolean" }, "holdingMonths": { "description": "NRI only — holding period in months. ≤24 is STCG; >24 is LTCG.", "minimum": 0, "type": "integer" }, "homeLoanInterest": { "description": "Annual home-loan interest paid (INR).", "minimum": 0, "type": "integer" }, "homeLoanPrincipal": { "description": "Annual home-loan principal repaid (INR) — counts toward 80C.", "minimum": 0, "type": "integer" }, "indexedCost": { "description": "NRI only — indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.", "minimum": 0, "type": "integer" }, "isSalaried": { "default": true, "description": "Whether the taxpayer is salaried (gets the standard deduction).", "type": "boolean" }, "jointLoan": { "default": false, "description": "Joint loan with a co-borrower — doubles the 80C/24b caps (equal-split assumption).", "type": "boolean" }, "nroBalanceUsd": { "description": "NRI only — NRO account balance in USD equivalent for the repatriation cap math.", "minimum": 0, "type": "number" }, "other80C": { "description": "Other 80C investments in INR (PF, ELSS, insurance, etc.).", "minimum": 0, "type": "integer" }, "otherOldRegimeDeductions": { "description": "Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.).", "minimum": 0, "type": "integer" }, "propertyType": { "default": "self_occupied", "description": "Whether the property is self-occupied or let out.", "enum": [ "self_occupied", "let_out" ], "type": "string" }, "residencyStatus": { "description": "Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.", "enum": [ "resident", "nri" ], "type": "string" }, "saleValue": { "description": "NRI only — sale consideration in INR for §195 TDS computation.", "minimum": 0, "type": "integer" }, "ytdRemittedUsd": { "description": "NRI only — FY-to-date USD already remitted under the $1M cap.", "minimum": 0, "type": "number" } }, "required": [ "annualIncome", "homeLoanInterest", "homeLoanPrincipal" ], "type": "object" }, "name": "optimize_home_loan_tax_regime", "outputSchema": { "additionalProperties": true, "properties": { "annualIncome": { "type": "integer" }, "annualSaving": { "type": "integer" }, "assumptions": { "additionalProperties": true, "properties": { "notTaxAdvice": { "enum": [ true ] }, "regimeYear": { "enum": [ "FY2026-27" ] }, "section80EEAExcluded": { "enum": [ true ] }, "surchargeNotModeled": { "enum": [ true ] } }, "required": [ "regimeYear", "surchargeNotModeled", "section80EEAExcluded", "notTaxAdvice" ], "type": "object" }, "attribution": { "enum": [ "AVnester" ] }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "homeLoanTaxBenefitOld": { "type": "integer" }, "jointLoan": { "type": "boolean" }, "new": { "additionalProperties": true, "properties": { "deductionsApplied": { "type": "integer" }, "taxableIncome": { "type": "integer" }, "totalTax": { "type": "integer" } }, "required": [ "taxableIncome", "totalTax", "deductionsApplied" ], "type": "object" }, "notModeled": { "items": { "type": "string" }, "type": "array" }, "nri": { "additionalProperties": true, "properties": { "countryOfResidence": { "type": "string" }, "dtaaNote": { "type": "string" }, "repatriation": { "additionalProperties": true, "properties": { "availableUsd": { "type": "number" }, "capUsd": { "type": "number" }, "disclaimer": { "type": "string" }, "notModeled": { "items": { "type": "string" }, "type": "array" }, "requiresCA": { "type": "boolean" } }, "required": [ "availableUsd", "capUsd", "requiresCA", "notModeled", "disclaimer" ], "type": "object" }, "tds": { "additionalProperties": true, "properties": { "disclaimer": { "type": "string" }, "form13EligibilityHint": { "type": "boolean" }, "ltcgTax": { "type": "number" }, "notModeled": { "items": { "type": "string" }, "type": "array" }, "section195Rate": { "type": "number" }, "stcgTax": { "type": "number" }, "tdsAmount": { "type": "number" } }, "required": [ "section195Rate", "tdsAmount", "ltcgTax", "stcgTax", "form13EligibilityHint", "notModeled", "disclaimer" ], "type": "object" } }, "required": [ "countryOfResidence", "dtaaNote" ], "type": "object" }, "old": { "additionalProperties": true, "properties": { "deductionsApplied": { "type": "integer" }, "taxableIncome": { "type": "integer" }, "totalTax": { "type": "integer" } }, "required": [ "taxableIncome", "totalTax", "deductionsApplied" ], "type": "object" }, "propertyType": { "enum": [ "self_occupied", "let_out" ], "type": "string" }, "recommended": { "enum": [ "old", "new" ], "type": "string" }, "residencyStatus": { "enum": [ "nri" ] } }, "required": [ "annualIncome", "propertyType", "jointLoan", "old", "new", "recommended", "annualSaving", "homeLoanTaxBenefitOld", "notModeled", "assumptions", "attribution", "disclaimer", "cards" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "bedrooms": { "description": "Number of bedrooms (BHK).", "maximum": 10, "minimum": 1, "type": "integer" }, "city": { "description": "City or town in Tamil Nadu (e.g., \"Coimbatore\", \"Madurai\"). Omit to search every Tamil Nadu city.", "maxLength": 60, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "furnishing": { "description": "Furnishing status (rental queries).", "enum": [ "furnished", "semi-furnished", "unfurnished" ], "type": "string" }, "limit": { "default": 10, "description": "Maximum number of listings to return (cap: 20). v1 abuse defense.", "maximum": 20, "minimum": 1, "type": "integer" }, "locality": { "description": "Locality/neighborhood within the city (e.g., \"Saravanampatti\").", "maxLength": 80, "minLength": 1, "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$", "type": "string" }, "maxPrice": { "description": "Maximum price in INR.", "minimum": 0, "type": "integer" }, "minPrice": { "description": "Minimum price in INR.", "minimum": 0, "type": "integer" }, "propertyType": { "description": "Property type.", "enum": [ "apartment", "villa", "plot", "independent_house" ], "type": "string" }, "rentalStructure": { "description": "Rental money structure: monthly rent, or a lump-sum lease (one refundable amount for a fixed tenure, no monthly rent). Only meaningful with transactionType=rent. Omit to include both.", "enum": [ "monthly", "lease" ], "type": "string" }, "transactionType": { "description": "Whether to search for sale or rent. Omit to include both.", "enum": [ "sale", "rent" ], "type": "string" } }, "type": "object" }, "name": "search_properties", "outputSchema": { "additionalProperties": true, "properties": { "attribution": { "enum": [ "AVnester" ] }, "disclaimer": { "type": "string" }, "handoffUrl": { "format": "uri", "type": "string" }, "listings": { "items": { "additionalProperties": true, "properties": { "ageInYears": { "type": [ "integer", "null" ] }, "areaRank": { "type": "integer" }, "attribution": { "enum": [ "AVnester" ] }, "availableFrom": { "type": [ "string", "null" ] }, "bathrooms": { "type": [ "integer", "null" ] }, "bhk": { "type": [ "integer", "null" ] }, "carpetAreaSqft": { "type": [ "number", "null" ] }, "city": { "type": "string" }, "featured": { "type": "boolean" }, "floorNumber": { "type": [ "integer", "null" ] }, "furnishingStatus": { "enum": [ "furnished", "semi-furnished", "unfurnished", null ], "type": [ "string", "null" ] }, "imageThumbnailUrl": { "format": "uri", "type": [ "string", "null" ] }, "leaseAmount": { "type": [ "number", "null" ] }, "leaseRefundable": { "type": [ "boolean", "null" ] }, "leaseTenureMonths": { "type": [ "integer", "null" ] }, "listingId": { "type": "string" }, "listingType": { "enum": [ "sale", "rent" ], "type": "string" }, "locality": { "type": "string" }, "parkingCount": { "type": [ "integer", "null" ] }, "plotDetails": { "additionalProperties": true, "properties": { "dtcpApproved": { "type": [ "boolean", "null" ] }, "dtcpNumber": { "type": [ "string", "null" ] }, "electricity": { "type": [ "string", "null" ] }, "encumbranceStatus": { "type": [ "string", "null" ] }, "facing": { "type": [ "string", "null" ] }, "gatedCommunity": { "type": [ "boolean", "null" ] }, "guidelineValueInr": { "type": [ "integer", "null" ] }, "landClassification": { "type": [ "string", "null" ] }, "ownershipType": { "type": [ "string", "null" ] }, "pattaChittaStatus": { "type": [ "string", "null" ] }, "pincode": { "type": [ "string", "null" ] }, "plotBreadthFt": { "type": [ "number", "null" ] }, "plotLengthFt": { "type": [ "number", "null" ] }, "plotNumber": { "type": [ "string", "null" ] }, "roadWidthFt": { "type": [ "number", "null" ] }, "waterAvailability": { "type": [ "string", "null" ] } }, "required": [ "dtcpApproved", "dtcpNumber", "landClassification", "facing", "roadWidthFt", "gatedCommunity", "waterAvailability", "electricity", "ownershipType", "plotNumber", "pincode", "pattaChittaStatus", "encumbranceStatus", "guidelineValueInr", "plotLengthFt", "plotBreadthFt" ], "type": [ "object", "null" ] }, "price": { "type": "integer" }, "pricePerSqft": { "type": [ "integer", "null" ] }, "priceRank": { "type": "integer" }, "priceUnit": { "enum": [ "INR" ] }, "rank": { "type": "integer" }, "rentalStructure": { "enum": [ "monthly", "lease", null ], "type": [ "string", "null" ] }, "reraId": { "type": [ "string", "null" ] }, "sourceUrl": { "format": "uri", "type": "string" }, "summary": { "type": "string" }, "title": { "type": "string" }, "totalFloors": { "type": [ "integer", "null" ] }, "validUntil": { "type": [ "string", "null" ] }, "valueRank": { "type": "integer" }, "verification": { "additionalProperties": true, "properties": { "adminReviewed": { "type": "boolean" }, "caveats": { "items": { "type": "string" }, "type": "array" }, "documentVerified": { "type": "boolean" }, "lastVerifiedAt": { "type": [ "string", "null" ] }, "locationConfidence": { "type": [ "integer", "null" ] }, "locationVerified": { "type": "boolean" }, "method": { "type": [ "string", "null" ] }, "tier": { "type": [ "string", "null" ] } }, "required": [ "tier", "locationVerified", "locationConfidence", "lastVerifiedAt", "method" ], "type": "object" }, "verified": { "type": "boolean" }, "verifiedAt": { "type": [ "string", "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" ], "type": "object" }, "type": "array" }, "message": { "type": "string" }, "scopeMessage": { "type": "string" }, "sortBy": { "type": "string" }, "supported": { "type": "boolean" }, "supportedCities": { "description": "Suggested retries: the cities with AVnester's deepest coverage (guides + market data). NOT the listing scope, which is any city or town in Tamil Nadu (see scopeMessage). Present only when supported=false.", "items": { "type": "string" }, "type": "array" }, "total": { "type": "integer" } }, "required": [ "total", "listings", "supported", "attribution", "handoffUrl", "disclaimer" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "annualRatePercent": { "description": "Current annual interest rate (percent). Defaults to the indicative market rate when omitted.", "maximum": 30, "minimum": 1, "type": "number" }, "outstandingPrincipal": { "description": "Current outstanding home-loan principal in INR.", "exclusiveMinimum": 0, "type": "integer" }, "prepaymentAmount": { "default": 0, "description": "One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).", "minimum": 0, "type": "integer" }, "prepaymentMode": { "default": "one_time", "description": "How the prepayment is made (annual anniversary vs every month).", "enum": [ "one_time", "recurring_annual", "recurring_monthly", "one_time_plus_recurring", "one_time_plus_recurring_monthly" ], "type": "string" }, "recurringAnnualAmount": { "default": 0, "description": "Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).", "minimum": 0, "type": "integer" }, "recurringMonthlyAmount": { "default": 0, "description": "Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).", "minimum": 0, "type": "integer" }, "remainingTenureYears": { "description": "Years left on the loan at the current EMI.", "maximum": 40, "minimum": 1, "type": "integer" }, "strategy": { "default": "compare_both", "description": "reduce_tenure keeps the EMI and finishes early (bigger saving); reduce_emi keeps the tenure and lowers the EMI; compare_both returns both.", "enum": [ "reduce_tenure", "reduce_emi", "compare_both" ], "type": "string" } }, "required": [ "outstandingPrincipal", "remainingTenureYears" ], "type": "object" }, "name": "simulate_loan_prepayment", "outputSchema": { "additionalProperties": true, "properties": { "annualRatePercent": { "type": "number" }, "applied": { "additionalProperties": true, "properties": { "oneTime": { "type": "integer" }, "recurringAnnual": { "type": "integer" }, "recurringMonthly": { "type": "integer" } }, "required": [ "oneTime", "recurringAnnual", "recurringMonthly" ], "type": "object" }, "assumptions": { "additionalProperties": true, "properties": { "floatingRatePrepaymentPenaltyWaived": { "enum": [ true ] }, "interestType": { "enum": [ "reducing-balance" ] }, "notALoanApproval": { "enum": [ true ] }, "oneTimeAppliedImmediately": { "enum": [ true ] }, "recurringAppliedAnnually": { "enum": [ true ] }, "recurringMonthlyAppliedEachMonth": { "enum": [ true ] } }, "required": [ "interestType", "oneTimeAppliedImmediately", "recurringAppliedAnnually", "recurringMonthlyAppliedEachMonth", "floatingRatePrepaymentPenaltyWaived", "notALoanApproval" ], "type": "object" }, "attribution": { "enum": [ "AVnester" ] }, "baseline": { "additionalProperties": true, "properties": { "emi": { "type": "integer" }, "payoffMonths": { "type": "integer" }, "totalInterest": { "type": "integer" } }, "required": [ "emi", "payoffMonths", "totalInterest" ], "type": "object" }, "cards": { "items": { "additionalProperties": true, "properties": { "data": { "additionalProperties": {}, "type": "object" }, "priority": { "type": "integer" }, "template": { "type": "string" } }, "required": [ "template", "data", "priority" ], "type": "object" }, "type": "array" }, "disclaimer": { "type": "string" }, "outstandingPrincipal": { "type": "integer" }, "prepaymentMode": { "enum": [ "one_time", "recurring_annual", "recurring_monthly", "one_time_plus_recurring", "one_time_plus_recurring_monthly" ], "type": "string" }, "reduceEmi": { "additionalProperties": true, "properties": { "emi": { "type": "integer" }, "finalEmi": { "type": "integer" }, "interestSaved": { "type": "integer" }, "monthsSaved": { "type": "integer" }, "payoffMonths": { "type": "integer" }, "totalInterest": { "type": "integer" } }, "required": [ "emi", "payoffMonths", "totalInterest", "interestSaved", "monthsSaved" ], "type": "object" }, "reduceTenure": { "additionalProperties": true, "properties": { "emi": { "type": "integer" }, "finalEmi": { "type": "integer" }, "interestSaved": { "type": "integer" }, "monthsSaved": { "type": "integer" }, "payoffMonths": { "type": "integer" }, "totalInterest": { "type": "integer" } }, "required": [ "emi", "payoffMonths", "totalInterest", "interestSaved", "monthsSaved" ], "type": "object" }, "remainingTenureYears": { "type": "integer" }, "strategy": { "enum": [ "reduce_tenure", "reduce_emi", "compare_both" ], "type": "string" } }, "required": [ "outstandingPrincipal", "annualRatePercent", "remainingTenureYears", "prepaymentMode", "strategy", "applied", "baseline", "assumptions", "attribution", "disclaimer", "cards" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:eca0591cc3c64c8ba7ea4915d0a72cf9cfc70894ef6123124d7901f275030f9d | sha256sum