{
  "markdown": "# DA Leads MCP\n\n<!-- mcp-name: io.github.resuly/daleads-mcp -->\n\nDA Leads MCP lets Claude, Cursor and other MCP clients query Australian development applications and address-level property intelligence through the [DA Leads API](https://daleads.com.au/api/).\n\nIt exposes 36 tools for DA search, canonical project search and monitoring, nearby\napplications/projects, council and category lookups, read-only SQL analysis,\ngeneric entitlement-filtered property intelligence, the closed public Full\nProperty contract, focused Noise, Flood, Bushfire and Walkability screening,\nscore-free Property Core, Suburb Signals, SA2 scenarios, Neighbourhood Context,\nSolar Resource, keyless samples and sandbox addresses.\n\n## Install\n\nRun without installing globally:\n\n```bash\nuvx daleads-mcp\n```\n\nOr install with pipx:\n\n```bash\npipx install daleads-mcp\ndaleads-mcp\n```\n\n## Configuration\n\nPaid tools use a DA Leads API key. The property sample tools work without a key.\n\n```json\n{\n  \"mcpServers\": {\n    \"da-leads\": {\n      \"command\": \"uvx\",\n      \"args\": [\"daleads-mcp\"],\n      \"env\": {\n        \"DALEADS_API_KEY\": \"dk_live_xxx\"\n      }\n    }\n  }\n}\n```\n\n`DALEADS_API_KEY` is the only environment variable read by this package. Treat\nit as a secret. It is sent only to the fixed official HTTPS API endpoint at\n`https://daleads.com.au/api`.\n\nFor Claude Code 2.1+, add the stdio server to the current project with:\n\n```bash\nclaude mcp add --scope project da-leads -- uvx daleads-mcp\n```\n\nKeyless sample tools work immediately. For paid tools, launch Claude Code from\nan environment that already provides `DALEADS_API_KEY`; do not commit a real\nkey to the project MCP configuration.\n\n## Official Skills\n\nThe 10 canonical Agent Skills live in `skills/`. A repository checkout exposes the\nsame files to Codex through `.agents/skills/` and to Claude Code through\n`.claude/skills/`; both directories are thin relative symlinks, so there is only\none maintained instruction source. The Skills guide agents through subject\nidentity, coverage, attribution and product-specific limits. They do not grant\nan API entitlement or expand data rights.\n\n## Tools\n\n### Development applications\n\n**`search_das`** — Search Australian development applications with filters, newest\nfirst. Parameters: `state` (NSW, VIC, QLD, SA, WA, TAS, NT, ACT), `council` (full\ncouncil name, e.g. `City of Melbourne`), `category` (trade category, e.g.\n`Renovation / Extension`), `suburb`, `postcode`, `since` (ISO date `YYYY-MM-DD`,\nlodged on or after), `status_group` (`pending`, `advertised`, `approved`,\n`rejected`, `other`), `is_residential` (bool), `page` (default 1), `limit`\n(per page, default 20, max 100). Returns `{data: [DA record, ...], meta:\n{total, page, per_page, pages}}`. Each record carries id, address, suburb,\npostcode, council, state, trade_category, lodgement_date, status,\nstatus_group, latitude, longitude, info_url and document links; paid plans add\ndescription, summary, sub_category, cost_of_development, decision fields,\nnumber_of_dwellings, building_type, storeys and the full documents list.\nApplicant names are never returned on any plan.\n\n**`get_da`** — Retrieve one development application in full. Parameters: `da_id`\n(integer record id, as returned by `search_das` or `nearby_das`). Returns\n`{data: DA record}` with the same field set as above.\n\n**`nearby_das`** — Find development applications within a radius of a point,\nnearest first. Parameters: `lat`, `lng` (WGS84 decimal degrees), `radius_km`\n(default 5, max 50), `category`, `since`, `status_group`, `page`, `limit`\n(max 100). Returns the same `{data, meta}` shape as `search_das`, with an extra\n`distance_km` on each record.\n\n**`list_categories`** — List every trade category with its record count, for\ndiscovering valid `category` values. No parameters. Returns `{data: [{name,\nslug, is_residential, record_count}, ...], meta: {total}}` — categories such as\nRenovation / Extension, Swimming Pool / Spa, Granny Flat / Secondary Dwelling\nand Demolition.\n\n**`list_councils`** — List councils with coverage and freshness, for discovering\nvalid `council` values. Parameters: `limit` (max councils to return, default 50).\nReturns `{data: [{council, state, record_count, last_lodgement, last_fetched},\n...], meta}`.\n\n**`get_stats`** — Coverage summary for the whole dataset. No parameters. Returns\n`{data: {total_records, records_last_7_days, date_range: {earliest, latest},\nby_state: [...], by_category: [...]}}`.\n\n**`sql_query`** — Run a read-only SQL query for custom aggregation the filter\ntools cannot express. **Pro plan only.** Parameters: `query` (a single SELECT\nagainst the `das` table), `params` (optional list of values for `%s`\nplaceholders). Available columns: id, address, address_suburb, address_postcode,\ncouncil_name, council_reference, state, trade_category, sub_category,\napplication_type, is_residential, lodgement_date, status, cost_of_development,\ndecision_date, decision_status, on_notice_from, on_notice_to,\nnumber_of_dwellings, lot_count, land_use, building_type, storeys, latitude,\nlongitude, data_source, date_fetched, documents, info_url. Description and\nsummary are deliberately unavailable here because council free text can contain\npersonal contact details. SELECT only, capped at 1000 rows with a 10 second\ntimeout. Returns `{columns: [...], rows: [[...], ...], row_count, truncated}`.\n\n### Project intelligence\n\nThese tools use the same `DALEADS_API_KEY` as every other paid tool. The API\nenforces the key's `project_intelligence` entitlement and rights-cleared field\nprojection; the MCP package does not maintain a second capability list.\n\n**`search_projects`** — Search canonical projects rather than independent DA\nrecords. Parameters: `q`, `state`, normalized `stage`, normalized `project_type`,\n`changed_since` (ISO-8601 timestamp), `page`, and `limit` (max 100). The client\nsends the provider's canonical `per_page` parameter. Returns a `{data, meta}`\nenvelope with `contract_version: project-intelligence-v1`.\n\n**`get_project`** — Retrieve one canonical project. Parameter: `project_uid`\n(the stable identifier returned by `search_projects`). The current v1 response\ncontains identity, normalized status, location, linked applications and project\nrelations. Rights-gated fields are omitted rather than represented as coverage\nor conflict metadata.\n\n**`get_project_changes`** — Retrieve durable changes for one project. Parameters:\n`project_uid`, optional initial `since`, continuation `cursor`, and `limit`\n(max 100). Persist `meta.cursor` after every response. Use a non-null\n`meta.next_cursor` only to fetch the next page immediately. Change values remain\nredacted until field-level delivery provenance is available.\n\n**`nearby_projects`** — Search canonical projects around a WGS84 point. Parameters:\n`lat`, `lng`, `radius_km`, optional `stage` and `project_type`, `page`, and `limit`.\n\n**`create_project_watch`** — Create or idempotently replay a persistent signed\ncallback for future rights-cleared events on one `project_uid`. Parameters:\n`project_uid`, a public HTTPS `callback_url`, and a stable `idempotency_key`.\nThis tool changes external state and returns the signing secret.\n\n**`list_project_watches`** — List watches owned by the current API key. Signing\nsecrets are never returned by the list operation.\n\n**`deactivate_project_watch`** — Stop one owned watch by `watch_uid`. Delivery\naudit rows remain durable. Pending work is suppressed, but an HTTPS request\nalready in flight cannot be recalled and remains visible in the audit.\nReceivers must deduplicate the stable callback `Idempotency-Key` header.\n\nThe repository includes `skills/daleads-project-monitoring` for cursor polling\nand explicit callback management. It is installed from the GitHub repository, not bundled inside the\nPyPI wheel.\n\n### Property intelligence\n\n**`property_intelligence`** — Generic entitlement-filtered address-level\nproperty lookup for existing and manually issued keys. Parameters: `address`\n(free text, e.g. `34 Mary St Clayton VIC`) or `lat` + `lng` together, and\noptional `components` (comma-separated subset to request). A requested name\nnever grants a capability: the API intersects it with the key's server-side\nentitlement and field-level rights policy. This tool is not proof of a Full\nSelf-Serve entitlement; new Full workflows should use the closed tool below.\n\n**`full_property_intelligence`** — Closed public Full Property Intelligence\nSelf-Serve lookup. Parameters: `address` (recommended) or `lat` + `lng`\ntogether. It requests the base facts `das`, `poi`, `planning`, `transport`,\n`utilities`, `administrative` and `public_housing`; named hazard leaves for\nbushfire, flood, coastal, landslide and fire history; and named environmental\nleaves for soil, protected-area, heritage, threatened-species, Ramsar, koala,\necological, EPBC, bioregion and biodiversity context. The exact environmental\nleaf names are pinned in `contracts/focused-api-v1.json`.\n\nIt also requests exactly these score leaves: `scores.noise`,\n`scores.aircraft_noise`, `scores.flood`, and `scores.bushfire`. It never requests\ntop-level `hazards`, `environment` or `scores`, so a new provider field cannot\nenter Full automatically. Explicit official, rights-gated contamination and\nregister facts may return as Property Core context; they do not grant\n`scores.contamination` or publish the standalone Contamination product. Solar,\nNeighbourhood Heat, Landscape Openness and the Walkability Pilot are excluded.\nThe Full key carries separate `property_core` and `suburb_intelligence`\ncapabilities, which do not add fields to this response. Provider-side source\nand rights gates still apply to every returned field.\n\n**`property_core`** — Closed score-free property context. Parameters: `address`\n(recommended) or `lat` + `lng`. Returns resolved address/parcel identity,\ndevelopment applications, POI, planning, hazards, environment, transport,\nutilities, administrative and public-housing facts, plus response-specific\ncoverage and source obligations. It never returns scores, surfaces or unknown\nfuture blocks. The key must include the complete explicit Core component set.\n\n### Suburb and regional intelligence\n\n**`find_suburbs`** — Resolve a suburb-name prefix to ABS SAL codes before a\nsignals call. Parameters: `query`, optional `state`, `limit` (max 100). Returns\nthe existing licensed Census rows with `sal_code`; repeated names remain\nseparate rather than being guessed.\n\n**`suburb_signals`** — Census context and privacy-slim development activity for\none SAL code. Parameter: `sal_code`. Returns current/prior 12-month DA-record\ncounts, momentum, status and dwelling publication coverage, category mix and a\nmachine contract stating that project deduplication has not been applied. It\nnever attaches an SA2 absolute population forecast to the SAL.\n\n**`find_sa2_regions`** — Resolve an exact or partial region name to ASGS 2021\nSA2 codes. Parameters: `query`, optional `state`, `limit` (max 50). Use the\nreturned code with `sa2_population_forecast`; never infer it from a suburb name.\n\n**`sa2_population_forecast`** — Code-keyed regional population scenario Beta.\nParameter: nine-digit `sa2_code`. Returns history, model/vintage, housing-\nconstraint status and matching 1/3/5-year rolling-origin errors. Established\nSA2s include low/medium/high scenarios. High-growth and greenfield future values\nare withheld while the artifact has no DA dwelling constraint; withheld is not\nzero growth.\n\n**`noise_screening`** — Focused Noise Intelligence lookup. Parameters:\n`address` (recommended) or `lat` + `lng`. It requests exactly `scores.noise` and\n`scores.aircraft_noise`, returning modelled road/rail context, Lden/day/night\nestimates, facade sectors, confidence evidence and aircraft-overlay assessment.\nIt is not a site measurement, LA90 result or acoustic compliance assessment.\nUse the Noise fields in `property_sample` as the current keyless shape preview;\nthe generic sample's other fields are not part of the Noise entitlement.\n\n**`flood_screening`** — Focused Flood Intelligence lookup. Parameters: `address`\n(recommended) or `lat` + `lng`. It requests exactly `scores.flood,hazards.flood`\nand keeps the national screening model, mapped official evidence and any\nstudy-specific depth separate. Missing depth or mapping is a coverage state,\nnot zero depth or proof that flood risk is absent. Screening is national;\nofficial modelled depth currently comes from 55 production rasters (48 Brisbane\nand 7 NSW).\n\n**`bushfire_screening`** — Focused commercial Bushfire Screening lookup.\nParameters: `address` (recommended) or `lat` + `lng` together. It always requests\nexactly `scores.bushfire,hazards.bushfire`, returning subject identity, official\noverlay status, licensed hazard hits, modelled vegetation fuel, terrain, available\nfire history, coverage and caveats. Where available, the response includes a\npreliminary indicative BAL band with range and confidence plus its mandatory\ndisclaimer. It is not a certified BAL assessment and cannot be used for building\napproval. Coordinate-only lookups are\nlabelled as such and must not be treated as a building location.\n\n**`walkability_screening`** — Focused Amenity & Walkability Screening Pilot lookup.\nParameters: `address` (recommended) or `lat` + `lng`. It requests exactly\n`scores.walkability`: straight-line metres to 24 amenity scenarios plus\ndisclosed motorway, major-water and regional slope adjustments. It is not a\nwalking route, isochrone or travel-time result. Read every `coverage` state and\npreserve `meta.amenity_sources` attribution when names or coordinates surface.\n\n**`neighbourhood_context`** — Focused Neighbourhood Context Beta lookup.\nParameters: `address` (recommended) or `lat` + `lng` together. It requests\nexactly `scores.heat_island,scores.view_quality`. Neighbourhood Heat keeps its\napproximately 1 km temperature separate from 10 m land-cover context and\nreports source vintage and borrowed-pixel status. The legacy `view_quality` key\nreturns the public Landscape Openness product, including six factors,\nmissing/partial coverage and explicit line-of-sight exclusions. It is not\nparcel temperature, live weather, indoor comfort, building energy use or a\nguaranteed view.\n\n**`solar_resource`** — Focused Solar Resource Developer Preview lookup.\nParameters: `address` (recommended) or `lat` + `lng` together. It requests\nexactly `scores.solar` and returns regional open-horizon GHI/DNI/GTI, PVOUT,\noptimum tilt, per-field resolution, vintage, licence and attribution. It does\nnot identify roof planes, usable area, building or tree shading, obstructions,\ntariffs, self-consumption or batteries and must not be used as rooftop design.\n\n**`property_sample`** — Inspect the generic Property Intelligence response shape\nbefore you have a key. **No API key required.** No parameters. Returns the real\nproduction payload for 163 Grattan St, Carlton VIC (a heritage terrace with DA\nactivity). Noise and public Full currently share this preview because they do\nnot yet have dedicated sample routes. It is a schema demonstration, not an\nentitlement manifest: Preview fields present in it are not thereby included in\nNoise or public Full Self-Serve.\n\n**`property_core_sample`** — Inspect the closed score-free Property Core v1\ncontract. **No API key required.** Returns a real Carlton response containing\nonly the explicit Core fact blocks, coverage and source inventory.\n\n**`suburb_signals_sample`** — Inspect a real Carlton SAL development-signals\nBeta response. **No API key required.**\n\n**`sa2_population_forecast_sample`** — Inspect the Carlton SA2 forecast Beta,\nincluding matching rolling-origin error evidence. **No API key required.**\n\n**`property_walkability_sample`** — Inspect the focused Amenity & Walkability\nScreening contract for Carlton. **No API key required.** Distances are explicitly\nstraight-line and no route time is supplied.\n\n**`property_flood_sample`** — Inspect one scored hazard component in detail.\n**No API key required.** No parameters. Returns the production `scores.flood`\nblock for a study-covered point in Rocklea QLD: official 1% AEP modelled depth,\noverlay status, terrain context, coverage notes and provenance.\n\n**`property_bushfire_sample`** — Inspect the standard Bushfire Screening contract.\n**No API key required.** No parameters. Returns a real Katoomba NSW focused\nsample with resolved subject identity, official/modelled evidence, coverage,\nattribution and an explicit response-specific indicative BAL state. The canned\nsnapshot can predate the field; live responses may include the preliminary band.\n\n**`property_context_sample`** — Inspect the coordinated Neighbourhood Context\nBeta and Solar Resource Developer Preview contract. **No API key required.** No\nparameters. Returns a real production-shaped Carlton response containing only\nNeighbourhood Heat, Landscape Openness and Solar Resource, with their legacy v1\nkeys, measurement levels, sources, caveats and not-modelled boundaries.\n\n**`property_sandbox_addresses`** — List the addresses you can evaluate for free.\n**No API key required.** No parameters. Returns `{sandbox_addresses: [{address,\nlabel}, ...], note}` — 12 real addresses spanning all eight states, chosen for\ndistinct hazard and planning profiles. Lookups of these addresses through\n`property_intelligence` never count toward a key's monthly quota.\n\n## Data boundary\n\nThe adapter code and the data returned by DA Leads have separate licence\nboundaries. Installing this package does not grant an API entitlement or a\nright to redistribute the API data. Public Full Self-Serve supports internal\nanalysis and attributed static customer reports under its clickwrap terms.\nInteractive embedding, white labelling, onward access, resale, raw\nredistribution, special geometry and custom SLAs require Publisher or\nEnterprise rights. See the [DA Leads Terms](https://daleads.com.au/terms),\n[Privacy Policy](https://daleads.com.au/privacy), and\n[Data Attributions](https://daleads.com.au/attributions).\n\nThe server reuses the DA Leads API authentication, plan limits and privacy\ncontrols. Public API and MCP responses do not expose applicant names.\n\nCopyright 2026 Limon Tech. All rights reserved.\n",
  "bytes": 18181,
  "sha": "e25f4ea5994ff4c3c4ff6f92583ac812224307b5f24f3d9ea5cd8b57f1866324",
  "repo_slug": "resuly/daleads-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_resuly_daleads_mcp_9cc9e324/readme"
}