Koskamo

Agent Data Platform MCP

Provides AI agents with queryable access to NSW open government data, including Development Applications, Complying Development Certificates, and Property Planning Reports. Agents can search applications, resolve addresses, and get planning reports via MCP tools, with usage billed via x402 on Base.

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.

Agent Data Platform MCP logo, by LangtoolsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Langtools
MCP endpoint (Streamable HTTP)
https://agent-data-platform.langtools.workers.dev/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

12 of 12 have a description · 12 of 12 declare behavior hints · 12 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find development applications near a specific address
  • Search NSW development applications by council or suburb
  • Get planning controls and zoning for a NSW property
  • Resolve a NSW street address to official coordinates

Source and maintenance

Community listingRegistry 0.1.4

Protocol and capabilities

Server
agent-data-platform 0.1.4
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
4 advertised
Resource templates
0 advertised
Prompts
4 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

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

Start with nsw_da_get_summary (free) to see coverage and valid council names. Each client gets 3 free paid-tool calls per day; after that, paid tools return x402 payment requirements as an error result, and x402-capable clients pay automatically and retry. Every result includes an attribution object that must be kept when the data is shown. If the data a task needs is not covered, request_data (free) passes the request on to the maintainers.

Tools

12 advertised

nsw_da_get_summary — Get counts of NSW development applications by status, application type and council.
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get counts of NSW development applications by status, application type and council. Call it before nsw_da_search_applications or nsw_da_search_nearby_applications: it returns the total loaded and by_status, by_application_type and by_council lists of { key, count }, whose keys are the exact filter values those tools accept. Filters are optional and combine with AND; without them the counts cover all of NSW. Counts refresh every 6 hours while the history backfill extends coverage back to 2021. Free, no payment needed. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.

