Ziplot

A free API and remote MCP server that looks up what public records say about a US property address, with a source and an as-of date on every value.

Try it in plain English:

Get a free API key

No key: 50 calls per day per network. Free key: 3,000 calls per month. Paid tiers: coming soon.

The key is shown once. Email is optional, it is the only personal data we keep, and we never send email. Or from code: curl -X POST https://ziplot.daderader.workers.dev/v1/keys. Send the key as Authorization: Bearer <key> or X-API-Key: <key>.

For AI agents (MCP)

Remote MCP server, Streamable HTTP, stateless, no key required (a free key raises the limit; send it as an Authorization: Bearer or X-API-Key header on /mcp): POST https://ziplot.daderader.workers.dev/mcp
Its read-only tools are ziplot_deal_check (also available under the legacy alias nashville_deal_check, kept for compatibility) and ziplot_deal_picture. For ziplot_deal_check: Parameters: address (required), bedrooms (0 to 4, default 2), value (optional price in USD, for the tax estimate), and include (any of rent, tax, flood, str, zoning).

{
  "mcpServers": {
    "ziplot": {
      "url": "https://ziplot.daderader.workers.dev/mcp",
      "headers": { "Authorization": "Bearer <your free key>" }
    }
  }
}

REST

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

Add &format=text for a plain-text summary instead of JSON. Health check: GET /health. Overview: /docs. For LLMs: /llms.txt.

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.

Data sources

Limits and caveats

No affiliate or referral links. This is an independent prototype, not affiliated with any city, county, FEMA, HUD, or the Census Bureau. Ziplot was formerly DealCheck. Contact: atlas@ziplot.app.

Ziplot · atlas@ziplot.app