Skip to main content
Glama

saaskr — Korean SaaS Directory (한국 SaaS 디렉토리)

submit_korean_saas

saaskr 한국 SaaS 디렉토리: 내가 만든 SaaS를 saaskr 디렉토리에 등록한다. 사용자가 "내 서비스 등록해줘", "saaskr에 올려줘"라고 할 때 사용. 이미 등록된 서비스면 기존 페이지를 알려주고, 새 서비스면 심사 큐에 넣는다(링크가 살아있는지 등 자동 검증 후 보통 1시간 안에 발행). 등록 전 사용자에게 이름·URL·한 줄 설명을 확인받는다. 본인 서비스라면(is_owner) 공식 사이트를 직접 읽고 가격·API·웹훅·MCP·연동·한국 특화 기능 중 사이트에서 실제로 확인되는 것만 함께 넣는다 — 확인 안 되는 항목은 비워둘 것(추측 금지). 소개는 사용자가 준 정보와 공식 사이트 내용으로만 채운다(임의로 지어내지 말 것). 상세히 작성한다: 한 줄 소개만 보내지 말고 profile(해결하는 문제·대상 고객·주요 기능·사용 상황·차별점·시작 방법·고객 유형·플랫폼·단계)과 본인 서비스면 회사 정보(회사명·설립연도·지역·팀 규모)까지 채운다. 이 내용이 saaskr 상세 페이지 본문이 된다. 공개 페이지가 되므로 검색에 읽힐 글로 쓴다: 공식 사이트 문구를 그대로 복사하지 말고 자기 말로 다시 쓰고, 한 줄 소개는 45자 안팎으로 "누가 언제 쓰는지"를 담고, 실제 검색어를 자연스러운 문장에 녹이되 키워드를 나열하지 않고, "최고·유일·1위" 같은 근거 없는 표현은 쓰지 않는다. 사이트와 사용자 대화에서 확인되지 않는 항목은 비운다 — 모르는 걸 만들어 채우지 말고, 필요하면 사용자에게 물어본다.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "website_url": "<website_url>",
      "name": "<name>",
      "tagline": "<tagline>"
    },
    "name": "submit_korean_saas"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes서비스 이름
