AVnester — Indian Real Estate Intelligence

Indian real estate: property search, locality insights, affordability & pan-India stamp-duty tools.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
99%
이름 품질
85%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • LOWTool 'estimate_stamp_duty_and_registration' name length outside 3-30 rangeestimate_stamp_duty_and_registration에서
  • LOWTool 'get_property_decision_intelligence' name length outside 3-30 rangeget_property_decision_intelligence에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~13,583토큰 (도구 정의)
~12.9 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 10.61%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "property-intelligence": {
      "url": "https://mcp.avnester.com/public-mcp"
    }
  }
}

원격 엔드포인트

https://mcp.avnester.com/public-mcpstreamable-http

할 수 있는 일

도구 목록

도구 (11)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_properties(city, locality, propertyType, bedrooms, minPrice, ...)

Search residential property listings in Coimbatore and Chennai, Tamil Nadu. Use when the user names a locality, price band, BHK, or transaction type in either city. Returns sanitized listing cards with handoff URLs and a per-listing verified flag; never returns seller contact details. Out-of-scope cities return supported=false + supportedCities + scopeMessage — surface the scopeMessage to the user.

입력 스키마

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Indian city name (e.g., \"Bangalore\", \"Coimbatore\"). Required for results."
    },
    "locality": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Locality/neighborhood within the city (e.g., \"Indiranagar\")."
    },
    "propertyType": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "plot",
        "independent_house"
      ],
      "description": "Property type."
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "Number of bedrooms (BHK)."
    },
    "minPrice": {
      "type": "integer",
      "minimum": 0,
      "description": "Minimum price in INR."
    },
    "maxPrice": {
      "type": "integer",
      "minimum": 0,
      "description": "Maximum price in INR."
    },
    "transactionType": {
      "description": "Whether to search for sale or rent. Omit to include both.",
      "type": "string",
      "enum": [
        "sale",
        "rent"
      ]
    },
    "rentalStructure": {
      "description": "Rental money structure: monthly rent, or a lump-sum lease (one refundable amount for a fixed tenure, no monthly rent). Only meaningful with transactionType=rent. Omit to include both.",
      "type": "string",
      "enum": [
        "monthly",
        "lease"
      ]
    },
    "furnishing": {
      "type": "string",
      "enum": [
        "furnished",
        "semi-furnished",
        "unfurnished"
      ],
      "description": "Furnishing status (rental queries)."
    },
    "limit": {
      "default": 10,
      "description": "Maximum number of listings to return (cap: 20). v1 abuse defense.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer"
    },
    "listings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "locality": {
            "type": "string"
          },
          "bhk": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bathrooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "carpetAreaSqft": {
            "type": [
              "number",
              "null"
            ]
          },
          "price": {
            "type": "integer"
          },
          "priceUnit": {
            "enum": [
              "INR"
            ]
          },
          "listingType": {
            "type": "string",
            "enum": [
              "sale",
              "rent"
            ]
          },
          "rentalStructure": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "monthly",
              "lease"
            ]
          },
          "leaseAmount": {
            "type": [
              "number",
              "null"
            ]
          },
          "leaseTenureMonths": {
            "type": [
              "integer",
              "null"
            ]
          },
          "leaseRefundable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "furnishingStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "furnished",
              "semi-furnished",
              "unfurnished"
            ]
          },
          "parkingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "floorNumber": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalFloors": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ageInYears": {
            "type": [
              "integer",
              "null"
            ]
          },
          "availableFrom": {
            "type": [
              "string",
              "null"
            ]
          },
          "reraId": {
            "type": [
              "string",
              "null"
            ]
          },
          "pricePerSqft": {
            "type": [
              "integer",
              "null"
            ]
          },
          "verified": {
            "type": "boolean"
          },
          "featured": {
            "type": "boolean"
          },
          "verification": {
            "type": "object",
            "properties": {
              "documentVerified": {
                "type": "boolean"
              },
              "tier": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "locationVerified": {
                "type": "boolean"
              },
              "locationConfidence": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "lastVerifiedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "method": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": true,
            "required": [
              "documentVerified",
              "tier",
              "locationVerified",
              "locationConfidence",
              "lastVerifiedAt",
              "method"
            ]
          },
          "plotDetails": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "dtcpApproved": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "dtcpNumber": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "landClassification": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "facing": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "roadWidthFt": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "gatedCommunity": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "waterAvailability": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "electricity": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "ownershipType": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "plotNumber": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "pincode": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "pattaChittaStatus": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "encumbranceStatus": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "guidelineValueInr": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "plotLengthFt": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "plotBreadthFt": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "additionalProperties": true,
            "required": [
              "dtcpApproved",
              "dtcpNumber",
              "landClassification",
              "facing",
              "roadWidthFt",
              "gatedCommunity",
              "waterAvailability",
              "electricity",
              "ownershipType",
              "plotNumber",
              "pincode",
              "pattaChittaStatus",
              "encumbranceStatus",
              "guidelineValueInr",
              "plotLengthFt",
              "plotBreadthFt"
            ]
          },
          "verifiedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "validUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "enum": [
              "AVnester"
            ]
          },
          "imageThumbnailUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "rank": {
            "type": "integer"
          },
          "priceRank": {
            "type": "integer"
          },
          "areaRank": {
            "type": "integer"
          },
          "valueRank": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "listingId",
          "title",
          "summary",
          "city",
          "locality",
          "bhk",
          "bathrooms",
          "carpetAreaSqft",
          "price",
          "priceUnit",
          "listingType",
          "furnishingStatus",
          "parkingCount",
          "floorNumber",
          "totalFloors",
          "ageInYears",
          "availableFrom",
          "reraId",
          "pricePerSqft",
          "verified",
          "featured",
          "verification",
          "plotDetails",
          "verifiedAt",
          "validUntil",
          "sourceUrl",
          "attribution",
          "imageThumbnailUrl"
        ]
      }
    },
    "sortBy": {
      "type": "string"
    },
    "supported": {
      "type": "boolean"
    },
    "supportedCities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scopeMessage": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "handoffUrl": {
      "type": "string",
      "format": "uri"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "total",
    "listings",
    "supported",
    "attribution",
    "handoffUrl",
    "disclaimer"
  ],
  "additionalProperties": true
}
🟢get_locality_insights(locality, city)

Get aggregated insights for a Coimbatore or Chennai locality: avg price, supply count, demand pulse, livability/investment grade, highlights, watchouts, monthly priceTrends, and strengthTags. Use when the user asks "what is X locality like" about a neighborhood in either city. Out-of-scope cities return supported=false; surface the scopeMessage to the user. Always surface the disclaimer field when returning livability or investment grade.

입력 스키마

