Skip to main content
Glama

Microburbs Australian Property Data

Suburb · Recent sales

suburbs_sales_recent
Read-onlyIdempotent

Shown in the suburb report as the 'Recent sales' table tab in the Properties section.

Properties sold in the suburb, with beds/baths/land size, sale price and date, and coordinates, newest sale first.

Default: the last 3 years, one row per property (its most recent sale).

Full history: pass from and/or to (YYYY-MM-DD) for every sale in that range — one row per sale, so a property sold twice appears twice. History depth varies by state: NSW from 2001, Victoria, Queensland, WA and SA from about 2010, Tasmania from about 2014, ACT and NT from 2019.

Paginated with limit/offset: total reports how many sales match (counted before paging) and next_offset is the offset of the next page (null on the last one). Order is stable — newest first, ties broken by property — so paging never repeats or skips a sale. Each page is one call, at a flat price regardless of page size.

Price: 20¢ per call.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "suburb_name": "<suburb_name>"
    },
    "name": "suburbs_sales_recent"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNoLatest sale date to include (YYYY-MM-DD, inclusive). Default: today.
fromNoEarliest sale date to include (YYYY-MM-DD, inclusive). Passing `from` or `to` returns EVERY sale in the range, one row per sale, instead of the default last-3-years feed.
limitNoSales to return (default 20, max 200).
offsetNoRow offset — page through the feed with `limit`. `next_offset` in the response is the value for the next page.
suburb_nameYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Earliest sale date to include (YYYY-MM-DD, inclusive). Passing `from` or `to` returns EVERY sale in the range, one row per sale, instead of the default last-3-years feed.",
      +  "examples": [
      +    "2006-01-01"
      +  ]
      +}
    • changedInput schema / properties / offset / description
      Previous value: -"Row offset — page through the feed with `limit`."New value: +"Row offset — page through the feed with `limit`. `next_offset` in the response is the value for the next page."
    • addedInput schema / properties / to
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Latest sale date to include (YYYY-MM-DD, inclusive). Default: today.",
      +  "examples": [
      +    "2015-12-31"
      +  ]
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "available": {
      -      "anyOf": [
      -        {
      -          "type": "boolean"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "`false` on no-data responses. Omitted on success — branch on `data !== null` if you want a single discriminator.",
      -      "title": "Available"
      -    },
      -    "data": {
      -      "anyOf": [
      -        {
      -          "additionalProperties": true,
      -          "description": "Properties sold in the suburb over the last 3 years, paginated.",
      -          "example": {
      -            "area_level": "suburb",
      -            "area_name": "Belmont North",
      -            "results": [
      -              {
      -                "address": "9 Kanundra Street",
      -                "bathrooms": 3,
      -                "bedrooms": 2,
      -                "gnaf_pid": "GANSW704074941",
      -                "lat": -33.02135461,
      -                "lng": 151.66919805,
      -                "property_type": "House",
      -                "sold_date": "2026-03-30",
      -                "sold_price": 1005000
      -              },
      -              {
      -                "address": "9 Hope Street",
      -                "bathrooms": 1,
      -                "bedrooms": 3,
      -                "gnaf_pid": "GANSW704073843",
      -                "land_size": 844,
      -                "lat": -33.01951863,
      -                "lng": 151.67430967,
      -                "property_type": "House",
      -                "sold_date": "2026-03-27",
      -                "sold_price": 910000
      -              }
      -            ]
      -          },
      -          "properties": {
      -            "area_level": {
      -              "description": "Always 'suburb' for these endpoints.",
      -              "title": "Area Level",
      -              "type": "string"
      -            },
      -            "area_name": {
      -              "description": "Suburb (SAL) name.",
      -              "title": "Area Name",
      -              "type": "string"
      -            },
      -            "results": {
      -              "description": "Sold properties, most significant first. Capped by `limit`.",
      -              "items": {
      -                "additionalProperties": true,
      -                "description": "One sold property.",
      -                "properties": {
      -                  "address": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Street address (title-cased).",
      -                    "title": "Address"
      -                  },
      -                  "bathrooms": {
      -                    "anyOf": [
      -                      {
      -                        "type": "number"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Bathroom count.",
      -                    "title": "Bathrooms"
      -                  },
      -                  "bedrooms": {
      -                    "anyOf": [
      -                      {
      -                        "type": "number"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Bedroom count.",
      -                    "title": "Bedrooms"
      -                  },
      -                  "gnaf_pid": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "GNAF property ID.",
      -                    "title": "Gnaf Pid"
      -                  },
      -                  "land_size": {
      -                    "anyOf": [
      -                      {
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Land size in m², where known.",
      -                    "title": "Land Size"
      -                  },
      -                  "lat": {
      -                    "anyOf": [
      -                      {
      -                        "type": "number"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Latitude (WGS84).",
      -                    "title": "Lat"
      -                  },
      -                  "lng": {
      -                    "anyOf": [
      -                      {
      -                        "type": "number"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Longitude (WGS84).",
      -                    "title": "Lng"
      -                  },
      -                  "property_type": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Bucketed type: House / Townhouse / Unit / Land / Other.",
      -                    "title": "Property Type"
      -                  },
      -                  "sold_date": {
      -                    "anyOf": [
      -                      {
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Sale date (YYYY-MM-DD).",
      -                    "title": "Sold Date"
      -                  },
      -                  "sold_price": {
      -                    "anyOf": [
      -                      {
      -                        "type": "number"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "Sale price (AUD).",
      -                    "title": "Sold Price"
      -                  }
      -                },
      -                "title": "RecentSaleRow",
      -                "type": "object"
      -              },
      -              "title": "Results",
      -              "type": "array"
      -            },
      -            "total": {
      -              "anyOf": [
      -                {
      -                  "type": "integer"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "Sales available for this suburb — counted before `limit`/`offset`, so it stays accurate while paging.",
      -              "title": "Total"
      -            }
      -          },
      -          "required": [
      -            "area_name",
      -            "area_level",
      -            "results"
      -          ],
      -          "title": "RecentSales",
      -          "type": "object"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "The endpoint's payload, or `null` when Microburbs has no value."
      -    },
      -    "message": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "Human-readable explanation. Omitted on success.",
      -      "title": "Message"
      -    },
      -    "reason": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "description": "Machine-readable slug naming the no-data condition (e.g. `no_avm_for_GANSW704074813`). Stable per endpoint. Omitted on success.",
      -      "title": "Reason"
      -    }
      -  },
      -  "title": "ApiResponse[RecentSales]",
      -  "type": "object",
      -  "x-fastmcp-top-level-schema": "ApiResponse_RecentSales_"
      -}New value: +null
  3. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already establish this as a safe, idempotent read, and the description goes well beyond them: cost ("20¢ per call", flat regardless of page size), per-state history depth, the grain switch between one row per property and one row per sale, and a stability guarantee ("Order is stable — newest first, ties broken by property — so paging never repeats or skips a sale"). That is exactly the behavioral context an agent needs before spending money on repeated calls.

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

Conciseness4/5

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

Bold section headers (Default / Full history, pagination, Price) make it scannable and front-load the modes before the mechanics. It is on the long side, and the opening sentence about the report tab is weaker than the definitional sentence that follows it, but no sentence is filler.

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

Completeness5/5

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

With no output schema, the description still covers return shape (fields per row), row grain, ordering, paging fields, and cost. For a 5-parameter, paginated, paid data tool that is everything an agent needs to call it correctly and to page safely.

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 80%, so `from`, `to`, `limit` and `offset` are already documented structurally. The description still adds real meaning: it explains the row-grain consequence of passing `from`/`to`, that `total` is counted before paging, and that `next_offset` is null on the last page. The state-by-state history depth further qualifies what date ranges are actually useful, which the schema cannot express.

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

Purpose4/5

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

The description gives a concrete verb and resource: "Properties sold in the suburb, with beds/baths/land size, sale price and date, and coordinates, newest sale first." It also anchors the tool to the product surface ("the 'Recent sales' table tab in the Properties section"), which helps an agent map it to a known view. It never names a sibling such as properties_comparables_recent_sales_nearby or suburbs_sales_summary, so sibling differentiation is left implicit.

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?

The "Default" and "Full history" blocks clearly state the two operating modes and the condition that selects each: pass `from`/`to` to switch from the last-3-years, one-row-per-property feed to one row per sale. Pagination guidance is also explicit. The remaining gap is that it never says when a different tool (e.g. the nearby-comparables or summary sibling) should be preferred.

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