Skip to main content
Glama

Server Details

Korean lodging: 84,490 stays from 4 government permit ledgers + KTO TourAPI, honest gaps

Ownership verified
Status
Healthy
Uptime
99.9% over 62 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct action: stay_search (list), stay_detail (single record), stay_booking_link (external search URL), report_issue (operator feedback). The only mild overlap is between stay_search and stay_detail, but the descriptions clearly delineate list vs. single-record lookup.

Naming Consistency3/5

report_issue follows a verb_noun pattern while the three core tools use a stay_* prefix with noun-style suffixes (stay_search, stay_detail, stay_booking_link) rather than verb-first names like search_stays or get_stay_detail. Conventions are mixed but still readable and domain-scoped.

Tool Count4/5

Four tools is on the lean side but justified: the server explicitly delegates booking to external platforms, so a large surface isn't needed. Search, detail, link generation, and feedback form a tight, coherent scope.

Completeness4/5

For a read-only accommodation discovery server, search + detail + booking-link + issue-reporting covers the core lifecycle, with inventory intentionally delegated. No region/category listing or pagination helper, but these are minor workarounds rather than blocking gaps.

Available Tools

4 tools
report_issue답변 오류 신고AInspect

사용자가 답변 오류 제보나 개선 요청을 전해 달라고 했을 때만 운영자에게 전달한다.

쓰는 때: 사용자가 "이거 틀렸으니 신고해 줘", "운영자에게 알려 줘", "이 기능도 넣어 달라고
전해 줘"처럼 제보·요청을 부탁했을 때. 보내기 전에 무엇이 전달되는지 사용자에게 알린다.
kind='결함'은 틀린 답 제보, kind='질문기록'은 개선 요청이다.

쓰지 않는 때: 사용자가 요청하지 않았는데 질문을 남기려고 부르지 않는다. 답하기 전에
먼저 부르지도 않는다 — 이 도구는 답변을 대신하지 않는다.

