Skip to main content
Glama

DwellDelta - Australian rent check and property indicators

NSW median sale prices by postcode or council

nsw_sale_prices
Read-onlyIdempotent

Median sale price of the dwellings sold in the latest reported quarter in NSW, with the quartiles, the number of sales and the change on a year before, by postcode or council and by dwelling type - all dwellings, non_strata (separate houses) and strata (units, town houses, villas). From the NSW Department of Communities and Justice's Rent and Sales Report (CC BY 4.0). area or council names the place the question is about; with neither, the answer is the state's own figures. These are medians of homes sold: not asking prices, not valuations, and never what any one home sold for or is worth. A line marked UNUSUAL was set by a few very large sales or by many sales at one identical price, and is not a going price. A total noted as mostly a marked row's sales may be moved by them, and the file shows nothing more about it. A line with any other mark or note is not a going price either, and the file does not say why. Each answer names the dwelling type, the quarter and the source line, and states the limits. For questions such as "house prices in Coogee".

Input Schema

NameRequiredDescriptionDefault
areaNoAn NSW postcode, or a suburb (answered for its whole postcode)
councilNoAn NSW council, or part of its name
dwelling_typeNototal, non_strata (houses) or strata (units, town houses, villas); without it, all three are given

Output Schema

NameRequiredDescriptionDefault
unitNo
areasYes
staleYes
stateYes
adviceYes
limitsNo
cadenceYes
cite_asNo
figuresYes
measureYes
quarterNo
sourcesYes
councilsYes
page_urlNo
refusalsYes
area_kindYes
publisherYes
truncatedYes
data_as_ofNo
all_refusedYes
any_unusualYes
sample_ruleYes
stale_afterYes
state_totalYes
changes_madeNo
retrieved_atYes
stale_reasonYes
compared_withNo
period_due_byYes
dwelling_typesYes
period_overdueYes
server_versionYes
snapshot_builtNo
snapshot_originYes
any_unusual_partYes
period_overdue_reasonYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed30 schema fields changed
    • changedInput schema / properties / area / description
      Previous value: -"A four-digit NSW postcode (a suburb name returns its postcodes to try)"New value: +"An NSW postcode, or a suburb (answered for its whole postcode)"
    • removedOutput schema / definitions / refusal / properties / n_band / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / refusal / properties / reason / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_place / properties / area / anyOf
      Removed value: -[
      -  {
      -    "type": [
      -      "string",
      -      "number"
      -    ]
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_place / properties / council / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / change_pct / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / first_quartile_k_aud / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / median_price_k_aud / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / sales / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / small_sample / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / sale_row / properties / third_quartile_k_aud / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / attribution / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / feed_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / licence / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / licence_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / licence_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / period / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / definitions / source / properties / source / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / changes_made / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • addedOutput schema / properties / cite_as
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / compared_with / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / data_as_of / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / figures / items / properties / n_band / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / limits / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {}
      -]
    • addedOutput schema / properties / page_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / quarter / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / refusals / items / properties / n_band / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / refusals / items / properties / reason / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / snapshot_built / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
    • removedOutput schema / properties / unit / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {}
      -]
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, it discloses substantive behavior: what an UNUSUAL mark means (few very large sales or many identical prices), that a 'mostly' note means the total may be skewed by a marked row, that the file says nothing further, and that every answer names dwelling type, quarter and source line and states its limits. That is real caveat context an agent could not get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the middle section is a dense run-on about marks and notes, and the 'A line with any other mark or note is not a going price either' sentence largely repeats the preceding caveat. The caveats earn their place in principle but are not tightly written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage, the description need not explain return values, and it still covers scope, defaults, and data-quality caveats well. The only real omission is explicit signposting to the rent-based siblings for adjacent questions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning: a suburb is answered for its whole postcode, the three dwelling types are glossed (non_strata = separate houses, strata = units/town houses/villas), and supplying neither location parameter yields state figures. That goes beyond the enum and field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (median sale price of dwellings sold in the latest reported quarter in NSW) plus the two axes of aggregation (postcode/council and dwelling type). It also explicitly separates itself from the rent-focused siblings by insisting these are 'medians of homes sold: not asking prices, not valuations'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage trigger ('For questions such as "house prices in Coogee"') and states the default behavior when neither area nor council is supplied (state-wide figures). It does not explicitly route the agent to area_rents or vic_rents for the neighbouring questions, so the sibling differentiation is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources