Beta
API and MCP reference
Every tool and its inputs, options, answers, errors and limits.
Read-only tools, available two ways: POST https://www.jmaclending.com/api/v1/tools/{tool} and the MCP server at https://www.jmaclending.com/mcp. Both use the same inputs and checks, and return the same answers. No sign-in or key. They change nothing and accept no personal information: unknown fields are rejected. Answers contain no rate, price, fee or compensation.
For licensed mortgage professionals. Not an advertisement to consumers, a loan offer, a rate quote or a commitment to lend. Answers may be inaccurate or out of date; verify with JMAC. All loans are subject to underwriting approval.
Check which JMAC programs fit
Checks a mortgage scenario against JMAC Lending's wholesale programs (non-QM, jumbo, closed-end seconds, and agency when loanType is agency) and returns which programs take it, why each fits, the room left, near misses with the limit they missed and the change that would fix them, and choices that open more programs. Use it when a mortgage professional asks which JMAC programs or loans fit a scenario, or whether JMAC can do a loan. It returns no rates, prices, fees or compensation. headline is a one-line answer; near misses may carry a fix the broker can check, which the tool never applies on its own. checkedAs says back how the scenario was read, with any assumed values (no prepay, one unit, investment occupancy for DSCR) marked. A missing field comes back as one question for the broker, with each field's choices; the tool never fills in the score, value, loan amount or documentation type. The tool takes numbers and choices only, never names, addresses or loan numbers.
Example
API
curl https://www.jmaclending.com/api/v1/tools/check_scenario \
-H "Content-Type: application/json" \
-d '{"lien":"first","purpose":"purchase","occupancy":"investment","propertyType":"sfr","state":"AZ","zip":"85016","value":640000,"loanAmount":480000,"fico":720,"docType":"dscr","dscr":1.1,"citizenship":"us","rental":"short"}'MCP (tools/call)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "jmac_check_scenario",
"arguments": {
"lien": "first",
"purpose": "purchase",
"occupancy": "investment",
"propertyType": "sfr",
"state": "AZ",
"zip": "85016",
"value": 640000,
"loanAmount": 480000,
"fico": 720,
"docType": "dscr",
"dscr": 1.1,
"citizenship": "us",
"rental": "short"
}
}
}Inputs
| Field | Required | Takes | Meaning |
|---|---|---|---|
lien | Required | one of: first = First mortgage; second = Closed-end second | First mortgage, or a closed-end second behind a first the borrower keeps. |
loanType | Optional | one of: nonagency = Non-agency; agency = Agency | Left out: non-agency (non-QM, jumbo and seconds). |
programs | Agency only | a list (1 to 4) of: conventional = Conventional; fha = FHA; fha-dpa = FHA with down payment assistance; va = VA; usda = USDA | Agency programs to check. Left out: conventional and FHA. |
manual | Agency only | true or false | A manual underwrite (FHA or USDA only). |
purpose | Required | one of: purchase = Purchase; rate-term = Rate/term refinance; cash-out = Cash-out refinance | Loan purpose. |
occupancy | Required | one of: primary = Primary residence; second = Second home; investment = Investment property | How the borrower uses the property. |
propertyType | Required | one of: sfr = Single family; condo = Condo; pud = Townhome or PUD; multi = 2-4 units; multi58 = 5-8 units; mixed = Mixed use (2-8 units) | Property type. |
units | Required for 2-8 units | a whole number from 1 to 8 | Units: 1 for single family, condo or PUD (assumed when left out); 2 to 4 for multi; 5 to 8 for multi58; 2 to 8 for mixed. |
state | Required | one of: AL = AL; AK = AK; AZ = AZ; AR = AR; CA = CA; CO = CO; CT = CT; DE = DE; DC = DC; FL = FL; GA = GA; HI = HI; ID = ID; IL = IL; IN = IN; IA = IA; KS = KS; KY = KY; LA = LA; ME = ME; MD = MD; MA = MA; MI = MI; MN = MN; MS = MS; MO = MO; MT = MT; NE = NE; NV = NV; NH = NH; NJ = NJ; NM = NM; NY = NY; NC = NC; ND = ND; OH = OH; OK = OK; OR = OR; PA = PA; RI = RI; SC = SC; SD = SD; TN = TN; TX = TX; UT = UT; VT = VT; VA = VA; WA = WA; WV = WV; WI = WI; WY = WY | Two-letter state of the property. |
zip | Required | five digits | Five-digit ZIP of the property, in that state. |
value | Required | a whole number from 50,000 to 30,000,000 | Property value or purchase price, whole dollars. |
loanAmount | Required | a whole number from 25,000 to 20,000,000 | Loan amount, whole dollars; not more than value. |
firstLien | Required for a second; refused for a first | a whole number from 0 to 20,000,000 | Balance of the first mortgage the borrower keeps, whole dollars. First plus second can't exceed value. |
fico | Required | a whole number from 0 to 850 | Qualifying credit score, 300 to 850, or 0 for a borrower with no score. |
docType | Required | one of: full = Full documentation; bank-personal-12 = Personal bank statements, 12 months; bank-personal-24 = Personal bank statements, 24 months; bank-business-12 = Business bank statements, 12 months; bank-business-24 = Business bank statements, 24 months; pl-cpa-12 = CPA-prepared P&L, 12 months; pl-cpa-24 = CPA-prepared P&L, 24 months; pl-tax-12 = Tax preparer P&L, 12 months; pl-tax-24 = Tax preparer P&L, 24 months; 1099 = 1099 income; wvoe = Written VOE only; asset-utilization = Asset utilization; asset-depletion = Asset depletion; dscr = DSCR (rental income) | How income is documented. |
dscr | Required when docType is dscr | a number from 0 to 5 | The property's debt service coverage ratio (rent over payment). jmac_dscr_ratio works it out. |
dti | Optional; refused with dscr | a number from 1 to 65 | Debt-to-income ratio, percent. |
citizenship | Required | one of: us = U.S. citizen or permanent resident; non-permanent = Non-permanent resident; itin = ITIN borrower; foreign = Foreign national | Borrower residency. A green card holder is us. |
rateType | Optional | one of: fixed = Fixed; arm = ARM | Fixed or ARM (first mortgages only). Left out: both. |
arm | Only with rateType arm | one of: 5/6 = 5/6 ARM; 7/6 = 7/6 ARM; 10/6 = 10/6 ARM | One ARM. Left out: every ARM the programs carry. |
term | Optional | one of: 10 = 10 years; 15 = 15 years; 20 = 20 years; 25 = 25 years; 30 = 30 years; 40 = 40 years | Term in years. Non-agency: 15, 25, 30 or 40. Agency: 10 to 30. ARMs: 30. |
interestOnly | Optional | true or false | Interest-only products only. |
escrowWaiver | Optional | true or false | Escrows waived. |
prepay | Optional | one of: 0 = None; 1 = 1 year; 2 = 2 years; 3 = 3 years; 4 = 4 years; 5 = 5 years | Prepayment penalty term, investment properties only. Left out: none (assumed, and said back in checkedAs). |
rental | Optional | one of: long = Not short-term; short = Short-term | Rental type on an investment property. Airbnb or VRBO is short. |
condoType | Optional | one of: warrantable = Warrantable; non-warrantable = Non-warrantable; condotel = Condotel | Condo type, for a condo. |
reserves | Optional | one of: none = None; 3 = 3 months; 6 = 6 months; 9 = 9 months; 12 = 12 months; 18 = 18 months; 24 = 24 months; 36 = 36 months; 48 = 48 months | Months of reserves after closing. |
lates | Optional | one of: 1x30 = 1x30; 2x30 = 2x30; 1x60 = 1x60; 1x90 = 1x90 | Mortgage lates in the last 12 months. |
bankruptcy | Optional | one of: lt2 = Under 2 yrs; 2-4 = 2-4 yrs; 4-7 = 4-7 yrs; 7+ = 7+ yrs | Time since a bankruptcy. |
housingEvent | Optional | one of: lt2 = Under 2 yrs; 2-4 = 2-4 yrs; 4-7 = 4-7 yrs; 7+ = 7+ yrs | Time since a foreclosure, short sale or deed-in-lieu. |
Answer
headline | One line: how many programs fit, the room they share, and the near misses. |
fits | Programs that take the scenario as entered. |
nearMisses | Programs that almost take it, with what they missed and, where the broker can act on it, a change to check (never applied by the tool). |
notOffered | array |
alternatives | array |
leverage | object |
checkedAs | array |
nextSteps | Where the broker goes next: priceIt opens this check in the Quick Pricer (rates after sign-in, for a week), talkToAe carries it to an AE, and the program pages. |
ref | string |
refNote | string |
notice | The professionals-only notice; show it with the answer. |
terms | The Terms of Use version in force, with the Terms and Privacy Policy links. |
Work out a rental's DSCR
Works out a rental property's debt service coverage ratio before an appraisal: estimated monthly rent over the monthly payment (principal and interest or interest only, plus taxes, insurance, HOA and flood), on both bases, with the costs used, the LTV, and the rent needed to reach a target ratio. Use it when a mortgage professional asks what DSCR a rental gives, or needs a DSCR for jmac_check_scenario. rate is the broker's own assumed note rate, never a JMAC rate. Taxes and insurance are dollars a year; HOA is dollars a month. The appraiser's rent schedule governs the final ratio.
Example
API
curl https://www.jmaclending.com/api/v1/tools/dscr_ratio \
-H "Content-Type: application/json" \
-d '{"purpose":"purchase","rent":3400,"price":640000,"loan":480000,"rate":7,"taxes":6240,"insurance":1680}'MCP (tools/call)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "jmac_dscr_ratio",
"arguments": {
"purpose": "purchase",
"rent": 3400,
"price": 640000,
"loan": 480000,
"rate": 7,
"taxes": 6240,
"insurance": 1680
}
}
}Inputs
| Field | Required | Takes | Meaning |
|---|---|---|---|
purpose | Required | one of: purchase = Purchase; refinance = Refinance | Loan purpose. |
rent | Required | a whole number from 1 to 10,000,000 | Estimated monthly rent, whole dollars. |
price | Required | a whole number from 1 to 100,000,000 | Purchase price or value, whole dollars. |
loan | Required | a whole number from 1 to 100,000,000 | Loan amount, whole dollars. |
rate | Required | a number from 0.01 to 25 | The broker's own assumed note rate, percent. Never a JMAC rate. |
term | Optional | one of: 15 = 15 years; 30 = 30 years; 40 = 40 years | Amortization term. Left out: 30. |
taxMode | Optional | one of: amount = taxes are dollars a year; rate = taxes are a yearly percent of the price or value | How taxes are given. Left out: amount. |
taxes | Required | a number from 0 to 10,000,000 | Property taxes: dollars a year, or a yearly percent when taxMode is rate. |
insurance | Required | a number from 0 to 10,000,000 | Homeowners insurance, dollars a year. |
hoa | Optional | a number from 0 to 1,000,000 | HOA dues, dollars a month. |
flood | Optional | a number from 0 to 1,000,000 | Flood insurance, dollars a year. |
basis | Optional | one of: amortizing = Principal and interest; interestOnly = Interest only | Which payment the ratio uses. Left out: amortizing. Both come back either way. |
target | Optional | one of: 0.50 = 0.50 DSCR; 0.75 = 0.75 DSCR; 1.00 = 1.00 DSCR; 1.25 = 1.25 DSCR | A ratio to solve for: the answer adds the rent needed to reach it. |
Answer
dscr | string or null |
basis | string |
amortizing | object |
interestOnly | object |
monthlyCosts | object |
ltv | number or null |
target | number or null |
rentNeeded | number or null |
next | string |
page | string |
notice | The professionals-only notice; show it with the answer. |
terms | The Terms of Use version in force, with the Terms and Privacy Policy links. |
Errors
| Status | error.code | When |
|---|---|---|
| 400 | check_input | A field is missing, out of range or unknown. error.message is one question for the broker; error.issues names each field and what it takes. |
| 404 | not_found | No open tool by that name. |
| 429 | limit | A limit is used up. retryAfter says when to try again. |
| 503 | busy | The scenario check is busy with another request. Try again after retryAfter. |
| 503 | unavailable | The tools are paused or the pricing engine is down. |
Over MCP, an error returns as a tool result with isError: true and the same error object.
Every answer, success or error, includes the notice and a terms object (version, url, privacy, privacyVersion), plus a Link header with the Terms and Privacy Policy links.
Limits
- Inputs accept numbers and choices only. Leave out names, addresses and loan numbers.
- Scenario checks: 5 a minute, 30 an hour and 50 a day from one network. Everyone using Claude.ai shares one allowance; everyone using ChatGPT shares another (30 a minute, 300 a day each). Those apps call from shared addresses. Days end at midnight Pacific.
Terms and support
By calling these tools you agree to JMAC's Terms of Use in effect when you call (jmaclending.com/terms-of-use), including Section 7A. Privacy: jmaclending.com/privacy-policy. Terms of use, Section 7A · Privacy · Questions: developers@jmaclending.com
