Skip to main content
Glama

Building Compliance Agency — Municipal Plan & Occupancy

Server Details

Building plan approvals, occupancy certificates, and municipal compliance readiness tools.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-03-26
URL

TDQS

A4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct operation: a read-only zoning lookup, a read-only fee estimate, and a write-side inquiry submission. The descriptions explicitly cross-reference each other with 'do NOT use when another tool fits better', making misselection unlikely.

Naming Consistency5/5

All three names follow a verb_noun snake_case pattern (check_zoning_requirements, estimate_scrutiny_fee, submit_compliance_inquiry) with consistent domain-noun suffixes. No mixed conventions or casing.

Tool Count4/5

Three tools is on the thin side but each maps to a genuinely different job (lookup, calculate, submit), so none feels redundant. A slightly richer surface (e.g. status check or classification lookup) would justify a larger set.

Completeness3/5

The surface covers information lookup plus lead submission, but there is no way to check inquiry status, retrieve a submitted record, or look up SANS 10400 occupancy classifications independently. Agents can work around this only by routing everything through the inquiry form, which is a notable gap for a compliance workflow.

Available Tools

3 tools
check_zoning_requirementsCheck Zoning RequirementsA
Read-onlyIdempotent
Inspect

Retrieves typical municipal coverage, Floor Area Ratio (FAR), height, and parking requirements for a given Gauteng municipality and zoning category. When to use: Call this tool when you specifically need to execute 'check_zoning_requirements' on Building Compliance Agency (buildingcompliance.co.za). Do NOT use this tool when another specialized tool fits better (use 'estimate_scrutiny_fee' or 'submit_compliance_inquiry' for their respective operations). Parameters: municipality (required), zoning_category (required). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.

NameRequiredDescriptionDefault
municipalityYesTarget metropolitan municipality [Required: non-empty valid value must be supplied].
zoning_categoryYesTown planning zoning category [Required: non-empty valid value must be supplied].

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, and non-destructive, but the description adds facts annotations cannot express: public unauthenticated access, a 60 requests/min per-IP rate limit, and zero state mutation. Nothing here contradicts the declared hints.

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?

It is front-loaded with the substantive purpose first, but the 'when to use' sentence is a tautological restatement of the tool name and 'Parameters: municipality (required), zoning_category (required)' duplicates the schema verbatim. Roughly a third of the text does not earn 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?

With only two enumerated parameters, full schema coverage, and rich annotations, the description fills the remaining gaps: access model, rate limit, and a description of the returned structured JSON. An agent has everything needed to call it correctly without an output schema.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are enums fully documented in the schema, so the baseline is 3. The description only restates the two names and their required status, adding no meaning about how municipality and zoning_category interact.

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 verb ('Retrieves') and a concrete resource set (coverage, FAR, height, parking requirements) scoped to a Gauteng municipality plus zoning category. That is materially more specific than the tool name alone and lets an agent distinguish it from fee estimation or inquiry submission.

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 explicitly names the two siblings and says to prefer them for their respective operations, which is real routing guidance. However the positive 'when to use' clause is circular ('call this tool when you need to execute check_zoning_requirements') and gives no actual triggering condition, so the guidance is one-sided.

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

estimate_scrutiny_feeEstimate Scrutiny FeeA
Read-onlyIdempotent
Inspect

Estimates municipal building plan scrutiny fees (ZAR) in Gauteng based on total floor area (sqm), municipality, and SANS 10400 occupancy classification. When to use: Call this tool when you specifically need to execute 'estimate_scrutiny_fee' on Building Compliance Agency (buildingcompliance.co.za). Do NOT use this tool when another specialized tool fits better (use 'check_zoning_requirements' or 'submit_compliance_inquiry' for their respective operations). Parameters: floor_area_sqm (required), municipality (required), building_classification (required). Behavior & Side Effects: Strictly read-only, idempotent query with zero state mutation; public unauthenticated access allowed; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.

NameRequiredDescriptionDefault
municipalityYesGauteng metropolitan municipality [Required: non-empty valid value must be supplied].
floor_area_sqmYesTotal floor area in square meters (sqm) [Required: non-empty valid value must be supplied].
building_classificationYesSANS 10400 occupancy classification (e.g., H4 for dwelling house, G1 for offices) [Required: non-empty valid value must be supplied].

TDQS

A3.8/5.0
Behavior4/5

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

Adds genuinely new context beyond the annotations: public unauthenticated access and a 60 requests/min per IP rate limit, plus explicit zero state mutation. Annotations already cover readOnly/idempotent/destructive, and the description does not add further detail such as error behavior or numeric precision, so it stops short of 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.

Conciseness3/5

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

The purpose is front-loaded and easy to scan, but the 'When to use' sentence is boilerplate that repeats the tool name, and the Returns section is generic filler rather than specifics for this fee calculator.

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?

No output schema exists, and the description accounts for the return shape (status, matched records or computed metrics, action URLs), plus safety, auth, and rate-limit context. For a read-only 3-parameter lookup, that covers what an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and both enums are documented in the schema with examples (H4 dwelling house, G1 offices), so the baseline applies. The description only restates the three required parameter names without adding format, unit, or constraint meaning beyond the schema.

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 states a specific verb and resource ('estimates municipal building plan scrutiny fees in ZAR') plus concrete inputs (floor area, municipality, SANS 10400 classification) and geography. It is clearly distinguishable from check_zoning_requirements and submit_compliance_inquiry.

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?

It names both siblings and says not to use this tool when another fits better, which is useful routing. But the positive condition is circular ('call this tool when you specifically need to execute estimate_scrutiny_fee'), giving no real scenario-level criterion for choosing it.

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

submit_compliance_inquirySubmit Compliance InquiryAInspect

