{
  "openapi": "3.1.0",
  "info": {
    "title": "Bintaro Jaya Property — Public Agent API",
    "version": "1.0.0",
    "summary": "Read-only, unauthenticated access to the property catalog.",
    "description": "Public read-only endpoints for the Bintaro Jaya new-homes catalog (Julie Property). No authentication is required and no write operations are exposed.",
    "license": {
      "name": "Proprietary",
      "identifier": "LicenseRef-Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://bintarojayaproperty.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/.well-known/agent.json": {
      "get": {
        "operationId": "getAgentCatalog",
        "summary": "Site description + cluster catalog summary.",
        "tags": [
          "catalog"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Agent description JSON."
          }
        }
      }
    },
    "/api/markdown": {
      "get": {
        "operationId": "getPageMarkdown",
        "summary": "Markdown rendering of any site page.",
        "description": "Send Accept: text/markdown to any page URL, or call this endpoint with ?path=. Responds with Content-Type: text/markdown plus x-markdown-tokens.",
        "tags": [
          "catalog"
        ],
        "security": [],
        "parameters": [
          {
            "name": "path",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Site path to render, e.g. / or /kluster/<slug>/"
          }
        ],
        "responses": {
          "200": {
            "description": "Markdown."
          }
        }
      }
    },
    "/api/status.json": {
      "get": {
        "operationId": "getStatus",
        "summary": "Service health.",
        "tags": [
          "status"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Status JSON."
          }
        }
      }
    },
    "/api/mcp/": {
      "post": {
        "operationId": "callMcp",
        "summary": "Minimal MCP endpoint (initialize, tools/list, tools/call).",
        "tags": [
          "mcp"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "JSON-RPC result."
          }
        }
      }
    },
    "/api/agent/identity.json": {
      "post": {
        "operationId": "registerIdentity",
        "summary": "Anonymous agent registration (identity assertion + claim token).",
        "tags": [
          "auth"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Identity assertion."
          }
        }
      }
    },
    "/api/agent/claim.json": {
      "post": {
        "operationId": "claimIdentity",
        "summary": "Claim ceremony (user code + WhatsApp verification URI).",
        "tags": [
          "auth"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Claim attempt."
          }
        }
      }
    },
    "/api/agent/revoke.json": {
      "post": {
        "operationId": "revokeToken",
        "summary": "RFC 7009 revocation (always 200).",
        "tags": [
          "auth"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Revoked."
          }
        }
      }
    }
  }
}