Skip to main content
Glama

Server Details

Public records for any NYC property by address or BBL: permits, violations, sales, owners.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

The five tools mostly target distinct tasks: identifier-based fact retrieval, address resolution, street/ZIP search, sales history, and open issues. The only meaningful overlap is between get_property and lookup_property, but the descriptions clearly distinguish known-BBL/BIN usage from free-text address lookup.

Naming Consistency4/5

All tools use snake_case with a verb-first pattern: get_, list_, lookup_, and search_. The mix of get_property and lookup_property introduces mild synonym variation, but the convention remains predictable and readable.

Tool Count5/5

Five tools is well scoped for a focused NYC property-facts server. Each tool has a clear role, and there is no obvious filler.

Completeness4/5

The surface covers the main read-only lifecycle: resolve address, fetch by BBL/BIN, search streets/ZIPs, view sales history, and inspect open issues. Minor gaps may exist for deeper standalone property attributes or broader related datasets, but core workflows are covered.

Available Tools

5 tools
get_propertyGet a NYC property by BBL or BINA
Read-onlyIdempotent
Inspect

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).

NameRequiredDescriptionDefault
bblNo10-digit BBL (borough-block-lot), e.g. "3030090016". Send it as text. Required unless "bin" is given.
binNo7-digit DOB building number (BIN), e.g. "3070696". Send it as text. Required unless "bbl" is given.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile: readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds the bbl/bin precedence rule, but it does not describe return format, error behavior, or any other behavioral traits beyond what the annotations and schema already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no wasted language. The primary purpose and identifier requirement are front-loaded, and the precedence rule follows naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only lookup, the description plus annotations and fully covered schema give enough information to invoke it correctly. The remaining minor gap is that it does not clarify the relationship to lookup_property or specify what the 'full fact sheet' contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and the schema already explains both parameters and their formats. The description adds meaningful information beyond the schema by stating the precedence rule: if both bbl and bin are sent, bbl is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: return the full fact sheet for a tax lot, identified by BBL or BIN. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling lookup_property tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the input condition that either bbl or bin is required and that bbl wins if both are sent. However, it does not explain when to use this tool instead of siblings such as lookup_property or search_properties.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sales_historyDeed / sales history (ACRIS)A
Read-onlyIdempotent
Inspect

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".

NameRequiredDescriptionDefault
bblNo10-digit BBL (borough-block-lot), e.g. "3030090016". Send it as text.
binNo7-digit DOB building number (BIN), e.g. "3070696". Send it as text.
zipNoOptional 5-digit ZIP, sent as text
limitNoMaximum deeds returned
addressNoNYC 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.
boroughNoOptional: Manhattan, Bronx, Brooklyn, Queens or Staten Island

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description adds genuine domain behavior the annotations cannot: the data source (ACRIS), the meaning of price = 0 (non-market transfer), and the multi-lot deed flag. It stops short of disclosing ordering, pagination, or what an empty result means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first front-loads what is returned, the second front-loads the input constraint. No filler, no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully compensates by listing returned fields, and it covers the key input constraint for a 6-parameter tool. Gaps remain around result ordering, the 25/200 limit behavior, and how deduplication across multiple lots works.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description earns an extra point by stating the at-least-one-of address/bbl/bin constraint, which the schema's empty required array does not express. It does not add format or interaction detail for limit, zip, or borough beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (deeds recorded with NYC ACRIS for a property) and enumerates the returned fields (date, price, grantors, grantees, multi-lot flag), which clearly separates it from the sibling property-lookup tools. An agent can identify the resource and result shape from the first clause alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Requires one of address, bbl or bin' sentence gives the agent an input-selection rule, but there is no explicit when-to-use guidance, no mention of when to prefer get_property or search_properties instead, and no exclusions. Usage is only implicitly conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_open_issuesList open violations, open DOB jobs and unpaid ticketsA
Read-onlyIdempotent
Inspect

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".

