# Computed tools

Computed tools are stateless: the same inputs, `as_of` and rule-set versions give the same result. Defaults come from rule sets and appear as sourced inputs in `computation.inputs`. A required input that's missing returns 422 `missing_input` and nothing runs.

Pass `deal_id` to read inputs from a deal you've granted. Through the REST API the run is also saved there (`run_id` in the response); through the MCP server nothing is saved unless the client calls `save_to_deal`.

## SBA price ceiling

`POST /value/sba-ceiling` · MCP `sba_price_ceiling` · 5 credits

The highest price an SBA 7(a)-financed buyer can pay. Cash flow for debt service is SDE less the manager salary and the capex reserve; the maximum loan is that cash flow over the coverage ratio, capitalised at the rate over the term; the maximum price is the loan over one minus the equity injection share. The rate cap depends on loan size, so the tool iterates until the loan and its rate tier agree, and the loan is capped at the 7(a) maximum.

| Input | Required | Default |
| --- | --- | --- |
| `sde` | Yes | |
| `capex_reserve` | Yes; 0 is a valid answer | |
| `manager_salary` | Unless `area`, or `state` (with or without `county`), is given | The BLS OEWS median for general and operations managers in that area |
| `coverage`, `interest_rate`, `term_months`, `equity_injection_share` | No | The rule set in force on `as_of` |
| `acquisition_type` | No | `initial_acquisition`; selects the equity injection rule |
| `asking_price` | No | Adds the gap to asking and the bridge a seller note or more buyer cash would need |

```json
{"sde": 400000, "area": "US", "capex_reserve": 25000, "asking_price": 1500000}
```

Returns `max_price`, `max_loan`, `price_to_sde`, `cash_flow_for_debt`, a grid of price to SDE across salary and rate, and, with an asking price, `gap_to_asking` and `bridge_needed`. `flags` marks a price of $3M or more (SBA's quality-of-earnings rule), the $350,000-or-less internal-valuation path, and a loan capped at the program maximum.

The ceiling is a financing limit, not a value.

## Coverage stress test

`POST /finance/stress-test` · MCP `stress_test_deal` · 5 credits

Debt coverage now, under SDE declines and under rate rises, the decline at which coverage reaches 1.00x, and whether the deal still covers its debt after a 30% fall in SDE.

Required: `sde`, `manager_salary`, `capex_reserve`, `loan_amount`, `interest_rate`, `term_months`. Optional: `seller_note`, `sde_declines` (default 10%, 20%, 30%), `rate_shocks_bps` (default 100, 200, 300).

```json
{"sde": 350000, "manager_salary": 90000, "capex_reserve": 15000,
 "loan_amount": 1080000, "interest_rate": 0.10, "term_months": 120}
```

## Capital stack

`POST /finance/capital-stack` · MCP `build_capital_stack` · 5 credits

Sources and uses for an SBA acquisition: the guaranty fee, annual debt service, coverage, the loan at the rule's coverage, and whether the equity injection meets SBA's rule.

Required: `price`, `buyer_cash`, `sde`, `manager_salary`, `capex_reserve`. Optional: `working_capital`, `closing_costs`, `seller_note`, `interest_rate` (default: the 7(a) cap on `as_of`), `term_months` (default 120), `finance_guaranty_fee` (default true).

```json
{"price": 1200000, "buyer_cash": 120000, "sde": 350000, "manager_salary": 90000, "capex_reserve": 15000}
```

## After-tax proceeds

`POST /offer/after-tax` · MCP `after_tax_proceeds` · 5 credits

A seller's net proceeds by deal structure: federal tax (capital gain, recapture, net investment income tax and corporate tax where it applies) and state tax. State tax is modelled for Texas, Florida, California, New York (with New York City) and Washington. Other states return a `state_not_modelled` gap and the federal part still runs. Entity-level state taxes, such as Texas franchise tax, are flagged, not computed.

Required: `price`, `entity_type`, `allocation` (receivables, inventory, equipment value and basis, real estate value and basis, non-compete, goodwill), `seller_state`, `tax_year`, plus what the entity and structures need: an S corporation needs `stock_or_interest_basis`, for example, and the 422 names anything missing. Optional: `structures`, `filing_status`, `stock_or_interest_basis`, `corporate_asset_basis`, `built_in_gain`, `seller_city`, `material_participation`, `qsbs`.

```json
{"price": 2000000, "entity_type": "s_corp", "seller_state": "CA", "tax_year": 2026,
 "stock_or_interest_basis": 250000,
 "allocation": {"equipment_value": 150000, "equipment_tax_basis": 40000, "goodwill": 1850000},
 "structures": ["asset", "stock"]}
```

The result shows which structure nets more on the inputs given, not which to choose. A seller's CPA confirms the allocation and the tax.

## Offer comparison

`POST /offer/compare` · MCP `compare_offers` · 5 credits

Ranks two or more offers by risk-adjusted present value: cash at close, seller notes and earnouts, each discounted at rates you set. Acquestor supplies no discount rates of its own.

Required: `offers` (each with `label`, `headline_price`, `cash_at_close`, and optional `notes` and `earnout`), `note_discount_rate`, `earnout_discount_rate`, `earnout_expected_payout_share`.

```json
{"offers": [
   {"label": "A", "headline_price": 1500000, "cash_at_close": 1200000},
   {"label": "B", "headline_price": 1600000, "cash_at_close": 1000000,
    "notes": [{"amount": 600000, "rate": 0.06, "term_months": 60}]}],
 "note_discount_rate": 0.12, "earnout_discount_rate": 0.25, "earnout_expected_payout_share": 0.5}
```

## Lender lookup

`GET /finance/lenders?naics=238220&state=TX` · MCP `find_sba_lenders` · lookup

Lenders ranked by SBA acquisition loans in a NAICS code and state, from SBA's 7(a) and 504 loan data filtered to changes of ownership, with each lender's loan count, total, median loan, median rate and charge-off rate. Parameters: `naics`, `state`, `fiscal_years` (default 5), `min_loans` (default 3), `limit`.

A list from public data, not a referral and not a prediction of approval.

## Rates

`GET /explore/rates?as_of=2026-10-05` · MCP `get_rates` · lookup

The bank prime rate from the Federal Reserve's H.15, SOFR from the New York Fed, Treasury yields from the Treasury's daily par yield curve, and the SBA 7(a) rate caps by loan size, as of any date.

## Market salary

`GET /value/market-salary?state=TX` · MCP `get_market_salary` · lookup

The BLS OEWS median, 25th and 75th percentile wage for an occupation and area. `soc` defaults to 11-1021, general and operations managers. Pass `area` (an OEWS area code, or `US` for national), `state`, or `county` with `state`.
