Skip to main content

DA Leads MCP

DA Leads MCP lets Claude, Cursor and other MCP clients query Australian development applications and address-level property intelligence through the DA Leads API.

It exposes 36 tools for DA search, canonical project search and monitoring, nearby applications/projects, council and category lookups, read-only SQL analysis, generic entitlement-filtered property intelligence, the closed public Full Property contract, focused Noise, Flood, Bushfire and Walkability screening, score-free Property Core, Suburb Signals, SA2 scenarios, Neighbourhood Context, Solar Resource, keyless samples and sandbox addresses.

Install

Run without installing globally:

uvx daleads-mcp

Or install with pipx:

pipx install daleads-mcp
daleads-mcp

Configuration

Paid tools use a DA Leads API key. The property sample tools work without a key.

{
  "mcpServers": {
    "da-leads": {
      "command": "uvx",
      "args": ["daleads-mcp"],
      "env": {
        "DALEADS_API_KEY": "dk_live_xxx"
      }
    }
  }
}

DALEADS_API_KEY is the only environment variable read by this package. Treat it as a secret. It is sent only to the fixed official HTTPS API endpoint at https://daleads.com.au/api.

For Claude Code 2.1+, add the stdio server to the current project with:

claude mcp add --scope project da-leads -- uvx daleads-mcp

Keyless sample tools work immediately. For paid tools, launch Claude Code from an environment that already provides DALEADS_API_KEY; do not commit a real key to the project MCP configuration.

Official Skills

The 10 canonical Agent Skills live in skills/. A repository checkout exposes the same files to Codex through .agents/skills/ and to Claude Code through .claude/skills/; both directories are thin relative symlinks, so there is only one maintained instruction source. The Skills guide agents through subject identity, coverage, attribution and product-specific limits. They do not grant an API entitlement or expand data rights.

Tools

Development applications

search_das — Search Australian development applications with filters, newest first. Parameters: state (NSW, VIC, QLD, SA, WA, TAS, NT, ACT), council (full council name, e.g. City of Melbourne), category (trade category, e.g. Renovation / Extension), suburb, postcode, since (ISO date YYYY-MM-DD, lodged on or after), status_group (pending, advertised, approved, rejected, other), is_residential (bool), page (default 1), limit (per page, default 20, max 100). Returns {data: [DA record, ...], meta: {total, page, per_page, pages}}. Each record carries id, address, suburb, postcode, council, state, trade_category, lodgement_date, status, status_group, latitude, longitude, info_url and document links; paid plans add description, summary, sub_category, cost_of_development, decision fields, number_of_dwellings, building_type, storeys and the full documents list. Applicant names are never returned on any plan.

get_da — Retrieve one development application in full. Parameters: da_id (integer record id, as returned by search_das or nearby_das). Returns {data: DA record} with the same field set as above.

nearby_das — Find development applications within a radius of a point, nearest first. Parameters: lat, lng (WGS84 decimal degrees), radius_km (default 5, max 50), category, since, status_group, page, limit (max 100). Returns the same {data, meta} shape as search_das, with an extra distance_km on each record.

list_categories — List every trade category with its record count, for discovering valid category values. No parameters. Returns {data: [{name, slug, is_residential, record_count}, ...], meta: {total}} — categories such as Renovation / Extension, Swimming Pool / Spa, Granny Flat / Secondary Dwelling and Demolition.

list_councils — List councils with coverage and freshness, for discovering valid council values. Parameters: limit (max councils to return, default 50). Returns {data: [{council, state, record_count, last_lodgement, last_fetched}, ...], meta}.

get_stats — Coverage summary for the whole dataset. No parameters. Returns {data: {total_records, records_last_7_days, date_range: {earliest, latest}, by_state: [...], by_category: [...]}}.

