Analyze The Deal · API & MCP
Run ATD's deal-analysis engine programmatically. You get the same verdict, tier, and 3 scenario money model the web app produces, over the Model Context Protocol (MCP), so any MCP-capable AI tool or agent (Claude, Cursor, your own) can analyze a deal in one call.
Overview
The ATD API is delivered as an MCP server at https://tools.analyzethedeal.com/api/mcp. It exposes four tools: list the supported strategies, run an analysis, run a deep market report, and fetch a past run. A call returns a structured verdict (ACQUIRE / PILOT / PASS), a tier from S to D, and conservative / realistic / stretch scenarios (Y1 net, ROI, payback, ADR, occupancy).
Accuracy & honesty. Numbers come from ATD's underwriting engine plus live research; researched inputs carry a source and anestimated flag, and a preliminary run is markedmeta.partial. The API never fabricates a comp or a figure. Out of credits returns a clear error and a top up link, never a made up result.
Access. API / MCP access is a Team-tier feature. Create an API key in your account, then point your MCP client at the server. Every call debits the same credits as the web app.
Authentication
Every request authenticates with an API key in the Authorization header:
Keys start with atd_sk_ and are secret. Treat them like a password. Create and revoke keys in Account → API & MCP access. A key is shown once at creation and stored only as a hash; if you lose it, revoke it and create a new one (that's how you rotate; there is no separate rotate step). Keys can be revoked anytime by their owner. Never commit a key or put it in client-side code.
Getting started
1. In the web app, go to Account → API & MCP access and Generate a key (Team tier). Copy it. It's shown once. 2. Point an MCP client at the server (see MCP integration), or call it directly. MCP uses JSON-RPC 2.0 over Streamable HTTP; the raw calls below are illustrative. For production, prefer an MCP client or the official @modelcontextprotocol/sdk.
Your first call: analyze_deal (raw JSON-RPC):
Example response (structuredContent):
If a run takes longer than a moment, the response is { "status": "running", "dealId": "…" }. Poll get_deal with that dealId in ~1 minute.
API reference
Four MCP tools. Credit costs are the same as the web app; internal accounts run uncharged.
list_strategies
No chargeList the supported analysis strategies and the inputs each needs.
analyze_deal
1 credit (a recent cached run is free)Run a full analysis and get the verdict, tier, and 3 scenario money model. Team tier; rate limited 30/min.
run_deep_strfax
5 credits (Pro tier; refunded if the run fails)Run the deep market report for a finished analysis: live comps, regulatory + landlord carfax, rate card. Returns 'running'; poll get_deal for the deepReport.
get_deal
No chargeFetch a past run by id (and its deep report if present). You can only read your own deals.
Public read feeds (no key)
The published investor inventory is also available unauthenticated (read only, field filtered, no PII): GET /api/public/units and GET /api/public/deals. These power deals.revarity.com and are safe to consume from a browser.
MCP integration
This is the fastest path: connect ATD to any MCP capable AI tool and it can analyze deals in conversation. Server: https://tools.analyzethedeal.com/api/mcp (Streamable HTTP). Auth is youratd_sk_ key as a Bearer token.
Claude Desktop (via the mcp-remote bridge, which injects the auth header):
Cursor (native remote MCP with headers):
Once connected, tell the agent: “Analyze 500 S Ervay St, Dallas TX, 1bd/1ba, 1083 sqft, $2,000 rent, as a short term rental.” It calls analyze_deal, gets the verdict + money model, and can then call run_deep_strfax for the deep report.
Rate limits & credits
analyze_deal&run_deep_strfax: 30 requests / minute per account. Exceeding returns a clear “Rate limit reached (30/min)” error.list_strategies&get_deal: unmetered.- Credits:
analyze_deal= 1 (a recent cached run is free);run_deep_strfax= 5 (refunded if it fails); the other two are free. - Out of credits → a clear error with a top up link (
/account), never a fabricated result.
Errors
A bad or missing API key is rejected at the transport with HTTP 401. Tool-level problems come back as an MCP error result: isError: true with a plain text message (not an HTTP status). Common messages:
| Message | Fix |
|---|---|
HTTP 401 (transport) | Missing/invalid key. Check the Authorization header and that the key isn't revoked. |
Unauthorized. Generate an API key… | The key resolved to no account. Create a key in Account → API & MCP access. |
API / MCP access is a Team tier feature. | Upgrade to Team to use analyze_deal / run_deep_strfax. |
Rate limit reached (30/min). | Pause briefly and retry; batch fewer calls per minute. |
Out of credits (+ top up link) | Top up at /account, then retry. |
Invalid inputs. <field: message> | Fix the flagged field(s); see analyze_deal's input schema. |
Not found. | get_deal: the dealId is unknown, expired, or not yours. |
Changelog
- 2026-06-19 · Response
schemaVersionintroduced; every tool payload is versioned so future changes don't silently break agents. Four tools live:list_strategies,analyze_deal,run_deep_strfax,get_deal.
Response shapes are versioned via schemaVersion (currently 2026-06-19). Pin to it and treat additive fields as forward-compatible.