Building permits by address for a growing list of US cities and counties, from city open data.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Look up one building permit by its city permit number: work, date, status, cost and address.
Look up one building permit by its city permit number: work, date, status, cost and address.
| Argument | Type | Description |
|---|---|---|
| city* | string | |
| permit_id* | string |
{
"type": "object",
"required": [
"city",
"permit_id"
],
"properties": {
"city": {
"type": "string"
},
"permit_id": {
"type": "string"
}
},
"additionalProperties": false
}List the US cities and counties with building permit data, with each one's slug for the other tools.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use this tool when someone asks which building, remodeling or demolition permits exist at an address, whether a house had permitted work, or what is permitted next door. It returns the building permits on record at that street address in a supported city or county (Los Angeles, New York City, Chicago, San Francisco, Seattle, Austin, Cincinnati, Mesa, New Orleans, Fort Worth, Columbus, San Diego, Detroit, Nashville, Raleigh, Phoenix, San Antonio, Minneapolis, Montgomery County, Boston, Pittsburgh, Washington, Denver, Los Angeles County, Wake County, Miami, Miami-Dade County, Hillsborough County, Cape Coral, Port St. Lucie, Alachua County, Kansas City, Baltimore, Sacramento County, Memphis, Las Vegas, Tacoma, Boulder, Cambridge, Somerville, Marin County, Pierce County, Cary, Cleveland, Arlington, Naperville, Tempe, Anaheim, Riverside), newest first and at most 200: type of work, description, date, status and reported cost, from city and county open data checked around the clock. count is how many are listed; when capped is true there are more, and total gives the city's full count when it was read (else null). history_limited means the city's full history didn't load, so the list is our copy only. The address can be typed loosely (a missing N or S, "Drive" for "Dr", a trailing city, state or ZIP, a unit): it is matched to the spelling the city files. When more than one address matches (N and S Holly Dr), the answer lists them in did_you_mean; ask which one is meant and call again with it.
| Argument | Type | Description |
|---|---|---|
| city* | string | City slug, e.g. los-angeles, new-york, chicago |
| address* | string | Street address with house number, e.g. '867 N Iliff St'. New York: include the borough, e.g. '180 West Street, Brooklyn'. |
Use this tool when someone asks what is being built near an address or a place: new buildings next door, construction on the block, what's permitted around a home they might buy or rent. Give a city and street address, or a latitude and longitude. The tool returns building permits within a radius (default 400 meters, about a quarter mile) issued since a date (default about six months back), newest first, each with distance in meters and compass direction from the point. It covers the last 24 months of city open data. counts.total is exact even when the list is capped (null if the count failed). It matches a loosely typed address the same way permits_at_address does. If more than one address matches, the answer has found set to false and lists the addresses in did_you_mean.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude, used instead of city and address. |
| lon | number | Longitude, used instead of city and address. |
| city | string | City slug, e.g. chicago. Needed with address; optional with lat and lon. |
| limit | integer | Most permits to list, default 50. |
| since | string | Earliest date, YYYY-MM-DD, or 6m, 1y, 2y. Default 6m (the first of the month five months back). |
| address | string | Street address with house number, e.g. '2443 W Warren Blvd'. |
Use when someone asks what is being built in their neighborhood or ZIP code. Returns the newest building permits in a supported city or county, optionally within one ZIP code.
| Argument | Type | Description |
|---|---|---|
| zip | string | 5-digit ZIP code |
| city* | string | |
| limit | integer |
{
"type": "object",
"required": [
"city"
],
"properties": {
"zip": {
"type": "string",
"description": "5-digit ZIP code"
},
"city": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}Use when someone asks about variances, conditional uses, rezonings or zoning appeals near an address: what a neighbor asked the city for, or whether a hearing is coming up. Covers Boston, Washington DC, San Francisco and Seattle. Give a city and street address, or a latitude and longitude. Each case has the city's own status words, our plain status label (Filed, In review, Hearing scheduled, Approved, Approved with conditions, Denied, Withdrawn or Other), the hearing date when the city publishes one, and a link to the city's case record. We never infer an outcome the city's record doesn't state. Owner and applicant names are left out.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude, used instead of city and address. |
| lon | number | Longitude, used instead of city and address. |
| city | string | boston, washington-dc, san-francisco or seattle. Needed with address. |
| limit | integer | Most cases to list, default 50. |
| since | string | Earliest filing, hearing or decision date, YYYY-MM-DD, or 6m, 1y, 2y. Default 1y. |
| address | string | Street address with house number, e.g. '78 Pearl St'. |
| radius_m | integer |
{
"type": "object",
"required": [
"city",
"address"
],
"properties": {
"city": {
"type": "string",
"description": "City slug, e.g. los-angeles, new-york, chicago"
},
"address": {
"type": "string",
"description": "Street address with house number, e.g. '867 N Iliff St'. New York: include the borough, e.g. '180 West Street, Brooklyn'."
}
},
"additionalProperties": false
}| radius_m |
| integer |
| Radius in meters, default 400. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, used instead of city and address."
},
"lon": {
"type": "number",
"description": "Longitude, used instead of city and address."
},
"city": {
"type": "string",
"description": "City slug, e.g. chicago. Needed with address; optional with lat and lon."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Most permits to list, default 50."
},
"since": {
"type": "string",
"description": "Earliest date, YYYY-MM-DD, or 6m, 1y, 2y. Default 6m (the first of the month five months back)."
},
"address": {
"type": "string",
"description": "Street address with house number, e.g. '2443 W Warren Blvd'."
},
"radius_m": {
"type": "integer",
"maximum": 1600,
"minimum": 50,
"description": "Radius in meters, default 400."
}
},
"additionalProperties": false
}| Radius in meters, default 400. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, used instead of city and address."
},
"lon": {
"type": "number",
"description": "Longitude, used instead of city and address."
},
"city": {
"type": "string",
"description": "boston, washington-dc, san-francisco or seattle. Needed with address."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Most cases to list, default 50."
},
"since": {
"type": "string",
"description": "Earliest filing, hearing or decision date, YYYY-MM-DD, or 6m, 1y, 2y. Default 1y."
},
"address": {
"type": "string",
"description": "Street address with house number, e.g. '78 Pearl St'."
},
"radius_m": {
"type": "integer",
"maximum": 1600,
"minimum": 50,
"description": "Radius in meters, default 400."
}
},
"additionalProperties": false
}