{
  "type": "object",
  "properties": {
    "locality": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Locality name within an Indian city."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Indian city (required)."
    }
  },
  "required": [
    "locality",
    "city"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "locality": {
      "type": "string"
    },
    "supported": {
      "type": "boolean"
    },
    "supportedCities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scopeMessage": {
      "type": "string"
    },
    "insights": {
      "type": "object",
      "properties": {
        "avgPriceInr": {
          "type": [
            "number",
            "null"
          ]
        },
        "pricePerSqftInr": {
          "type": [
            "number",
            "null"
          ]
        },
        "rent2bhkInr": {
          "type": [
            "number",
            "null"
          ]
        },
        "rentalYieldPct": {
          "type": [
            "number",
            "null"
          ]
        },
        "priceGrowth1YPct": {
          "type": [
            "number",
            "null"
          ]
        },
        "supplyCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "demandPulse": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "low",
            "medium",
            "high"
          ]
        },
        "livabilityScore": {
          "type": [
            "number",
            "null"
          ]
        },
        "livabilityScoreBasis": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "editorial-estimate"
          ]
        },
        "investmentGrade": {
          "type": [
            "string",
            "null"
          ]
        },
        "highlights": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "watchouts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "priceTrends": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "period": {
                "type": "string"
              },
              "avgPriceInr": {
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "additionalProperties": true,
            "required": [
              "period",
              "avgPriceInr"
            ]
          }
        },
        "strengthTags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true,
      "required": [
        "avgPriceInr",
        "pricePerSqftInr",
        "rent2bhkInr",
        "rentalYieldPct",
        "priceGrowth1YPct",
        "supplyCount",
        "demandPulse",
        "livabilityScore",
        "livabilityScoreBasis",
        "investmentGrade",
        "highlights",
        "watchouts",
        "priceTrends",
        "strengthTags"
      ]
    },
    "freshness": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "sourceCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "confidence": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "high",
            "medium",
            "low"
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "updatedAt",
        "sourceCount",
        "confidence"
      ]
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "handoffUrl": {
      "type": "string",
      "format": "uri"
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "city",
    "locality",
    "supported",
    "insights",
    "freshness",
    "attribution",
    "handoffUrl",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢compare_localities(city, localities, propertyType)

Compare 2–3 Coimbatore or Chennai localities side-by-side: price trends, livability, investment grade, strengths, and watchouts. Use when the user asks "X vs Y" or "which is better between X and Y for buying/renting" about neighborhoods in these cities. Out-of-scope cities return supported=false; surface the scopeMessage to the user. For comparing specific LISTINGS by ID, use compare_properties instead.

입력 스키마

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Indian city covering all compared localities."
    },
    "localities": {
      "minItems": 2,
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80,
        "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$"
      },
      "description": "2–3 localities to compare (array, not comma-separated string)."
    },
    "propertyType": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "plot",
        "independent_house"
      ],
      "description": "Property type for comparison."
    }
  },
  "required": [
    "city",
    "localities"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string"
    },
    "localities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "supported": {
      "type": "boolean"
    },
    "supportedCities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scopeMessage": {
      "type": "string"
    },
    "comparison": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "priceTrends": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "period": {
                  "type": "string"
                },
                "avgPriceInr": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "additionalProperties": true,
              "required": [
                "period",
                "avgPriceInr"
              ]
            }
          },
          "pricePerSqftInr": {
            "type": [
              "number",
              "null"
            ]
          },
          "rent2bhkInr": {
            "type": [
              "number",
              "null"
            ]
          },
          "rentalYieldPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "priceGrowth1YPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "asOfMonth": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "confidence": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "high",
              "medium",
              "low"
            ]
          },
          "livabilityScore": {
            "type": [
              "number",
              "null"
            ]
          },
          "livabilityScoreBasis": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "editorial-estimate"
            ]
          },
          "investmentGrade": {
            "type": [
              "string",
              "null"
            ]
          },
          "strengthTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "watchouts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": true,
        "required": [
          "priceTrends",
          "pricePerSqftInr",
          "rent2bhkInr",
          "rentalYieldPct",
          "priceGrowth1YPct",
          "asOfMonth",
          "sourceCount",
          "confidence",
          "livabilityScore",
          "livabilityScoreBasis",
          "investmentGrade",
          "strengthTags",
          "watchouts",
          "highlights"
        ]
      }
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "handoffUrl": {
      "type": "string",
      "format": "uri"
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "city",
    "localities",
    "supported",
    "comparison",
    "attribution",
    "handoffUrl",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢calculate_home_affordability(propertyValue, loanAmount, interestRatePercent, tenureYears)

Estimate the monthly home-loan EMI / monthly payment in India — a home-loan calculator. Deterministic math; not advice or a loan-approval claim. Two modes: pass propertyValue (80% LTV assumed) OR loanAmount for a specific loan (e.g. "₹50 lakh loan"). Use for "what would my EMI be" / "monthly payment on …". The response `assumptionNote` states the basis in plain words. Always surface the disclaimer field.

입력 스키마

{
  "type": "object",
  "properties": {
    "propertyValue": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Property value (price) in INR. When the user states a property/home price, put it here — an 80% loan is assumed unless loanAmount is also given."
    },
    "loanAmount": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Loan amount in INR. Pass this when the user states a specific loan (e.g. \"₹50 lakh loan\") rather than a property price. Defaults to 80% of propertyValue if omitted."
    },
    "interestRatePercent": {
      "type": "number",
      "minimum": 1,
      "maximum": 30,
      "description": "Annual interest rate (percent). Defaults to current market estimate."
    },
    "tenureYears": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "description": "Loan tenure in years. Defaults to 20."
    }
  },
  "required": [
    "propertyValue"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "inputPropertyValue": {
      "type": "integer"
    },
    "loanAmount": {
      "type": "integer"
    },
    "interestRatePercent": {
      "type": "number"
    },
    "tenureYears": {
      "type": "integer"
    },
    "emi": {
      "type": "integer"
    },
    "totalInterest": {
      "type": "integer"
    },
    "totalPayment": {
      "type": "integer"
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "defaultLtvPercent": {
          "type": "number"
        },
        "actualLtvPercent": {
          "type": "number"
        },
        "downPaymentAmount": {
          "type": "integer"
        },
        "lenderMaxLoan": {
          "type": "integer"
        },
        "unfundedAmount": {
          "type": "integer"
        },
        "interestType": {
          "enum": [
            "reducing-balance"
          ]
        },
        "notALoanApproval": {
          "enum": [
            true
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "defaultLtvPercent",
        "actualLtvPercent",
        "downPaymentAmount",
        "lenderMaxLoan",
        "unfundedAmount",
        "interestType",
        "notALoanApproval"
      ]
    },
    "assumptionNote": {
      "type": "string"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "inputPropertyValue",
    "loanAmount",
    "interestRatePercent",
    "tenureYears",
    "emi",
    "totalInterest",
    "totalPayment",
    "assumptions",
    "assumptionNote",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢simulate_loan_prepayment(outstandingPrincipal, remainingTenureYears, annualRatePercent, prepaymentAmount, recurringAnnualAmount, ...)

Simulate prepaying / repaying an Indian home loan early. Pure deterministic math — no advice, no loan-approval claim. Use for "should I prepay", "early/part/lump-sum repayment", "pay extra each month", "reduce EMI or tenure", "interest saved", or foreclosure. Modes: one-time, recurring yearly, or a fixed extra every month (recurring_monthly). Compares reduce_tenure (keep EMI, finish early) vs reduce_emi (keep tenure, lower EMI). Always surface the disclaimer field.

입력 스키마

{
  "type": "object",
  "properties": {
    "outstandingPrincipal": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Current outstanding home-loan principal in INR."
    },
    "remainingTenureYears": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "description": "Years left on the loan at the current EMI."
    },
    "annualRatePercent": {
      "type": "number",
      "minimum": 1,
      "maximum": 30,
      "description": "Current annual interest rate (percent). Defaults to the indicative market rate when omitted."
    },
    "prepaymentAmount": {
      "default": 0,
      "description": "One-time lump-sum prepayment in INR (one_time / one_time_plus_recurring* modes).",
      "type": "integer",
      "minimum": 0
    },
    "recurringAnnualAmount": {
      "default": 0,
      "description": "Recurring yearly prepayment in INR (recurring_annual / one_time_plus_recurring modes).",
      "type": "integer",
      "minimum": 0
    },
    "recurringMonthlyAmount": {
      "default": 0,
      "description": "Fixed extra paid toward principal EVERY month on top of the EMI (recurring_monthly / one_time_plus_recurring_monthly modes).",
      "type": "integer",
      "minimum": 0
    },
    "prepaymentMode": {
      "default": "one_time",
      "description": "How the prepayment is made (annual anniversary vs every month).",
      "type": "string",
      "enum": [
        "one_time",
        "recurring_annual",
        "recurring_monthly",
        "one_time_plus_recurring",
        "one_time_plus_recurring_monthly"
      ]
    },
    "strategy": {
      "default": "compare_both",
      "description": "reduce_tenure keeps the EMI and finishes early (bigger saving); reduce_emi keeps the tenure and lowers the EMI; compare_both returns both.",
      "type": "string",
      "enum": [
        "reduce_tenure",
        "reduce_emi",
        "compare_both"
      ]
    }
  },
  "required": [
    "outstandingPrincipal",
    "remainingTenureYears"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "outstandingPrincipal": {
      "type": "integer"
    },
    "annualRatePercent": {
      "type": "number"
    },
    "remainingTenureYears": {
      "type": "integer"
    },
    "prepaymentMode": {
      "type": "string",
      "enum": [
        "one_time",
        "recurring_annual",
        "recurring_monthly",
        "one_time_plus_recurring",
        "one_time_plus_recurring_monthly"
      ]
    },
    "strategy": {
      "type": "string",
      "enum": [
        "reduce_tenure",
        "reduce_emi",
        "compare_both"
      ]
    },
    "applied": {
      "type": "object",
      "properties": {
        "oneTime": {
          "type": "integer"
        },
        "recurringAnnual": {
          "type": "integer"
        },
        "recurringMonthly": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "oneTime",
        "recurringAnnual",
        "recurringMonthly"
      ]
    },
    "baseline": {
      "type": "object",
      "properties": {
        "emi": {
          "type": "integer"
        },
        "payoffMonths": {
          "type": "integer"
        },
        "totalInterest": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "emi",
        "payoffMonths",
        "totalInterest"
      ]
    },
    "reduceTenure": {
      "type": "object",
      "properties": {
        "emi": {
          "type": "integer"
        },
        "payoffMonths": {
          "type": "integer"
        },
        "totalInterest": {
          "type": "integer"
        },
        "interestSaved": {
          "type": "integer"
        },
        "monthsSaved": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "emi",
        "payoffMonths",
        "totalInterest",
        "interestSaved",
        "monthsSaved"
      ]
    },
    "reduceEmi": {
      "type": "object",
      "properties": {
        "emi": {
          "type": "integer"
        },
        "payoffMonths": {
          "type": "integer"
        },
        "totalInterest": {
          "type": "integer"
        },
        "interestSaved": {
          "type": "integer"
        },
        "monthsSaved": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "emi",
        "payoffMonths",
        "totalInterest",
        "interestSaved",
        "monthsSaved"
      ]
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "interestType": {
          "enum": [
            "reducing-balance"
          ]
        },
        "oneTimeAppliedImmediately": {
          "enum": [
            true
          ]
        },
        "recurringAppliedAnnually": {
          "enum": [
            true
          ]
        },
        "recurringMonthlyAppliedEachMonth": {
          "enum": [
            true
          ]
        },
        "floatingRatePrepaymentPenaltyWaived": {
          "enum": [
            true
          ]
        },
        "notALoanApproval": {
          "enum": [
            true
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "interestType",
        "oneTimeAppliedImmediately",
        "recurringAppliedAnnually",
        "recurringMonthlyAppliedEachMonth",
        "floatingRatePrepaymentPenaltyWaived",
        "notALoanApproval"
      ]
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "outstandingPrincipal",
    "annualRatePercent",
    "remainingTenureYears",
    "prepaymentMode",
    "strategy",
    "applied",
    "baseline",
    "assumptions",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢compare_balance_transfer(outstandingPrincipal, currentRatePercent, newRatePercent, remainingTenureYears, processingFeePct, ...)

Compare staying on your current home loan vs. transferring (refinancing) to a lower rate. Pure deterministic math — no advice, no loan-approval claim. Use when the user asks "should I switch lenders / transfer my loan / refinance". Returns new EMI, interest saved over the remaining tenure, switching cost, net saving, and the breakeven month. Always surface the disclaimer field.

입력 스키마

{
  "type": "object",
  "properties": {
    "outstandingPrincipal": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Current outstanding home-loan principal in INR."
    },
    "currentRatePercent": {
      "type": "number",
      "minimum": 1,
      "maximum": 30,
      "description": "Current annual interest rate (percent)."
    },
    "newRatePercent": {
      "type": "number",
      "minimum": 1,
      "maximum": 30,
      "description": "New lender annual interest rate (percent)."
    },
    "remainingTenureYears": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "description": "Years left on the loan."
    },
    "processingFeePct": {
      "type": "number",
      "minimum": 0,
      "maximum": 5,
      "description": "New-lender processing fee on the balance (percent). Defaults to 0.5%."
    },
    "flatCosts": {
      "type": "integer",
      "minimum": 0,
      "description": "Flat legal + valuation charges in INR. Defaults to ₹12,500."
    }
  },
  "required": [
    "outstandingPrincipal",
    "currentRatePercent",
    "newRatePercent",
    "remainingTenureYears"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "outstandingPrincipal": {
      "type": "integer"
    },
    "currentRatePercent": {
      "type": "number"
    },
    "newRatePercent": {
      "type": "number"
    },
    "remainingTenureYears": {
      "type": "integer"
    },
    "currentEmi": {
      "type": "integer"
    },
    "newEmi": {
      "type": "integer"
    },
    "monthlyEmiSaving": {
      "type": "integer"
    },
    "currentTotalInterest": {
      "type": "integer"
    },
    "newTotalInterest": {
      "type": "integer"
    },
    "grossInterestSaved": {
      "type": "integer"
    },
    "switchingCost": {
      "type": "integer"
    },
    "netSaving": {
      "type": "integer"
    },
    "breakevenMonths": {
      "type": [
        "integer",
        "null"
      ]
    },
    "worthIt": {
      "type": "boolean"
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "interestType": {
          "enum": [
            "reducing-balance"
          ]
        },
        "tenureHeldConstant": {
          "enum": [
            true
          ]
        },
        "floatingForeclosurePenaltyWaived": {
          "enum": [
            true
          ]
        },
        "notALoanApproval": {
          "enum": [
            true
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "interestType",
        "tenureHeldConstant",
        "floatingForeclosurePenaltyWaived",
        "notALoanApproval"
      ]
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "outstandingPrincipal",
    "currentRatePercent",
    "newRatePercent",
    "remainingTenureYears",
    "currentEmi",
    "newEmi",
    "monthlyEmiSaving",
    "currentTotalInterest",
    "newTotalInterest",
    "grossInterestSaved",
    "switchingCost",
    "netSaving",
    "breakevenMonths",
    "worthIt",
    "assumptions",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢optimize_home_loan_tax_regime(annualIncome, isSalaried, homeLoanInterest, homeLoanPrincipal, propertyType, ...)

Compare a home-loan borrower's income tax under the OLD vs NEW regime (FY2026-27) and recommend which regime saves more income tax. Pure deterministic slab math — not tax advice. Use when the user asks "old or new tax regime", "home-loan tax benefit", or "section 80C / 24(b) deduction". Models §24(b) interest + §80C principal (+ joint-loan doubling); the response lists benefits it does NOT model (capital gains, HRA, etc.). Always surface the disclaimer field.

입력 스키마

{
  "type": "object",
  "properties": {
    "annualIncome": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Annual gross income in INR EXCLUDING house property (salary + other income)."
    },
    "isSalaried": {
      "default": true,
      "description": "Whether the taxpayer is salaried (gets the standard deduction).",
      "type": "boolean"
    },
    "homeLoanInterest": {
      "type": "integer",
      "minimum": 0,
      "description": "Annual home-loan interest paid (INR)."
    },
    "homeLoanPrincipal": {
      "type": "integer",
      "minimum": 0,
      "description": "Annual home-loan principal repaid (INR) — counts toward 80C."
    },
    "propertyType": {
      "default": "self_occupied",
      "description": "Whether the property is self-occupied or let out.",
      "type": "string",
      "enum": [
        "self_occupied",
        "let_out"
      ]
    },
    "annualRent": {
      "type": "integer",
      "minimum": 0,
      "description": "Annual rent received in INR — required for let_out."
    },
    "other80C": {
      "type": "integer",
      "minimum": 0,
      "description": "Other 80C investments in INR (PF, ELSS, insurance, etc.)."
    },
    "otherOldRegimeDeductions": {
      "type": "integer",
      "minimum": 0,
      "description": "Other OLD-regime-only deductions as a lump (HRA exemption, 80D, NPS 80CCD(1B), etc.)."
    },
    "jointLoan": {
      "default": false,
      "description": "Joint loan with a co-borrower — doubles the 80C/24b caps (equal-split assumption).",
      "type": "boolean"
    },
    "ageBand": {
      "description": "Taxpayer age band — raises the OLD-regime basic exemption (senior 60–80 → ₹3L, super-senior 80+ → ₹5L). New regime unaffected. Defaults to below60.",
      "type": "string",
      "enum": [
        "below60",
        "senior",
        "super_senior"
      ]
    },
    "residencyStatus": {
      "description": "Default resident. Pass nri to get §195 TDS + LRS-cap math in the response.",
      "type": "string",
      "enum": [
        "resident",
        "nri"
      ]
    },
    "countryOfResidence": {
      "description": "NRI only — DTAA article lookup hint. Free-form country name.",
      "type": "string",
      "maxLength": 50
    },
    "saleValue": {
      "description": "NRI only — sale consideration in INR for §195 TDS computation.",
      "type": "integer",
      "minimum": 0
    },
    "holdingMonths": {
      "description": "NRI only — holding period in months. ≤24 is STCG; >24 is LTCG.",
      "type": "integer",
      "minimum": 0
    },
    "indexedCost": {
      "description": "NRI only — indexed cost of acquisition (LTCG). When omitted, TDS computed on full sale value.",
      "type": "integer",
      "minimum": 0
    },
    "nroBalanceUsd": {
      "description": "NRI only — NRO account balance in USD equivalent for the repatriation cap math.",
      "type": "number",
      "minimum": 0
    },
    "ytdRemittedUsd": {
      "description": "NRI only — FY-to-date USD already remitted under the $1M cap.",
      "type": "number",
      "minimum": 0
    },
    "hasForm15CB": {
      "description": "NRI only — whether Form 15CB CA-attestation is already in hand.",
      "type": "boolean"
    }
  },
  "required": [
    "annualIncome",
    "homeLoanInterest",
    "homeLoanPrincipal"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "annualIncome": {
      "type": "integer"
    },
    "propertyType": {
      "type": "string",
      "enum": [
        "self_occupied",
        "let_out"
      ]
    },
    "jointLoan": {
      "type": "boolean"
    },
    "old": {
      "type": "object",
      "properties": {
        "taxableIncome": {
          "type": "integer"
        },
        "totalTax": {
          "type": "integer"
        },
        "deductionsApplied": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "taxableIncome",
        "totalTax",
        "deductionsApplied"
      ]
    },
    "new": {
      "type": "object",
      "properties": {
        "taxableIncome": {
          "type": "integer"
        },
        "totalTax": {
          "type": "integer"
        },
        "deductionsApplied": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "taxableIncome",
        "totalTax",
        "deductionsApplied"
      ]
    },
    "recommended": {
      "type": "string",
      "enum": [
        "old",
        "new"
      ]
    },
    "annualSaving": {
      "type": "integer"
    },
    "homeLoanTaxBenefitOld": {
      "type": "integer"
    },
    "notModeled": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "regimeYear": {
          "enum": [
            "FY2026-27"
          ]
        },
        "surchargeNotModeled": {
          "enum": [
            true
          ]
        },
        "section80EEAExcluded": {
          "enum": [
            true
          ]
        },
        "notTaxAdvice": {
          "enum": [
            true
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "regimeYear",
        "surchargeNotModeled",
        "section80EEAExcluded",
        "notTaxAdvice"
      ]
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "residencyStatus": {
      "enum": [
        "nri"
      ]
    },
    "nri": {
      "type": "object",
      "properties": {
        "countryOfResidence": {
          "type": "string"
        },
        "dtaaNote": {
          "type": "string"
        },
        "tds": {
          "type": "object",
          "properties": {
            "section195Rate": {
              "type": "number"
            },
            "tdsAmount": {
              "type": "number"
            },
            "ltcgTax": {
              "type": "number"
            },
            "stcgTax": {
              "type": "number"
            },
            "form13EligibilityHint": {
              "type": "boolean"
            },
            "notModeled": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "disclaimer": {
              "type": "string"
            }
          },
          "additionalProperties": true,
          "required": [
            "section195Rate",
            "tdsAmount",
            "ltcgTax",
            "stcgTax",
            "form13EligibilityHint",
            "notModeled",
            "disclaimer"
          ]
        },
        "repatriation": {
          "type": "object",
          "properties": {
            "availableUsd": {
              "type": "number"
            },
            "capUsd": {
              "type": "number"
            },
            "requiresCA": {
              "type": "boolean"
            },
            "notModeled": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "disclaimer": {
              "type": "string"
            }
          },
          "additionalProperties": true,
          "required": [
            "availableUsd",
            "capUsd",
            "requiresCA",
            "notModeled",
            "disclaimer"
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "countryOfResidence",
        "dtaaNote"
      ]
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "annualIncome",
    "propertyType",
    "jointLoan",
    "old",
    "new",
    "recommended",
    "annualSaving",
    "homeLoanTaxBenefitOld",
    "notModeled",
    "assumptions",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢estimate_stamp_duty_and_registration(propertyValue, state, city, localBody, firstSale, ...)

Estimate Indian state stamp duty + registration charges on a property purchase. Supports all 28 states + 8 UTs with buyer-gender concessions, urban/rural overrides, and commercial/agricultural multipliers. Pass constructionStatus to also itemize GST (under-construction 1%/5%, ready/resale 0%) for an all-in statutory quote. Returns supported=false for states outside India (supported set named in rateBasis). Not legal/tax advice. Always surface the disclaimer.

입력 스키마

{
  "type": "object",
  "properties": {
    "propertyValue": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000000000,
      "description": "Sale value in INR for stamp-duty calculation."
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      "description": "Indian state — ISO code (\"MH\"), slug (\"maharashtra\") or name (\"Maharashtra\"). Required."
    },
    "city": {
      "description": "City or town, e.g. \"Pune\". Decides the rate where the state prices by location (MH, KA, WB, MP, HR): Pune 7%, Mumbai 6%. Send the place as the buyer names it (\"Kharghar\"), not the wider city it is listed under.",
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$"
    },
    "localBody": {
      "description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said).",
      "type": "string",
      "enum": [
        "municipal_corporation",
        "municipal_council",
        "gram_panchayat"
      ]
    },
    "firstSale": {
      "description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. Absent: constructionStatus under_construction ⇒ true, resale ⇒ false, ready_to_move decides nothing (may be a resale).",
      "type": "boolean"
    },
    "isWomanBuyer": {
      "default": false,
      "description": "Backward-compatibility shim — prefer buyerGender. When true, internally treated as buyerGender=\"female\".",
      "type": "boolean"
    },
    "buyerGender": {
      "description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession. Overrides isWomanBuyer.",
      "type": "string",
      "enum": [
        "male",
        "female",
        "joint"
      ]
    },
    "propertyType": {
      "description": "residential (default), plot (bare land; a residential-only concession does not reach it), commercial or agricultural.",
      "type": "string",
      "enum": [
        "residential",
        "commercial",
        "agricultural",
        "plot"
      ]
    },
    "isUrban": {
      "description": "Urban (default) or rural. Used for the location when city and localBody are absent.",
      "type": "boolean"
    },
    "constructionStatus": {
      "description": "When set, also itemizes GST: under-construction = 1% (affordable) / 5%; ready/resale = 0%. Omit → GST not computed.",
      "type": "string",
      "enum": [
        "under_construction",
        "ready_to_move",
        "resale"
      ]
    },
    "carpetAreaSqft": {
      "description": "Carpet area (sqft) — with value, decides the affordable-housing 1% GST slab.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "propertyValue",
    "state"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "propertyValue": {
      "type": "integer"
    },
    "state": {
      "type": "string"
    },
    "supported": {
      "type": "boolean"
    },
    "stateCode": {
      "type": [
        "string",
        "null"
      ]
    },
    "stateName": {
      "type": [
        "string",
        "null"
      ]
    },
    "stampDuty": {
      "type": "integer"
    },
    "stampDutyBase": {
      "type": "integer"
    },
    "surcharges": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "ratePct": {
            "type": "number"
          },
          "amount": {
            "type": "integer"
          },
          "legalBasis": {
            "type": "string"
          }
        },
        "additionalProperties": true,
        "required": [
          "name",
          "ratePct",
          "amount"
        ]
      }
    },
    "registrationFee": {
      "type": "integer"
    },
    "registrationCapApplied": {
      "type": "boolean"
    },
    "total": {
      "type": "integer"
    },
    "rateBasis": {
      "type": "string"
    },
    "location": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "place": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "area": {
              "type": "string"
            }
          },
          "additionalProperties": true,
          "required": [
            "slug",
            "name"
          ]
        },
        "localBody": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "municipal_corporation",
            "municipal_council",
            "gram_panchayat"
          ]
        },
        "source": {
          "type": "string",
          "enum": [
            "local_body",
            "city",
            "is_urban",
            "default",
            "not_applicable"
          ]
        },
        "assumed": {
          "type": "boolean"
        }
      },
      "additionalProperties": true,
      "required": [
        "place",
        "localBody",
        "source",
        "assumed"
      ]
    },
    "rateVerification": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "verified",
            "partial",
            "unverified"
          ]
        },
        "lastVerifiedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "sourceUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "unverifiedComponents": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true,
      "required": [
        "status",
        "lastVerifiedAt",
        "sourceUrl",
        "unverifiedComponents"
      ]
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": true,
        "required": [
          "code",
          "message"
        ]
      }
    },
    "rulesVersion": {
      "type": [
        "string",
        "null"
      ]
    },
    "rateEffectiveDate": {
      "type": [
        "string",
        "null"
      ]
    },
    "gst": {
      "type": "object",
      "properties": {
        "ratePct": {
          "type": "number"
        },
        "amount": {
          "type": "integer"
        },
        "applies": {
          "type": "boolean"
        },
        "isAffordable": {
          "type": "boolean"
        },
        "itcAvailableToBuyer": {
          "enum": [
            false
          ]
        },
        "basis": {
          "type": "string"
        }
      },
      "additionalProperties": true,
      "required": [
        "ratePct",
        "amount",
        "applies",
        "isAffordable",
        "itcAvailableToBuyer",
        "basis"
      ]
    },
    "totalWithGst": {
      "type": "integer"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "propertyValue",
    "state",
    "supported",
    "stateCode",
    "stateName",
    "stampDuty",
    "stampDutyBase",
    "surcharges",
    "registrationFee",
    "registrationCapApplied",
    "total",
    "rateBasis",
    "location",
    "rateVerification",
    "assumptions",
    "rulesVersion",
    "rateEffectiveDate",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢get_property_details(listingId)

Fetch full public details for one AVnester listing by its listingId. Get the listingId from search_properties results first (the `listingId` field) — IDs are not guessable, so this tool is the natural follow-up to a search. AVnester's catalog covers Coimbatore and Chennai; unknown or unpublished IDs return { listing: null, notFound: true } (never throws, to avoid leaking existence). Use when the user references a specific listing. Read-only, no side effects.

입력 스키마

{
  "type": "object",
  "properties": {
    "listingId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "AVnester listingId, as returned in search_properties results (the `listingId` field). IDs are not guessable — call search_properties first. Also the trailing segment of a listing sourceUrl."
    }
  },
  "required": [
    "listingId"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "listing": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "listingId": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "locality": {
          "type": "string"
        },
        "bhk": {
          "type": [
            "integer",
            "null"
          ]
        },
        "bathrooms": {
          "type": [
            "integer",
            "null"
          ]
        },
        "carpetAreaSqft": {
          "type": [
            "number",
            "null"
          ]
        },
        "price": {
          "type": "integer"
        },
        "priceUnit": {
          "enum": [
            "INR"
          ]
        },
        "listingType": {
          "type": "string",
          "enum": [
            "sale",
            "rent"
          ]
        },
        "rentalStructure": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "monthly",
            "lease"
          ]
        },
        "leaseAmount": {
          "type": [
            "number",
            "null"
          ]
        },
        "leaseTenureMonths": {
          "type": [
            "integer",
            "null"
          ]
        },
        "leaseRefundable": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "furnishingStatus": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "furnished",
            "semi-furnished",
            "unfurnished"
          ]
        },
        "parkingCount": {
          "type": [
            "integer",
            "null"
          ]
        },
        "floorNumber": {
          "type": [
            "integer",
            "null"
          ]
        },
        "totalFloors": {
          "type": [
            "integer",
            "null"
          ]
        },
        "ageInYears": {
          "type": [
            "integer",
            "null"
          ]
        },
        "availableFrom": {
          "type": [
            "string",
            "null"
          ]
        },
        "reraId": {
          "type": [
            "string",
            "null"
          ]
        },
        "pricePerSqft": {
          "type": [
            "integer",
            "null"
          ]
        },
        "verified": {
          "type": "boolean"
        },
        "featured": {
          "type": "boolean"
        },
        "verification": {
          "type": "object",
          "properties": {
            "documentVerified": {
              "type": "boolean"
            },
            "tier": {
              "type": [
                "string",
                "null"
              ]
            },
            "locationVerified": {
              "type": "boolean"
            },
            "locationConfidence": {
              "type": [
                "integer",
                "null"
              ]
            },
            "lastVerifiedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "method": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": true,
          "required": [
            "documentVerified",
            "tier",
            "locationVerified",
            "locationConfidence",
            "lastVerifiedAt",
            "method"
          ]
        },
        "plotDetails": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "dtcpApproved": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "dtcpNumber": {
              "type": [
                "string",
                "null"
              ]
            },
            "landClassification": {
              "type": [
                "string",
                "null"
              ]
            },
            "facing": {
              "type": [
                "string",
                "null"
              ]
            },
            "roadWidthFt": {
              "type": [
                "number",
                "null"
              ]
            },
            "gatedCommunity": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "waterAvailability": {
              "type": [
                "string",
                "null"
              ]
            },
            "electricity": {
              "type": [
                "string",
                "null"
              ]
            },
            "ownershipType": {
              "type": [
                "string",
                "null"
              ]
            },
            "plotNumber": {
              "type": [
                "string",
                "null"
              ]
            },
            "pincode": {
              "type": [
                "string",
                "null"
              ]
            },
            "pattaChittaStatus": {
              "type": [
                "string",
                "null"
              ]
            },
            "encumbranceStatus": {
              "type": [
                "string",
                "null"
              ]
            },
            "guidelineValueInr": {
              "type": [
                "integer",
                "null"
              ]
            },
            "plotLengthFt": {
              "type": [
                "number",
                "null"
              ]
            },
            "plotBreadthFt": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": true,
          "required": [
            "dtcpApproved",
            "dtcpNumber",
            "landClassification",
            "facing",
            "roadWidthFt",
            "gatedCommunity",
            "waterAvailability",
            "electricity",
            "ownershipType",
            "plotNumber",
            "pincode",
            "pattaChittaStatus",
            "encumbranceStatus",
            "guidelineValueInr",
            "plotLengthFt",
            "plotBreadthFt"
          ]
        },
        "verifiedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "validUntil": {
          "type": [
            "string",
            "null"
          ]
        },
        "sourceUrl": {
          "type": "string",
          "format": "uri"
        },
        "attribution": {
          "enum": [
            "AVnester"
          ]
        },
        "imageThumbnailUrl": {
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        }
      },
      "additionalProperties": true,
      "required": [
        "listingId",
        "title",
        "summary",
        "city",
        "locality",
        "bhk",
        "bathrooms",
        "carpetAreaSqft",
        "price",
        "priceUnit",
        "listingType",
        "furnishingStatus",
        "parkingCount",
        "floorNumber",
        "totalFloors",
        "ageInYears",
        "availableFrom",
        "reraId",
        "pricePerSqft",
        "verified",
        "featured",
        "verification",
        "plotDetails",
        "verifiedAt",
        "validUntil",
        "sourceUrl",
        "attribution",
        "imageThumbnailUrl"
      ]
    },
    "notFound": {
      "type": "boolean"
    },
    "message": {
      "type": "string"
    },
    "handoffUrl": {
      "type": "string",
      "format": "uri"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    },
    "trust": {
      "type": "object",
      "properties": {
        "score": {
          "type": "integer"
        },
        "grade": {
          "type": "string"
        }
      },
      "additionalProperties": true,
      "required": [
        "score",
        "grade"
      ]
    }
  },
  "required": [
    "listing",
    "notFound",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢compare_properties(listingIds)

Compare 2–5 AVnester listings by listingId, side-by-side. Get IDs from search_properties first (not guessable). If the user has more than 5 candidates ("compare all"), pick the most relevant 5 (cheapest / largest / best price-per-sqft) and say so. Returns each listing plus pricePerSqft, vsCheapestPercent (0 = cheapest), vsLargestAreaPercent (0 = largest). Covers Coimbatore and Chennai; unknown IDs return not_found_or_unpublished. Does NOT recommend a purchase. Always surface the disclaimer.

입력 스키마

{
  "type": "object",
  "properties": {
    "listingIds": {
      "minItems": 2,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "description": "2–5 AVnester listingIds (from search_properties results) to compare. IDs are not guessable — call search_properties first. Order is preserved in the output."
    }
  },
  "required": [
    "listingIds"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string"
    },
    "comparison": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string"
          },
          "listing": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "listingId": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "locality": {
                "type": "string"
              },
              "bhk": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bathrooms": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "carpetAreaSqft": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "price": {
                "type": "integer"
              },
              "priceUnit": {
                "enum": [
                  "INR"
                ]
              },
              "listingType": {
                "type": "string",
                "enum": [
                  "sale",
                  "rent"
                ]
              },
              "rentalStructure": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "monthly",
                  "lease"
                ]
              },
              "leaseAmount": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "leaseTenureMonths": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "leaseRefundable": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "furnishingStatus": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "furnished",
                  "semi-furnished",
                  "unfurnished"
                ]
              },
              "parkingCount": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "floorNumber": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "totalFloors": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ageInYears": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "availableFrom": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reraId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "pricePerSqft": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "verified": {
                "type": "boolean"
              },
              "featured": {
                "type": "boolean"
              },
              "verification": {
                "type": "object",
                "properties": {
                  "documentVerified": {
                    "type": "boolean"
                  },
                  "tier": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "locationVerified": {
                    "type": "boolean"
                  },
                  "locationConfidence": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "lastVerifiedAt": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "method": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": true,
                "required": [
                  "documentVerified",
                  "tier",
                  "locationVerified",
                  "locationConfidence",
                  "lastVerifiedAt",
                  "method"
                ]
              },
              "plotDetails": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "dtcpApproved": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "dtcpNumber": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "landClassification": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "facing": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "roadWidthFt": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "gatedCommunity": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "waterAvailability": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "electricity": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "ownershipType": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "plotNumber": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "pincode": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "pattaChittaStatus": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "encumbranceStatus": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "guidelineValueInr": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "plotLengthFt": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "plotBreadthFt": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "additionalProperties": true,
                "required": [
                  "dtcpApproved",
                  "dtcpNumber",
                  "landClassification",
                  "facing",
                  "roadWidthFt",
                  "gatedCommunity",
                  "waterAvailability",
                  "electricity",
                  "ownershipType",
                  "plotNumber",
                  "pincode",
                  "pattaChittaStatus",
                  "encumbranceStatus",
                  "guidelineValueInr",
                  "plotLengthFt",
                  "plotBreadthFt"
                ]
              },
              "verifiedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "validUntil": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "sourceUrl": {
                "type": "string",
                "format": "uri"
              },
              "attribution": {
                "enum": [
                  "AVnester"
                ]
              },
              "imageThumbnailUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              }
            },
            "additionalProperties": true,
            "required": [
              "listingId",
              "title",
              "summary",
              "city",
              "locality",
              "bhk",
              "bathrooms",
              "carpetAreaSqft",
              "price",
              "priceUnit",
              "listingType",
              "furnishingStatus",
              "parkingCount",
              "floorNumber",
              "totalFloors",
              "ageInYears",
              "availableFrom",
              "reraId",
              "pricePerSqft",
              "verified",
              "featured",
              "verification",
              "plotDetails",
              "verifiedAt",
              "validUntil",
              "sourceUrl",
              "attribution",
              "imageThumbnailUrl"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "found",
              "not_found_or_unpublished"
            ]
          },
          "metrics": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "pricePerSqft": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "vsCheapestPercent": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "vsLargestAreaPercent": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "additionalProperties": true,
            "required": [
              "pricePerSqft",
              "vsCheapestPercent",
              "vsLargestAreaPercent"
            ]
          }
        },
        "additionalProperties": true,
        "required": [
          "listingId",
          "listing",
          "status",
          "metrics"
        ]
      }
    },
    "framing": {
      "type": "string"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    }
  },
  "required": [
    "comparison",
    "framing",
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}
🟢get_property_decision_intelligence(listingId, propertyValue, state, city, firstSale, ...)

