Hotel acquisition underwriting — stabilized or bridge-to-perm value-add
Hotel acquisition underwriting — stabilized or bridge-to-perm value-add. Quarterly ADR x occupancy RevPAR build, other/ancillary revenue, PIP capital, construction loan with capitalized interest, permanent loan sized on min(stabilized-value LTV, purchase-pric…
by financial-analyst.ai · discovered, not yet claimed by its owner · updated 2026-10-04
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Hotel acquisition underwriting — stabilized or bridge-to-perm value-add. Quarterly ADR x occupancy RevPAR build, other/ancillary revenue, PIP capital, construction loan with capitalized interest, permanent loan sized on min(stabilized-value LTV, purchase-price LTV, DSCR), and exit. Returns unlevered and levered project IRR and MOIC. Reconciled to a SHA-pinned Excel model — see /hotel-acq/reconciliation.
Tags: finance · private-equity · real-estate · capital-markets · bazaar
Call contract
- Method
- POST
- Input
- json
- Output
- json
- Last paid call
- 2026-10-04
{
"cl_term_months": 1,
"closing_costs_pct": 0.02,
"exit_cap_rate": 0.075,
"exit_costs_pct": 0.03,
"hold_years": 5,
"num_keys": 100,
"opex_pct": 0.35,
"other_revenue_pct": 0.2,
"perm_dscr_min": 1.25,
"perm_ltv": 0.6,
"perm_rate": 0.075,
"perm_term_years": 25,
"purchase_price": 73000000,
"q1_adr": 195,
"q1_occupancy": 0.55,
"q2_adr": 260,
"q2_occupancy": 0.69,
"q3_adr": 450,
"q3_occupancy": 0.85,
"q4_adr": 310,
"q4_occupancy": 0.59,
"stabilized_cap_rate": 0.075,
"start_date": "2026-01-01"
}{
"debt": {
"perm_binding_constraint": "Purchase Price LTV",
"perm_loan": 43800000
},
"exit": {
"perm_payoff": 41114974,
"sale_price": 91411822
},
"summary": {
"levered_irr": 0.0567,
"levered_moic_net": 1.265,
"noi_margin_pct": 43.5,
"revpar": 176.42,
"unlevered_irr": 0.0704,
"unlevered_moic": 1.356
}
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/54214.jsonfor the price and payment options. - Pay. Call
GET https://financial-analyst.ai/hotel-acq/underwrite. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $2 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 1 calls · 1 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $2 | 0xDA158f96C7d02e787EC75858d108366BDa6aAeb3 | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xDA158f96C7d02e787EC75858d108366BDa6aAeb3",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "2000000",
"amountUsd": 2,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"example": {
"debt": {
"perm_binding_constraint": "Purchase Price LTV",
"perm_loan": 43800000
},
"exit": {
"perm_payoff": 41114974,
"sale_price": 91411822
},
"summary": {
"levered_irr": 0.0567,
"levered_moic_net": 1.265,
"noi_margin_pct": 43.5,
"revpar": 176.42,
"unlevered_irr": 0.0704,
"unlevered_moic": 1.356
}
},
"type": "json"
}Example shape — generated from the schema, not a captured live response
{
"debt": {
"perm_binding_constraint": "Purchase Price LTV",
"perm_loan": 43800000
},
"exit": {
"perm_payoff": 41114974,
"sale_price": 91411822
},
"summary": {
"levered_irr": 0.0567,
"levered_moic_net": 1.265,
"noi_margin_pct": 43.5,
"revpar": 176.42,
"unlevered_irr": 0.0704,
"unlevered_moic": 1.356
}
}Examples
curl -X POST 'https://financial-analyst.ai/hotel-acq/underwrite' -H 'Content-Type: application/json' --data '{"cl_term_months":1,"closing_costs_pct":0.02,"exit_cap_rate":0.075,"exit_costs_pct":0.03,"hold_years":5,"num_keys":100,"opex_pct":0.35,"other_revenue_pct":0.2,"perm_dscr_min":1.25,"perm_ltv":0.6,"perm_rate":0.075,"perm_term_years":25,"purchase_price":73000000,"q1_adr":195,"q1_occupancy":0.55,"q2_adr":260,"q2_occupancy":0.69,"q3_adr":450,"q3_occupancy":0.85,"q4_adr":310,"q4_occupancy":0.59,"stabilized_cap_rate":0.075,"start_date":"2026-01-01"}'
# -> 402 Payment Required; read PAYMENT-REQUIRED
# retry the identical request with PAYMENT-SIGNATUREconst res = await fetch("https://financial-analyst.ai/hotel-acq/underwrite", {
"method": "POST",
"headers": {
"content-type": "application/json"
},
"body": "{\"cl_term_months\":1,\"closing_costs_pct\":0.02,\"exit_cap_rate\":0.075,\"exit_costs_pct\":0.03,\"hold_years\":5,\"num_keys\":100,\"opex_pct\":0.35,\"other_revenue_pct\":0.2,\"perm_dscr_min\":1.25,\"perm_ltv\":0.6,\"perm_rate\":0.075,\"perm_term_years\":25,\"purchase_price\":73000000,\"q1_adr\":195,\"q1_occupancy\":0.55,\"q2_adr\":260,\"q2_occupancy\":0.69,\"q3_adr\":450,\"q3_occupancy\":0.85,\"q4_adr\":310,\"q4_occupancy\":0.59,\"stabilized_cap_rate\":0.075,\"start_date\":\"2026-01-01\"}"
});
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
import json
res = httpx.request("POST", "https://financial-analyst.ai/hotel-acq/underwrite", json=json.loads("{\"cl_term_months\":1,\"closing_costs_pct\":0.02,\"exit_cap_rate\":0.075,\"exit_costs_pct\":0.03,\"hold_years\":5,\"num_keys\":100,\"opex_pct\":0.35,\"other_revenue_pct\":0.2,\"perm_dscr_min\":1.25,\"perm_ltv\":0.6,\"perm_rate\":0.075,\"perm_term_years\":25,\"purchase_price\":73000000,\"q1_adr\":195,\"q1_occupancy\":0.55,\"q2_adr\":260,\"q2_occupancy\":0.69,\"q3_adr\":450,\"q3_occupancy\":0.85,\"q4_adr\":310,\"q4_occupancy\":0.59,\"stabilized_cap_rate\":0.075,\"start_date\":\"2026-01-01\"}"))
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- financial-analyst.ai
- Endpoint
- https://financial-analyst.ai/hotel-acq/underwrite
- Machine-readable
/resources/54214.json