Skip to main content
Glama

AVnester — Indian Real Estate Intelligence

Home purchase decision intelligence

get_property_decision_intelligence
Read-onlyIdempotent

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoCity (manual mode), e.g. "Pune" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.
stateNoIndian state (ISO "MH"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode.
isUrbanNoUrban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead.
assetTypeNo"home" (flat/villa/house) or "plot" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.
firstSaleNoTrue 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.
jointLoanNoJoint home loan — doubles 80C/24b caps (equal split).
listingIdNoAn AVnester listingId. Listing mode — propertyValue, state and city are then ignored, with a warning.
localBodyNoWhere 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.
annualRentNoAnnual rent received (let-out).
cibilScoreNoNumeric CIBIL score. Omit → eligibility stays indicative.
buyerGenderNo"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.
tenureYearsNoLoan tenure in years. Defaults to 20.
propertyValueNoProperty price in INR (manual mode). Pass with state (and city where it matters).
carpetAreaSqftNoCarpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).
employmentTypeNoEmployment type (affects tax standard deduction).
occupancyIntentNoSelf-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied.
residencyStatusNoResidency status.
monthlyNetIncomeYesBuyer monthly take-home income in INR.
savingsAvailableNoLiquid cash for down payment + charges — enables the cash-gap calc.
annualIncomeForTaxNoAnnual income for tax. Defaults to monthlyNetIncome × 12.
existingMonthlyEmisNoExisting monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer.
interestRatePercentNoOverride annual interest rate. Defaults to indicative market rate.
isUnderConstructionNoUnder-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST).
coApplicantMonthlyIncomeNoCo-applicant monthly income (joint affordability).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
emiNo
taxNo
modeNo
cardsYes
trustNo
verdictNo
notFoundNo
warningsNo
assetTypeNo
lenderFitNo
disclaimerYes
assumptionsNo
attributionYes
eligibilityNo
affordabilityNo
stampDutySupportedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / listingId / description
      Previous value: -"AVnester listingId (Coimbatore/Chennai catalog). Listing mode — propertyValue, state and city are then ignored, with a warning."New value: +"An AVnester listingId. Listing mode — propertyValue, state and city are then ignored, with a warning."
    • addedOutput schema / properties / affordability / properties / otherChargesBreakdown / properties / technicalValuation
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / lenderFit / properties / source
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "effectiveDate": {
      +      "type": "string"
      +    },
      +    "lastVerifiedAt": {
      +      "type": "string"
      +    },
      +    "sourceUrl": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "effectiveDate",
      +    "sourceUrl",
      +    "lastVerifiedAt"
      +  ],
      +  "type": "object"
      +}
  2. Changed7 schema fields changed
    • changedInput schema / properties / buyerGender / description
      Previous value: -"Buyer gender — affects stamp duty in states with a women concession."New value: +"\"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."
    • addedInput schema / properties / city
      Added value: +{
      +  "description": "City (manual mode), e.g. \"Pune\" — decides Maharashtra stamp duty and the GST metro cap. Listing mode reads the listing.",
      +  "maxLength": 60,
      +  "minLength": 1,
      +  "pattern": "^[A-Za-z0-9 .,'’()\\-஀-௿ऀ-ॿ]+$",
      +  "type": "string"
      +}
    • addedInput schema / properties / firstSale
      Added value: +{
      +  "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"
      +}
    • changedInput schema / properties / isUrban / description
      Previous value: -"Urban/metro — gates metro-cess surcharges in stamp duty."New value: +"Urban (default) or rural, where the state prices by location (MH, KA, WB, MP, HR); localBody or a known city decides instead."
    • changedInput schema / properties / listingId / description
      Previous value: -"AVnester listingId (Coimbatore/Chennai catalog). Listing mode — do NOT also pass propertyValue (rejected) or state (ignored)."New value: +"AVnester listingId (Coimbatore/Chennai catalog). Listing mode — propertyValue, state and city are then ignored, with a warning."
    • addedInput schema / properties / localBody
      Added value: +{
      +  "description": "Where the property is, in a state that prices by it (MH, KA, WB, MP, HR): gram_panchayat (village), municipal_council (town) or municipal_corporation (city); overrides city. Omit when unknown (a corporation is priced, and said). Manual mode only.",
      +  "enum": [
      +    "municipal_corporation",
      +    "municipal_council",
      +    "gram_panchayat"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / propertyValue / description
      Previous value: -"Property price in INR (manual mode). Pass with state; not with listingId."New value: +"Property price in INR (manual mode). Pass with state (and city where it matters)."
  3. Changed1 schema field changed
    • changedInput schema / properties / listingId / description
      Previous value: -"AVnester listingId (Coimbatore catalog). Listing mode — do NOT also pass propertyValue (rejected) or state (ignored)."New value: +"AVnester listingId (Coimbatore/Chennai catalog). Listing mode — do NOT also pass propertyValue (rejected) or state (ignored)."
  4. Changed1 schema field changed
    • addedOutput schema / properties / trust
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "grade": {
      +      "type": "string"
      +    },
      +    "score": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "score",
      +    "grade"
      +  ],
      +  "type": "object"
      +}
  5. Changed13 schema fields changed
    • addedInput schema / properties / carpetAreaSqft
      Added value: +{
      +  "description": "Carpet area (sqft) — sharpens the affordable-housing GST test (with the ₹45L value cap).",
      +  "exclusiveMinimum": 0,
      +  "maximum": 100000,
      +  "type": "integer"
      +}
    • changedInput schema / properties / existingMonthlyEmis / description
      Previous value: -"Total existing monthly EMIs in INR."New value: +"Existing monthly loan EMIs in ₹ (car/personal/cards). Omitted → assumed ₹0, which can inflate eligibility and flip the verdict — ask the buyer."
    • changedInput schema / properties / isUnderConstruction / description
      Previous value: -"Under-construction → GST applies; ready-to-move → no GST."New value: +"Under-construction → GST applies; ready-to-move → no GST. Omitted → ready-to-move (no GST)."
    • changedInput schema / properties / occupancyIntent / description
      Previous value: -"Self-occupied vs let-out — changes §24(b) interest treatment."New value: +"Self-occupied vs let-out — changes §24(b) interest treatment. Omitted → self-occupied."
    • addedOutput schema / properties / affordability / properties / gst
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "amount": {
      +      "type": "integer"
      +    },
      +    "applies": {
      +      "type": "boolean"
      +    },
      +    "basis": {
      +      "type": "string"
      +    },
      +    "isAffordable": {
      +      "type": "boolean"
      +    },
      +    "itcAvailableToBuyer": {
      +      "enum": [
      +        false
      +      ]
      +    },
      +    "ratePct": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "ratePct",
      +    "amount",
      +    "applies",
      +    "isAffordable",
      +    "itcAvailableToBuyer",
      +    "basis"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / affordability / required
      Previous value: -[
      -  "propertyValue",
      -  "downPayment",
      -  "stampDutyAndRegistration",
      -  "otherCharges",
      -  "otherChargesBreakdown",
      -  "totalCashToClose",
      -  "lifetimeCost",
      -  "savingsAvailable",
      -  "downPaymentGap"
      -]New value: +[
      +  "propertyValue",
      +  "downPayment",
      +  "stampDutyAndRegistration",
      +  "otherCharges",
      +  "otherChargesBreakdown",
      +  "gst",
      +  "totalCashToClose",
      +  "lifetimeCost",
      +  "savingsAvailable",
      +  "downPaymentGap"
      +]
    • addedOutput schema / properties / assumptions / properties / existingEmisProvided
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / assumptions / properties / isUnderConstruction
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / assumptions / properties / occupancyIntent
      Added value: +{
      +  "enum": [
      +    "self_occupied",
      +    "let_out"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / assumptions / properties / occupancyIntentProvided
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / assumptions / properties / underConstructionProvided
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / assumptions / required
      Previous value: -[
      -  "rateSource",
      -  "ltvBasis",
      -  "regimeYear",
      -  "annualIncomeEstimated",
      -  "buyerGender",
      -  "cibilProvided",
      -  "savingsProvided",
      -  "seniorCitizenNotModeled"
      -]New value: +[
      +  "rateSource",
      +  "ltvBasis",
      +  "regimeYear",
      +  "annualIncomeEstimated",
      +  "buyerGender",
      +  "cibilProvided",
      +  "savingsProvided",
      +  "existingEmisProvided",
      +  "occupancyIntent",
      +  "occupancyIntentProvided",
      +  "isUnderConstruction",
      +  "underConstructionProvided",
      +  "seniorCitizenNotModeled"
      +]
    • addedOutput schema / properties / lenderFit
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "cibilConsidered": {
      +      "type": "boolean"
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "eligibleLenders": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "lenders": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "eligible": {
      +            "type": "boolean"
      +          },
      +          "fitReason": {
      +            "type": "string"
      +          },
      +          "fitScore": {
      +            "type": "integer"
      +          },
      +          "indicativeRatePct": {
      +            "type": "number"
      +          },
      +          "kind": {
      +            "enum": [
      +              "bank",
      +              "hfc"
      +            ],
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "kind",
      +          "indicativeRatePct",
      +          "eligible",
      +          "fitScore",
      +          "fitReason"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "notALoanApproval": {
      +      "enum": [
      +        true
      +      ]
      +    },
      +    "notAnOffer": {
      +      "enum": [
      +        true
      +      ]
      +    },
      +    "summary": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "lenders",
      +    "eligibleLenders",
      +    "cibilConsidered",
      +    "notAnOffer",
      +    "notALoanApproval",
      +    "summary",
      +    "disclaimer"
      +  ],
      +  "type": "object"
      +}
  6. Changed6 schema fields changed
    • addedInput schema / properties / assetType
      Added value: +{
      +  "description": "\"home\" (flat/villa/house) or \"plot\" (bare land); manual mode only. Plot → shorter tenure, no home-loan tax benefit.",
      +  "enum": [
      +    "home",
      +    "plot"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / listingId / description
      Previous value: -"AVnester listingId (Coimbatore catalog). Provide EITHER listingId OR propertyValue+state, not both."New value: +"AVnester listingId (Coimbatore catalog). Listing mode — do NOT also pass propertyValue (rejected) or state (ignored)."
    • changedInput schema / properties / propertyValue / description
      Previous value: -"Property price in INR (manual / pan-India mode). Provide together with state."New value: +"Property price in INR (manual mode). Pass with state; not with listingId."
    • changedInput schema / properties / state / description
      Previous value: -"Indian state (ISO code \"MH\", slug, or name) for stamp duty. Required with propertyValue."New value: +"Indian state (ISO \"MH\"/slug/name) for stamp duty. Required in manual mode; ignored in listing mode."
    • addedOutput schema / properties / assetType
      Added value: +{
      +  "enum": [
      +    "home",
      +    "plot"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  7. Changed2 schema fields changed
    • addedOutput schema / properties / cards
      Added value: +{
      +  "items": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "data": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "priority": {
      +        "type": "integer"
      +      },
      +      "template": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "template",
      +      "data",
      +      "priority"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "attribution",
      -  "disclaimer"
      -]New value: +[
      +  "attribution",
      +  "disclaimer",
      +  "cards"
      +]
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "affordability": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "downPayment": {
      +          "type": "integer"
      +        },
      +        "downPaymentGap": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "lifetimeCost": {
      +          "type": "integer"
      +        },
      +        "otherCharges": {
      +          "type": "integer"
      +        },
      +        "otherChargesBreakdown": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "gstUnderConstruction": {
      +              "type": "integer"
      +            },
      +            "legalFee": {
      +              "type": "integer"
      +            },
      +            "loanProcessingFee": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "loanProcessingFee",
      +            "legalFee",
      +            "gstUnderConstruction"
      +          ],
      +          "type": "object"
      +        },
      +        "propertyValue": {
      +          "type": "integer"
      +        },
      +        "savingsAvailable": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "stampDutyAndRegistration": {
      +          "type": "integer"
      +        },
      +        "totalCashToClose": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "propertyValue",
      +        "downPayment",
      +        "stampDutyAndRegistration",
      +        "otherCharges",
      +        "otherChargesBreakdown",
      +        "totalCashToClose",
      +        "lifetimeCost",
      +        "savingsAvailable",
      +        "downPaymentGap"
      +      ],
      +      "type": "object"
      +    },
      +    "assumptions": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "annualIncomeEstimated": {
      +          "type": "boolean"
      +        },
      +        "buyerGender": {
      +          "enum": [
      +            "male",
      +            "female",
      +            "joint"
      +          ],
      +          "type": "string"
      +        },
      +        "cibilProvided": {
      +          "type": "boolean"
      +        },
      +        "ltvBasis": {
      +          "type": "string"
      +        },
      +        "rateSource": {
      +          "type": "string"
      +        },
      +        "regimeYear": {
      +          "enum": [
      +            "FY2026-27"
      +          ]
      +        },
      +        "savingsProvided": {
      +          "type": "boolean"
      +        },
      +        "seniorCitizenNotModeled": {
      +          "enum": [
      +            true
      +          ]
      +        }
      +      },
      +      "required": [
      +        "rateSource",
      +        "ltvBasis",
      +        "regimeYear",
      +        "annualIncomeEstimated",
      +        "buyerGender",
      +        "cibilProvided",
      +        "savingsProvided",
      +        "seniorCitizenNotModeled"
      +      ],
      +      "type": "object"
      +    },
      +    "attribution": {
      +      "enum": [
      +        "AVnester"
      +      ]
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "eligibility": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "approvalLikelihood": {
      +          "enum": [
      +            "high",
      +            "medium",
      +            "low",
      +            "indicative"
      +          ],
      +          "type": "string"
      +        },
      +        "bound": {
      +          "enum": [
      +            "foir",
      +            "ltv"
      +          ],
      +          "type": "string"
      +        },
      +        "cibilBand": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "eligibleLoan": {
      +          "type": "integer"
      +        },
      +        "foirAtEligibleLoanPct": {
      +          "type": "number"
      +        },
      +        "foirCeilingPct": {
      +          "type": "number"
      +        },
      +        "foirComfortPct": {
      +          "type": "number"
      +        },
      +        "ltvPct": {
      +          "type": "number"
      +        },
      +        "maxLoanByFoir": {
      +          "type": "integer"
      +        },
      +        "maxLoanByLtv": {
      +          "type": "integer"
      +        },
      +        "notALoanApproval": {
      +          "enum": [
      +            true
      +          ]
      +        },
      +        "notAnOffer": {
      +          "enum": [
      +            true
      +          ]
      +        },
      +        "reasoning": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "maxLoanByFoir",
      +        "maxLoanByLtv",
      +        "eligibleLoan",
      +        "bound",
      +        "ltvPct",
      +        "foirAtEligibleLoanPct",
      +        "foirCeilingPct",
      +        "foirComfortPct",
      +        "cibilBand",
      +        "approvalLikelihood",
      +        "notALoanApproval",
      +        "notAnOffer",
      +        "reasoning"
      +      ],
      +      "type": "object"
      +    },
      +    "emi": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "interestRatePercent": {
      +          "type": "number"
      +        },
      +        "loanAmount": {
      +          "type": "integer"
      +        },
      +        "monthlyEmi": {
      +          "type": "integer"
      +        },
      +        "tenureYears": {
      +          "type": "integer"
      +        },
      +        "totalInterest": {
      +          "type": "integer"
      +        },
      +        "totalPayment": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "loanAmount",
      +        "interestRatePercent",
      +        "tenureYears",
      +        "monthlyEmi",
      +        "totalInterest",
      +        "totalPayment"
      +      ],
      +      "type": "object"
      +    },
      +    "mode": {
      +      "enum": [
      +        "listing",
      +        "manual"
      +      ],
      +      "type": "string"
      +    },
      +    "notFound": {
      +      "type": "boolean"
      +    },
      +    "stampDutySupported": {
      +      "type": "boolean"
      +    },
      +    "tax": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "homeLoanTaxBenefitOld": {
      +          "type": "integer"
      +        },
      +        "netEffectiveAnnualBenefit": {
      +          "type": "integer"
      +        },
      +        "netEffectiveMonthlyEmi": {
      +          "type": "integer"
      +        },
      +        "notModeled": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "recommendedRegime": {
      +          "enum": [
      +            "old",
      +            "new"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "recommendedRegime",
      +        "homeLoanTaxBenefitOld",
      +        "netEffectiveAnnualBenefit",
      +        "netEffectiveMonthlyEmi",
      +        "notModeled"
      +      ],
      +      "type": "object"
      +    },
      +    "verdict": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "blockingLever": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "confidence": {
      +          "enum": [
      +            "indicative"
      +          ]
      +        },
      +        "headline": {
      +          "type": "string"
      +        },
      +        "levers": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "amountInr": {
      +                "type": "integer"
      +              },
      +              "effect": {
      +                "type": "string"
      +              },
      +              "lever": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "lever",
      +              "effect"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "signal": {
      +          "enum": [
      +            "AFFORDABLE",
      +            "STRETCH",
      +            "NOT_YET",
      +            "INELIGIBLE"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "signal",
      +        "headline",
      +        "blockingLever",
      +        "levers",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "attribution",
      +    "disclaimer"
      +  ],
      +  "type": "object"
      +}
  9. Changed3 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / properties / annualIncomeForTax / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / annualRent / maximum
      Removed value: -9007199254740991
  10. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world. The description adds meaningful context beyond that: the tool is advisory only (not an approval/offer/advice), the disclaimer must be surfaced, listing mode ignores propertyValue/state/city 'with a warning', and several omitted inputs have disclosed defaults that can change the verdict (e.g. existingMonthlyEmis assumed ₹0 'which can inflate eligibility and flip the verdict — ask the buyer').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The verdict definition is front-loaded, and the text is organized as a component list followed by Mode A / Mode B and the disclaimer caveat. It is dense but nearly every clause carries information; only minor tightening would be possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 24-parameter tool with an output schema present, the description need not explain return values, and it covers the essential decision context: modes, verdict semantics, scope limits, and the disclaimer obligation. It does not detail what warnings accompany listing mode or how the triage behaves without CIBIL, but the annotations and output schema carry that load.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents every parameter, including defaults, enums, and mode-specific applicability. The description adds only a high-level restatement of the two modes and the component list rather than new per-parameter syntax or constraints, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (assess affordability) and resource (a specific Indian home), and enumerates the concrete outputs — a single verdict with FOIR/LTV/CIBIL, EMI, cash-to-close, tax, and lender-fit. It clearly distinguishes this umbrella assessment from narrower siblings like estimate_stamp_duty_and_registration or calculate_home_affordability by folding those components in, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It defines two explicit invocation paths — Mode A (listingId) and Mode B (propertyValue + state) — so an agent knows exactly what to supply in each case. It also states the compliance requirement ('Always surface the disclaimer') and the scope limit ('NOT a loan approval, offer, or advice'). It stops short of saying when to prefer this over the sibling calculators, but the mode framing is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources