{
  "openapi": "3.1.0",
  "info": {
    "title": "DK Dry Kleaning Agent API",
    "version": "1.0.0",
    "description": "Machine-readable service-area and estimated quote endpoints for DK. Quotes and availability are not confirmed orders."
  },
  "servers": [{"url": "https://drykleaning.ca"}],
  "paths": {
    "/api/availability": {
      "get": {
        "operationId": "checkServiceArea",
        "summary": "Check DK pilot lookup by Canadian postal code",
        "parameters": [{"name":"postal_code","in":"query","required":true,"schema":{"type":"string"},"example":"L4P 2H7"}],
        "responses": {"200":{"description":"Availability lookup result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid postal code"}}
      }
    },
    "/api/quote": {
      "post": {
        "operationId": "estimateQuote",
        "summary": "Calculate an estimated DK cleaning quote",
        "requestBody": {"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"object","additionalProperties":{"type":"number","minimum":0}},"rug":{"type":"object","properties":{"length_ft":{"type":"number","minimum":0},"width_ft":{"type":"number","minimum":0}}}}},"example":{"items":{"pants":2,"shirts":3,"suit":1},"rug":{"length_ft":0,"width_ft":0}}}}},
        "responses": {"200":{"description":"Estimated quote","content":{"application/json":{"schema":{"type":"object"}}}}}
      }
    },
    "/api/mcp": {
      "post": {
        "operationId": "mcpJsonRpc",
        "summary": "Minimal MCP-compatible JSON-RPC endpoint",
        "requestBody": {"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},
        "responses": {"200":{"description":"JSON-RPC response"}}
      }
    }
  }
}