전달 내용(인자)과 같은 접속 주소 단위의 30분 안 직전 호출 최대 5건 요약이 운영자 검토용으로
저장된다(공유 망 뒤에서는 다른 사용자의 호출이 섞일 수 있다 · 주소 단위를 못 가리면 싣지 않는다)
(개인정보처리방침 https://stay.sallim.app/privacy). 무인증 공개 서버라 쓰기 표면을 이 도구
하나로 묶어 시간당 상한을 건다(CLAUDE.md 규칙 2).
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo'결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. 사용자가 요청하지 않은 질문을 기록용으로 넘기지 않는다결함
problemNo사용자가 제보한 문제. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다.
expectedNo사용자가 맞다고 본 값
questionNo사용자가 제보·개선 요청과 함께 전달하기로 한 질문(kind='질문기록'이면 필수). 이름·연락처·정확한 거주지 같은 개인 식별 정보는 빼고 일반형으로 적는다(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다
tool_usedNo문제가 된 답을 만든 도구
wrong_valueNo틀린 수치·문장
missing_axisNoanswered_fully=false일 때 **없어서 못 답한 것**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록')
answered_fullyNokind='질문기록' 전용 — 이 서버 도구만으로 그 질문에 완결된 답을 했는가. false면 missing_axis에 무엇이 없었는지 적는다

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds substantial context beyond that: retained data (arguments plus a 30-minute, 5-call summary scoped to the same access address), a shared-network caveat, an unauthenticated public-server warning, an hourly rate limit, and a privacy-policy link.

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

Conciseness4/5

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

Front-loaded with the gating condition and organized under clear headers, so the agent hits the critical constraint first. It runs somewhat long and the trailing parentheticals (shared-network mixing, CLAUDE.md rule 2) are dense, but each section carries actionable information.

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

Completeness5/5

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

An output schema exists, so return values need no explanation. Given the mutation nature and zero required parameters, the description still covers authorization triggers, prohibited uses, retention/privacy, and rate limits — everything an agent needs to call it safely.

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

Parameters3/5

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

Schema description coverage is 100%, so the enum semantics of kind and the required/optional rules for problem and question are already fully documented in the schema. The description's 'kind=결함은 틀린 답 제보' line restates that schema text rather than adding new syntax or format detail, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource — relaying a user's error report or improvement request to the operator — and makes the trigger condition unmistakable. It is trivially distinguishable from the read-only stay_* siblings, which retrieve lodging data rather than write an operator report.

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

Usage Guidelines5/5

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

Explicitly partitions behavior: a dedicated '쓰는 때' section with quoted user phrasings that authorize the call, and a '쓰지 않는 때' section forbidding calls the user did not request or calls made before answering. Alternatives and exclusions are both named, leaving nothing to inference.

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

stay_detail숙소 상세A
Read-onlyIdempotent
Inspect

숙소 하나의 상세 정보(이름·주소·좌표·종류·원장 출처)를 조회한다. 재고는 조회하지 못한다 — 이 서버에 붙은 재고 채널이 0개라 날짜·인원을 줘도 availability는 항상 unknown이다(사유는 unavailable_reason에 실린다). 만실도 빈방 있음도 아니다. 빈방·요금은 stay_booking_link로 원본 검색 링크를 받아 직접 확인하라.

관광공사(tourapi) 행에는 인허가 원장의 폐업 등록과 이름·주소 정확 일치로 대조한 결과가 ledger_closure로 온다 — closed_in_ledger면 원장 기준 폐업이다(폐업 등록을 못 찾은 것은 영업 중의 확증이 아니다).

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsNo인원(1~30)
checkinNo체크인 YYYY-MM-DD
stay_idYesstay_search가 준 stay_id (예: tourapi:2671267)
checkoutNo체크아웃 YYYY-MM-DD
include_footnotesNotrue면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: availability is always unknown because zero inventory channels are attached, the reason surfaces in unavailable_reason, and ledger_closure semantics are spelled out including the caveat that a missing closure record is not proof the business is open. It does not, however, cover pagination or response shape (output schema exists).

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

Conciseness4/5

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

Front-loaded with the core action, then the availability limitation, then the alternative tool, then the ledger caveat — a sensible priority order. It is somewhat long and the ledger paragraph is dense, but each sentence carries non-redundant information.

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

Completeness5/5

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

For a read-only detail endpoint with an output schema, the description need not explain return values, and it goes further by interpreting ledger_closure and unavailable_reason fields and warning about the false-negative interpretation of ledger closure. Nothing needed to call or interpret this tool is missing.

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, but the description adds real meaning the schema cannot: passing checkin/checkout/guests still yields availability=unknown, which tells the agent those parameters are inert for availability purposes. This is exactly the kind of semantic context the schema descriptions lack.

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

Purpose5/5

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

States a specific verb and resource (숙소 하나의 상세 정보 조회) and enumerates the returned fields (이름·주소·좌표·종류·원장 출처). It also carves out a hard boundary against stay_search (id source) and stay_booking_link (availability/pricing), so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

Explicitly says what this tool cannot do (재고 조회 불가, availability always unknown) and names the correct alternative with the condition that selects it (빈방·요금은 stay_booking_link로). Both the when and the when-not are stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedstay_detail1 field changed
      • addedInput schema / properties / include_footnotes
        Added value: +{
        +  "default": false,
        +  "description": "true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지)",
        +  "title": "Include Footnotes",
        +  "type": "boolean"
        +}
    • Changedstay_search1 field changed
      • addedInput schema / properties / include_footnotes
        Added value: +{
        +  "default": false,
        +  "description": "true면 계산값(건수·요금)의 근거 전문(산식·모집단·기간·원천)을 footnotes에 싣는다(기본은 행마다 한 줄 요지)",
        +  "title": "Include Footnotes",
        +  "type": "boolean"
        +}
  2. 1 tool update
    • Changedstay_search1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담고, 시도를 안 줬으면 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라"New value: +"지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 전국은 region을 비운다(빈 값 = 지역 조건 없음 — '전국'·'한국'은 지역 이름이 아니라 주소 글자로 걸린다). 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담고, 시도를 안 줬으면 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라"
  3. 3 tool updates
    • Changedstay_booking_link1 field changed
      • addedInput schema / properties / stay_id / maxLength
        Added value: +200
    • Changedstay_detail1 field changed
      • addedInput schema / properties / stay_id / maxLength
        Added value: +200
    • Changedstay_search2 fields changed
      • changedInput schema / properties / region / description
        Previous value: -"지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라"New value: +"지역. '강원 속초', '서울 마포구'처럼 시도+시군구. 정식명·구명·약칭 다 받는다('제주도'='제주'='제주특별자치도'). 행정구역 어휘와 대조해 걸고, 어휘에 없는 말(읍·면·동·도로명)은 주소 부분문자열로 내려간다 — 어느 쪽이었는지는 meta.region_matched_on에 적힌다. 0건이면 복구 경로가 meta.unapplied_conditions로 **반드시** 오고, 다시 걸 이름을 댈 수 있을 때만 meta.region_retry가 함께 온다(0건 = '없다'가 아니다). region_retry는 질의가 건 시도 안의 이름만 담고, 시도를 안 줬으면 토큰이 이름으로 부른 시군구만 담는다. **로마자는 시도만 받는다**('Seoul'·'Jeju-do'는 통하고 'Gangnam'은 안 통한다) — 시군구 이하는 한글로 써라"
      • addedInput schema / properties / region / maxLength
        Added value: +200
  4. 1 tool update
    • Changedreport_issue5 fields changed
      • changedInput schema / properties / answered_fully / description
        Previous value: -"kind='질문기록' 전용 — 이 서버 도구만으로 질문에 **완결된 답**을 했는가. false면 missing_axis에 무엇이 없었는지 적어라"New value: +"kind='질문기록' 전용 — 이 서버 도구만으로 그 질문에 완결된 답을 했는가. false면 missing_axis에 무엇이 없었는지 적는다"
      • changedInput schema / properties / kind / description
        Previous value: -"'결함'=답이 틀렸다는 신고(기본). '질문기록'=틀리진 않았지만 **질문 원문을 남길 값이 있는 경우** — 서버는 클라이언트가 번역한 도구 호출만 보고 원문 질문을 볼 수 없어서, 이게 유일한 통로다. **아무 질문이나 남기지 마라**: ①여러 도구를 엮어야 답이 된 복합 질문 ②우리 도구로 일부만 답한 질문(answered_fully=false) ③사용자의 전제가 틀려서 바로잡아야 했던 질문(예: '펜션'을 법적 업종명으로 알고 있던 경우) — 셋 중 하나일 때만. 단순 조회 한 건은 남기지 않는다"New value: +"'결함'=사용자가 답이 틀렸다고 제보해 달라고 한 경우(기본). '질문기록'=사용자가 '이런 질문에도 답하게 해 달라'·'이 정보도 넣어 달라'처럼 **개선 요청을 전해 달라고 한 경우** — 그 질문과 무엇이 없었는지를 넘긴다. 사용자가 요청하지 않은 질문을 기록용으로 넘기지 않는다"
      • changedInput schema / properties / missing_axis / description
        Previous value: -"answered_fully=false일 때 **없어서 못 답한 축**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록'). 로드맵과 수집 우선순위의 원천이 된다"New value: +"answered_fully=false일 때 **없어서 못 답한 것**(예: '실시간 빈방', '가격대 필터 없음', '반려동물 동반 가능 여부 미수록')"
      • changedInput schema / properties / problem / description
        Previous value: -"무엇이 틀렸는지. 사용자의 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다."New value: +"사용자가 제보한 문제. 사용자가 지적한 말을 그대로 옮겨도 된다. kind='결함'이면 필수, kind='질문기록'이면 비워도 된다."
      • changedInput schema / properties / question / description
        Previous value: -"사용자의 **원래 질문**(kind='질문기록'이면 필수). ⚠️ **개인 식별 조합은 일반형으로 치환해서 넣어라** — 이름·연락처·정확한 거주지·동행자 사연이 겹치면 그대로 적지 말 것(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다"New value: +"사용자가 제보·개선 요청과 함께 전달하기로 한 질문(kind='질문기록'이면 필수). 이름·연락처·정확한 거주지 같은 개인 식별 정보는 빼고 일반형으로 적는다(예: '○○동 △△빌라 사는 김□□, 부모님 팔순으로 속초 2박' → '가족 3인 속초 2박'). 무인증 공개 서버의 로그다"

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables searching and comparing Airbnb (Korea) and Yanolja accommodation prices, with tools for price distribution, historical trends, and snapshot management, storing collected data in SQLite.
    4
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes public agency dining expense data from Korean public institutions, enabling AI agents to search, rank, and retrieve details of tax-funded restaurant visits with transparency links and KakaoMap deep links.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI to query real-time Korean public data including weather, real estate prices, air quality, economic indicators, and business registration via natural language.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources