{
  "name": "PlumberHelp.ca",
  "version": "1.0",
  "vertical": "plumbing",
  "site": "https://plumberhelp.ca",
  "capabilities": {
    "quote.submit": {
      "method": "POST",
      "url": "https://plumberhelp.ca/api/v1/quotes",
      "dry_run_url": "https://plumberhelp.ca/api/v1/quotes?dry_run=true",
      "consent_required": true
    },
    "services.list": {
      "method": "GET",
      "url": "https://plumberhelp.ca/api/v1/services"
    },
    "locations.list": {
      "method": "GET",
      "url": "https://plumberhelp.ca/api/v1/locations"
    }
  },
  "services": [
    {
      "id": "drain_cleaning",
      "name": "Drain cleaning / clog"
    },
    {
      "id": "sewer_backup",
      "name": "Sewer backup"
    },
    {
      "id": "water_pressure",
      "name": "Low water pressure"
    },
    {
      "id": "leak_repair",
      "name": "Leak repair"
    },
    {
      "id": "plumbing_inspection",
      "name": "Plumbing inspection"
    },
    {
      "id": "water_heater_repipe",
      "name": "Water heater / repipe"
    },
    {
      "id": "pipe_repair",
      "name": "Pipe repair"
    },
    {
      "id": "other",
      "name": "Other plumbing"
    }
  ],
  "schema": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "consent",
      "name",
      "email",
      "phone",
      "address",
      "city",
      "province",
      "country",
      "service_type",
      "property_type",
      "access_type",
      "urgency"
    ],
    "properties": {
      "consent": {
        "type": "boolean",
        "description": "Explicit consent to share PII for contractor matching",
        "const": true
      },
      "name": {
        "type": "string",
        "description": "Full name",
        "minLength": 2,
        "maxLength": 120
      },
      "email": {
        "type": "string",
        "description": "Email address",
        "format": "email",
        "maxLength": 254
      },
      "phone": {
        "type": "string",
        "description": "Phone number",
        "minLength": 7,
        "maxLength": 40
      },
      "address": {
        "type": "string",
        "description": "Property street address",
        "minLength": 5,
        "maxLength": 200
      },
      "city": {
        "type": "string",
        "description": "Property city",
        "minLength": 2,
        "maxLength": 80
      },
      "province": {
        "type": "string",
        "description": "Canadian province code",
        "enum": [
          "AB",
          "BC",
          "MB",
          "NB",
          "NL",
          "NS",
          "NT",
          "NU",
          "ON",
          "PE",
          "QC",
          "SK",
          "YT"
        ],
        "minLength": 2,
        "maxLength": 2
      },
      "postal_code": {
        "type": "string",
        "description": "Canadian postal code",
        "pattern": "^[A-Z]\\d[A-Z] \\d[A-Z]\\d$"
      },
      "country": {
        "type": "string",
        "description": "Country code",
        "const": "CA",
        "default": "CA"
      },
      "details": {
        "type": "string",
        "description": "Project details",
        "maxLength": 4000
      },
      "agent_source": {
        "type": "string",
        "description": "Submitting agent, e.g. chatgpt",
        "maxLength": 64,
        "default": "agent"
      },
      "agent_version": {
        "type": "string",
        "description": "Optional submitting agent version",
        "maxLength": 64
      },
      "submission_method": {
        "type": "string",
        "description": "openapi, mcp, webmcp, or agent-skill",
        "enum": [
          "openapi",
          "mcp",
          "webmcp",
          "agent-skill"
        ],
        "default": "openapi"
      },
      "website": {
        "type": "string",
        "description": "Spam honeypot; leave empty"
      },
      "service_type": {
        "type": "string",
        "description": "Plumbing service needed",
        "enum": [
          "drain_cleaning",
          "sewer_backup",
          "water_pressure",
          "leak_repair",
          "plumbing_inspection",
          "water_heater_repipe",
          "pipe_repair",
          "other"
        ]
      },
      "property_type": {
        "type": "string",
        "description": "Property type",
        "enum": [
          "house_townhouse",
          "condo_apartment",
          "commercial",
          "other"
        ]
      },
      "access_type": {
        "type": "string",
        "description": "Plumbing access",
        "enum": [
          "easy",
          "finished_tight_space",
          "crawl_space",
          "unknown"
        ]
      },
      "urgency": {
        "type": "string",
        "description": "Requested timing",
        "enum": [
          "emergency",
          "soon",
          "week",
          "flexible"
        ]
      }
    }
  },
  "documentation": {
    "agents_md": "https://plumberhelp.ca/agents.md",
    "llms_txt": "https://plumberhelp.ca/llms.txt",
    "openapi": "https://plumberhelp.ca/openapi.json"
  }
}