originNo해외에서 만든 서비스(한국어 지원·국내 스토어 배포 등 한국 이용자 대상)면 global. 해외 플랫폼 목록에만 게재된다. 기본 domestic.
has_apiNo외부 개발자용 API 제공 여부(확인된 경우만)
has_mcpNoMCP 서버 제공 여부(확인된 경우만)
mcp_urlNoMCP 서버 주소 또는 설치 안내 URL(선택)
profileNo서비스·사업자 상세 소개(선택이지만 가능한 한 채울 것). 상세 페이지 본문이 되고 통계에도 쓰인다. 확인 안 되는 키는 생략.
taglineYes한 줄 설명(5자 이상, 200자 이내)
categoryNo카테고리 slug(선택). 가능한 값: ai, productivity, social, design, developer-tools, marketing, fintech, ecommerce, education, health, media, lifestyle, hr, gaming, travel, food
is_ownerNo본인이 만든 서비스면 true. 아래 사실 항목은 true 일 때만 반영된다.
accept_thinNo소개가 얇다는 안내를 받았는데 사용자가 더 줄 정보가 없을 때만 true. 그대로 등록되지만 구글 색인 대상에서는 제외된다.
descriptionNo서비스 소개(선택, 4000자 이내)
has_webhookNo웹훅 제공 여부(확인된 경우만)
kr_featuresNo사이트에서 확인되는 한국 특화 기능(선택): tax_invoice(전자세금계산서 발행), kakao_alimtalk(카카오 알림톡 연동), kr_pg(국내 PG 결제(카드·계좌이체)), kr_data_residency(데이터 국내 저장), isms(ISMS/ISMS-P 인증), korean_support(한국어 고객지원), kakao_login(카카오 로그인), naver_login(네이버 로그인), hwp(한글(HWP) 파일 지원)
website_urlYes서비스 공식 URL (https:// 로 시작)
api_docs_urlNoAPI 문서 URL(선택)
pricing_modelNo가격 형태(선택): free=완전 무료, freemium=무료 플랜+유료, paid=유료만, contact=도입 문의
integrates_withNo연동되는 서비스 이름(선택, 최대 20)
submitter_emailNo연락받을 이메일(선택)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / accept_thin
      Added value: +{
      +  "description": "소개가 얇다는 안내를 받았는데 사용자가 더 줄 정보가 없을 때만 true. 그대로 등록되지만 구글 색인 대상에서는 제외된다.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / origin
      Added value: +{
      +  "description": "해외에서 만든 서비스(한국어 지원·국내 스토어 배포 등 한국 이용자 대상)면 global. 해외 플랫폼 목록에만 게재된다. 기본 domestic.",
      +  "enum": [
      +    "domestic",
      +    "global"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / profile / properties / launched_at
      Added value: +{
      +  "description": "서비스를 실제로 공개(출시)한 시점 \"YYYY-MM\"(월을 모르면 \"YYYY\"). saaskr 등록일과 다르다. 사이트·소개글·앱스토어 등에서 확인되는 경우만, 모르면 비워두고 사용자에게 물어볼 것.",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / profile
      Added value: +{
      +  "description": "서비스·사업자 상세 소개(선택이지만 가능한 한 채울 것). 상세 페이지 본문이 되고 통계에도 쓰인다. 확인 안 되는 키는 생략.",
      +  "properties": {
      +    "audience": {
      +      "description": "구체적인 대상(예: \"배달앱 3개를 같이 쓰는 사장님\") 최대 6개, 각 40자 이내",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "audience_segments": {
      +      "description": "주 사용자층(복수): individual(개인·프리랜서), small_business(소상공인), startup(스타트업), sme(중소기업), enterprise(대기업), developer(개발자), marketer(마케터), designer(디자이너), creator(크리에이터), student_edu(학생·교육기관), public_sector(공공기관)",
      +      "items": {
      +        "enum": [
      +          "individual",
      +          "small_business",
      +          "startup",
      +          "sme",
      +          "enterprise",
      +          "developer",
      +          "marketer",
      +          "designer",
      +          "creator",
      +          "student_edu",
      +          "public_sector"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "company": {
      +      "description": "is_owner=true 일 때만 반영. 사업자등록번호·대표자명·연락처는 받지 않는다.",
      +      "properties": {
      +        "founded_year": {
      +          "description": "설립(또는 서비스 시작) 연도",
      +          "type": "integer"
      +        },
      +        "location": {
      +          "description": "상세 위치(선택, 예: 성수동)",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "회사·팀 이름",
      +          "type": "string"
      +        },
      +        "region": {
      +          "description": "소재 시·도: seoul(서울), gyeonggi(경기), incheon(인천), busan(부산), daegu(대구), gwangju(광주), daejeon(대전), ulsan(울산), sejong(세종), gangwon(강원), chungbuk(충북), chungnam(충남), jeonbuk(전북), jeonnam(전남), gyeongbuk(경북), gyeongnam(경남), jeju(제주), overseas(해외)",
      +          "enum": [
      +            "seoul",
      +            "gyeonggi",
      +            "incheon",
      +            "busan",
      +            "daegu",
      +            "gwangju",
      +            "daejeon",
      +            "ulsan",
      +            "sejong",
      +            "gangwon",
      +            "chungbuk",
      +            "chungnam",
      +            "jeonbuk",
      +            "jeonnam",
      +            "gyeongbuk",
      +            "gyeongnam",
      +            "jeju",
      +            "overseas"
      +          ],
      +          "type": "string"
      +        },
      +        "team_size": {
      +          "description": "팀 규모: 1(1인), 2-5(2~5명), 6-10(6~10명), 11-50(11~50명), 51-200(51~200명), 200+(200명 이상)",
      +          "enum": [
      +            "1",
      +            "2-5",
      +            "6-10",
      +            "11-50",
      +            "51-200",
      +            "200+"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "customer_type": {
      +      "description": "주 고객 유형: b2b(기업 대상(B2B)), b2c(개인 대상(B2C)), b2b2c(기업·개인 모두), b2g(공공기관 대상)",
      +      "enum": [
      +        "b2b",
      +        "b2c",
      +        "b2b2c",
      +        "b2g"
      +      ],
      +      "type": "string"
      +    },
      +    "differentiator": {
      +      "description": "비슷한 서비스와 다른 점(400자 이내). 근거 없는 최상급(\"최고\", \"유일\") 금지.",
      +      "type": "string"
      +    },
      +    "features": {
      +      "description": "주요 기능 최대 8개. 사이트에서 확인되는 것만.",
      +      "items": {
      +        "properties": {
      +          "desc": {
      +            "description": "한 줄 설명(140자 이내)",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "기능 이름(30자 이내)",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "getting_started": {
      +      "description": "처음 쓰는 방법 한두 문장(240자 이내). 예: \"가입 후 카카오 채널 연동까지 5분\"",
      +      "type": "string"
      +    },
      +    "platforms": {
      +      "description": "제공 형태(복수): web(웹), ios(iOS 앱), android(안드로이드 앱), desktop(데스크톱), api(API), plugin(플러그인·확장)",
      +      "items": {
      +        "enum": [
      +          "web",
      +          "ios",
      +          "android",
      +          "desktop",
      +          "api",
      +          "plugin"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "problem": {
      +      "description": "이 서비스가 해결하는 문제를 사용자 입장에서 2~4문장(500자 이내). 기능 나열이 아니라 \"누가 어떤 상황에서 무엇이 불편한가\".",
      +      "type": "string"
      +    },
      +    "stage": {
      +      "description": "서비스 단계: idea(준비 중), beta(베타), launched(정식 출시), growing(성장 중(유료 고객 있음))",
      +      "enum": [
      +        "idea",
      +        "beta",
      +        "launched",
      +        "growing"
      +      ],
      +      "type": "string"
      +    },
      +    "use_cases": {
      +      "description": "\"이럴 때 쓴다\" 상황 문장 최대 5개, 각 140자 이내",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed9 schema fields changed
    • addedInput schema / properties / api_docs_url
      Added value: +{
      +  "description": "API 문서 URL(선택)",
      +  "type": "string"
      +}
    • addedInput schema / properties / has_api
      Added value: +{
      +  "description": "외부 개발자용 API 제공 여부(확인된 경우만)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / has_mcp
      Added value: +{
      +  "description": "MCP 서버 제공 여부(확인된 경우만)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / has_webhook
      Added value: +{
      +  "description": "웹훅 제공 여부(확인된 경우만)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / integrates_with
      Added value: +{
      +  "description": "연동되는 서비스 이름(선택, 최대 20)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / is_owner / description
      Previous value: -"본인이 만든 서비스면 true"New value: +"본인이 만든 서비스면 true. 아래 사실 항목은 true 일 때만 반영된다."
    • addedInput schema / properties / kr_features
      Added value: +{
      +  "description": "사이트에서 확인되는 한국 특화 기능(선택): tax_invoice(전자세금계산서 발행), kakao_alimtalk(카카오 알림톡 연동), kr_pg(국내 PG 결제(카드·계좌이체)), kr_data_residency(데이터 국내 저장), isms(ISMS/ISMS-P 인증), korean_support(한국어 고객지원), kakao_login(카카오 로그인), naver_login(네이버 로그인), hwp(한글(HWP) 파일 지원)",
      +  "items": {
      +    "enum": [
      +      "tax_invoice",
      +      "kakao_alimtalk",
      +      "kr_pg",
      +      "kr_data_residency",
      +      "isms",
      +      "korean_support",
      +      "kakao_login",
      +      "naver_login",
      +      "hwp"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / mcp_url
      Added value: +{
      +  "description": "MCP 서버 주소 또는 설치 안내 URL(선택)",
      +  "type": "string"
      +}
    • addedInput schema / properties / pricing_model
      Added value: +{
      +  "description": "가격 형태(선택): free=완전 무료, freemium=무료 플랜+유료, paid=유료만, contact=도입 문의",
      +  "enum": [
      +    "free",
      +    "freemium",
      +    "paid",
      +    "contact"
      +  ],
      +  "type": "string"
      +}
  6. First observed

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-idempotent, non-destructive, non-read-only write; the description adds the substantive behavior: duplicate detection returns the existing page, new services enter a review queue with automated link validation and publish in ~1 hour, and thin submissions are excluded from Google indexing (accept_thin). It also discloses the editorial constraints (public page, no copied copy, no unsupported superlatives) that shape correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and followed by trigger phrases, which is good structure. However, the no-fabrication rule is restated three separate times ('확인되는 것만', '추측 금지', '모르는 걸 만들어 채우지 말고'), and the content-quality rules are interleaved with submission mechanics in one dense block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter nested write with no output schema, the description covers the workflow (verify with user, dedupe, submit, review), the content bar, and hints at the return ('기존 페이지를 알려주고'). What comes back on a fresh submission (queue ID, status endpoint) is not stated, which is the main residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by prescribing which nested profile fields must be filled (problem, audience, features, use cases, differentiator, getting started, customer type, platforms, stage) and by making is_owner the gate for company fields. It adds workflow-level meaning but not per-parameter detail for fields like origin, accept_thin, or integrates_with.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('saaskr 디렉토리에 등록한다') and enumerates the resulting artifact (profile, company info, tagline) so an agent knows exactly what it produces. It does not name any sibling, so the boundary with claim_korean_saas or check_korean_saas_submission must be inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete user utterances that should trigger it ('내 서비스 등록해줘', 'saaskr에 올려줘') and requires confirming name/URL/tagline with the user before submitting. It never states when to prefer claim_korean_saas or check_korean_saas_submission instead, so routing among siblings is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources