{"openapi":"3.1.0","info":{"title":"Underwrite API","version":"1.0.0","description":"Versioned access to Underwrite's deterministic engine. Free calculators are public. Deal tools, saved deals, the Truth Score, and share links require Underwrite Core."},"servers":[{"url":"https://getunderwrite.com"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"API key (uwk_) or OAuth access token (uwo_)."},"oauth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://getunderwrite.com/oauth/authorize","tokenUrl":"https://getunderwrite.com/oauth/token","scopes":{"underwrite:core":"Run Core tools for the signed-in account."}}}}},"schemas":{"Cited":{"type":"object","required":["value","unit","source"],"properties":{"value":{},"unit":{"type":"string"},"source":{"type":"object","required":["file","line","symbol"],"properties":{"file":{"type":"string"},"line":{"type":"integer"},"symbol":{"type":"string"}}}}}}},"paths":{"/api/v1/calculators/{slug}":{"post":{"operationId":"calculate","summary":"Public calculator","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","enum":["cap-rate","dscr","cash-on-cash","debt-yield","breakeven-occupancy","debt-service"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Cited result."},"400":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/underwrite":{"post":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"underwriteDeal","summary":"Full returns, DSCR, and verdict","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deal":{"type":"object","description":"Income, expenses or stated net NOI, acquisition, growth, and debt. Same shape as the underwrite_deal tool."}},"required":["deal"]}}}},"responses":{"200":{"description":"Cited engine result."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/sensitivity":{"post":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"runSensitivity","summary":"Sensitivity tables","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deal":{"type":"object","description":"Income, expenses or stated net NOI, acquisition, growth, and debt. Same shape as the underwrite_deal tool."}},"required":["deal"]}}}},"responses":{"200":{"description":"Cited sensitivity tables."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/stress":{"post":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"runStressTest","summary":"Stress scenarios","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deal":{"type":"object","description":"Income, expenses or stated net NOI, acquisition, growth, and debt. Same shape as the underwrite_deal tool."}},"required":["deal"]}}}},"responses":{"200":{"description":"Cited stress results."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/om":{"post":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"checkOm","summary":"Truth Score","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deal":{"type":"object","description":"Income, expenses or stated net NOI, acquisition, growth, and debt. Same shape as the underwrite_deal tool."},"offering":{"type":"object"}},"required":["deal","offering"]}}}},"responses":{"200":{"description":"Truth Score and rows."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/deals":{"get":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"listDeals","summary":"List saved deals","responses":{"200":{"description":"Deal names and ids."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/deals/{id}":{"get":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"getDeal","summary":"Get one saved deal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved deal and a fresh engine pass."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/share":{"post":{"security":[{"bearer":[]},{"oauth":["underwrite:core"]}],"operationId":"createShareLink","summary":"Create a read-only share link","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Share link."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/mcp":{"post":{"operationId":"mcp","summary":"Remote MCP, streamable HTTP","description":"JSON-RPC for MCP clients. Resource: https://getunderwrite.com/api/v1/mcp. Public calculator tools need no credential. Every other tool requires Underwrite Core.","responses":{"200":{"description":"JSON-RPC result."},"401":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"402":{"description":"Request refused.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/v1/openapi.json":{"get":{"operationId":"openApi","summary":"This document","responses":{"200":{"description":"OpenAPI document."}}}}}}