NSW development application data: search, nearby and detail tools. Paid per call via x402 (USDC).
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.
Get the full record of one of the NSW complying development certificates (CDCs) by its Planning Portal CDC number. Returns every location with lot and plan, all development types, submission, lodgement, determination and exhibition dates, cost, dwellings, storeys, lots and the remaining source fields. Take CDC numbers from search_applications or search_nearby_applications. An unknown number returns not_found and is not charged. Costs $0.005 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
Planning Portal CDC number (e.g. CDC-388198)
Get the full record of one of the NSW complying development certificates (CDCs) by its Planning Portal CDC number. Returns every location with lot and plan, all development types, submission, lodgement, determination and exhibition dates, cost, dwellings, storeys, lots and the remaining source fields. Take CDC numbers from search_applications or search_nearby_applications. An unknown number returns not_found and is not charged. Costs $0.005 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| cdc* | string | number | Planning Portal CDC number (e.g. CDC-388198) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cdc"
],
"properties": {
"cdc": {
"type": [
"string",
"number"
],
"description": "Planning Portal CDC number (e.g. CDC-388198)"
}
},
"additionalProperties": false
}Get free counts of NSW complying development certificates (CDCs) by status, application type and council. Call this first: it shows how many complying development certificates (CDCs) are loaded, the exact council names the other tools accept, and the status and application type values. Optional filters narrow the counts. Counts refresh every 6 hours while the history backfill extends coverage back to 2018. Free, no payment needed. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| status | string | number | Application status, exact match (e.g. Approved) |
| council | string | number | Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta) |
| application_type | string | number | Application type, exact match (e.g. Complying Development Certificate Application) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"type": [
"string",
"number"
],
"description": "Application status, exact match (e.g. Approved)"
},
"council": {
"type": [
"string",
"number"
],
"description": "Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta)"
},
"application_type": {
"type": [
"string",
"number"
],
"description": "Application type, exact match (e.g. Complying Development Certificate Application)"
}
},
"additionalProperties": false
}Search NSW complying development certificates (CDCs) by council, suburb, postcode or lodgement date, newest lodgement first. Returns up to 100 complying development certificates (CDCs) per call with address, status, cost, dwellings, storeys and development types, plus has_more for paging with offset. status, application_type, development_type and min_cost must be combined with council, suburb or postcode. Use get_application for the full record of a result. Costs $0.01 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| limit | string | number | Page size, 1-100 (default 20) |
| offset | string | number | Number of results to skip, 0-1000 (default 0) |
| status | string | number | Application status, exact match (e.g. Approved) |
| suburb | string | number | Suburb of the primary address, case-insensitive (e.g. ERMINGTON) |
| council | string | number | Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta) |
| min_cost | string | number | Minimum estimated cost of development in AUD (e.g. 1000000) |
Find NSW complying development certificates (CDCs) within 2 km of a street address or latitude/longitude, nearest first. Pass address (e.g. '10 Brigalow Ave, Casula') and it is geocoded against the official NSW address register, or pass lat and lng. Returns the distance in metres for each result plus the same fields as search_applications; meta.geocode shows the matched address. An unknown or ambiguous address returns an error with suggestions and is not charged. lodged_from limits results to recent applications. Costs $0.02 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| lat | string | number | Latitude (WGS84); required unless address is given (e.g. -33.81) |
| lng | string | number | Longitude (WGS84); required unless address is given (e.g. 151.06) |
| limit | string | number | Max results, 1-100 (default 20) |
| address | string | number | NSW street address with suburb; alternative to lat/lng (e.g. 10 Brigalow Ave, Casula NSW 2170) |
| radius_m | string | number | Radius in metres, 1-2000 (default 500) |
| lodged_from | string | number |
Get the full record of one of the NSW development applications by its Planning Portal application number (PAN). Returns every location with lot and plan, all development types, submission, lodgement, determination and exhibition dates, cost, dwellings, storeys, lots and the remaining source fields. Take PAN numbers from search_applications or search_nearby_applications. An unknown number returns not_found and is not charged. Costs $0.005 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| pan* | string | number | Planning Portal application number (PAN) (e.g. PAN-624302) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pan"
],
"properties": {
"pan": {
"type": [
"string",
"number"
],
"description": "Planning Portal application number (PAN) (e.g. PAN-624302)"
}
},
"additionalProperties": false
}Get free counts of NSW development applications by status, application type and council. Call this first: it shows how many development applications are loaded, the exact council names the other tools accept, and the status and application type values. Optional filters narrow the counts. Counts refresh every 6 hours while the history backfill extends coverage back to 2018. Free, no payment needed. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| status | string | number | Application status, exact match (e.g. Determined) |
| council | string | number | Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta) |
| application_type | string | number | Application type, exact match (e.g. Development Application) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"type": [
"string",
"number"
],
"description": "Application status, exact match (e.g. Determined)"
},
"council": {
"type": [
"string",
"number"
],
"description": "Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta)"
},
"application_type": {
"type": [
"string",
"number"
],
"description": "Application type, exact match (e.g. Development Application)"
}
},
"additionalProperties": false
}Resolve a NSW street address to its official form and coordinates, free. Matches the address against the official NSW address register (Spatial Services). Use it to check an address before a paid nearby search, or to get latitude/longitude. Ambiguous input returns suggestions. Free, no payment needed. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| address* | string | number | NSW street address with suburb (e.g. 10 Brigalow Ave, Casula NSW 2170) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": [
"string",
"number"
],
"description": "NSW street address with suburb (e.g. 10 Brigalow Ave, Casula NSW 2170)"
}
},
"additionalProperties": false
}Search NSW development applications by council, suburb, postcode or lodgement date, newest lodgement first. Returns up to 100 development applications per call with address, status, cost, dwellings, storeys and development types, plus has_more for paging with offset. status, application_type, development_type and min_cost must be combined with council, suburb or postcode. Use get_application for the full record of a result. Costs $0.01 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| limit | string | number | Page size, 1-100 (default 20) |
| offset | string | number | Number of results to skip, 0-1000 (default 0) |
| status | string | number | Application status, exact match (e.g. Determined) |
| suburb | string | number | Suburb of the primary address, case-insensitive (e.g. ERMINGTON) |
| council | string | number | Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta) |
| min_cost | string | number | Minimum estimated cost of development in AUD (e.g. 1000000) |
Find NSW development applications within 2 km of a street address or latitude/longitude, nearest first. Pass address (e.g. '10 Brigalow Ave, Casula') and it is geocoded against the official NSW address register, or pass lat and lng. Returns the distance in metres for each result plus the same fields as search_applications; meta.geocode shows the matched address. An unknown or ambiguous address returns an error with suggestions and is not charged. lodged_from limits results to recent applications. Costs $0.02 per call, paid via x402 in USDC on Base; clients without x402 support receive the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.
| Argument | Type | Description |
|---|---|---|
| lat | string | number | Latitude (WGS84); required unless address is given (e.g. -33.81) |
| lng | string | number | Longitude (WGS84); required unless address is given (e.g. 151.06) |
| limit | string | number | Max results, 1-100 (default 20) |
| address | string | number | NSW street address with suburb; alternative to lat/lng (e.g. 10 Brigalow Ave, Casula NSW 2170) |
| radius_m | string | number | Radius in metres, 1-2000 (default 500) |
| lodged_from | string | number |
| postcode | string | number | 4-digit postcode of the primary address (e.g. 2115) |
| lodged_to | string | number | Lodgement date upper bound, yyyy-mm-dd (e.g. 2026-06-30) |
| lodged_from | string | number | Lodgement date lower bound, yyyy-mm-dd (e.g. 2026-01-01) |
| application_type | string | number | Application type, exact match (e.g. Complying Development Certificate Application) |
| development_type | string | number | Development type, partial match (e.g. dwelling) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": [
"string",
"number"
],
"description": "Page size, 1-100 (default 20)"
},
"offset": {
"type": [
"string",
"number"
],
"description": "Number of results to skip, 0-1000 (default 0)"
},
"status": {
"type": [
"string",
"number"
],
"description": "Application status, exact match (e.g. Approved)"
},
"suburb": {
"type": [
"string",
"number"
],
"description": "Suburb of the primary address, case-insensitive (e.g. ERMINGTON)"
},
"council": {
"type": [
"string",
"number"
],
"description": "Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta)"
},
"min_cost": {
"type": [
"string",
"number"
],
"description": "Minimum estimated cost of development in AUD (e.g. 1000000)"
},
"postcode": {
"type": [
"string",
"number"
],
"description": "4-digit postcode of the primary address (e.g. 2115)"
},
"lodged_to": {
"type": [
"string",
"number"
],
"description": "Lodgement date upper bound, yyyy-mm-dd (e.g. 2026-06-30)"
},
"lodged_from": {
"type": [
"string",
"number"
],
"description": "Lodgement date lower bound, yyyy-mm-dd (e.g. 2026-01-01)"
},
"application_type": {
"type": [
"string",
"number"
],
"description": "Application type, exact match (e.g. Complying Development Certificate Application)"
},
"development_type": {
"type": [
"string",
"number"
],
"description": "Development type, partial match (e.g. dwelling)"
}
},
"additionalProperties": false
}| Lodgement date lower bound, yyyy-mm-dd |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": [
"string",
"number"
],
"description": "Latitude (WGS84); required unless address is given (e.g. -33.81)"
},
"lng": {
"type": [
"string",
"number"
],
"description": "Longitude (WGS84); required unless address is given (e.g. 151.06)"
},
"limit": {
"type": [
"string",
"number"
],
"description": "Max results, 1-100 (default 20)"
},
"address": {
"type": [
"string",
"number"
],
"description": "NSW street address with suburb; alternative to lat/lng (e.g. 10 Brigalow Ave, Casula NSW 2170)"
},
"radius_m": {
"type": [
"string",
"number"
],
"description": "Radius in metres, 1-2000 (default 500)"
},
"lodged_from": {
"type": [
"string",
"number"
],
"description": "Lodgement date lower bound, yyyy-mm-dd"
}
},
"additionalProperties": false
}| postcode |
| string | number |
| 4-digit postcode of the primary address (e.g. 2115) |
| lodged_to | string | number | Lodgement date upper bound, yyyy-mm-dd (e.g. 2026-06-30) |
| lodged_from | string | number | Lodgement date lower bound, yyyy-mm-dd (e.g. 2026-01-01) |
| application_type | string | number | Application type, exact match (e.g. Development Application) |
| development_type | string | number | Development type, partial match (e.g. dwelling) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": [
"string",
"number"
],
"description": "Page size, 1-100 (default 20)"
},
"offset": {
"type": [
"string",
"number"
],
"description": "Number of results to skip, 0-1000 (default 0)"
},
"status": {
"type": [
"string",
"number"
],
"description": "Application status, exact match (e.g. Determined)"
},
"suburb": {
"type": [
"string",
"number"
],
"description": "Suburb of the primary address, case-insensitive (e.g. ERMINGTON)"
},
"council": {
"type": [
"string",
"number"
],
"description": "Council name, partial case-insensitive match (see by_council in /summary) (e.g. Parramatta)"
},
"min_cost": {
"type": [
"string",
"number"
],
"description": "Minimum estimated cost of development in AUD (e.g. 1000000)"
},
"postcode": {
"type": [
"string",
"number"
],
"description": "4-digit postcode of the primary address (e.g. 2115)"
},
"lodged_to": {
"type": [
"string",
"number"
],
"description": "Lodgement date upper bound, yyyy-mm-dd (e.g. 2026-06-30)"
},
"lodged_from": {
"type": [
"string",
"number"
],
"description": "Lodgement date lower bound, yyyy-mm-dd (e.g. 2026-01-01)"
},
"application_type": {
"type": [
"string",
"number"
],
"description": "Application type, exact match (e.g. Development Application)"
},
"development_type": {
"type": [
"string",
"number"
],
"description": "Development type, partial match (e.g. dwelling)"
}
},
"additionalProperties": false
}| Lodgement date lower bound, yyyy-mm-dd |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": [
"string",
"number"
],
"description": "Latitude (WGS84); required unless address is given (e.g. -33.81)"
},
"lng": {
"type": [
"string",
"number"
],
"description": "Longitude (WGS84); required unless address is given (e.g. 151.06)"
},
"limit": {
"type": [
"string",
"number"
],
"description": "Max results, 1-100 (default 20)"
},
"address": {
"type": [
"string",
"number"
],
"description": "NSW street address with suburb; alternative to lat/lng (e.g. 10 Brigalow Ave, Casula NSW 2170)"
},
"radius_m": {
"type": [
"string",
"number"
],
"description": "Radius in metres, 1-2000 (default 500)"
},
"lodged_from": {
"type": [
"string",
"number"
],
"description": "Lodgement date lower bound, yyyy-mm-dd"
}
},
"additionalProperties": false
}