Skip to main content
Glama

Microburbs Australian Property Data

suburbs_finder_search

Boolean-AND range filter over suburb metrics, single-column sort, paginated. Every row carries its rank — position in the ranked result (1 = top of the sort, out of meta.total). When sorting by a median or a growth, the actual value is also shown for the first 5 and last 5 rows of the page; for any other suburb's number, call the per-field endpoint (market/, forecast/).

Paging: a page is capped at 25 rows. A bigger limit is clamped, not rejected — so always read meta: total is the full match count, has_more says whether rows remain, and next_offset is the offset to pass for the next page. A "top 50" needs two calls, each charged.

Flat 30c.

Price: 30¢ per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoSort field. Prefix '-' for descending (highest first), e.g. `-growth10yrCagr`. Must be one of the field keys (see enum). Works on its own — you do NOT need a filter on the field you sort by; to rank without a threshold, pass `sort` and no filter. Only when `sort` is omitted does it default to the first filter field, desc. Apartment/unit metrics are the `unit`-prefixed keys (unitMedianPrice, unitGrossYield, unitMedianRent, …); the unprefixed market keys are houses. Unit data only exists where a suburb has a real unit market — coverage runs ~13-54% of suburbs depending on the field, so a unit filter implicitly excludes house-only suburbs.
limitNoPage size. Hard cap 25 — a larger value is clamped, NOT an error, and `meta.requested_limit` says so. For more than 25 results, page with `offset`.
filterNoRange filter `fieldKey:min..max` (repeatable). Open-ended `min..` / `..max`. Valid fieldKeys: medianHousePrice, grossYield, medianRent, growthForecast4yr, growth10yrCagr, growth3yrCagr, rentGrowth3yr, soldAtLossPct, daysOnMarket, vacancyRate, unitMedianPrice, unitGrossYield, unitMedianRent, unitGrowthForecast4yr, unitGrowth10yrCagr, unitGrowth3yrCagr, unitRentGrowth3yr, unitSoldAtLossPct, unitDaysOnMarket, unitVacancyRate, stockOnMarket, monthsOfInventory, landValuePerSqm, lifestyleScore, safetyScore, hipScore, affluenceScore, renters, distanceCbdKm, publicHousingPct, overseasBornPct, welfareReliancePct, unemploymentPct, singleParentsPct, familyHouseholdsPct, privateSchoolPct, medianIncomeWeekly, communityDepthIndex, premiumRenovationIndex, homeOfficeIndex, tranquilityIndex, innovationEconomyIndex, alternativeLivingIndex, investorConcentration, negativeGearingExposure, mortgageStress. Apartment/unit metrics are the `unit`-prefixed keys (unitMedianPrice, unitGrossYield, unitMedianRent, …); the unprefixed market keys are houses. Unit data only exists where a suburb has a real unit market — coverage runs ~13-54% of suburbs depending on the field, so a unit filter implicitly excludes house-only suburbs.
offsetNoRow offset — page through results more than 25 deep. `meta.next_offset` gives the value for the next page.
statesNoComma-separated states — abbreviation or full name, e.g. `VIC` or `Victoria`. Anything else is a 422 listing the valid values (a city name is not a state — use `regions`).
regionsNoComma-separated EXACT SA4 region names — call GET /v1/suburbs/finder/regions for the list. e.g. `Melbourne - Inner`, `Melbourne - West`. A metro name like `Melbourne` alone will NOT match; an unknown value 422s with the closest real names.
property_typeNoLegacy flag: 'unit' re-points the ten unprefixed house-market keys (medianHousePrice, grossYield, ...) at their unit column. It does NOT affect the explicit `unit`-prefixed keys, which are always units. Prefer the `unit` keys — they are visible in /fields and can be mixed with house keys in one query.house

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNoThe endpoint's payload, or `null` when Microburbs has no value.
reasonNoMachine-readable slug naming the no-data condition (e.g. `no_avm_for_GANSW704074813`). Stable per endpoint. Omitted on success.
messageNoHuman-readable explanation. Omitted on success.
availableNo`false` on no-data responses. Omitted on success — branch on `data !== null` if you want a single discriminator.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does an excellent job: it discloses rank semantics, clamped limit rather than rejection, need to read meta fields, two calls for a top-50, and the unusual first-5/last-5 value display behavior. It also states the price per call.

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?

The description is well-structured and front-loaded: core behavior first, then paging, then pricing. It is slightly redundant by stating 'Flat 30c.' and 'Price: 30¢ per call.' twice, but otherwise every sentence earns its place.

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?

For a complex 7-parameter search tool with no annotations, this is remarkably complete: it covers result ranking, pagination semantics, clamped limits, meta fields, fallback endpoints, and cost. The output schema covers the response shape, and the parameter schema covers each field. Nothing essential is missing for correct invocation.

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% and each parameter already has a detailed description, so the baseline is 3. The description adds meaningful extra semantics: it explains the Boolean-AND filter composition, the 25-row hard cap with clamping, and the implication that a top-50 requires two paid calls.

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 first sentence names a specific verb ('Boolean-AND range filter over suburb metrics') plus sort and pagination, making it immediately clear this is the ranked-search/filter endpoint. It is easily distinguished from sibling finder tools like suburbs_finder_count, suburbs_finder_fields, and suburbs_finder_regions.

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 description clearly says when NOT to use it: for a specific suburb's metric value, call the per-field endpoint (market/*, forecast/*). It also explains pagination behavior so an agent knows when multiple calls are needed. It does not explicitly contrast with suburbs_finder_count, but the context is strong enough.

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