sql_query — Run a read-only SQL query for custom aggregation the filter tools cannot express. Pro plan only. Parameters: query (a single SELECT against the das table), params (optional list of values for %s placeholders). Available columns: id, address, address_suburb, address_postcode, council_name, council_reference, state, trade_category, sub_category, application_type, is_residential, lodgement_date, status, cost_of_development, decision_date, decision_status, on_notice_from, on_notice_to, number_of_dwellings, lot_count, land_use, building_type, storeys, latitude, longitude, data_source, date_fetched, documents, info_url. Description and summary are deliberately unavailable here because council free text can contain personal contact details. SELECT only, capped at 1000 rows with a 10 second timeout. Returns {columns: [...], rows: [[...], ...], row_count, truncated}.

Project intelligence

These tools use the same DALEADS_API_KEY as every other paid tool. The API enforces the key's project_intelligence entitlement and rights-cleared field projection; the MCP package does not maintain a second capability list.

search_projects — Search canonical projects rather than independent DA records. Parameters: q, state, normalized stage, normalized project_type, changed_since (ISO-8601 timestamp), page, and limit (max 100). The client sends the provider's canonical per_page parameter. Returns a {data, meta} envelope with contract_version: project-intelligence-v1.

get_project — Retrieve one canonical project. Parameter: project_uid (the stable identifier returned by search_projects). The current v1 response contains identity, normalized status, location, linked applications and project relations. Rights-gated fields are omitted rather than represented as coverage or conflict metadata.

get_project_changes — Retrieve durable changes for one project. Parameters: project_uid, optional initial since, continuation cursor, and limit (max 100). Persist meta.cursor after every response. Use a non-null meta.next_cursor only to fetch the next page immediately. Change values remain redacted until field-level delivery provenance is available.

nearby_projects — Search canonical projects around a WGS84 point. Parameters: lat, lng, radius_km, optional stage and project_type, page, and limit.

create_project_watch — Create or idempotently replay a persistent signed callback for future rights-cleared events on one project_uid. Parameters: project_uid, a public HTTPS callback_url, and a stable idempotency_key. This tool changes external state and returns the signing secret.

list_project_watches — List watches owned by the current API key. Signing secrets are never returned by the list operation.

deactivate_project_watch — Stop one owned watch by watch_uid. Delivery audit rows remain durable. Pending work is suppressed, but an HTTPS request already in flight cannot be recalled and remains visible in the audit. Receivers must deduplicate the stable callback Idempotency-Key header.

The repository includes skills/daleads-project-monitoring for cursor polling and explicit callback management. It is installed from the GitHub repository, not bundled inside the PyPI wheel.

Property intelligence

property_intelligence — Generic entitlement-filtered address-level property lookup for existing and manually issued keys. Parameters: address (free text, e.g. 34 Mary St Clayton VIC) or lat + lng together, and optional components (comma-separated subset to request). A requested name never grants a capability: the API intersects it with the key's server-side entitlement and field-level rights policy. This tool is not proof of a Full Self-Serve entitlement; new Full workflows should use the closed tool below.

full_property_intelligence — Closed public Full Property Intelligence Self-Serve lookup. Parameters: address (recommended) or lat + lng together. It requests the base facts das, poi, planning, transport, utilities, administrative and public_housing; named hazard leaves for bushfire, flood, coastal, landslide and fire history; and named environmental leaves for soil, protected-area, heritage, threatened-species, Ramsar, koala, ecological, EPBC, bioregion and biodiversity context. The exact environmental leaf names are pinned in contracts/focused-api-v1.json.

It also requests exactly these score leaves: scores.noise, scores.aircraft_noise, scores.flood, and scores.bushfire. It never requests top-level hazards, environment or scores, so a new provider field cannot enter Full automatically. Explicit official, rights-gated contamination and register facts may return as Property Core context; they do not grant scores.contamination or publish the standalone Contamination product. Solar, Neighbourhood Heat, Landscape Openness and the Walkability Pilot are excluded. The Full key carries separate property_core and suburb_intelligence capabilities, which do not add fields to this response. Provider-side source and rights gates still apply to every returned field.

property_core — Closed score-free property context. Parameters: address (recommended) or lat + lng. Returns resolved address/parcel identity, development applications, POI, planning, hazards, environment, transport, utilities, administrative and public-housing facts, plus response-specific coverage and source obligations. It never returns scores, surfaces or unknown future blocks. The key must include the complete explicit Core component set.

