Ziplot API and MCP: how it works

You give Ziplot a US street address. It returns what public records say about renting that property, each fact with its source and date.

What you get back

Any US address gets the basic check (FEMA flood zone at the geocoded point, HUD rent benchmark by bedrooms, a rough property-tax estimate). Zoning or address-level eligibility plus short-term-rental (STR) rules (level "full"): Nashville / Davidson County TN; Denver (City and County) CO; Scottsdale (city limits) AZ; Chicago (city limits) IL; New York City (five boroughs) NY; Austin (full- and limited-purpose city) TX; Boise (City of Boise and unincorporated Ada County) ID; Miami (City of Miami, Miami Beach, unincorporated Miami-Dade) FL; Orlando (City of Orlando and unincorporated Orange County) FL; and San Diego (City of San Diego) CA. City-wide STR rules plus an address-level permit lookup ("partial"): Phoenix (city limits) AZ; and Tempe (city limits) AZ. Many more cities, counties and resort areas get STR rules and taxes only, with no address layer ("rules_only"). Elsewhere zoning and STR return not_covered. HOA, condo, deed, and covenant restrictions are never checked. The full, current market list with levels and verified dates: GET /v1/coverage.

Status values

Status values. Top-level status: ok = every evaluated section answered; needs_review = partial answer, at least one section needs a person or a retry (read each section's status and the warnings); unavailable = no section could be answered (address not found, or every source failed); out_of_scope = no evaluated section applies at this address. Section status uses the same words plus not_covered (this area is not evaluated). str.status follows the two permit determinations: new_non_owner_occupied_permit.value (allowed, not_allowed, needs_review, out_of_scope, not_covered, unavailable) and owner_occupied_permit.value (possible, not_allowed, needs_review, out_of_scope, not_covered, unavailable). Both firm = ok, one firm and one not = needs_review, none usable = unavailable. Exception: an owner_occupied_permit of possible that rests only on an active city STR license (owner_occupied_permit.basis.kind active_city_license, Denver and Scottsdale) is not a firm yes, so str.status stays needs_review there. str.supporting_data_status appears when side lookups such as permit counts or building lists were incomplete.

Call it from code (REST)

curl "https://ziplot.daderader.workers.dev/v1/deal-check?address=321%2050th%20Ave%20N%2C%20Nashville%2C%20TN&bedrooms=3"

Use it from an AI agent (MCP)

Remote MCP server, Streamable HTTP, no key required: POST https://ziplot.daderader.workers.dev/mcp

{ "mcpServers": { "ziplot": { "url": "https://ziplot.daderader.workers.dev/mcp" } } }

Read-only tools: ziplot_deal_check, with the same arguments as the REST call, and ziplot_deal_picture (address and price required, plus the same optional deal inputs as /v1/deal-picture). nashville_deal_check is a legacy alias of ziplot_deal_check (same tool, kept for compatibility; deprecated: use ziplot_deal_check).

Limits and cost

Free, no key needed: 50 lookups per day per network without a key. With a free API key (POST /v1/keys, shown once): 3,000 lookups per month. MCP initialize and tools/list don't count. Each MCP tools/call counts as 1 lookup, also inside a JSON-RPC batch (at most 25 tools/call per batch), including an answer from the cache; like bulk, a batch runs at most 1 new (uncached) lookup per request, and the other uncached calls return a tool error saying to re-send them (not counted). A request rejected for a bad or missing address or argument (HTTP 400, or an MCP tool input error), or one that ends in an upstream error (HTTP 5xx), is not counted. Answers are cached for up to 6 hours. No paid plans are live.

Data sources

US Census Geocoder and ACS; FEMA National Flood Hazard Layer; HUD Small Area FMRs (This product uses the HUD User Data API but is not endorsed or certified by HUD User.); city and county open data and STR codes for the covered markets. No owner names or contact details are requested or returned. Usage is logged anonymously; IP addresses and looked-up street addresses are not stored.

Informational summary of public records; not legal, tax, insurance, or lending advice. See the home page for the full notes and sources.

Ziplot · atlas@ziplot.app