stay_mcp
Registry code: a986f4e3bf1588b4
국내 숙소를 검색하는 서버다.
네 가지를 반드시 사용자에게 그대로 전달하라.
- endpoint
- https://stay.sallim.app/mcp?via=official
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is stay_mcp live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is stay_mcp free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does stay_mcp have?
- 4 tools: report_issue, stay_detail, stay_booking_link, stay_search.
- Is stay_mcp safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 98.4%· all time 98.4%
last good check
of 4 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- used for
- search korean accommodations
- get accommodation details
- make a booking search link
- takes → gives
- text → data
- tools
- 3 reads1 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
stay_search reads open 16h ago
조건에 맞는 국내 숙소를 찾는다. **재고를 확인하지 못한 숙소를 결과에서 지우지 않는다.** availability가 unknown이면 빈방 여부를 모른다는 뜻이고, 만실이라는 뜻이 아니다. 사용자에게 그렇게 전달하라.
{ "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는 대개 질의가 건 시도 안의 이름이지만, 토큰이 **한 시도에만 있는** 시군구를 이름으로 불렀는데 건 시도가 그 시도가 아니면 **다른 시도 이름**이 온다('경북 군위' → '대구광역시 군위군' — 군위는 대구로 편입됐다) — 그때는 meta.region.tokens[].other_sido_sigungu와 meta.unapplied_conditions가 '건 시도의 시군구가 아니다'를 공시한다. 같은 이름이 여러 시도에 있거나('서구') 앞 두 글자만 겹친 다른 시도 이름은 region_retry가 아니라 meta.region_retry_other_sido로 갈라 온다. 시도를 안 줬으면 region_retry는 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라. **숙소 이름 검색은 없다**(이름 대신 그 숙소의 주소를 넣어라) · 업종어('펜션'·'게스트하우스')는 region이 아니라 category로 건다" }, "checkin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Checkin", "default": null, "description": "체크인 YYYY-MM-DD. checkout과 **둘 다** 주고 재고 채널이 붙어 있을 때만 재고(availability)를 조회한다 — 한쪽만 줬거나 채널이 없으면 날짜로 거르지 않고 availability=unknown이며(미조회 사유는 각 행의 unavailable_reason), 날짜가 적용되지 않은 사실은 meta.unapplied_conditions에 실린다. 채널이 있어도 목록은 날짜로 거르지 않는다(재고 표시에만 쓴다) — 지난 날짜면 재고는 조회하지 않는다(목록은 그대로 나온다)" }, "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에 싣는다(기본은 행마다 한 줄 요지)" } } }arguments 102 linesreport_issue changes data unknown never probed
사용자가 **답변 오류 제보·개선 요청·문의를 전해 달라고 했을 때만** 운영자에게 전달한다. 쓰는 때: 사용자가 "이거 틀렸으니 신고해 줘", "운영자에게 알려 줘", "이 기능도 넣어 달라고 전해 줘"처럼 제보·요청을 부탁했을 때. 보내기 전에 무엇이 전달되는지 사용자에게 알린다. kind='결함'은 틀린 답 제보, kind='질문기록'은 개선 요청, kind='유료이용문의'·'후원문의'는 사용자가 유료 이용 희망·후원 의사를 운영자에게 전해 달라고 한 경우다. 사용자가 오류·불만·개선 희망·유료 이용 희망·후원 의사를 말했지만 전달을 부탁하지는 않았다면, 부르지 말고 "운영자에게 전해 드릴까요?"를 한 줄로 한 번만 물어 동의할 때만 부른다(거절·무반응이면 다시 묻지 않는다). 응답의 접수번호(ref)와 회신 방법(reply_path)을 사용자에게 알린다. 쓰지 않는 때: 사용자가 요청하지 않았는데 질문을 남기려고 부르지 않는다. 답하기 전에 먼저 부르지도 않는다 — 이 도구는 답변을 대신하지 않는다. 전달 내용(인자)과 같은 접속 주소 단위의 30분 안 직전 호출 최대 5건 요약이 운영자 검토용으로 저장된다(공유 망 뒤에서는 다른 사용자의 호출이 섞일 수 있다 · 주소 단위를 못 가리면 싣지 않는다) (개인정보처리방침 https://stay.sallim.app/privacy). 연락처(contact)는 사용자가 회신을 원해 직접 준 경우에만 담고, 그 건의 회신에만 쓴다. 무인증 공개 서버라 쓰기 표면을 이 도구 하나로 묶어 시간당 상한을 건다(CLAUDE.md 규칙 2).
{ "type": "object", "title": "report_issueArguments", "properties": { "kind": { "enum": [ "결함", "질문기록", "유료이용문의", "후원문의" ], "type": "string", "title": "Kind", "default": "결함", "description": "'결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. '유료이용문의'=사용자가 유료 이용·한도 확대를 원한다며 운영자에게 전해 달라고 한 경우. '후원문의'=사용자가 후원 의사를 전해 달라고 한 경우. 사용자가 요청하지 않은 내용을 기록용으로 넘기지 않는다" }, "contact": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Contact", "default": null, "description": "회신받을 연락처(이메일 등, 200자 이내) — **사용자가 회신을 원한다며 직접 알려 준 값만** 넣는다. 넣기 전에 '운영자가 회신에만 쓰고 개인정보처리방침에 따라 보관한다'고 알리고 동의를 받는다. 대화에서 짐작하거나 다른 데서 가져와 채우지 않는다" }, "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에 무엇이 없었는지 적는다" } } }arguments 122 linesstay_detail reads unknown 16h ago
숙소 하나의 상세 정보(이름·주소·좌표·종류·원장 출처)를 조회한다. **재고는 조회하지 못한다** — 이 서버에 붙은 재고 채널이 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면 폐업 등록은 있지만 같은 주소의 영업 등록 대조를 이번에 못 했다(확인 안 됨). 폐업 등록을 못 찾은 것은 영업 중의 확증이 아니다.
{ "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에 싣는다(기본은 행마다 한 줄 요지)" } } }arguments 55 linesstay_booking_link reads unknown never probed
원본 플랫폼(네이버·구글·관광공사)의 검색 결과로 가는 링크를 만든다. 이 서버는 예약을 처리하지 않는다 — 사용자를 원본 플랫폼으로 보낸다. 링크는 **검색 링크**이며 특정 객실·예약 페이지가 아니고 예약 가능 여부도 확인하지 않는다. 검색어는 naver·google이 숙소명+주소, tour는 숙소명만이다(주소가 안 들어가 같은 이름의 다른 숙소가 섞일 수 있다). 관광공사 행이 인허가 원장에서 폐업으로 공시되면(stay_detail의 ledger_closure가 closed_in_ledger*) 응답에 ledger_closure(status·close_date·같은 주소 영업 등록)와 note 한 문장을 함께 싣는다.
{ "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)" } } }arguments 26 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's ida986f4e3bf1588b4.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/a986f4e3bf1588b4/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/a986f4e3bf1588b4?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.
Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.
- realty.sallim.app realty_mcp
- contract.sallim.app contract-compass