Suburb and regional intelligence

find_suburbs — Resolve a suburb-name prefix to ABS SAL codes before a signals call. Parameters: query, optional state, limit (max 100). Returns the existing licensed Census rows with sal_code; repeated names remain separate rather than being guessed.

suburb_signals — Census context and privacy-slim development activity for one SAL code. Parameter: sal_code. Returns current/prior 12-month DA-record counts, momentum, status and dwelling publication coverage, category mix and a machine contract stating that project deduplication has not been applied. It never attaches an SA2 absolute population forecast to the SAL.

find_sa2_regions — Resolve an exact or partial region name to ASGS 2021 SA2 codes. Parameters: query, optional state, limit (max 50). Use the returned code with sa2_population_forecast; never infer it from a suburb name.

sa2_population_forecast — Code-keyed regional population scenario Beta. Parameter: nine-digit sa2_code. Returns history, model/vintage, housing- constraint status and matching 1/3/5-year rolling-origin errors. Established SA2s include low/medium/high scenarios. High-growth and greenfield future values are withheld while the artifact has no DA dwelling constraint; withheld is not zero growth.

noise_screening — Focused Noise Intelligence lookup. Parameters: address (recommended) or lat + lng. It requests exactly scores.noise and scores.aircraft_noise, returning modelled road/rail context, Lden/day/night estimates, facade sectors, confidence evidence and aircraft-overlay assessment. It is not a site measurement, LA90 result or acoustic compliance assessment. Use the Noise fields in property_sample as the current keyless shape preview; the generic sample's other fields are not part of the Noise entitlement.

flood_screening — Focused Flood Intelligence lookup. Parameters: address (recommended) or lat + lng. It requests exactly scores.flood,hazards.flood and keeps the national screening model, mapped official evidence and any study-specific depth separate. Missing depth or mapping is a coverage state, not zero depth or proof that flood risk is absent. Screening is national; official modelled depth currently comes from 55 production rasters (48 Brisbane and 7 NSW).

bushfire_screening — Focused commercial Bushfire Screening lookup. Parameters: address (recommended) or lat + lng together. It always requests exactly scores.bushfire,hazards.bushfire, returning subject identity, official overlay status, licensed hazard hits, modelled vegetation fuel, terrain, available fire history, coverage and caveats. Where available, the response includes a preliminary indicative BAL band with range and confidence plus its mandatory disclaimer. It is not a certified BAL assessment and cannot be used for building approval. Coordinate-only lookups are labelled as such and must not be treated as a building location.

walkability_screening — Focused Amenity & Walkability Screening Pilot lookup. Parameters: address (recommended) or lat + lng. It requests exactly scores.walkability: straight-line metres to 24 amenity scenarios plus disclosed motorway, major-water and regional slope adjustments. It is not a walking route, isochrone or travel-time result. Read every coverage state and preserve meta.amenity_sources attribution when names or coordinates surface.

neighbourhood_context — Focused Neighbourhood Context Beta lookup. Parameters: address (recommended) or lat + lng together. It requests exactly scores.heat_island,scores.view_quality. Neighbourhood Heat keeps its approximately 1 km temperature separate from 10 m land-cover context and reports source vintage and borrowed-pixel status. The legacy view_quality key returns the public Landscape Openness product, including six factors, missing/partial coverage and explicit line-of-sight exclusions. It is not parcel temperature, live weather, indoor comfort, building energy use or a guaranteed view.

solar_resource — Focused Solar Resource Developer Preview lookup. Parameters: address (recommended) or lat + lng together. It requests exactly scores.solar and returns regional open-horizon GHI/DNI/GTI, PVOUT, optimum tilt, per-field resolution, vintage, licence and attribution. It does not identify roof planes, usable area, building or tree shading, obstructions, tariffs, self-consumption or batteries and must not be used as rooftop design.