nsw_da_get_summary input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "status": {
      "type": [
        "string",
        "number"
      ],
      "description": "Application status, exact and case-sensitive; valid values are the keys of by_status in nsw_da_get_summary (e.g. Determined)"
    },
    "council": {
      "type": [
        "string",
        "number"
      ],
      "description": "Council name or part of it, case-insensitive; matches every council whose name contains it. Full names are in by_council of nsw_da_get_summary (e.g. Parramatta)"
    },
    "application_type": {
      "type": [
        "string",
        "number"
      ],
      "description": "Application type, exact and case-sensitive; valid values are the keys of by_application_type in nsw_da_get_summary (e.g. Development Application)"
    }
  },
  "additionalProperties": false
}
nsw_da_get_summary output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_da_get_summary annotations
{
  "title": "Get counts of NSW development applications by status, application type and council.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_da_search_applications — Search NSW development applications by council, suburb, postcode or lodgement date, newest lodgement first.
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_da_search_applications input schema
{
  "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 and case-sensitive; valid values are the keys of by_status in nsw_da_get_summary (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 or part of it, case-insensitive; matches every council whose name contains it. Full names are in by_council of nsw_da_get_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 and case-sensitive; valid values are the keys of by_application_type in nsw_da_get_summary (e.g. Development Application)"
    },
    "development_type": {
      "type": [
        "string",
        "number"
      ],
      "description": "Development type, partial match (e.g. dwelling)"
    }
  },
  "additionalProperties": false
}
nsw_da_search_applications output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_da_search_applications annotations
{
  "title": "Search NSW development applications by council, suburb, postcode or lodgement date, newest lodgement first.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_da_get_application — Get the full record of one of the NSW development applications by its Planning Portal application number (PAN).
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_da_get_application input schema
{
  "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
}
nsw_da_get_application output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_da_get_application annotations
{
  "title": "Get the full record of one of the NSW development applications by its Planning Portal application number (PAN).",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_da_search_nearby_applications — Find NSW development applications within 2 km of a street address or latitude/longitude, nearest first.
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_da_search_nearby_applications input schema
{
  "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
}
nsw_da_search_nearby_applications output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_da_search_nearby_applications annotations
{
  "title": "Find NSW development applications within 2 km of a street address or latitude/longitude, nearest first.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_da_resolve_address — Resolve a NSW street address to its official form and latitude/longitude.
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolve a NSW street address to its official form and latitude/longitude. Matches the address against the NSW address register and returns matched_address, lat and lng. Use it to check an address before nsw_da_search_nearby_applications, nsw_cdc_search_nearby_applications or nsw_property_get_planning_report, which accept the same address or the returned lat and lng. An ambiguous address returns an error with suggested matches; an unknown one returns address_not_found. Free, no payment needed. Source: NSW Spatial Services, CC BY 4.0.

nsw_da_resolve_address input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": [
        "string",
        "number"
      ],
      "description": "Street number, street and suburb; a trailing state and postcode are accepted and ignored (e.g. 10 Brigalow Ave, Casula NSW 2170)"
    }
  },
  "additionalProperties": false
}
nsw_da_resolve_address output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_da_resolve_address annotations
{
  "title": "Resolve a NSW street address to its official form and latitude/longitude.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_cdc_get_summary — Get counts of NSW complying development certificates (CDCs) by status, application type and council.
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get counts of NSW complying development certificates (CDCs) by status, application type and council. Call it before nsw_cdc_search_applications or nsw_cdc_search_nearby_applications: it returns the total loaded and by_status, by_application_type and by_council lists of { key, count }, whose keys are the exact filter values those tools accept. Filters are optional and combine with AND; without them the counts cover all of NSW. Counts refresh every 6 hours while the history backfill extends coverage back to 2021. Free, no payment needed. Source: NSW Department of Planning, Housing and Infrastructure (NSW Planning Portal), CC BY 4.0.

nsw_cdc_get_summary input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "status": {
      "type": [
        "string",
        "number"
      ],
      "description": "Application status, exact and case-sensitive; valid values are the keys of by_status in nsw_cdc_get_summary (e.g. Approved)"
    },
    "council": {
      "type": [
        "string",
        "number"
      ],
      "description": "Council name or part of it, case-insensitive; matches every council whose name contains it. Full names are in by_council of nsw_cdc_get_summary (e.g. Parramatta)"
    },
    "application_type": {
      "type": [
        "string",
        "number"
      ],
      "description": "Application type, exact and case-sensitive; valid values are the keys of by_application_type in nsw_cdc_get_summary (e.g. Complying Development Certificate Application)"
    }
  },
  "additionalProperties": false
}
nsw_cdc_get_summary output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_cdc_get_summary annotations
{
  "title": "Get counts of NSW complying development certificates (CDCs) by status, application type and council.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_cdc_search_applications — Search NSW complying development certificates (CDCs) by council, suburb, postcode or lodgement date, newest lodgement first.
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_cdc_search_applications input schema
{
  "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 and case-sensitive; valid values are the keys of by_status in nsw_cdc_get_summary (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 or part of it, case-insensitive; matches every council whose name contains it. Full names are in by_council of nsw_cdc_get_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 and case-sensitive; valid values are the keys of by_application_type in nsw_cdc_get_summary (e.g. Complying Development Certificate Application)"
    },
    "development_type": {
      "type": [
        "string",
        "number"
      ],
      "description": "Development type, partial match (e.g. dwelling)"
    }
  },
  "additionalProperties": false
}
nsw_cdc_search_applications output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_cdc_search_applications annotations
{
  "title": "Search NSW complying development certificates (CDCs) by council, suburb, postcode or lodgement date, newest lodgement first.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_cdc_get_application — Get the full record of one of the NSW complying development certificates (CDCs) by its Planning Portal CDC number.
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_cdc_get_application input schema
{
  "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
}
nsw_cdc_get_application output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_cdc_get_application annotations
{
  "title": "Get the full record of one of the NSW complying development certificates (CDCs) by its Planning Portal CDC number.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_cdc_search_nearby_applications — Find NSW complying development certificates (CDCs) within 2 km of a street address or latitude/longitude, nearest first.
Advertised by the server during the last successful anonymous check.
Advertised read-only

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; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return 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.

nsw_cdc_search_nearby_applications input schema
{
  "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
}
nsw_cdc_search_nearby_applications output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_cdc_search_nearby_applications annotations
{
  "title": "Find NSW complying development certificates (CDCs) within 2 km of a street address or latitude/longitude, nearest first.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_property_get_planning_report — Get the planning controls, lot and development applications for a NSW address in one call.
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the planning controls, lot and development applications for a NSW address in one call. Pass address (e.g. '5A Atkins Rd, Ermington') or lat and lng. Returns the lot and plan, zoning, maximum building height, floor space ratio, minimum lot size, heritage listings and special planning areas, each linked to its planning instrument, plus development applications and CDCs on the site and within radius_m (default 200, max 500), 10 of each, nearest first. Council DCP controls such as setbacks are not included. An unknown or ambiguous address returns an error with suggestions and is not charged. Costs $0.05 per call, paid via x402 in USDC on Base; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure; NSW Spatial Services, CC BY 3.0 AU and CC BY 4.0.

nsw_property_get_planning_report input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "lat": {
      "type": [
        "string",
        "number"
      ],
      "description": "Latitude, instead of address"
    },
    "lng": {
      "type": [
        "string",
        "number"
      ],
      "description": "Longitude, instead of address"
    },
    "address": {
      "type": [
        "string",
        "number"
      ],
      "description": "NSW street address with suburb (e.g. 5A Atkins Rd, Ermington)"
    },
    "radius_m": {
      "type": [
        "string",
        "number"
      ],
      "description": "Radius for nearby applications in metres (default 200, max 500)"
    }
  },
  "additionalProperties": false
}
nsw_property_get_planning_report output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_property_get_planning_report annotations
{
  "title": "Get the planning controls, lot and development applications for a NSW address in one call.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nsw_property_get_development_activity — Get what is being built near a NSW address: development applications and CDCs, summarised.
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get what is being built near a NSW address: development applications and CDCs, summarised. Answers questions such as "what is being built near this address" in one call. Pass address or lat and lng. Merges development applications and complying development certificates lodged within radius_m (default 500, max 2000) in the last months (default 24, max 120) and returns totals (applications, new dwellings, total cost), counts by status, development type and year, the 5 largest by cost, and the newest limit applications (default 20, max 50) with distance, status, cost and dates. Use nsw_property_get_planning_report for the zoning and controls of the site itself, and nsw_da_get_application or nsw_cdc_get_application for one record in full. capped is true when more than 2000 records of one kind matched; the summary then covers the nearest ones. An unknown or ambiguous address returns an error with suggestions and is not charged. Costs $0.03 per call, paid via x402 in USDC on Base; the first 3 paid-tool calls per day are free for MCP clients while a shared daily allowance lasts. Without x402 support, later calls return the payment requirements as an error result. Failed calls are not charged. Source: NSW Department of Planning, Housing and Infrastructure; NSW Spatial Services, CC BY 3.0 AU and CC BY 4.0.

nsw_property_get_development_activity input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "lat": {
      "type": [
        "string",
        "number"
      ],
      "description": "Latitude in decimal degrees, instead of address"
    },
    "lng": {
      "type": [
        "string",
        "number"
      ],
      "description": "Longitude in decimal degrees, instead of address"
    },
    "limit": {
      "type": [
        "string",
        "number"
      ],
      "description": "Newest applications to list, 1-50 (default 20); totals cover all matches"
    },
    "months": {
      "type": [
        "string",
        "number"
      ],
      "description": "Lodgement window in months back from today, 1-120 (default 24)"
    },
    "address": {
      "type": [
        "string",
        "number"
      ],
      "description": "Street number, street and suburb; or pass lat and lng (e.g. 5A Atkins Rd, Ermington)"
    },
    "radius_m": {
      "type": [
        "string",
        "number"
      ],
      "description": "Search radius in metres, 1-2000 (default 500)"
    }
  },
  "additionalProperties": false
}
nsw_property_get_development_activity output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "meta",
    "attribution"
  ],
  "properties": {
    "data": {
      "description": "Result: a list of applications for search and nearby tools, one record or summary object otherwise"
    },
    "meta": {
      "type": "object",
      "description": "Paging and query details, e.g. limit, offset, has_more, count",
      "additionalProperties": {}
    },
    "attribution": {
      "type": "object",
      "required": [
        "publisher",
        "licence",
        "licenceUrl",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "Attribution text to show alongside the data"
        },
        "licence": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "licenceUrl": {
          "type": "string"
        }
      },
      "description": "Source attribution; keep it when presenting the data",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
nsw_property_get_development_activity annotations
{
  "title": "Get what is being built near a NSW address: development applications and CDCs, summarised.",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_data — Request data that is not covered yet
Advertised by the server during the last successful anonymous check.

Request Australian data that these tools do not provide yet (another state, dataset, field or filter), so the maintainers can consider it for a future release. Free. Describe the data and, optionally, the task it is for. Do not include personal information. Requests are stored anonymously and read by the maintainers; the result is only a confirmation.

request_data input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "request"
  ],
  "properties": {
    "request": {
      "type": "string",
      "description": "The data you need, e.g. 'development applications in Victoria' or 'sale prices'"
    },
    "use_case": {
      "type": "string",
      "description": "Optional: the task you need it for"
    }
  },
  "additionalProperties": false
}
request_data annotations
{
  "title": "Request data that is not covered yet",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

4 advertised

nsw_da_development_near_address — Development activity near an address

Advertised by the server during the last successful anonymous check.

Find and summarise development applications and complying development certificates around an address in NSW.

address
Street address in NSW, e.g. 5A Atkins Road, Ermington (required)
radius_m
Search radius in metres, up to 2000 (default 500)
nsw_da_council_overview — Council development overview

Advertised by the server during the last successful anonymous check.

Summarise development application activity in one NSW council area.

council
Council name or part of it, e.g. Parramatta (required)
nsw_da_track_application — Track a development application

Advertised by the server during the last successful anonymous check.

Explain the status and key details of one application (DA or CDC).

pan
Planning Portal number, e.g. PAN-624302 (DA) or CDC-388198 (CDC) (required)
nsw_property_due_diligence — Planning check for a property

Advertised by the server during the last successful anonymous check.

Summarise the planning controls and development activity for a NSW property, e.g. before buying.

address
Street address in NSW, e.g. 5A Atkins Road, Ermington (required)

Resources

4 advertised

llms_txt — Platform overview for agents

Advertised by the server during the last successful anonymous check.

What the platform offers, how payment works and where the docs are.

llms_txt URI
https://agent-data-platform.langtools.workers.dev/llms.txt

MIME type: text/markdown

nsw_da_docs — NSW Development Applications: documentation

Advertised by the server during the last successful anonymous check.

Endpoints, MCP tools, parameters, prices and attribution for NSW Development Applications.

nsw_da_docs URI
https://agent-data-platform.langtools.workers.dev/docs/nsw-da.md

MIME type: text/markdown

nsw_cdc_docs — NSW Complying Development Certificates: documentation

Advertised by the server during the last successful anonymous check.

Endpoints, MCP tools, parameters, prices and attribution for NSW Complying Development Certificates.

nsw_cdc_docs URI
https://agent-data-platform.langtools.workers.dev/docs/nsw-cdc.md

MIME type: text/markdown

nsw_property_docs — NSW Property Planning Report: documentation

Advertised by the server during the last successful anonymous check.

Endpoints, MCP tools, parameters, prices and attribution for NSW Property Planning Report.

nsw_property_docs URI
https://agent-data-platform.langtools.workers.dev/docs/nsw-property.md

MIME type: text/markdown

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
965 ms
95th percentile latency
965 ms

Maintenance history

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

  • · probe · passed · 965 ms · metadata changed · 12 tool(s), 4 resource(s), 0 resource template(s), 4 prompt(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 agent-data-platform-mcp-workers https://agent-data-platform.langtools.workers.dev/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 agent-data-platform-mcp-workers --url https://agent-data-platform.langtools.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-data-platform-mcp-workers in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-data-platform-mcp-workers": {
      "url": "https://agent-data-platform.langtools.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-data-platform-mcp-workers": {
      "type": "streamableHttp",
      "url": "https://agent-data-platform.langtools.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-data-platform-mcp-workers and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-data-platform-mcp-workers": {
      "type": "http",
      "url": "https://agent-data-platform.langtools.workers.dev/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 agent-data-platform-mcp-workers https://agent-data-platform.langtools.workers.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://agent-data-platform.langtools.workers.dev/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": {
    "agent-data-platform-mcp-workers": {
      "serverUrl": "https://agent-data-platform.langtools.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

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