Skip to main content
Glama

Microburbs Australian Property Data

Suburb · Projected voting profile

suburbs_demographics_voting
Read-onlyIdempotent

Projected first-preference shares per party, aggregated across the suburb's microburbs (booth-derived model — not an actual vote).

Input Schema

TableJSON 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": "Projected voting profile, aggregated across the suburb's microburbs.",
      -          "example": {
      -            "lean": "Labor lean",
      -            "margin_pct": 6.7,
      -            "n_microburbs": 85,
      -            "parties": [
      -              {
      -                "label": "Labor",
      -                "party": "ALP",
      -                "pct": 38.2
      -              },
      -              {
      -                "label": "Liberal",
      -                "party": "LIB",
      -                "pct": 31.5
      -              },
      -              {
      -                "label": "Greens",
      -                "party": "GRN",
      -                "pct": 11.3
      -              }
      -            ],
      -            "projection": "Federal election held May 2026 (projected — not an actual vote)",
      -            "runner_up": {
      -              "label": "Liberal",
      -              "party": "LIB",
      -              "pct": 31.5
      -            },
      -            "suburb": "Belmont North",
      -            "winner": {
      -              "label": "Labor",
      -              "party": "ALP",
      -              "pct": 38.2
      -            }
      -          },
      -          "properties": {
      -            "lean": {
      -              "description": "Strong <party> (≥15pp) / <party> lean (≥5pp) / Marginal.",
      -              "title": "Lean",
      -              "type": "string"
      -            },
      -            "margin_pct": {
      -              "description": "Winner-minus-runner-up margin (pp).",
      -              "title": "Margin Pct",
      -              "type": "number"
      -            },
      -            "n_microburbs": {
      -              "description": "Microburbs in the aggregate.",
      -              "title": "N Microburbs",
      -              "type": "integer"
      -            },
      -            "parties": {
      -              "description": "All parties polling ≥0.5%, descending.",
      -              "items": {
      -                "additionalProperties": true,
      -                "description": "One party's projected first-preference share.",
      -                "properties": {
      -                  "label": {
      -                    "description": "Human party name.",
      -                    "title": "Label",
      -                    "type": "string"
      -                  },
      -                  "party": {
      -                    "description": "Party code (LIB/ALP/GRN/TEAL/…).",
      -                    "title": "Party",
      -                    "type": "string"
      -                  },
      -                  "pct": {
      -                    "description": "Projected first-preference share (%).",
      -                    "title": "Pct",
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "party",
      -                  "label",
      -                  "pct"
      -                ],
      -                "title": "PartyResult",
      -                "type": "object"
      -              },
      -              "title": "Parties",
      -              "type": "array"
      -            },
      -            "projection": {
      -              "description": "What the projection represents (and its provenance).",
      -              "title": "Projection",
      -              "type": "string"
      -            },
      -            "runner_up": {
      -              "additionalProperties": true,
      -              "description": "Second-placed party.",
      -              "properties": {
      -                "label": {
      -                  "description": "Human party name.",
      -                  "title": "Label",
      -                  "type": "string"
      -                },
      -                "party": {
      -                  "description": "Party code (LIB/ALP/GRN/TEAL/…).",
      -                  "title": "Party",
      -                  "type": "string"
      -                },
      -                "pct": {
      -                  "description": "Projected first-preference share (%).",
      -                  "title": "Pct",
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "party",
      -                "label",
      -                "pct"
      -              ],
      -              "title": "PartyResult",
      -              "type": "object"
      -            },
      -            "suburb": {
      -              "description": "Canonical SAL name.",
      -              "title": "Suburb",
      -              "type": "string"
      -            },
      -            "winner": {
      -              "additionalProperties": true,
      -              "description": "Leading party.",
      -              "properties": {
      -                "label": {
      -                  "description": "Human party name.",
      -                  "title": "Label",
      -                  "type": "string"
      -                },
      -                "party": {
      -                  "description": "Party code (LIB/ALP/GRN/TEAL/…).",
      -                  "title": "Party",
      -                  "type": "string"
      -                },
      -                "pct": {
      -                  "description": "Projected first-preference share (%).",
      -                  "title": "Pct",
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "party",
      -                "label",
      -                "pct"
      -              ],
      -              "title": "PartyResult",
      -              "type": "object"
      -            }
      -          },
      -          "required": [
      -            "suburb",
      -            "n_microburbs",
      -            "projection",
      -            "winner",
      -            "runner_up",
      -            "margin_pct",
      -            "lean",
      -            "parties"
      -          ],
      -          "title": "SuburbVoting",
      -          "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[SuburbVoting]",
      -  "type": "object",
      -  "x-fastmcp-top-level-schema": "ApiResponse_SuburbVoting_"
      -}New value: +null
  2. First observed

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value with the caveat that the data is a 'booth-derived model — not an actual vote', which is a genuinely useful disclosure that the figures are projected estimates. However, it does not describe return format or error behavior, though the simple nature of the tool lowers the burden.

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

Conciseness5/5

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

A single 23-word sentence with the core output front-loaded ('Projected first-preference shares per party') and zero filler. Every phrase earns its place, including the model caveat.

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

Completeness3/5

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

The tool is simple — one parameter, no output schema, no nested objects — and the description conveys the output type, aggregation basis, and model nature. But it omits which parties are included, the output format, and any usage context relative to sibling demographics tools. Adequate for the low complexity, yet with notable gaps.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for the single parameter. It references 'suburb' consistent with the parameter name suburb_name, but gives no details on expected format, exact-match requirements, or how the suburb maps to microburbs. With 0% coverage and no format guidance, the description does not fully compensate for the schema gap.

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 output — 'Projected first-preference shares per party' — aggregated across the suburb's microburbs, and clarifies it is a booth-derived model, not actual votes. This clearly identifies the tool's function and its topic (voting) is unique among the large set of demographics siblings. It doesn't explicitly name a sibling it differs from, but the subject matter is distinctive enough.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus the many other demographics tools (age, income, tenure, unemployment). The 'not an actual vote' caveat is behavioral rather than usage guidance, and no alternatives or exclusion conditions are mentioned. An agent must infer when projected voting profile is the right choice.

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