{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://saaskr.com/saaskr.schema.json",
  "title": "saaskr.json",
  "description": "서비스 도메인의 /.well-known/saaskr.json 에 두는 파일. saaskr(한국에서 만든 SaaS 디렉토리)가 매일 읽어 AI 가 조회하는 정보를 갱신하고, verification 토큰이 맞으면 소유권을 인증한다. 모르는 항목은 빼면 된다 — 빠진 항목은 '확인 안 됨'으로 처리되고 '없음'으로 표시되지 않는다.",
  "type": "object",
  "required": ["version"],
  "properties": {
    "version": { "const": 1 },
    "verification": { "type": "string", "pattern": "^saaskr-verify-[0-9a-f]{24}$", "description": "saaskr.com/claim 에서 받은 소유권 인증 토큰" },
    "name": { "type": "string", "maxLength": 120 },
    "tagline": { "type": "string", "maxLength": 120, "description": "언제 쓰는 서비스인지 한 줄" },
    "description": { "type": "string", "maxLength": 4000 },
    "category": { "type": "string", "description": "saaskr 카테고리 slug" },
    "pricing_model": { "enum": ["free", "freemium", "paid", "contact"] },
    "kr_features": {
      "type": "array",
      "items": { "enum": ["tax_invoice", "kakao_alimtalk", "kr_pg", "kr_data_residency", "isms", "korean_support", "kakao_login", "naver_login", "hwp"] }
    },
    "api": { "type": "object", "properties": { "available": { "type": "boolean" }, "docs_url": { "type": "string", "format": "uri" } } },
    "webhook": { "type": "object", "properties": { "available": { "type": "boolean" } } },
    "mcp": { "type": "object", "properties": { "available": { "type": "boolean" }, "url": { "type": "string", "format": "uri" } } },
    "integrates_with": { "type": "array", "items": { "type": "string", "maxLength": 60 }, "maxItems": 20 },
    "ai_capabilities": {
      "type": "array",
      "description": "다른 서비스에 AI 를 API 로 공급하는 경우에만",
      "items": { "enum": ["llm", "ocr", "stt", "tts", "translation", "embedding", "vision", "video", "rag", "inference", "agent", "voice-clone", "avatar"] }
    },
    "partner": { "type": "object", "properties": { "open": { "type": "boolean" }, "wanted": { "type": "string", "maxLength": 200 } } }
  }
}
