Korean lodging: 84,490 stays from 4 government permit ledgers + KTO TourAPI, honest gaps
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
사용자가 **답변 오류 제보나 개선 요청을 전해 달라고 했을 때만** 운영자에게 전달한다. 쓰는 때: 사용자가 "이거 틀렸으니 신고해 줘", "운영자에게 알려 줘", "이 기능도 넣어 달라고 전해 줘"처럼 제보·요청을 부탁했을 때. 보내기 전에 무엇이 전달되는지 사용자에게 알린다. kind='결함'은 틀린 답 제보, kind='질문기록'은 개선 요청이다. 쓰지 않는 때: 사용자가 요청하지 않았는데 질문을 남기려고 부르지 않는다. 답하기 전에 먼저 부르지도 않는다 — 이 도구는 답변을 대신하지 않는다. 전달 내용(인자)과 같은 접속 주소 단위의 30분 안 직전 호출 최대 5건 요약이 운영자 검토용으로 저장된다(공유 망 뒤에서는 다른 사용자의 호출이 섞일 수 있다 · 주소 단위를 못 가리면 싣지 않는다) (개인정보처리방침 https://stay.sallim.app/privacy). 무인증 공개 서버라 쓰기 표면을 이 도구 하나로 묶어 시간당 상한을 건다(CLAUDE.md 규칙 2).
'결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. 사용자가 요청하지 않은 질문을 기록용으로 넘기지 않는다
사용자가 제보한 문제. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다.
사용자가 맞다고 본 값
사용자가 제보·개선 요청과 함께 전달하기로 한 질문(kind='질문기록'이면 필수). 이름·연락처·정확한 거주지 같은 개인 식별 정보는 빼고 일반형으로 적는다(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다
문제가 된 답을 만든 도구
틀린 수치·문장
answered_fully=false일 때 **없어서 못 답한 것**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록')
kind='질문기록' 전용 — 이 서버 도구만으로 그 질문에 완결된 답을 했는가. false면 missing_axis에 무엇이 없었는지 적는다
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
사용자가 **답변 오류 제보나 개선 요청을 전해 달라고 했을 때만** 운영자에게 전달한다. 쓰는 때: 사용자가 "이거 틀렸으니 신고해 줘", "운영자에게 알려 줘", "이 기능도 넣어 달라고 전해 줘"처럼 제보·요청을 부탁했을 때. 보내기 전에 무엇이 전달되는지 사용자에게 알린다. kind='결함'은 틀린 답 제보, kind='질문기록'은 개선 요청이다. 쓰지 않는 때: 사용자가 요청하지 않았는데 질문을 남기려고 부르지 않는다. 답하기 전에 먼저 부르지도 않는다 — 이 도구는 답변을 대신하지 않는다. 전달 내용(인자)과 같은 접속 주소 단위의 30분 안 직전 호출 최대 5건 요약이 운영자 검토용으로 저장된다(공유 망 뒤에서는 다른 사용자의 호출이 섞일 수 있다 · 주소 단위를 못 가리면 싣지 않는다) (개인정보처리방침 https://stay.sallim.app/privacy). 무인증 공개 서버라 쓰기 표면을 이 도구 하나로 묶어 시간당 상한을 건다(CLAUDE.md 규칙 2).
| Argument | Type | Description |
|---|---|---|
| kind | string | '결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. 사용자가 요청하지 않은 질문을 기록용으로 넘기지 않는다 |
| problem | any | 사용자가 제보한 문제. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다. |
| expected | any | 사용자가 맞다고 본 값 |
| question | any | 사용자가 제보·개선 요청과 함께 전달하기로 한 질문(kind='질문기록'이면 필수). 이름·연락처·정확한 거주지 같은 개인 식별 정보는 빼고 일반형으로 적는다(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다 |
| tool_used | any | 문제가 된 답을 만든 도구 |
| wrong_value | any | 틀린 수치·문장 |
| missing_axis | any | answered_fully=false일 때 **없어서 못 답한 것**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록') |
| answered_fully | any | kind='질문기록' 전용 — 이 서버 도구만으로 그 질문에 완결된 답을 했는가. false면 missing_axis에 무엇이 없었는지 적는다 |
{
"type": "object",
"title": "report_issueArguments",
"properties": {
"kind": {
"enum": [
"결함",
"질문기록"
],
"type": "string",
"title": "Kind",
"default": "결함",
"description": "'결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. 사용자가 요청하지 않은 질문을 기록용으로 넘기지 않는다"
},
"problem": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Problem",
"default": null,
"description": "사용자가 제보한 문제. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다."
},
"expected": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Expected",
"default": null,
"description": "사용자가 맞다고 본 값"
},
"question": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Question",
"default": null,
"description": "사용자가 제보·개선 요청과 함께 전달하기로 한 질문(kind='질문기록'이면 필수). 이름·연락처·정확한 거주지 같은 개인 식별 정보는 빼고 일반형으로 적는다(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다"
},
"tool_used": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tool Used",
"default": null,
"description": "문제가 된 답을 만든 도구"
},
"wrong_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Wrong Value",
"default": null,
"description": "틀린 수치·문장"
},
"missing_axis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Missing Axis",
"default": null,
"description": "answered_fully=false일 때 **없어서 못 답한 것**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록')"
},
"answered_fully": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Answered Fully",
"default": null,
"description": "kind='질문기록' 전용 — 이 서버 도구만으로 그 질문에 완결된 답을 했는가. false면 missing_axis에 무엇이 없었는지 적는다"
}
}
}원본 플랫폼(네이버·구글·관광공사)의 검색 결과로 가는 링크를 만든다. 이 서버는 예약을 처리하지 않는다 — 사용자를 원본 플랫폼으로 보낸다. 링크는 **검색 링크**이며 특정 객실·예약 페이지가 아니고 예약 가능 여부도 확인하지 않는다. 검색어는 naver·google이 숙소명+주소, tour는 숙소명만이다(주소가 안 들어가 같은 이름의 다른 숙소가 섞일 수 있다). 관광공사 행이 인허가 원장에서 폐업으로 공시되면(stay_detail의 ledger_closure가 closed_in_ledger*) 응답에 ledger_closure(status·close_date·같은 주소 영업 등록)와 note 한 문장을 함께 싣는다.
| Argument | Type | Description |
|---|---|---|
| stay_id* | string | stay_search가 준 stay_id |
| platform | string | 어느 플랫폼 검색으로 보낼지 (naver, google, tour) |
{
"type": "object",
"title": "stay_booking_linkArguments",
"required": [
"stay_id"
],
"properties": {
"stay_id": {
"type": "string",
"title": "Stay Id",
"maxLength": 200,
"description": "stay_search가 준 stay_id"
},
"platform": {
"enum": [
"naver",
"google",
"tour"
],
"type": "string",
"title": "Platform",
"default": "naver",
"description": "어느 플랫폼 검색으로 보낼지 (naver, google, tour)"
}
}
}숙소 하나의 상세 정보(이름·주소·좌표·종류·원장 출처)를 조회한다. **재고는 조회하지 못한다** — 이 서버에 붙은 재고 채널이 0개라 날짜·인원을 줘도 availability는 항상 unknown이다(사유는 unavailable_reason에 실린다). 만실도 빈방 있음도 아니다. 빈방·요금은 stay_booking_link로 원본 검색 링크를 받아 직접 확인하라. 관광공사(tourapi) 행에는 인허가 원장의 폐업 등록과 이름·주소 정확 일치로 대조한 결과가 ledger_closure로 온다 — closed_in_ledger면 원장 기준 폐업이고, 같은 주소의 영업 중 원장 등록도 찾지 못했다(대조한 주소 범위는 note에 있다). closed_in_ledger_address_active면 폐업 등록과 함께 같은 주소에 다른 상호로 영업 중인 원장 등록이 있다(same_address_active) — 같은 업소인지 판정하지 못하니 둘 다 전하라. closed_in_ledger_address_unchecked면 폐업 등록은 있지만 같은 주소의 영업 등록 대조를 이번에 못 했다(확인 안 됨). 폐업 등록을 못 찾은 것은 영업 중의 확증이 아니다.
| Argument | Type | Description |
|---|---|---|
| guests | integer | 인원(1~30) |
| checkin | any | 체크인 YYYY-MM-DD |
| stay_id* | string | stay_search가 준 stay_id (예: tourapi:2671267) |
| checkout | any | 체크아웃 YYYY-MM-DD |
| include_footnotes | boolean | true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지) |
{
"type": "object",
"title": "stay_detailArguments",
"required": [
"stay_id"
],
"properties": {
"guests": {
"type": "integer",
"title": "Guests",
"default": 2,
"maximum": 30,
"minimum": 1,
"description": "인원(1~30)"
},
"checkin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Checkin",
"default": null,
"description": "체크인 YYYY-MM-DD"
},
"stay_id": {
"type": "string",
"title": "Stay Id",
"maxLength": 200,
"description": "stay_search가 준 stay_id (예: tourapi:2671267)"
},
"checkout": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Checkout",
"default": null,
"description": "체크아웃 YYYY-MM-DD"
},
"include_footnotes": {
"type": "boolean",
"title": "Include Footnotes",
"default": false,
"description": "true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지)"
}
}
}조건에 맞는 국내 숙소를 찾는다. **재고를 확인하지 못한 숙소를 결과에서 지우지 않는다.** availability가 unknown이면 빈방 여부를 모른다는 뜻이고, 만실이라는 뜻이 아니다. 사용자에게 그렇게 전달하라.
| Argument | Type | Description |
|---|---|---|
| limit | integer | 반환 개수 (1~50) |
| guests | integer | 인원(1~30) |
| region | any | 지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 전국은 region을 비운다(빈 값 = 지역 조건 없음 — '전국'·'한국'은 지역 이름이 아니라 주소 글자로 걸린다). 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담고, 시도를 안 줬으면 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라. **숙소 이름 검색은 없다**(이름 대신 그 숙소의 주소를 넣어라) · 업종어('펜션'·'게스트하우스')는 region이 아니라 category로 건다 |
| checkin | any | 체크인 YYYY-MM-DD. 주면 재고 조회를 시도한다 — 지난 날짜면 재고는 조회하지 않는다(목록은 그대로 나온다) |
| category | any | 숙소 종류. 라벨은 두 원천의 어휘에서 오고, 같은 숙소라도 원천마다 이름이 다르다. TourAPI 마케팅 라벨: 관광호텔·콘도미니엄·유스호스텔·펜션·모텔·민박·게스트하우스·홈스테이·서비스드레지던스·한옥 인허가 원장 법정 업종명: 관광호텔·여관업·숙박업(생활)·여인숙업·일반호텔·숙박업 기타·휴양콘도미니엄업·농어촌민박업·외국인관광 도시민박업·한옥체험업 두 어휘에 다 있는 라벨: 관광호텔 — 양쪽 원천을 함께 거른다. 그 밖의 라벨은 자기 원천의 숙소만 거르고, 다른 원천의 같은 종류 숙소는 빠진다(예: '펜션'으로 걸면 원장의 '농어촌민박업'이 빠진다). 전체를 보려면 다른 어휘의 대응 라벨로 한 번 더 걸어라. |
| checkout | any | 체크아웃 YYYY-MM-DD |
| include_footnotes | boolean | true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지) |
{
"type": "object",
"title": "stay_searchArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "반환 개수 (1~50)"
},
"guests": {
"type": "integer",
"title": "Guests",
"default": 2,
"maximum": 30,
"minimum": 1,
"description": "인원(1~30)"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"maxLength": 200,
"description": "지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 전국은 region을 비운다(빈 값 = 지역 조건 없음 — '전국'·'한국'은 지역 이름이 아니라 주소 글자로 걸린다). 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담고, 시도를 안 줬으면 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라. **숙소 이름 검색은 없다**(이름 대신 그 숙소의 주소를 넣어라) · 업종어('펜션'·'게스트하우스')는 region이 아니라 category로 건다"
},
"checkin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Checkin",
"default": null,
"description": "체크인 YYYY-MM-DD. 주면 재고 조회를 시도한다 — 지난 날짜면 재고는 조회하지 않는다(목록은 그대로 나온다)"
},
"category": {
"anyOf": [
{
"enum": [
"관광호텔",
"콘도미니엄",
"유스호스텔",
"펜션",
"모텔",
"민박",
"게스트하우스",
"홈스테이",
"서비스드레지던스",
"한옥",
"여관업",
"숙박업(생활)",
"여인숙업",
"일반호텔",
"숙박업 기타",
"휴양콘도미니엄업",
"농어촌민박업",
"외국인관광 도시민박업",
"한옥체험업"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "숙소 종류. 라벨은 두 원천의 어휘에서 오고, 같은 숙소라도 원천마다 이름이 다르다.\nTourAPI 마케팅 라벨: 관광호텔·콘도미니엄·유스호스텔·펜션·모텔·민박·게스트하우스·홈스테이·서비스드레지던스·한옥\n인허가 원장 법정 업종명: 관광호텔·여관업·숙박업(생활)·여인숙업·일반호텔·숙박업 기타·휴양콘도미니엄업·농어촌민박업·외국인관광 도시민박업·한옥체험업\n두 어휘에 다 있는 라벨: 관광호텔 — 양쪽 원천을 함께 거른다.\n그 밖의 라벨은 자기 원천의 숙소만 거르고, 다른 원천의 같은 종류 숙소는 빠진다(예: '펜션'으로 걸면 원장의 '농어촌민박업'이 빠진다). 전체를 보려면 다른 어휘의 대응 라벨로 한 번 더 걸어라."
},
"checkout": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Checkout",
"default": null,
"description": "체크아웃 YYYY-MM-DD"
},
"include_footnotes": {
"type": "boolean",
"title": "Include Footnotes",
"default": false,
"description": "true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지)"
}
}
}