MCP Server

PropertyLabs

io.github.AlgoFalgo/propertylabs
Data & Analytics Real Estate Public & reachable MCP 2025-11-25

What this MCP does

Provides public property permit histories, assessment and parcel-related development intelligence, and aggregate company activity snapshots.

get_public_permit
Get a public PropertyLabs permit record
Retrieve a permit using the numeric PropertyLabs canonical permit ID and city slug. Use this for a permit already referenced by a public PropertyLabs /permit/{city}/{id} URL. Returns only fields allowed on the public permit page; applicant and contractor identities remain gated.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['canonical_id', 'city'], 'properties': {'city': {'type': 'string', 'description': 'Required PropertyLabs city slug from the public permit URL.'}, 'canonical_id': {'type': 'string', 'pattern': '^\\d+$', 'description': 'Numeric PropertyLabs canonical permit ID from a public PropertyLabs permit URL.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['canonical_id', 'city', 'found', 'permit', 'propertylabs_url', 'attribution', 'data_note'], 'properties': {'city': {'type': 'string'}, 'found': {'type': 'boolean'}, 'permit': {'anyOf': [{'type': 'object', 'required': ['id', 'city', 'address', 'permit_type', 'work_class', 'activity_date', 'issued_date', 'applied_date', 'status', 'declared_value', 'description', 'community', 'latitude', 'longitude', 'source', 'has_applicant', 'has_contractor'], 'properties': {'id': {'type': 'string'}, 'city': {'type': 'string'}, 'source': {'type': ['string', 'null']}, 'status': {'type': ['string', 'null']}, 'address': {'type': ['string', 'null']}, 'latitude': {'type': ['number', 'null']}, 'community': {'type': ['string', 'null']}, 'longitude': {'type': ['number', 'null']}, 'work_class': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'issued_date': {'type': ['string', 'null']}, 'permit_type': {'type': ['string', 'null']}, 'applied_date': {'type': ['string', 'null']}, 'activity_date': {'type': ['string', 'null']}, 'has_applicant': {'type': 'boolean'}, 'declared_value': {'type': ['number', 'null']}, 'has_contractor': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'data_note': {'type': 'string'}, 'attribution': {'type': 'string'}, 'canonical_id': {'type': 'string'}, 'propertylabs_url': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'string'}, 'detail': {'type': 'object'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}}, 'additionalProperties': True}]}
search_address_permits
Search permits for a public address
Look up the public PropertyLabs permit history for a specific civic address in a specific city. Use this for address-level construction history and activity. This follows the same public field boundary as PropertyLabs address pages and does not return applicant names, contractor names or permit numbers.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['address', 'city'], 'properties': {'city': {'type': 'string', 'description': "Required PropertyLabs city slug, for example 'calgary', 'edmonton', 'toronto' or 'vancouver'."}, 'address': {'type': 'string', 'maxLength': 180, 'minLength': 4, 'description': 'Specific civic address, for example 8882 170 Street NW.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['address', 'city', 'found', 'summary', 'permits', 'propertylabs_url', 'attribution', 'data_note'], 'properties': {'city': {'type': 'string'}, 'found': {'type': 'boolean'}, 'reason': {'type': 'string'}, 'address': {'type': 'string'}, 'partial': {'type': 'boolean'}, 'permits': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'address', 'city', 'community', 'permit_type', 'work_class', 'declared_value', 'issued_date', 'applied_date', 'status', 'description', 'latitude', 'longitude'], 'properties': {'id': {'type': ['string', 'null']}, 'city': {'type': ['string', 'null']}, 'status': {'type': ['string', 'null']}, 'address': {'type': ['string', 'null']}, 'latitude': {'type': ['number', 'null']}, 'community': {'type': ['string', 'null']}, 'longitude': {'type': ['number', 'null']}, 'work_class': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'issued_date': {'type': ['string', 'null']}, 'permit_type': {'type': ['string', 'null']}, 'applied_date': {'type': ['string', 'null']}, 'declared_value': {'type': ['number', 'null']}}, 'additionalProperties': False}}, 'summary': {'type': ['object', 'null'], 'additionalProperties': True}, 'data_note': {'type': 'string'}, 'attribution': {'type': 'string'}, 'propertylabs_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'string'}, 'detail': {'type': 'object'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}}, 'additionalProperties': True}]}
search_company_activity
Get a public company activity snapshot
Get an aggregate, city-scoped sample of permit activity matching a developer, applicant, builder or contractor name. Only applicant/developer/contractor party-field matches are counted. Anonymous results are aggregate only and never return company-matched project addresses, permit numbers, coordinates or raw records.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['company', 'city'], 'properties': {'city': {'type': 'string', 'description': 'Required PropertyLabs city slug. Company activity is never queried across the full archive anonymously.'}, 'company': {'type': 'string', 'maxLength': 160, 'minLength': 2, 'description': 'Developer, applicant, builder or contractor name.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['company', 'city', 'sample_size', 'sample_limit', 'disclosed_value_in_sample', 'disclosed_value_sample_size', 'latest_activity_date_in_sample', 'matched_role_counts_in_sample', 'permit_types_in_sample', 'statuses_in_sample', 'domains_in_sample', 'sample_note', 'attribution', 'source_url', 'data_note'], 'properties': {'city': {'type': 'string'}, 'company': {'type': 'string'}, 'data_note': {'type': 'string'}, 'source_url': {'type': 'string', 'format': 'uri'}, 'attribution': {'type': 'string'}, 'sample_note': {'type': 'string'}, 'sample_size': {'type': 'integer', 'minimum': 0}, 'sample_limit': {'type': 'integer', 'minimum': 1}, 'domains_in_sample': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'count'], 'properties': {'name': {'type': 'string'}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'statuses_in_sample': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'count'], 'properties': {'name': {'type': 'string'}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'permit_types_in_sample': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'count'], 'properties': {'name': {'type': 'string'}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'disclosed_value_in_sample': {'type': 'number', 'minimum': 0}, 'disclosed_value_sample_size': {'type': 'integer', 'minimum': 0}, 'matched_role_counts_in_sample': {'type': 'object', 'required': ['developer', 'applicant', 'contractor'], 'properties': {'applicant': {'type': 'integer', 'minimum': 0}, 'developer': {'type': 'integer', 'minimum': 0}, 'contractor': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'latest_activity_date_in_sample': {'type': ['string', 'null']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'string'}, 'detail': {'type': 'object'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}}, 'additionalProperties': True}]}
Added
search_company_activity
Sept. 17, 2026, 12:40 p.m.
Added
get_public_permit
Sept. 17, 2026, 12:40 p.m.
Added
search_address_permits
Sept. 17, 2026, 12:40 p.m.

Microburbs Australian Property Data

au.com.microburbs/property-data

Provides Australian property, suburb, valuation, sales, rental, zoning, school, risk, geospatial, and census statistics.

DFX Real Estate Intelligence

io.github.Capital-W-Holdings/us-property-parcel-real-estate-debt

Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…

Housing Intel

io.github.pipeworx-io/housing-intel

Analyzes housing markets, affordability, mortgage rates, rental yields, property data, employment, metro demand, and investment s…

Dubai Land

io.github.pipeworx-io/dubai-land

Provides Dubai Land Department data on properties, transactions, rents, valuations, projects, developers, brokers, and districts.

Homecastr Remote MCP

io.github.dhardestylewis/homecastr-remote

Provides U.S. property value forecasts across addresses, parcels, units, ZIP codes, census geographies, and states, along with ho…

Attom

io.github.pipeworx-io/attom

Provides US property search, characteristics, valuations, rental estimates, sales histories, tax assessments, school searches, an…

Worldcastr Remote MCP

io.github.dhardestylewis/worldcastr-remote

Provides probabilistic property and market forecasts at address, parcel, unit, tract, ZIP, county, state, and other geographic le…

Census

io.github.pipeworx-io/census

Provides U.S. Census housing and demographic data including home values, rents, population, homeownership, vacancies, building pe…