Fix and Flip Loans: flip calculator and lender terms
Server Details
Fix-and-flip profit calculator plus hard-money and DSCR lender terms by state.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The tools have mostly distinct purposes: calculate one deal's profit, compare one deal across lenders, discover lenders by state, and fetch one lender's full terms. There is slight overlap because calculate_flip_profit can optionally price a single lender while compare_lender_costs prices all lenders, but the boundaries are clear from the descriptions.
All tool names use consistent snake_case with a verb_noun pattern: calculate_flip_profit, compare_lender_costs, find_lenders, get_lender_terms. The convention is predictable and readable.
Four tools is well-scoped for a focused fix-and-flip calculator and lender-terms lookup server. Each tool covers a distinct step: calculation, comparison, lender discovery, and lender detail.
The surface covers the core workflow: calculate deal economics, compare lender costs, find lenders, and inspect detailed lender terms. Minor gaps exist around directly listing or searching all lenders without a state filter, and there is no separate DSCR calculator despite DSCR lender terms being exposed.
Available Tools
4 toolscalculate_flip_profitFix-and-flip profit calculatorARead-onlyIdempotentInspect
Runs the fixandflip.loans calculator on a deal: profit, cash you put in, return on cash (and simple annualized), profit as % of ARV, the hard-money loan with interest, points and fees, holding and selling costs, the 70% rule maximum price and whether the deal meets it, and the breakeven sale price. Optionally prices the loan at a listed lender's advertised starting rate.
| Name | Required | Description | Default |
|---|---|---|---|
| arv | Yes | After-repair value (expected sale price) in dollars, e.g. 340000. | |
| lender | No | Optional lender name (e.g. "Kiavi"): use its advertised fix-and-flip starting rate instead of rate_pct. Do not give both. | |
| months | No | Months from purchase to sale. Default 6. | |
| ltc_pct | No | Share of the purchase price the lender advances, %. Default 90. | |
| rate_pct | No | Annual interest rate, %, from your own term sheet. Default 10.5 (the calculator's example, not a market rate). | |
| financing | No | hard_money (default) or cash (no loan). | |
| points_pct | No | Origination points, % of the loan. Default 2. | |
| rehab_cost | Yes | Rehab (renovation) budget in dollars, e.g. 55000. | |
| arv_cap_pct | No | Lender's maximum loan as % of ARV. Default 75. | |
| interest_on | No | drawn (default): interest only on money drawn, rehab draws spread evenly; full_loan: interest on the whole loan from day one ("Dutch"). | |
| lender_fees | No | Underwriting, document and processing fees in dollars. Default 1995. | |
| purchase_price | Yes | Purchase price in dollars, e.g. 210000. | |
| rehab_funded_pct | No | Share of the rehab the lender funds in draws, %. Default 100. | |
| buy_closing_costs | No | Buyer closing costs in dollars. Default 4000. | |
| seller_closing_pct | No | Seller closing costs and transfer tax as % of the sale price. Default 1.5. | |
| holding_costs_monthly | No | Taxes, insurance and utilities per month in dollars. Default 900. | |
| selling_commission_pct | No | Agent commissions as % of the sale price. Default 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value by enumerating the computed outputs (profit, cash-in, return on cash, 70% rule check, breakeven price), which is the behavioral detail an agent needs since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first clause and the rest is a dense but purposeful enumeration of returned metrics. The long comma-chained list is slightly heavy to parse but every element earns its place as output disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 17 parameters and 100% schema coverage but no output schema, the description correctly fills the remaining gap by describing what the calculator returns. Only minor items, such as how lender names are resolved or error behavior when both lender and rate_pct are supplied, are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 17 parameters is already documented with defaults, ranges and enums. The description only restates the lender-rate option and lists outputs; it does not add interpretive meaning to any parameter beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Runs the fixandflip.loans calculator on a deal') and enumerates the outputs produced, so the tool's function is immediately legible. It does not, however, distinguish itself from siblings like compare_lender_costs or get_lender_terms, which is the main thing keeping it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Optionally prices the loan at a listed lender's advertised starting rate' implies usage around the lender parameter, but it never says when to prefer this over compare_lender_costs or how to obtain a valid lender name. There are no explicit when-not conditions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_lender_costsCompare lenders' advertised rates on one flipARead-onlyIdempotentInspect
Prices one flip at each listed lender's advertised fix-and-flip starting rate (from its own website, read 2026-10-24), ranked by profit: interest cost, total financing and profit per lender, with your own leverage, points and fees held the same. Optional state keeps only lenders that list it (plus those to check).
| Name | Required | Description | Default |
|---|---|---|---|
| arv | Yes | After-repair value (expected sale price) in dollars, e.g. 340000. | |
| state | No | Optional two-letter property state, e.g. FL. | |
| months | No | Months from purchase to sale. Default 6. | |
| ltc_pct | No | Share of the purchase price the lender advances, %. Default 90. | |
| financing | No | hard_money (default) or cash (no loan). | |
| points_pct | No | Origination points, % of the loan. Default 2. | |
| rehab_cost | Yes | Rehab (renovation) budget in dollars, e.g. 55000. | |
| arv_cap_pct | No | Lender's maximum loan as % of ARV. Default 75. | |
| interest_on | No | drawn (default): interest only on money drawn, rehab draws spread evenly; full_loan: interest on the whole loan from day one ("Dutch"). | |
| lender_fees | No | Underwriting, document and processing fees in dollars. Default 1995. | |
| purchase_price | Yes | Purchase price in dollars, e.g. 210000. | |
| rehab_funded_pct | No | Share of the rehab the lender funds in draws, %. Default 100. | |
| buy_closing_costs | No | Buyer closing costs in dollars. Default 4000. | |
| seller_closing_pct | No | Seller closing costs and transfer tax as % of the sale price. Default 1.5. | |
| holding_costs_monthly | No | Taxes, insurance and utilities per month in dollars. Default 900. | |
| selling_commission_pct | No | Agent commissions as % of the sale price. Default 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, read-only, idempotent, closed-world operation, so the description needn't repeat that. It adds context annotations cannot: the rates come from lenders' own websites read on 2026-10-24 (a data-freshness caveat), that results are ranked by profit, and that leverage, points and fees are held constant across lenders. It does not mention lender coverage or what happens when no lender matches the state filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that lead with what the tool produces and its ranking criterion before covering the optional filter. Nothing is wasted, though the parenthetical '(plus those to check)' is slightly cryptic and the second sentence carries less weight than the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 parameters, no output schema and read-only annotations, the description carries the burden of describing the result, and it does: interest cost, total financing and profit per lender. It also flags rate provenance and date. What's missing is what the comparison does when a lender cannot fund the deal (e.g. LTC/ARV cap failures), which matters for a 16-parameter comparison tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 16 parameters are already documented with defaults, ranges and examples; the baseline is 3. The description adds a little beyond that, clarifying that the agent's own leverage/points/fee inputs are applied uniformly to every lender and that state acts as a filter with a 'to check' fallback, but it does not explain any individual input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it prices one flip at every listed lender's advertised fix-and-flip start rate and ranks results by profit. The scope (multi-lender comparison vs. a single scenario) implicitly separates it from calculate_flip_profit, but no sibling is named explicitly. An agent can still tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the situation (you have one flip's numbers and want to see which lender is cheapest) and explains the effect of the optional state filter, including the nuance that non-listing lenders are kept as 'those to check'. It never states when to prefer calculate_flip_profit, get_lender_terms, or find_lenders instead, so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_lendersFind fix-and-flip or DSCR lenders by stateARead-onlyIdempotentInspect
Lists the hard-money and DSCR lenders on fixandflip.loans whose own websites (read 2026-10-24) say they lend in a state, with starting rate, leverage, minimum credit score, experience rule, loan size and a source link each. Lenders that publish no state list are returned as "check".
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | rate (default; lowest advertised starting rate first, unpublished last) or name. | |
| limit | No | Lenders per page, 1 to 12, default 10. | |
| state | No | Two-letter property state, e.g. TX. Omit for every lender. | |
| offset | No | Lenders to skip, for paging. Default 0. | |
| loan_type | No | fix_flip (default; hard-money rehab loans) or dscr_rental (rental loans sized on rent). | |
| credit_score | No | Optional, fix_flip only: drop lenders whose published minimum FICO is above this score. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It provides crucial operational traits not covered by annotations: the external source (fixandflip.loans), the data freshness/cut-off date (read 2026-10-24), and the specific fallback behavior ('check') when a lender publishes no state list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly sized. It is highly efficient, front-loading the data source and specific attributes without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the detailed schema and clear annotations, the description provides all necessary context—source, scope, data attributes, and error/edge case handling—making it maximally complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema coverage is 100%, the baseline is 3. However, the description significantly improves semantic understanding by detailing the specific data points returned for each lender (starting rate, leverage, etc.), giving the agent context about the quality and type of data found.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the goal: listing hard-money and DSCR lenders. It specifies the resource (fixandflip.loans) and distinguishes this tool's function from sibling tools by focusing on lender discovery rather than calculation or specific term retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it doesn't explicitly list alternatives, the context of 'finding' lenders implies it should be used when a list of providers is needed, effectively differentiating it from tools focused on calculation or comparison of terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lender_termsOne lender's published termsARead-onlyIdempotentInspect
Everything fixandflip.loans recorded from one lender's own website (read 2026-10-24): fix-and-flip and DSCR rates, leverage, points, terms, credit and experience rules, loan sizes, the states it lends in, license line, notes and the exact source pages.
| Name | Required | Description | Default |
|---|---|---|---|
| lender | Yes | Lender name, e.g. "Kiavi", "Lima One" or "RCN Capital". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real context beyond them: the data is a static snapshot captured on a specific date ('read 2026-10-24'), sourced from each lender's own website, and includes exact source pages for verification. It omits any note on how stale data should be treated or what a miss looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that states what is returned, the source, and the capture date before the field list, with zero filler. The enumeration, while long, earns its place by telling the agent exactly what coverage to expect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by enumerating the returned fields (rates, leverage, points, terms, credit rules, loan sizes, states, license, notes, source pages). Combined with annotations covering the safety profile and the description covering provenance and freshness, an agent has enough to call it correctly; only the failure/empty case is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'lender' parameter already carries example values (Kiavi, Lima One, RCN Capital). The description contributes only the framing that the name identifies a lender whose own site was scraped, which adds little beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Everything fixandflip.loans recorded from one lender's own website') and enumerates the exact fields returned, so an agent knows this is a single-lender detail lookup rather than a search. It does not explicitly name siblings like find_lenders or compare_lender_costs, so the differentiation is implied by 'one lender' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing and the required 'lender' parameter make it clear this is for pulling detail on a lender you already have a name for, but there is no explicit when-to-use, when-not-to-use, or pointer to the sibling search/compare tools. An agent must infer the routing from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
calculate_flip_profit - First observed
compare_lender_costs - First observed
find_lenders - First observed
get_lender_terms
Related MCP Connectors
Lender-grade real estate underwriting and deal reports: fix and flip, BRRRR, new construction.
Published terms of 13 investor lenders for 1-4 unit rentals, flips and builds, with a deal match.
HMDA investor-lender data, DSCR glossary, loan programs and indicative rates. Business-purpose only.
Written fix-and-flip term sheets for 1–4 unit investment purchases, by email. Business-purpose only.
Related MCP Servers
- AlicenseAqualityAmaintenanceMultifamily real estate deal analysis — analyze deals, score properties, calculate max offer prices, and look up market data. Four tools for underwriting 2-200 unit apartment properties.496 npm4MIT
- AlicenseNot gradedqualityBmaintenanceLandlord and rental-property calculators as MCP tools: cash flow, cap rate, DSCR, Airbnb break-even occupancy, rent late fees, lease notice dates, and IRS mileage. Offline and deterministic, with no dependencies.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to calculate exact debt service coverage ratios, maximum loan amounts, required rent, scenario comparisons, and amortization schedules for rental property loans, returning structured results with sources and dates.50MIT
- AlicenseBqualityBmaintenanceEnables multifamily renovation cost estimation, scope of work generation, contractor bid evaluation, ROI gating, and risk flagging for real estate intelligence agents.11Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.