Assess whether a buyer can afford a specific Indian home — ONE verdict (AFFORDABLE / STRETCH / NOT_YET / INELIGIBLE) combining indicative eligibility (FOIR/LTV/CIBIL), EMI, true cash-to-close (down payment + stamp duty + registration + itemized GST), regime-aware tax, and an indicative lender-fit triage. Mode A: listingId (Coimbatore/Chennai catalog). Mode B: propertyValue + state (any Indian state). NOT a loan approval, offer, or advice. Always surface the disclaimer.

입력 스키마

{
  "type": "object",
  "properties": {
    "listingId": {
      "description": "AVnester listingId (Coimbatore/Chennai catalog). Listing mode — propertyValue, state and city are then ignored, with a warning.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "propertyValue": {
      "description": "Property price in INR (manual mode). Pass with state (and city where it matters).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000000000
    },
    "state": {
      "description": "Indian state (ISO \"MH\"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$"
    },
    "city": {
      "description": "City (manual mode), e.g. \"Pune\" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.",
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$"
    },
    "firstSale": {
      "description": "True for the FIRST sale of a flat, from the builder (not the buyer's first home); false for a resale. Changes the duty only where a state has a first-sale rate (KA). Omit when unknown: a resale is priced, and said where it matters. If absent, isUnderConstruction true means true.",
      "type": "boolean"
    },
    "localBody": {
      "description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said). Manual mode only.",
      "type": "string",
      "enum": [
        "municipal_corporation",
        "municipal_council",
        "gram_panchayat"
      ]
    },
    "assetType": {
      "description": "\"home\" (flat/villa/house) or \"plot\" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.",
      "type": "string",
      "enum": [
        "home",
        "plot"
      ]
    },
    "monthlyNetIncome": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000000,
      "description": "Buyer monthly take-home income in INR."
    },
    "existingMonthlyEmis": {
      "description": "Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000
    },
    "coApplicantMonthlyIncome": {
      "description": "Co-applicant monthly income (joint affordability).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000
    },
    "savingsAvailable": {
      "description": "Liquid cash for down payment + charges — enables the cash-gap calc.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000000
    },
    "cibilScore": {
      "description": "Numeric CIBIL score. Omit → eligibility stays indicative.",
      "type": "integer",
      "minimum": 300,
      "maximum": 900
    },
    "employmentType": {
      "description": "Employment type (affects tax standard deduction).",
      "type": "string",
      "enum": [
        "salaried",
        "self_employed"
      ]
    },
    "residencyStatus": {
      "description": "Residency status.",
      "type": "string",
      "enum": [
        "resident",
        "nri"
      ]
    },
    "buyerGender": {
      "description": "\"female\" (a woman), \"joint\" (a man and a woman together) or \"male\" (default; two women: female). Changes the price only where a state gives women a concession.",
      "type": "string",
      "enum": [
        "male",
        "female",
        "joint"
      ]
    },
    "occupancyIntent": {
      "description": "Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.",
      "type": "string",
      "enum": [
        "self_occupied",
        "let_out"
      ]
    },
    "annualRent": {
      "description": "Annual rent received (let-out).",
      "type": "integer",
      "minimum": 0
    },
    "jointLoan": {
      "description": "Joint home loan — doubles 80C/24b caps (equal split).",
      "type": "boolean"
    },
    "isUnderConstruction": {
      "description": "Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).",
      "type": "boolean"
    },
    "carpetAreaSqft": {
      "description": "Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "isUrban": {
      "description": "Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.",
      "type": "boolean"
    },
    "interestRatePercent": {
      "description": "Override annual interest rate. Defaults to indicative market rate.",
      "type": "number",
      "minimum": 1,
      "maximum": 30
    },
    "tenureYears": {
      "description": "Loan tenure in years. Defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 40
    },
    "annualIncomeForTax": {
      "description": "Annual income for tax. Defaults to monthlyNetIncome × 12.",
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "monthlyNetIncome"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "listing",
        "manual"
      ]
    },
    "assetType": {
      "type": "string",
      "enum": [
        "home",
        "plot"
      ]
    },
    "notFound": {
      "type": "boolean"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "eligibility": {
      "type": "object",
      "properties": {
        "maxLoanByFoir": {
          "type": "integer"
        },
        "maxLoanByLtv": {
          "type": "integer"
        },
        "eligibleLoan": {
          "type": "integer"
        },
        "bound": {
          "type": "string",
          "enum": [
            "foir",
            "ltv"
          ]
        },
        "ltvPct": {
          "type": "number"
        },
        "foirAtEligibleLoanPct": {
          "type": "number"
        },
        "foirCeilingPct": {
          "type": "number"
        },
        "foirComfortPct": {
          "type": "number"
        },
        "cibilBand": {
          "type": [
            "string",
            "null"
          ]
        },
        "approvalLikelihood": {
          "type": "string",
          "enum": [
            "high",
            "medium",
            "low",
            "indicative"
          ]
        },
        "notALoanApproval": {
          "enum": [
            true
          ]
        },
        "notAnOffer": {
          "enum": [
            true
          ]
        },
        "reasoning": {
          "type": "string"
        }
      },
      "additionalProperties": true,
      "required": [
        "maxLoanByFoir",
        "maxLoanByLtv",
        "eligibleLoan",
        "bound",
        "ltvPct",
        "foirAtEligibleLoanPct",
        "foirCeilingPct",
        "foirComfortPct",
        "cibilBand",
        "approvalLikelihood",
        "notALoanApproval",
        "notAnOffer",
        "reasoning"
      ]
    },
    "emi": {
      "type": "object",
      "properties": {
        "loanAmount": {
          "type": "integer"
        },
        "interestRatePercent": {
          "type": "number"
        },
        "tenureYears": {
          "type": "integer"
        },
        "monthlyEmi": {
          "type": "integer"
        },
        "totalInterest": {
          "type": "integer"
        },
        "totalPayment": {
          "type": "integer"
        }
      },
      "additionalProperties": true,
      "required": [
        "loanAmount",
        "interestRatePercent",
        "tenureYears",
        "monthlyEmi",
        "totalInterest",
        "totalPayment"
      ]
    },
    "affordability": {
      "type": "object",
      "properties": {
        "propertyValue": {
          "type": "integer"
        },
        "downPayment": {
          "type": "integer"
        },
        "stampDutyAndRegistration": {
          "type": "integer"
        },
        "otherCharges": {
          "type": "integer"
        },
        "otherChargesBreakdown": {
          "type": "object",
          "properties": {
            "loanProcessingFee": {
              "type": "integer"
            },
            "legalFee": {
              "type": "integer"
            },
            "gstUnderConstruction": {
              "type": "integer"
            }
          },
          "additionalProperties": true,
          "required": [
            "loanProcessingFee",
            "legalFee",
            "gstUnderConstruction"
          ]
        },
        "gst": {
          "type": "object",
          "properties": {
            "ratePct": {
              "type": "number"
            },
            "amount": {
              "type": "integer"
            },
            "applies": {
              "type": "boolean"
            },
            "isAffordable": {
              "type": "boolean"
            },
            "itcAvailableToBuyer": {
              "enum": [
                false
              ]
            },
            "basis": {
              "type": "string"
            }
          },
          "additionalProperties": true,
          "required": [
            "ratePct",
            "amount",
            "applies",
            "isAffordable",
            "itcAvailableToBuyer",
            "basis"
          ]
        },
        "totalCashToClose": {
          "type": "integer"
        },
        "lifetimeCost": {
          "type": "integer"
        },
        "savingsAvailable": {
          "type": [
            "integer",
            "null"
          ]
        },
        "downPaymentGap": {
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "propertyValue",
        "downPayment",
        "stampDutyAndRegistration",
        "otherCharges",
        "otherChargesBreakdown",
        "gst",
        "totalCashToClose",
        "lifetimeCost",
        "savingsAvailable",
        "downPaymentGap"
      ]
    },
    "tax": {
      "type": "object",
      "properties": {
        "recommendedRegime": {
          "type": "string",
          "enum": [
            "old",
            "new"
          ]
        },
        "homeLoanTaxBenefitOld": {
          "type": "integer"
        },
        "netEffectiveAnnualBenefit": {
          "type": "integer"
        },
        "netEffectiveMonthlyEmi": {
          "type": "integer"
        },
        "notModeled": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true,
      "required": [
        "recommendedRegime",
        "homeLoanTaxBenefitOld",
        "netEffectiveAnnualBenefit",
        "netEffectiveMonthlyEmi",
        "notModeled"
      ]
    },
    "verdict": {
      "type": "object",
      "properties": {
        "signal": {
          "type": "string",
          "enum": [
            "AFFORDABLE",
            "STRETCH",
            "NOT_YET",
            "INELIGIBLE"
          ]
        },
        "headline": {
          "type": "string"
        },
        "blockingLever": {
          "type": [
            "string",
            "null"
          ]
        },
        "levers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "lever": {
                "type": "string"
              },
              "amountInr": {
                "type": "integer"
              },
              "effect": {
                "type": "string"
              }
            },
            "additionalProperties": true,
            "required": [
              "lever",
              "effect"
            ]
          }
        },
        "confidence": {
          "enum": [
            "indicative"
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "signal",
        "headline",
        "blockingLever",
        "levers",
        "confidence"
      ]
    },
    "lenderFit": {
      "type": "object",
      "properties": {
        "lenders": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "bank",
                  "hfc"
                ]
              },
              "indicativeRatePct": {
                "type": "number"
              },
              "eligible": {
                "type": "boolean"
              },
              "fitScore": {
                "type": "integer"
              },
              "fitReason": {
                "type": "string"
              }
            },
            "additionalProperties": true,
            "required": [
              "name",
              "kind",
              "indicativeRatePct",
              "eligible",
              "fitScore",
              "fitReason"
            ]
          }
        },
        "eligibleLenders": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cibilConsidered": {
          "type": "boolean"
        },
        "notAnOffer": {
          "enum": [
            true
          ]
        },
        "notALoanApproval": {
          "enum": [
            true
          ]
        },
        "summary": {
          "type": "string"
        },
        "disclaimer": {
          "type": "string"
        }
      },
      "additionalProperties": true,
      "required": [
        "lenders",
        "eligibleLenders",
        "cibilConsidered",
        "notAnOffer",
        "notALoanApproval",
        "summary",
        "disclaimer"
      ]
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "rateSource": {
          "type": "string"
        },
        "ltvBasis": {
          "type": "string"
        },
        "regimeYear": {
          "enum": [
            "FY2026-27"
          ]
        },
        "annualIncomeEstimated": {
          "type": "boolean"
        },
        "buyerGender": {
          "type": "string",
          "enum": [
            "male",
            "female",
            "joint"
          ]
        },
        "cibilProvided": {
          "type": "boolean"
        },
        "savingsProvided": {
          "type": "boolean"
        },
        "existingEmisProvided": {
          "type": "boolean"
        },
        "occupancyIntent": {
          "type": "string",
          "enum": [
            "self_occupied",
            "let_out"
          ]
        },
        "occupancyIntentProvided": {
          "type": "boolean"
        },
        "isUnderConstruction": {
          "type": "boolean"
        },
        "underConstructionProvided": {
          "type": "boolean"
        },
        "seniorCitizenNotModeled": {
          "enum": [
            true
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "rateSource",
        "ltvBasis",
        "regimeYear",
        "annualIncomeEstimated",
        "buyerGender",
        "cibilProvided",
        "savingsProvided",
        "existingEmisProvided",
        "occupancyIntent",
        "occupancyIntentProvided",
        "isUnderConstruction",
        "underConstructionProvided",
        "seniorCitizenNotModeled"
      ]
    },
    "stampDutySupported": {
      "type": "boolean"
    },
    "attribution": {
      "enum": [
        "AVnester"
      ]
    },
    "disclaimer": {
      "type": "string"
    },
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "priority": {
            "type": "integer"
          }
        },
        "additionalProperties": true,
        "required": [
          "template",
          "data",
          "priority"
        ]
      }
    },
    "trust": {
      "type": "object",
      "properties": {
        "score": {
          "type": "integer"
        },
        "grade": {
          "type": "string"
        }
      },
      "additionalProperties": true,
      "required": [
        "score",
        "grade"
      ]
    }
  },
  "required": [
    "attribution",
    "disclaimer",
    "cards"
  ],
  "additionalProperties": true
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 11개
검증됨버전이 기록되지 않음도구 11개