{
  "spec": "webmcp",
  "entryPoint": "document.modelContext",
  "site": "https://qmortgage.ai",
  "version": "capabilities-v1",
  "tools": [
    {
      "name": "get_q_mortgage_capabilities",
      "title": "List Q Mortgage agent capabilities",
      "description": "Lists every WebMCP tool Q Mortgage LLC exposes to agents, grouped by category, with each tool's read-only/authentication/confirmation requirements — useful as a discovery step before calling any other tool.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input required."
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "search_loan_programs",
      "title": "Search Loan Programs",
      "description": "Search Q Mortgage LLC's Texas loan program catalog by non-sensitive scenario criteria (loan purpose, occupancy, property type, self-employed status, documentation preference, veteran status, rural interest, investment strategy) and return potentially relevant program categories as illustrative starting points — never sensitive fields like SSN, date of birth, or income amount.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "loanPurpose": {
            "type": "string",
            "enum": [
              "purchase",
              "refinance",
              "cash_out",
              "construction",
              "heloc"
            ],
            "description": "The loan-purpose category the borrower is exploring (purchase, refinance, cash_out, construction, or heloc)."
          },
          "occupancy": {
            "type": "string",
            "enum": [
              "primary",
              "second_home",
              "investment"
            ],
            "description": "How the property will be occupied: primary residence, second home, or investment property."
          },
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state abbreviation for the target property. Q Mortgage LLC currently lends on Texas properties only; any other state returns the same educational program list with an out-of-state note."
          },
          "propertyType": {
            "type": "string",
            "enum": [
              "single_family",
              "condo",
              "townhome",
              "two_to_four_unit",
              "manufactured",
              "land"
            ],
            "description": "The type of property being financed (single_family, condo, townhome, two_to_four_unit, manufactured, or land)."
          },
          "selfEmployed": {
            "type": "boolean",
            "description": "Whether the borrower is self-employed or otherwise files non-W-2 income (1099, business owner, gig work)."
          },
          "documentationPreference": {
            "type": "string",
            "enum": [
              "full_doc",
              "bank_statement",
              "p_and_l",
              "1099",
              "asset_depletion",
              "dscr"
            ],
            "description": "A preferred income-documentation style, if the borrower already knows one fits (full_doc, bank_statement, p_and_l, 1099, asset_depletion, or dscr)."
          },
          "veteranStatus": {
            "type": "boolean",
            "description": "Whether the borrower is a veteran, active-duty service member, National Guard/Reserve member, or qualifying surviving spouse."
          },
          "ruralInterest": {
            "type": "boolean",
            "description": "Whether the borrower is interested in a rural or USDA-designated suburban property."
          },
          "investmentStrategy": {
            "type": "string",
            "enum": [
              "buy_and_hold",
              "short_term_rental",
              "fix_and_flip",
              "brrrr",
              "portfolio_scaling"
            ],
            "description": "The borrower's investment strategy, if applicable (buy_and_hold, short_term_rental, fix_and_flip, brrrr, or portfolio_scaling)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "get_loan_program_details",
      "title": "Get Loan Program Details",
      "description": "Return a structured overview of one Q Mortgage LLC loan program by its slug — description, common use cases, typical borrower profile, occupancy and property-type guidance, documentation overview, key limitations, related calculators, and a recommended next step. Built from hand-authored program facts; when available, verbatim copy from the published program page is attached separately under publishedPageCopy and labelled as marketing copy, never mixed into the facts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "program_slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "The stable snake_case program slug to look up (e.g. \"fha\", \"dscr\", \"bank_statement\"). Use search_loan_programs first if the slug is unknown."
          }
        },
        "required": [
          "program_slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": false
      },
      "confirmationRequired": false
    },
    {
      "name": "compare_loan_programs",
      "title": "Compare Loan Programs",
      "description": "Compare 2 to 4 Q Mortgage LLC loan programs side by side across intended use, occupancy, documentation style, mortgage insurance considerations, common advantages, common trade-offs, relevant calculators, and recommended questions for a loan officer — a structured comparison, never a ranking, score, or \"best loan\" recommendation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "program_slugs": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "minItems": 2,
            "maxItems": 4,
            "description": "2 to 4 stable snake_case program slugs to compare side by side (e.g. [\"fha\", \"conventional\"])."
          }
        },
        "required": [
          "program_slugs"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "find_possible_mortgage_paths",
      "title": "Find Possible Mortgage Paths",
      "description": "Suggests possible mortgage program paths that may be worth evaluating, based on optional, non-sensitive details such as loan purpose, occupancy, approximate price/down payment/income, self-employment, documentation preference, and state. Every result requires lender review and is illustrative only, never a ranking or determination.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "loanPurpose": {
            "type": "string",
            "enum": [
              "purchase",
              "refinance",
              "cash_out",
              "construction"
            ],
            "description": "The high-level reason for the loan, if known."
          },
          "occupancy": {
            "type": "string",
            "enum": [
              "primary",
              "second_home",
              "investment"
            ],
            "description": "How the property will be occupied, if known."
          },
          "propertyType": {
            "type": "string",
            "description": "Free-text property type, e.g. \"single_family\", \"condo\", \"multi_unit\", \"land\"."
          },
          "approximatePurchasePrice": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 50000000,
            "description": "Approximate purchase price in USD, if known."
          },
          "approximateDownPayment": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Approximate down payment amount in USD, if known."
          },
          "approximateAnnualIncome": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100000000,
            "description": "Approximate gross annual income in USD, if known."
          },
          "selfEmployed": {
            "type": "boolean",
            "description": "Whether the borrower is self-employed."
          },
          "documentationPreference": {
            "type": "string",
            "enum": [
              "full_doc",
              "bank_statement",
              "1099",
              "asset_based",
              "no_income_docs",
              "no_preference"
            ],
            "description": "The borrower's preferred income-documentation style, if any."
          },
          "monthlyRentEstimate": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Estimated monthly rental income for an investment property, if known."
          },
          "shortTermRental": {
            "type": "boolean",
            "description": "Whether the property is intended for short-term/Airbnb-style rental."
          },
          "needsRehab": {
            "type": "boolean",
            "description": "Whether the property is expected to need rehab work before or after purchase."
          },
          "creditRange": {
            "type": "string",
            "enum": [
              "excellent",
              "good",
              "fair",
              "building",
              "unknown"
            ],
            "description": "A high-level, self-reported credit range, only if voluntarily supplied."
          },
          "veteran": {
            "type": "boolean",
            "description": "Whether the borrower is a veteran, active-duty service member, or surviving spouse."
          },
          "ruralProperty": {
            "type": "boolean",
            "description": "Whether the property is in a rural or USDA-designated area."
          },
          "itinFiler": {
            "type": "boolean",
            "description": "Whether the borrower files taxes with an ITIN rather than a Social Security number."
          },
          "nonUsResident": {
            "type": "boolean",
            "description": "Whether the borrower is a non-US resident / foreign national."
          },
          "medicalProfessional": {
            "type": "boolean",
            "description": "Whether the borrower is a medical professional (e.g. physician, MD, DO)."
          },
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state code for the property or borrower, if known, e.g. \"TX\"."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_mortgage_payment",
      "title": "Calculate Mortgage Payment",
      "description": "Returns an estimated monthly mortgage payment breakdown (principal, interest, taxes, insurance, mortgage insurance, HOA) for illustrative purposes only; not an official quote or Loan Estimate and always requires review by a licensed mortgage professional.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "purchasePrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Purchase price / home price in US dollars."
          },
          "downPayment": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Down payment amount in US dollars. Provide exactly one of downPayment or downPaymentPercent."
          },
          "downPaymentPercent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Down payment as a percentage of purchase price (0-100). Provide exactly one of downPayment or downPaymentPercent."
          },
          "interestRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Annual interest rate as a percentage, e.g. 6.5 for 6.5%."
          },
          "termYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "Loan term in years (10, 15, 20, 25, or 30)."
          },
          "annualTaxes": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Estimated annual property taxes in US dollars. Converted internally to an effective annual tax rate against purchase price."
          },
          "annualInsurance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Estimated annual homeowners insurance premium in US dollars."
          },
          "monthlyHoa": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000,
            "description": "Monthly HOA dues in US dollars, if applicable."
          },
          "monthlyMortgageInsurance": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000,
            "description": "Optional manual override for monthly mortgage insurance in US dollars. When omitted, it is estimated automatically only when the loan-to-value ratio exceeds 80%."
          }
        },
        "required": [
          "purchasePrice",
          "interestRate",
          "termYears"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_affordability",
      "title": "Calculate Affordability",
      "description": "Returns an estimated affordability range: an illustrative maximum home price, loan amount, and monthly payment given income, debts, and a target debt-to-income ratio. This is a potential starting point only, not a determination of any specific amount, and requires lender review.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "grossMonthlyIncome": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "Gross monthly household income in US dollars. Provide exactly one of grossMonthlyIncome or annualIncome."
          },
          "annualIncome": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Gross annual household income in US dollars. Provide exactly one of grossMonthlyIncome or annualIncome."
          },
          "monthlyDebts": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Sum of monthly minimum payments on existing debts (cards, auto, student, etc), in US dollars."
          },
          "downPayment": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Cash available for a down payment, in US dollars."
          },
          "interestRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Approximate annual interest rate as a percentage, e.g. 6.5 for 6.5%."
          },
          "termYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "Loan term in years (10, 15, 20, 25, or 30)."
          },
          "propertyTaxRatePercent": {
            "type": "number",
            "minimum": 0,
            "maximum": 20,
            "description": "Estimated annual property-tax rate as a percentage of home price, e.g. 2.0 for 2%."
          },
          "annualInsurance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Estimated annual homeowners insurance premium in US dollars."
          },
          "targetDti": {
            "type": "number",
            "minimum": 0,
            "maximum": 60,
            "description": "Preferred back-end debt-to-income ratio target as a percentage (0-60), if provided. Defaults to 36 (the 28/36 rule back-end target) when omitted."
          }
        },
        "required": [
          "monthlyDebts",
          "downPayment",
          "interestRate",
          "termYears"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_dscr",
      "title": "Calculate DSCR",
      "description": "Returns an estimated Debt-Service Coverage Ratio (DSCR) for an investment property, along with the qualifying rent used and a general, hedged interpretation of the resulting pricing tier. This is illustrative only and never states that a lender will accept the result.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "grossMonthlyRent": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Gross monthly market or qualifying rent for the investment property, in US dollars."
          },
          "purchasePrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Property purchase price in US dollars."
          },
          "downPayment": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Down payment amount in US dollars. Provide exactly one of downPayment or downPaymentPercent."
          },
          "downPaymentPercent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Down payment as a percentage of purchase price (0-100). Provide exactly one of downPayment or downPaymentPercent."
          },
          "interestRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Annual interest rate as a percentage, e.g. 7.5 for 7.5%."
          },
          "termYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "Loan term in years (10, 15, 20, 25, or 30)."
          },
          "annualTaxes": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Estimated annual property taxes in US dollars."
          },
          "annualInsurance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Estimated annual homeowners insurance premium in US dollars."
          },
          "monthlyHoa": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000,
            "description": "Monthly HOA dues in US dollars, if applicable."
          },
          "targetDscr": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 5,
            "description": "Target DSCR used for the back-solved maximum-loan figure, e.g. 1.0 or 1.2. Defaults to 1.0 when omitted."
          }
        },
        "required": [
          "grossMonthlyRent",
          "purchasePrice",
          "interestRate",
          "termYears"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_refi_break_even",
      "title": "Calculate Refi Break-Even",
      "description": "Returns an estimated monthly savings and break-even timeline for a refinance scenario, comparing principal-and-interest payments only (taxes, insurance, and HOA are unaffected by a refinance and are not included). Illustrative only, not a lending decision.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "currentBalance": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Current loan principal balance in US dollars."
          },
          "currentRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Current annual interest rate as a percentage."
          },
          "currentMonthsRemaining": {
            "type": "integer",
            "minimum": 0,
            "maximum": 600,
            "description": "Months remaining on the current loan (e.g. 240 for 20 years left)."
          },
          "newRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Proposed new annual interest rate as a percentage (the refi quote)."
          },
          "newTermYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "New loan term in years (10, 15, 20, 25, or 30)."
          },
          "closingCosts": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Estimated closing costs for the refinance, in US dollars."
          },
          "monthsToStay": {
            "type": "integer",
            "minimum": 0,
            "maximum": 600,
            "description": "Months the borrower plans to stay in the home."
          }
        },
        "required": [
          "currentBalance",
          "currentRate",
          "currentMonthsRemaining",
          "newRate",
          "newTermYears",
          "closingCosts",
          "monthsToStay"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_cash_on_cash",
      "title": "Calculate Cash-on-Cash Return",
      "description": "Returns an estimated cash-on-cash return for a buy-and-hold rental scenario: annual pre-tax cash flow divided by total cash invested, along with a general pricing tier label. This is an illustrative estimate only, not investment advice.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "grossMonthlyRent": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Gross monthly rent in US dollars."
          },
          "purchasePrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Purchase price in US dollars."
          },
          "downPayment": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Down payment amount in US dollars. Provide exactly one of downPayment or downPaymentPercent."
          },
          "downPaymentPercent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Down payment as a percentage of purchase price (0-100). Provide exactly one of downPayment or downPaymentPercent."
          },
          "interestRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Annual interest rate as a percentage, e.g. 7.5 for 7.5%."
          },
          "termYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "Loan term in years (10, 15, 20, 25, or 30)."
          },
          "annualTaxes": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Annual property tax in US dollars."
          },
          "annualInsurance": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Annual insurance premium in US dollars."
          },
          "monthlyHoa": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000,
            "description": "Monthly HOA dues in US dollars."
          },
          "managementPct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Property management fee as a percentage of gross rent, e.g. 8 for 8%."
          },
          "vacancyPct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Vacancy reserve as a percentage of gross rent, e.g. 5 for 5%."
          },
          "maintenancePct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Maintenance reserve as a percentage of gross rent, e.g. 5 for 5%."
          },
          "closingCosts": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Closing costs in US dollars."
          },
          "initialRepairs": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Initial make-ready repairs in US dollars, separate from ongoing maintenance."
          }
        },
        "required": [
          "grossMonthlyRent",
          "purchasePrice",
          "interestRate",
          "termYears"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_brrrr",
      "title": "Calculate BRRRR Deal",
      "description": "Returns an estimated BRRRR (Buy, Rehab, Rent, Refinance, Repeat) outcome: cash left in the deal after refinance and the resulting cash-on-cash return on remaining capital. Illustrative only, based on the inputs provided, and not investment advice.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "purchasePrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Purchase price in US dollars."
          },
          "purchaseClosingCosts": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Purchase closing costs in US dollars, typically ~3% of purchase price."
          },
          "cashToAcquire": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Cash used to acquire the property in US dollars (full purchase if all-cash, or down payment if financed)."
          },
          "rehabBudget": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Rehab budget in US dollars."
          },
          "rehabHoldingMonths": {
            "type": "integer",
            "minimum": 0,
            "maximum": 120,
            "description": "Months expected to hold the property during rehab before refinancing."
          },
          "holdingCostsMonthly": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Monthly holding costs during rehab in US dollars (utilities, insurance, taxes pro-rata, loan interest if financed)."
          },
          "arv": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 50000000,
            "description": "After-Repair Value (ARV) in US dollars."
          },
          "refiLTV": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Refinance loan-to-value as a percentage, e.g. 75 for 75%."
          },
          "refiClosingCosts": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Refinance closing costs in US dollars."
          },
          "newLoanRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "New refinance loan annual interest rate as a percentage."
          },
          "newLoanTermYears": {
            "type": "number",
            "enum": [
              10,
              15,
              20,
              25,
              30
            ],
            "description": "New refinance loan term in years (10, 15, 20, 25, or 30)."
          },
          "grossMonthlyRent": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Gross monthly rent in US dollars."
          },
          "opexMonthly": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000000,
            "description": "Monthly operating expenses in US dollars (taxes, insurance, HOA, management, vacancy reserve)."
          }
        },
        "required": [
          "purchasePrice",
          "purchaseClosingCosts",
          "cashToAcquire",
          "rehabBudget",
          "rehabHoldingMonths",
          "holdingCostsMonthly",
          "arv",
          "refiLTV",
          "refiClosingCosts",
          "newLoanRate",
          "newLoanTermYears",
          "grossMonthlyRent",
          "opexMonthly"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "calculate_fix_and_flip",
      "title": "Calculate Fix-and-Flip Deal",
      "description": "Returns an estimated maximum purchase price using the 70% rule, and — when an asking price is provided — a pass/fail screen with estimated profit and return on cash. Illustrative only, based on the inputs provided, and not investment advice.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "arv": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 50000000,
            "description": "After-Repair Value (ARV) in US dollars."
          },
          "rehabBudget": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Rehab budget in US dollars."
          },
          "multiplier": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 0.9,
            "description": "The rule-of-thumb multiplier applied to ARV (e.g. 0.70 for the standard 70% rule; typical range 0.65-0.75). Defaults to 0.70 when omitted."
          },
          "askingPrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 50000000,
            "description": "Asking price in US dollars, for a pass/fail screen and ROI estimate. Omit for a maximum-purchase-price estimate only."
          },
          "holdingMonths": {
            "type": "integer",
            "minimum": 0,
            "maximum": 60,
            "description": "Holding period in months. Defaults to 4 when omitted."
          },
          "closingCosts": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000000,
            "description": "Closing costs in US dollars. Defaults to 0 when omitted."
          },
          "sellingCostsPct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Total selling costs as a percentage of ARV (commissions, title, etc). Defaults to 8 when omitted."
          },
          "loanRate": {
            "type": "number",
            "minimum": 0,
            "maximum": 25,
            "description": "Hard-money loan annual interest rate as a percentage. Defaults to 9.5 when omitted."
          },
          "loanToCostPct": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Loan-to-cost as a percentage. Defaults to 90 when omitted."
          }
        },
        "required": [
          "arv",
          "rehabBudget"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "get_required_documents",
      "title": "Get Required Documents",
      "description": "Returns a general, illustrative document checklist for a borrower scenario, organized by category. This is not a complete or final list — actual requirements vary by borrower, lender, product, and transaction, and require review by a licensed mortgage professional.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "employmentType": {
            "type": "string",
            "enum": [
              "w2",
              "self_employed",
              "retired",
              "1099_contractor",
              "mixed"
            ],
            "description": "The borrower's primary employment type for this scenario."
          },
          "loanPurpose": {
            "type": "string",
            "enum": [
              "purchase",
              "refinance",
              "cash_out"
            ],
            "description": "The intended purpose of the loan."
          },
          "occupancy": {
            "type": "string",
            "enum": [
              "primary",
              "second_home",
              "investment"
            ],
            "description": "How the property will be occupied."
          },
          "programCategory": {
            "type": "string",
            "enum": [
              "government",
              "conventional",
              "refinance",
              "specialty",
              "investor"
            ],
            "description": "The general loan program category, if already known."
          },
          "propertyType": {
            "type": "string",
            "description": "The general property type (e.g. single-family, condo), if known."
          },
          "investor": {
            "type": "boolean",
            "description": "Whether the borrower is an investor closing in an entity/LLC name."
          }
        },
        "required": [
          "employmentType",
          "loanPurpose",
          "occupancy"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "check_q_service_area",
      "title": "Check Q Mortgage service area",
      "description": "Checks whether a property location falls within the states Q Mortgage LLC currently lends in, given a US state code and optional city/ZIP. Returns whether the location is served, a licensing disclosure when it is, and a suggested next action either way.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter US state code of the property location, e.g. \"TX\"."
          },
          "city": {
            "type": "string",
            "maxLength": 80,
            "description": "Optional city name of the property location."
          },
          "zip": {
            "type": "string",
            "maxLength": 10,
            "description": "Optional 5-digit ZIP code of the property location."
          }
        },
        "required": [
          "state"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "find_relevant_q_resource",
      "title": "Find a relevant Q Mortgage resource",
      "description": "Searches qmortgage.ai program pages, calculators, and guides for content relevant to a free-text intent (plus optional program/topic hints), and returns up to 3 matches with an absolute URL and a recommended next action — or an empty list when nothing on the site matches the intent.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "intent": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "description": "Free-text description of what the user is trying to find or accomplish."
          },
          "program": {
            "type": "string",
            "maxLength": 64,
            "description": "Optional loan program name to weight the match toward."
          },
          "topic": {
            "type": "string",
            "maxLength": 64,
            "description": "Optional topic keyword to weight the match toward."
          }
        },
        "required": [
          "intent"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "start_preapproval",
      "title": "Start a Q Mortgage pre-approval application",
      "description": "Returns a link to Q Mortgage LLC's secure formal application (my1003app), tagged with agent-attribution UTM parameters only. Nothing about the input is transmitted or stored — the input is used only to label the outbound link.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "loanPurpose": {
            "type": "string",
            "description": "Optional purpose of the loan (e.g. \"purchase\", \"refinance\") — not transmitted."
          },
          "note": {
            "type": "string",
            "description": "Optional free-text note for context — not transmitted anywhere."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true
      },
      "confirmationRequired": false
    },
    {
      "name": "request_callback",
      "title": "Request a callback from a Q Mortgage loan officer",
      "description": "Opens an on-page drawer pre-filled with the visitor's details so a human can review, re-confirm consent, and submit a callback request to a licensed Q Mortgage loan officer (NMLS #2567464). Requires an explicit email address and phone number and only proceeds once a human presses Send in the on-page drawer this tool opens — it never submits anything on its own, and it is not a lending application.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "The visitor's first name."
          },
          "lastName": {
            "type": "string",
            "maxLength": 60,
            "description": "The visitor's last name, if given."
          },
          "phone": {
            "type": "string",
            "maxLength": 30,
            "description": "The visitor's callback phone number; any US formatting is accepted and normalized to digits."
          },
          "email": {
            "type": "string",
            "maxLength": 254,
            "format": "email",
            "description": "The visitor's email address. Required: the existing /api/lead route this tool ultimately submits to (via AgentCallbackForm.tsx) rejects any request without a valid email."
          },
          "state": {
            "type": "string",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ],
            "default": "TX",
            "description": "Two-letter US state code for the property or visitor location; defaults to TX."
          },
          "loanPurpose": {
            "type": "string",
            "enum": [
              "purchase",
              "refinance",
              "cash_out",
              "investment",
              "other"
            ],
            "description": "What the visitor is looking to do: purchase, refinance, cash_out, investment, or other."
          },
          "preferredContactMethod": {
            "type": "string",
            "enum": [
              "phone",
              "text",
              "email"
            ],
            "description": "How the visitor would prefer the loan officer reach them: phone, text, or email."
          },
          "appointmentType": {
            "type": "string",
            "enum": [
              "phone",
              "video",
              "either"
            ],
            "description": "Whether the callback should be a phone call, a video call, or either."
          },
          "preferredTimeWindow": {
            "type": "string",
            "enum": [
              "morning",
              "afternoon",
              "evening",
              "asap"
            ],
            "description": "When the visitor would like to be reached: morning, afternoon, evening, or asap."
          },
          "message": {
            "type": "string",
            "maxLength": 500,
            "description": "Optional free-text context for the loan officer, up to 500 characters. Never include a Social Security number, date of birth, or income figure."
          },
          "consent": {
            "type": "boolean",
            "const": true,
            "description": "Must be true. Confirms the calling agent has already obtained the visitor's explicit consent to be contacted by phone, text, or email; the on-page drawer re-confirms this with the human before anything is sent."
          }
        },
        "required": [
          "firstName",
          "phone",
          "email",
          "loanPurpose",
          "preferredContactMethod",
          "appointmentType",
          "preferredTimeWindow",
          "consent"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false
      },
      "confirmationRequired": true
    }
  ],
  "remotes": {
    "mcp": {
      "type": "streamable-http",
      "url": "https://qmortgage.ai/api/mcp",
      "supportedProtocolVersions": [
        "2025-06-18"
      ],
      "requiredHeaders": {
        "accept": "application/json, text/event-stream",
        "content-type": "application/json"
      }
    }
  }
}
