Koskamo

NYC Property Facts MCP

A public, no-auth MCP server providing AI agents with access to NYC property records including permits, violations, sales, and owner data for all 858,284 tax lots, sourced from NYC Open Data.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

NYC Property Facts MCP logo, by NYC Property FactsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by NYC Property Facts
MCP endpoint (Streamable HTTP)
https://nycpropertyfacts.com/mcp
Vendor documentation

What you can do with it

  • Lookup property facts by address or BBL
  • List open DOB, ECB, or HPD violations
  • Retrieve sales history and deed records
  • Find owner of record information

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
nyc-property-facts 0.2.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Facts about New York City properties (tax lot / BBL), compiled from NYC Open Data: owner of record, building details, tax assessment, ACRIS deeds, DOB jobs/permits/violations, ECB and HPD violations, OATH tickets, HPD complaints and 311 requests. Start with lookup_property(address). A confirmed result has a plain-English summary, canonical URL, data_as_of dates and how_to_cite — quote and cite it. If needs_confirmation is true, ask the user to choose a candidate BBL before requesting facts; never describe a nearby suggestion as the requested property. Apartment searches resolve to the tax lot, not an independently verified apartment record. Independent site. Data from NYC Open Data; not affiliated with the City of New York.

Tools

5 advertised

lookup_property — Look up a NYC property by address
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolve a free-text NYC address to its tax lot (BBL) and return the property facts: summary, owner of record, building, assessment, last priced deed and open-item counts. Returns the best match with a 0-1 confidence, a plain-English confidence_explanation, a machine-readable match_type, the HTML/Markdown/JSON URLs and up to 4 alternatives. Requires "address". Use get_property for a known BBL/BIN.

lookup_property input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "zip": {
      "type": "string",
      "description": "Optional 5-digit ZIP, sent as text"
    },
    "address": {
      "type": "string",
      "description": "NYC street address, e.g. \"98 Grattan St, Brooklyn\". Units (Apt 3B), borough and ZIP are optional; a 10-digit BBL or 7-digit BIN also works."
    },
    "borough": {
      "type": "string",
      "description": "Optional: Manhattan, Bronx, Brooklyn, Queens or Staten Island"
    }
  }
}
lookup_property annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_property — Get a NYC property by BBL or BIN
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the full fact sheet for a tax lot by 10-digit BBL (borough-block-lot, e.g. 3030090016) or by 7-digit DOB building number (BIN). Requires "bbl" or "bin" (if both are sent, bbl is used).

get_property input schema
{
  "type": "object",
  "properties": {
    "bbl": {
      "type": "string",
      "description": "10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text. Required unless \"bin\" is given."
    },
    "bin": {
      "type": "string",
      "description": "7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text. Required unless \"bbl\" is given."
    }
  }
}
get_property annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_open_issues — List open violations, open DOB jobs and unpaid tickets
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every open item for a property: DOB jobs with a permit issued but no sign-off, active DOB and ECB violations, open HPD violations, and OATH tickets with an unpaid balance or a pending hearing. Each record has status, dates, a plain-English description and its source dataset. Requires one of "address", "bbl" or "bin".

list_open_issues input schema
{
  "type": "object",
  "properties": {
    "bbl": {
      "type": "string",
      "description": "10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text."
    },
    "bin": {
      "type": "string",
      "description": "7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text."
    },
    "zip": {
      "type": "string",
      "description": "Optional 5-digit ZIP, sent as text"
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum records per section"
    },
    "address": {
      "type": "string",
      "description": "NYC street address, e.g. \"98 Grattan St, Brooklyn\". Units (Apt 3B), borough and ZIP are optional; a 10-digit BBL or 7-digit BIN also works."
    },
    "borough": {
      "type": "string",
      "description": "Optional: Manhattan, Bronx, Brooklyn, Queens or Staten Island"
    }
  }
}
list_open_issues annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_sales_history — Deed / sales history (ACRIS)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Deeds recorded with the NYC City Register (ACRIS) for a property: date, stated price (0 = non-market transfer), grantors, grantees, and whether the deed covers several lots. Requires one of "address", "bbl" or "bin".

get_sales_history input schema
{
  "type": "object",
  "properties": {
    "bbl": {
      "type": "string",
      "description": "10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text."
    },
    "bin": {
      "type": "string",
      "description": "7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text."
    },
    "zip": {
      "type": "string",
      "description": "Optional 5-digit ZIP, sent as text"
    },
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum deeds returned"
    },
    "address": {
      "type": "string",
      "description": "NYC street address, e.g. \"98 Grattan St, Brooklyn\". Units (Apt 3B), borough and ZIP are optional; a 10-digit BBL or 7-digit BIN also works."
    },
    "borough": {
      "type": "string",
      "description": "Optional: Manhattan, Bronx, Brooklyn, Queens or Staten Island"
    }
  }
}
get_sales_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search_properties — Search NYC properties by street and/or ZIP
Advertised by the server during the last successful anonymous check.
Advertised read-only

List tax lots on a street (prefix match, e.g. "Grattan St") and/or in a ZIP code, with address, building class, units, owner of record and open-item count. Requires "street" and/or "zip"; borough and house_number only narrow the search. Paginate with limit/offset; total is the number of matches.

search_properties input schema
{
  "type": "object",
  "properties": {
    "zip": {
      "type": "string",
      "description": "5-digit ZIP, sent as text. Required unless \"street\" is given."
    },
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 200,
      "minimum": 1
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "minimum": 0
    },
    "street": {
      "type": "string",
      "description": "Street name, e.g. \"Grattan St\" or \"5th Ave\". Required unless \"zip\" is given."
    },
    "borough": {
      "type": "string",
      "description": "Optional borough name"
    },
    "house_number": {
      "type": "string",
      "description": "Optional house number, sent as text"
    }
  }
}
search_properties annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
376 ms
95th percentile latency
376 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 376 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http nyc-property-facts-mcp https://nycpropertyfacts.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add nyc-property-facts-mcp --url https://nycpropertyfacts.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable nyc-property-facts-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "nyc-property-facts-mcp": {
      "url": "https://nycpropertyfacts.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "nyc-property-facts-mcp": {
      "type": "streamableHttp",
      "url": "https://nycpropertyfacts.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start nyc-property-facts-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "nyc-property-facts-mcp": {
      "type": "http",
      "url": "https://nycpropertyfacts.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http nyc-property-facts-mcp https://nycpropertyfacts.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "nyc-property-facts-mcp": {
      "url": "https://nycpropertyfacts.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "nyc-property-facts-mcp": {
      "serverUrl": "https://nycpropertyfacts.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like NYC Property Facts MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.