property_sample — Inspect the generic Property Intelligence response shape before you have a key. No API key required. No parameters. Returns the real production payload for 163 Grattan St, Carlton VIC (a heritage terrace with DA activity). Noise and public Full currently share this preview because they do not yet have dedicated sample routes. It is a schema demonstration, not an entitlement manifest: Preview fields present in it are not thereby included in Noise or public Full Self-Serve.

property_core_sample — Inspect the closed score-free Property Core v1 contract. No API key required. Returns a real Carlton response containing only the explicit Core fact blocks, coverage and source inventory.

suburb_signals_sample — Inspect a real Carlton SAL development-signals Beta response. No API key required.

sa2_population_forecast_sample — Inspect the Carlton SA2 forecast Beta, including matching rolling-origin error evidence. No API key required.

property_walkability_sample — Inspect the focused Amenity & Walkability Screening contract for Carlton. No API key required. Distances are explicitly straight-line and no route time is supplied.

property_flood_sample — Inspect one scored hazard component in detail. No API key required. No parameters. Returns the production scores.flood block for a study-covered point in Rocklea QLD: official 1% AEP modelled depth, overlay status, terrain context, coverage notes and provenance.

property_bushfire_sample — Inspect the standard Bushfire Screening contract. No API key required. No parameters. Returns a real Katoomba NSW focused sample with resolved subject identity, official/modelled evidence, coverage, attribution and an explicit response-specific indicative BAL state. The canned snapshot can predate the field; live responses may include the preliminary band.

property_context_sample — Inspect the coordinated Neighbourhood Context Beta and Solar Resource Developer Preview contract. No API key required. No parameters. Returns a real production-shaped Carlton response containing only Neighbourhood Heat, Landscape Openness and Solar Resource, with their legacy v1 keys, measurement levels, sources, caveats and not-modelled boundaries.

property_sandbox_addresses — List the addresses you can evaluate for free. No API key required. No parameters. Returns {sandbox_addresses: [{address, label}, ...], note} — 12 real addresses spanning all eight states, chosen for distinct hazard and planning profiles. Lookups of these addresses through property_intelligence never count toward a key's monthly quota.

Data boundary

The adapter code and the data returned by DA Leads have separate licence boundaries. Installing this package does not grant an API entitlement or a right to redistribute the API data. Public Full Self-Serve supports internal analysis and attributed static customer reports under its clickwrap terms. Interactive embedding, white labelling, onward access, resale, raw redistribution, special geometry and custom SLAs require Publisher or Enterprise rights. See the DA Leads Terms, Privacy Policy, and Data Attributions.

The server reuses the DA Leads API authentication, plan limits and privacy controls. Public API and MCP responses do not expose applicant names.

Copyright 2026 Limon Tech. All rights reserved.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

daleads_mcp-0.4.1.tar.gz (24.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daleads_mcp-0.4.1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file daleads_mcp-0.4.1.tar.gz.

File metadata

  • Download URL: daleads_mcp-0.4.1.tar.gz
  • Upload date:
  • Size: 24.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for daleads_mcp-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b06e3b975ceed9c63ed41bccb6592fa7af5d576b20dabf191f096d7e1a8664bf
MD5 13598f6632ec82f41888cc9e3477c7d6
BLAKE2b-256 70827ae6cefd548fa2f740aa6ed8a7e066d920b3f168790037d67bdc9c3c851f

See more details on using hashes here.

Provenance

The following attestation bundles were made for daleads_mcp-0.4.1.tar.gz:

Publisher: release.yml on resuly/daleads-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file daleads_mcp-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: daleads_mcp-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for daleads_mcp-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d47e3c53ccf5bc0d7904a07a520a52b29896fb0021706d234866fa7c27d6b60b
MD5 7a61814305d17d2d5c1d0fded5dc9d1b
BLAKE2b-256 e653ac374889fc93f15be1fb5b7874a877baf6f175ef9a321f9de5d7d623582f

See more details on using hashes here.

Provenance

The following attestation bundles were made for daleads_mcp-0.4.1-py3-none-any.whl:

Publisher: release.yml on resuly/daleads-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page