{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "protocolVersion": "2025-03-26",
  "name": "building-compliance-agency-mcp",
  "title": "Building Compliance Agency MCP Server",
  "version": "1.2.0",
  "description": "Official Model Context Protocol (MCP) server for Building Compliance Agency (Gauteng, South Africa). Provides municipal scrutiny fee estimation, zoning parameter lookup, and direct council compliance quote requests across Johannesburg, Tshwane, and Ekurhuleni.",
  "homepageUrl": "https://buildingcompliance.co.za",
  "documentationUrl": "https://buildingcompliance.co.za/llms-full.txt",
  "provider": {
    "name": "Building Compliance Agency",
    "url": "https://buildingcompliance.co.za",
    "email": "hello@buildingcompliance.co.za"
  },
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://buildingcompliance.co.za/mcp",
    "supportedTransports": [
      "streamable-http",
      "http-post"
    ]
  },
  "endpoints": {
    "mcp": "https://buildingcompliance.co.za/mcp",
    "health": "https://buildingcompliance.co.za/api/inventory/check"
  },
  "authentication": {
    "required": false,
    "schemes": [
      "none",
      "oauth2"
    ],
    "resourceMetadataUrl": "https://buildingcompliance.co.za/.well-known/oauth-protected-resource"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "subscribe": false,
      "listChanged": false
    },
    "prompts": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "estimate_scrutiny_fee",
      "description": "Estimates municipal building plan scrutiny fees (ZAR) in Gauteng based on total floor area (sqm), municipality, and SANS 10400 occupancy classification.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "floor_area_sqm": {
            "type": "number",
            "description": "Total floor area in square meters (sqm)"
          },
          "municipality": {
            "type": "string",
            "enum": [
              "Johannesburg",
              "Tshwane",
              "Ekurhuleni"
            ],
            "description": "Gauteng metropolitan municipality"
          },
          "building_classification": {
            "type": "string",
            "enum": [
              "A1",
              "B1",
              "E1",
              "F1",
              "G1",
              "H1",
              "H3",
              "H4"
            ],
            "description": "SANS 10400 occupancy classification (e.g., H4 for dwelling house, G1 for offices)"
          }
        },
        "required": [
          "floor_area_sqm",
          "municipality",
          "building_classification"
        ]
      }
    },
    {
      "name": "check_zoning_requirements",
      "description": "Retrieves typical municipal coverage, Floor Area Ratio (FAR), height, and parking requirements for a given Gauteng municipality and zoning category.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "municipality": {
            "type": "string",
            "enum": [
              "Johannesburg",
              "Tshwane",
              "Ekurhuleni"
            ],
            "description": "Target metropolitan municipality"
          },
          "zoning_category": {
            "type": "string",
            "enum": [
              "Residential 1",
              "Residential 2",
              "Residential 3",
              "Residential 4",
              "Business 1",
              "Business 4",
              "Industrial 1",
              "Commercial"
            ],
            "description": "Town planning zoning category"
          }
        },
        "required": [
          "municipality",
          "zoning_category"
        ]
      }
    },
    {
      "name": "submit_compliance_inquiry",
      "description": "Submits a compliance consultation or quote request for council building plan approval, archive plan retrieval, occupancy certificates, fire clearance, SDP, or rezoning.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "client_name": {
            "type": "string",
            "description": "Full name of the property owner, architect, or developer"
          },
          "email": {
            "type": "string",
            "description": "Contact email address"
          },
          "phone": {
            "type": "string",
            "description": "Contact phone number (South African format)"
          },
          "service_required": {
            "type": "string",
            "enum": [
              "Building Plan Submission",
              "Obtain Approved Plans",
              "Occupancy Certificates",
              "Fire Clearance Certificates",
              "Site Development Plans",
              "Council Drawings",
              "Rezoning Applications",
              "Consent Use Applications",
              "Township Establishment"
            ],
            "description": "Primary compliance or town planning service requested"
          },
          "property_details": {
            "type": "string",
            "description": "Erf number, suburb, municipality (Johannesburg, Tshwane, Ekurhuleni), and project summary"
          }
        },
        "required": [
          "client_name",
          "email",
          "phone",
          "service_required"
        ]
      }
    }
  ],
  "mcpServers": {
    "building-compliance-agency": {
      "url": "https://buildingcompliance.co.za/mcp",
      "description": "MCP endpoint for Gauteng municipal building compliance, SANS 10400 scrutiny fees, zoning checks, and quote submissions.",
      "capabilities": {
        "tools": [
          {
            "name": "estimate_scrutiny_fee",
            "description": "Estimates municipal building plan scrutiny fees (ZAR) in Gauteng based on total floor area (sqm), municipality, and SANS 10400 occupancy classification.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "floor_area_sqm": {
                  "type": "number",
                  "description": "Total floor area in square meters (sqm)"
                },
                "municipality": {
                  "type": "string",
                  "enum": [
                    "Johannesburg",
                    "Tshwane",
                    "Ekurhuleni"
                  ],
                  "description": "Gauteng metropolitan municipality"
                },
                "building_classification": {
                  "type": "string",
                  "enum": [
                    "A1",
                    "B1",
                    "E1",
                    "F1",
                    "G1",
                    "H1",
                    "H3",
                    "H4"
                  ],
                  "description": "SANS 10400 occupancy classification (e.g., H4 for dwelling house, G1 for offices)"
                }
              },
              "required": [
                "floor_area_sqm",
                "municipality",
                "building_classification"
              ]
            }
          },
          {
            "name": "check_zoning_requirements",
            "description": "Retrieves typical municipal coverage, Floor Area Ratio (FAR), height, and parking requirements for a given Gauteng municipality and zoning category.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "municipality": {
                  "type": "string",
                  "enum": [
                    "Johannesburg",
                    "Tshwane",
                    "Ekurhuleni"
                  ],
                  "description": "Target metropolitan municipality"
                },
                "zoning_category": {
                  "type": "string",
                  "enum": [
                    "Residential 1",
                    "Residential 2",
                    "Residential 3",
                    "Residential 4",
                    "Business 1",
                    "Business 4",
                    "Industrial 1",
                    "Commercial"
                  ],
                  "description": "Town planning zoning category"
                }
              },
              "required": [
                "municipality",
                "zoning_category"
              ]
            }
          },
          {
            "name": "submit_compliance_inquiry",
            "description": "Submits a compliance consultation or quote request for council building plan approval, archive plan retrieval, occupancy certificates, fire clearance, SDP, or rezoning.",
            "inputSchema": {
              "type": "object",
              "properties": {
                "client_name": {
                  "type": "string",
                  "description": "Full name of the property owner, architect, or developer"
                },
                "email": {
                  "type": "string",
                  "description": "Contact email address"
                },
                "phone": {
                  "type": "string",
                  "description": "Contact phone number (South African format)"
                },
                "service_required": {
                  "type": "string",
                  "enum": [
                    "Building Plan Submission",
                    "Obtain Approved Plans",
                    "Occupancy Certificates",
                    "Fire Clearance Certificates",
                    "Site Development Plans",
                    "Council Drawings",
                    "Rezoning Applications",
                    "Consent Use Applications",
                    "Township Establishment"
                  ],
                  "description": "Primary compliance or town planning service requested"
                },
                "property_details": {
                  "type": "string",
                  "description": "Erf number, suburb, municipality (Johannesburg, Tshwane, Ekurhuleni), and project summary"
                }
              },
              "required": [
                "client_name",
                "email",
                "phone",
                "service_required"
              ]
            }
          }
        ]
      }
    }
  }
}