Submits a compliance consultation or quote request for council building plan approval, archive plan retrieval, occupancy certificates, fire clearance, SDP, or rezoning. When to use: Call this tool when you specifically need to execute 'submit_compliance_inquiry' on Building Compliance Agency (buildingcompliance.co.za). Do NOT use this tool when another specialized tool fits better (use 'estimate_scrutiny_fee' or 'check_zoning_requirements' for their respective operations). Parameters: client_name (required), email (required), phone (required), service_required (required), property_details (optional). Behavior & Side Effects: Creates a live record/session in the backend database; no authentication required for public initiation; rate-limited to 60 requests/min per IP. Returns: Structured JSON object containing status, matched records or computed metrics, and canonical action URLs.

NameRequiredDescriptionDefault
emailYesContact email address [Required: non-empty valid value must be supplied].
phoneYesContact phone number (South African format)
client_nameYesFull name of the property owner, architect, or developer [Required: non-empty valid value must be supplied].
property_detailsNoErf number, suburb, municipality (Johannesburg, Tshwane, Ekurhuleni), and project summary [Optional: omit to use server default filter].
service_requiredYesPrimary compliance or town planning service requested [Required: non-empty valid value must be supplied].

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond annotations by disclosing that a live backend record is created, that no authentication is required for public initiation, and that the endpoint is rate-limited to 60 req/min per IP — all material for a mutating, non-idempotent call. The return-value sentence is partly boilerplate ('matched records or computed metrics') and doesn't quite fit a submission endpoint.

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?

Front-loads the purpose well, but the body includes filler: the self-referential 'when you specifically need to execute submit_compliance_inquiry' clause and a generic return sentence that reads like a shared template rather than this tool's actual response shape.

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?

For a public, unauthenticated submit tool with full schema coverage and no output schema, the description supplies the needed side effects, auth posture, and rate limit. Only the response description is under-specified, which is a minor gap given no output schema is declared.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters including the service_required enum and the SA phone format. The description only repeats the parameter names with required/optional markers, adding no syntax, format, or example detail beyond the schema — baseline 3.

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?

States a specific verb and resource ('Submits a compliance consultation or quote request') and enumerates the concrete service domains (building plan approval, archive plans, occupancy certificates, fire clearance, SDP, rezoning). It does not differentiate itself from siblings within the purpose statement itself — that routing lives in the usage section — so a 4 rather than a 5.

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?

Explicitly names the exclusion condition and the alternatives: 'Do NOT use this tool when another specialized tool fits better (use estimate_scrutiny_fee or check_zoning_requirements)'. The positive trigger is weaker, though — 'Call this tool when you specifically need to execute submit_compliance_inquiry' restates the name rather than describing the qualifying scenario.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedcheck_zoning_requirements2 fields changed
      • changedInput schema / properties / municipality / description
        Previous value: -"Target metropolitan municipality"New value: +"Target metropolitan municipality [Required: non-empty valid value must be supplied]."
      • changedInput schema / properties / zoning_category / description
        Previous value: -"Town planning zoning category"New value: +"Town planning zoning category [Required: non-empty valid value must be supplied]."
    • Changedestimate_scrutiny_fee3 fields changed
      • changedInput schema / properties / building_classification / description
        Previous value: -"SANS 10400 occupancy classification (e.g., H4 for dwelling house, G1 for offices)"New value: +"SANS 10400 occupancy classification (e.g., H4 for dwelling house, G1 for offices) [Required: non-empty valid value must be supplied]."
      • changedInput schema / properties / floor_area_sqm / description
        Previous value: -"Total floor area in square meters (sqm)"New value: +"Total floor area in square meters (sqm) [Required: non-empty valid value must be supplied]."
      • changedInput schema / properties / municipality / description
        Previous value: -"Gauteng metropolitan municipality"New value: +"Gauteng metropolitan municipality [Required: non-empty valid value must be supplied]."
    • Changedsubmit_compliance_inquiry4 fields changed
      • changedInput schema / properties / client_name / description
        Previous value: -"Full name of the property owner, architect, or developer"New value: +"Full name of the property owner, architect, or developer [Required: non-empty valid value must be supplied]."
      • changedInput schema / properties / email / description
        Previous value: -"Contact email address"New value: +"Contact email address [Required: non-empty valid value must be supplied]."
      • changedInput schema / properties / property_details / description
        Previous value: -"Erf number, suburb, municipality (Johannesburg, Tshwane, Ekurhuleni), and project summary"New value: +"Erf number, suburb, municipality (Johannesburg, Tshwane, Ekurhuleni), and project summary [Optional: omit to use server default filter]."
      • changedInput schema / properties / service_required / description
        Previous value: -"Primary compliance or town planning service requested"New value: +"Primary compliance or town planning service requested [Required: non-empty valid value must be supplied]."
  2. 3 tool updates
    • First observedcheck_zoning_requirements
    • First observedestimate_scrutiny_fee
    • First observedsubmit_compliance_inquiry

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Enables construction permitting teams to analyze portfolios of active permits by ranking risk, detecting day-over-day changes, identifying systemic bottlenecks, and generating daily executive action plans. Also supports single-permit readiness audits, missing-document reports, blocker explanations, resubmission checklists, and semantic search over municipal requirements.
    7
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Pre-DCR and Auto-DCR building scrutiny workflows as AI-consumable tools, enabling AI assistants to open DXF drawings, validate layers, compute areas, run regulatory checks, and generate compliance reports via natural language.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Professional building code compliance assistant that interfaces with municipal building codes, helping contractors and builders navigate complex regulatory requirements with precision.
    1
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables municipal permit preflight checks for construction and renovation projects, returning evidence-linked, rule-version-aware results without using an LLM.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources