Skip to main content
Glama

Microburbs Australian Property Data

Suburb · Crime — breakdown by type

suburbs_crime_breakdown
Read-onlyIdempotent

Shown in the suburb report as the breakdown table inside the 'Crime' card in the Risks section.

Per-crime-type rates (predicted incidents per 100,000 residents per year) for the suburb vs national medians. Each row is the median over the suburb's mesh blocks for that crime type, so the rows do not add up to the suburb_median on /crime/summary (a median of totals).

Price: 10¢ 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_crime_breakdown"
  }
}

Input Schema

NameRequiredDescriptionDefault
suburb_nameYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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": "Per-crime-type breakdown table, highest rate first.",
      -          "example": {
      -            "area_level": "suburb",
      -            "area_name": "Belmont North",
      -            "breakdown": [
      -              {
      -                "diff_pct": 12,
      -                "label": "Property",
      -                "national_median": 898,
      -                "rate": 1008,
      -                "type": "property",
      -                "verdict": "Above average"
      -              },
      -              {
      -                "diff_pct": -12,
      -                "label": "Drugs",
      -                "national_median": 409,
      -                "rate": 358,
      -                "type": "drugs",
      -                "verdict": "Below average"
      -              }
      -            ],
      -            "unit": "predicted incidents per 100,000 residents per year"
      -          },
      -          "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"
      -            },
      -            "breakdown": {
      -              "description": "One row per crime type, sorted by rate descending.",
      -              "items": {
      -                "additionalProperties": true,
      -                "description": "One crime type's suburb rate vs the national median.",
      -                "properties": {
      -                  "diff_pct": {
      -                    "description": "Suburb rate vs national median, rounded percentage delta.",
      -                    "title": "Diff Pct",
      -                    "type": "integer"
      -                  },
      -                  "label": {
      -                    "description": "Display label (e.g. 'Property', 'Public Order').",
      -                    "title": "Label",
      -                    "type": "string"
      -                  },
      -                  "national_median": {
      -                    "description": "National per-mesh-block median rate for this crime type.",
      -                    "title": "National Median",
      -                    "type": "number"
      -                  },
      -                  "rate": {
      -                    "description": "Average rate across this suburb's mesh blocks — predicted incidents per 100,000 residents per year — rounded.",
      -                    "title": "Rate",
      -                    "type": "integer"
      -                  },
      -                  "type": {
      -                    "description": "Machine key (e.g. 'property', 'public_order').",
      -                    "title": "Type",
      -                    "type": "string"
      -                  },
      -                  "verdict": {
      -                    "description": "Band for the delta: 'Very low', 'Below average', 'Average', 'Above average' or 'High'.",
      -                    "title": "Verdict",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "type",
      -                  "label",
      -                  "rate",
      -                  "national_median",
      -                  "diff_pct",
      -                  "verdict"
      -                ],
      -                "title": "CrimeBreakdownRow",
      -                "type": "object"
      -              },
      -              "title": "Breakdown",
      -              "type": "array"
      -            },
      -            "unit": {
      -              "description": "Unit of every rate / national_median value — always 'predicted incidents per 100,000 residents per year'.",
      -              "title": "Unit",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "area_name",
      -            "area_level",
      -            "unit",
      -            "breakdown"
      -          ],
      -          "title": "CrimeBreakdown",
      -          "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[CrimeBreakdown]",
      -  "type": "object",
      -  "x-fastmcp-top-level-schema": "ApiResponse_CrimeBreakdown_"
      -}New value: +null
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds genuinely new behavioral context: a per-call cost of 10¢, the units and predicted nature of the values, and the crucial aggregation caveat that each row is a median over the suburb's mesh blocks rather than a component of a total. It does not discuss caching, failure modes, or result size, which keeps it below a 5.

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 short and front-loaded with the measure and units, then the aggregation caveat, then cost. The opening sentence about where the table appears in the suburb report UI is arguably agent-irrelevant filler, but it is brief and does establish scope. No redundancy otherwise.

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?

There is no output schema, so the description must convey the shape of the return — it does, by describing one row per crime type with suburb values against national medians and a stated unit. Cost is disclosed, and the non-additivity caveat prevents a common downstream analysis error. The remaining gap is the unspecified `suburb_name` input format.

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

Parameters5/5

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

With exactly one parameter and 0% schema description coverage, the description must carry the burden — and the schema itself is a bare required string with no format hints. The description does not specify whether `suburb_name` expects a name string, an ID, or a canonical form, nor any normalization behavior, which is a real gap for a lookup identifier.

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 states a specific resource and measure: per-crime-type rates (predicted incidents per 100,000 residents per year) for a suburb versus national medians. It also distinguishes itself semantically from the summary endpoint by noting these rows will not sum to the `suburb_median` on `/crime/summary`, which differentiates it from the totals sibling. It stops short of a crisp 'use this when' framing, but the purpose is unambiguous.

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

Usage Guidelines3/5

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

There is no explicit when-to-use / when-not-to-use statement or named alternative to call instead. The note that rows do not sum to `suburb_median` on `/crime/summary` implicitly signals 'don't use this for a total crime figure, use the summary tool' and 'use this for a per-type breakdown'. That is implied guidance only, so it lands at the minimum-viable level.

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