NameRequiredDescriptionDefault
bblNo10-digit BBL (borough-block-lot), e.g. "3030090016". Send it as text.
binNo7-digit DOB building number (BIN), e.g. "3070696". Send it as text.
zipNoOptional 5-digit ZIP, sent as text
limitNoMaximum records per section
addressNoNYC 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.
boroughNoOptional: Manhattan, Bronx, Brooklyn, Queens or Staten Island

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description adds genuinely new behavioral detail by defining the 'open' predicate for each dataset and describing the shape of each returned record (status, dates, plain-English description, source dataset). It stops short of noting result volume, section-level paging behavior, or how conflicting identifiers are resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The scope and category enumeration come first, and the hard input requirement is placed last as a gate, which is exactly where an agent needs it before constructing a call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter read-only aggregation tool with annotations and no output schema, the description covers the necessary ground: what counts as open, what a record contains, and the identifier requirement. The remaining gaps (whether multiple identifiers are ANDed, how the per-section limit affects total results) are minor but not fully closed by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a constraint the schema does not express: although the schema marks zero parameters required, the prose states that one of address, bbl or bin must be supplied. That is real meaning beyond the structured fields, though it does not clarify precedence when several identifiers are sent or what zip/borough/limit do in combination.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('List') plus a precisely scoped resource ('every open item for a property') and then enumerates the exact categories returned: DOB jobs without sign-off, active DOB/ECB and HPD violations, and OATH tickets unpaid or pending hearing. That level of enumeration makes it unmistakable against siblings like get_property or search_properties, which do not aggregate open compliance items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence establishes the entry condition ('Requires one of "address", "bbl" or "bin"'), and the definition of 'open' is spelled out per category, so an agent knows exactly which situation this tool serves. It does not name an alternative tool or state when to prefer get_property over this, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_propertyLook up a NYC property by addressA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
zipNoOptional 5-digit ZIP, sent as text
addressYesNYC 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.
boroughNoOptional: Manhattan, Bronx, Brooklyn, Queens or Staten Island

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds useful return behavior: best match with 0-1 confidence, confidence_explanation, match_type, HTML/Markdown/JSON URLs, and up to 4 alternatives. It does not explicitly state no-match behavior, but the behavioral disclosure is otherwise strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core resolution behavior and return summary, then immediately gives the sibling alternative. Both sentences carry useful information with no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what comes back, and it does so: property facts, confidence, explanation, match type, URLs, and alternatives. Combined with full schema coverage and clear annotations, an agent has enough context to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents address, zip, and borough. The description repeats that address is required but adds no additional parameter semantics beyond what the schema provides, making the baseline score appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: resolve a free-text NYC address to its tax lot (BBL) and return property facts. It clearly distinguishes this from get_property, which is for a known BBL/BIN, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the required input (address) and names the alternative for known identifiers: 'Use get_property for a known BBL/BIN.' This gives a clear when-to-use condition and an explicit when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesSearch NYC properties by street and/or ZIPA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
zipNo5-digit ZIP, sent as text. Required unless "street" is given.
limitNo
offsetNo
streetNoStreet name, e.g. "Grattan St" or "5th Ave". Required unless "zip" is given.
boroughNoOptional borough name
house_numberNoOptional house number, sent as text

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and closed-world, and the description adds real behavioral context on top: prefix-match semantics for street, pagination via limit/offset, and the meaning of the 'total' field. It doesn't discuss empty-result or error behavior, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with zero filler: the first front-loads what is returned and how matching works, the second covers requirements and pagination. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by enumerating the returned fields (address, building class, units, owner of record, open-item count) and explaining the total count. Requirements, narrowing behavior, and pagination are all covered, so nothing critical is missing for a 6-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 67% schema coverage, the schema already documents the street/zip requirement rule and both examples. The description's genuinely additive piece is 'prefix match' for street and the narrowing semantics of borough/house_number; limit and offset are restated rather than explained (no max or default mentioned). Baseline-plus for the prefix detail, but not rich parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List tax lots') plus the scoping dimensions (street and/or ZIP) and even previews the returned fields. It is clear what the tool does, though it never differentiates itself from sibling lookup_property or get_property, which an agent must infer from the list-vs-single distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the selection constraint: 'Requires "street" and/or "zip"; borough and house_number only narrow the search,' which tells the agent exactly which parameters are mandatory vs refining. It stops short of naming an alternative tool for single-lot lookups, so no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedget_property2 fields changed
      • changedInput schema / properties / bbl / description
        Previous value: -"10-digit BBL, e.g. 3030090016"New value: +"10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text. Required unless \"bin\" is given."
      • changedInput schema / properties / bin / description
        Previous value: -"7-digit BIN"New value: +"7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text. Required unless \"bbl\" is given."
    • Changedget_sales_history5 fields changed
      • changedInput schema / properties / bbl / description
        Previous value: -"10-digit BBL (instead of address)"New value: +"10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text."
      • addedInput schema / properties / bin
        Added value: +{
        +  "description": "7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text.",
        +  "type": "string"
        +}
      • addedInput schema / properties / borough
        Added value: +{
        +  "description": "Optional: Manhattan, Bronx, Brooklyn, Queens or Staten Island",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / description
        Added value: +"Maximum deeds returned"
      • addedInput schema / properties / zip
        Added value: +{
        +  "description": "Optional 5-digit ZIP, sent as text",
        +  "type": "string"
        +}
    • Changedlist_open_issues5 fields changed
      • changedInput schema / properties / bbl / description
        Previous value: -"10-digit BBL (instead of address)"New value: +"10-digit BBL (borough-block-lot), e.g. \"3030090016\". Send it as text."
      • addedInput schema / properties / bin
        Added value: +{
        +  "description": "7-digit DOB building number (BIN), e.g. \"3070696\". Send it as text.",
        +  "type": "string"
        +}
      • addedInput schema / properties / borough
        Added value: +{
        +  "description": "Optional: Manhattan, Bronx, Brooklyn, Queens or Staten Island",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / description
        Added value: +"Maximum records per section"
      • addedInput schema / properties / zip
        Added value: +{
        +  "description": "Optional 5-digit ZIP, sent as text",
        +  "type": "string"
        +}
    • Changedlookup_property1 field changed
      • changedInput schema / properties / zip / description
        Previous value: -"Optional 5-digit ZIP"New value: +"Optional 5-digit ZIP, sent as text"
    • Changedsearch_properties3 fields changed
      • addedInput schema / properties / house_number / description
        Added value: +"Optional house number, sent as text"
      • changedInput schema / properties / street / description
        Previous value: -"Street name, e.g. \"Grattan St\" or \"5th Ave\""New value: +"Street name, e.g. \"Grattan St\" or \"5th Ave\". Required unless \"zip\" is given."
      • changedInput schema / properties / zip / description
        Previous value: -"5-digit ZIP"New value: +"5-digit ZIP, sent as text. Required unless \"street\" is given."
  2. 5 tool updates
    • First observedget_property
    • First observedget_sales_history
    • First observedlist_open_issues
    • First observedlookup_property
    • First observedsearch_properties

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables apartment hunters to look up any NYC address and pull its public records—HPD housing violations, bed bug filings, 311 heat/noise complaints, and DOB complaints—plus a plain-English red-flag verdict with the top concerns. Read-only, requires no API keys, and works over stdio in any MCP client.
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for NYC real estate due diligence. Lets Claude query 22+ NYC public-record databases — DOB/HPD/ECB violations, ACRIS deeds, DOF sales, 311 complaints, FDNY incidents, NYPD complaints, marshal evictions, PLUTO, rent stabilization — in plain English.
    18
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query NYC public records through a hosted MCP server, supporting civic workflows such as property research, business evaluation, public money tracking, and influence mapping.
    9 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources