
Myrealtrip Search
- 1.6k installs
- 6.5k repo stars
- Updated July 27, 2026
- nomadamas/k-skill
myrealtrip-search is an agent skill for 마이리얼트립 공식 streamable http mcp 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다.
About
The myrealtrip-search skill is designed for 마이리얼트립 공식 Streamable HTTP MCP 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다. 마이리얼트립 검색 이 스킬이 하는 일 마이리얼트립 공식 개발자센터의 MCP 문서에 공개된 엔드포인트를 사용해 여행 검색을 수행한다. 숙소 검색과 상세 조회 사용자가 특정 숙소의 객실, 가격, 편의시설, 리뷰, 취소정책을 묻거나 "자세히"를 요청하면 searchStays 결과의 gid로 상세를 이어서 호출한다. Invoke when the user asks about myrealtrip search or related SKILL.md workflows.
- MCP 엔드포인트: https://mcp-servers.myrealtrip.com/mcp.
- 문서: <https://docs.myrealtrip.com/#/api/mcp/overview>.
- 연결 가이드: <https://docs.myrealtrip.com/#/api/mcp/setup>.
- 인증: 문서 기준 별도 인증 없음.
- 국내선/국제선 항공권 검색.
Myrealtrip Search by the numbers
- 1,649 all-time installs (skills.sh)
- +122 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #733 of 16,659 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
myrealtrip-search capabilities & compatibility
- Capabilities
- mcp 엔드포인트: https://mcp servers.myrealtrip.com/mc · 문서: <https://docs.myrealtrip.com/#/api/mcp/overv · 연결 가이드: <https://docs.myrealtrip.com/#/api/mcp/s · 인증: 문서 기준 별도 인증 없음
What myrealtrip-search says it does
마이리얼트립 공식 Streamable HTTP MCP 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다.
마이리얼트립 공식 Streamable HTTP MCP 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다.
npx skills add https://github.com/nomadamas/k-skill --skill myrealtrip-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.6k |
|---|---|
| repo stars | ★ 6.5k |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 27, 2026 |
| Repository | nomadamas/k-skill ↗ |
How do I 마이리얼트립 공식 streamable http mcp 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다?
마이리얼트립 공식 Streamable HTTP MCP 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다.
Who is it for?
Developers using myrealtrip search workflows documented in SKILL.md.
Skip if: Skip when the task falls outside myrealtrip-search scope or needs a different stack.
When should I use this skill?
User asks about myrealtrip search or related SKILL.md workflows.
What you get
Completed myrealtrip-search workflow with documented commands, files, and expected deliverables.
- MCP tool-call JSON responses
- CLI-invokable travel search queries
By the numbers
- Default MCP request timeout is 30.0 seconds
Files
마이리얼트립 검색
이 스킬이 하는 일
마이리얼트립 공식 개발자센터의 MCP 문서에 공개된 엔드포인트를 사용해 여행 검색을 수행한다.
- MCP 엔드포인트:
https://mcp-servers.myrealtrip.com/mcp - 문서: <https://docs.myrealtrip.com/#/api/mcp/overview>
- 연결 가이드: <https://docs.myrealtrip.com/#/api/mcp/setup>
- 인증: 문서 기준 별도 인증 없음
지원 범위:
- 국내선/국제선 항공권 검색
- 항공권 날짜별 최저가 캘린더와 프로모션 항공사 조회
- 숙소 검색 및 상세/객실/리뷰/편의시설 조회
- 투어·티켓·액티비티 검색, 상세, 날짜별 옵션/가격/예약 가능 여부 조회
- 현재 한국 시간(KST) 조회
동작 방식
Claude Code / Codex / Hermes Agent
→ myrealtrip-search/scripts/myrealtrip_mcp.py
→ https://mcp-servers.myrealtrip.com/mcp (Streamable HTTP MCP)
├─ searchDomesticFlights / searchInternationalFlights
├─ flightsFareCalendar / getPromotionAirlines
├─ searchStays / getStayDetail
├─ getCategoryList / searchTnas / getTnaDetail / getTnaOptions
└─ getCurrentTime이 스킬은 화면 scraping이 아니라 마이리얼트립이 공개한 MCP 서버를 직접 호출한다. 따라서 DOM 선택자나 브라우저 자동화에 의존하지 않는다.
사용할 때
- "마이리얼트립에서 제주 항공권 찾아줘"
- "다음 주 오사카 가는 최저가 항공권 봐줘"
- "부산 해운대 호텔 2박 검색해줘"
- "이 호텔 객실 타입이랑 취소정책 자세히 봐줘"
- "오사카 유니버설 스튜디오 티켓 가격 확인해줘"
- "도쿄 디즈니랜드 날짜별 옵션 확인해줘"
- "항공권 특가 항공사 있어?"
사용하지 않을 때
- 실제 예약/결제/로그인이 필요한 경우
- 마이리얼트립 계정의 예약 내역이나 개인화 데이터가 필요한 경우
- 항공권·숙소·투어 외의 파트너 API 수익/예약 내역 조회가 목적일 때
- 가격·재고를 법적/회계적 증빙 수준으로 확정해야 할 때
준비 사항
Python MCP SDK가 필요하다. 없으면 설치한다.
python3 -m pip install mcp기본 엔드포인트는 공식 문서의 URL이다. 필요할 때만 환경변수로 바꾼다.
export MYREALTRIP_MCP_ENDPOINT="https://mcp-servers.myrealtrip.com/mcp"Hermes Agent에 MCP 서버로 직접 등록하려면 다음 설정을 쓸 수 있다.
mcp_servers:
myrealtrip:
url: "https://mcp-servers.myrealtrip.com/mcp"CLI별 공식 연결 명령은 문서 기준 다음과 같다.
claude mcp add --transport http myrealtrip https://mcp-servers.myrealtrip.com/mcp
codex mcp add myrealtrip --url https://mcp-servers.myrealtrip.com/mcp
gemini mcp add -t http -s user myrealtrip https://mcp-servers.myrealtrip.com/mcp사용 흐름
1. 요청 유형을 분류한다
- 국내 항공: 출발지와 도착지가 모두 한국 도시/공항이면
searchDomesticFlights - 국제 항공: 목적지가 해외면
searchInternationalFlights - 날짜 유연 항공 최저가:
flightsFareCalendar후 실제 검색 도구로 재확인 - 숙소 목록:
searchStays - 특정 숙소 상세/객실/리뷰/편의시설:
searchStays로gid확보 후getStayDetail - 투어·티켓·액티비티 목록:
searchTnas - 도시별 카테고리 필터가 필요하면
getCategoryList후searchTnas - 특정 투어 상세:
searchTnas결과의gid,url로getTnaDetail - 날짜별 실제 옵션/가격/가능 여부:
getTnaOptions
2. 도구 목록과 입력 스키마를 확인한다
python3 myrealtrip-search/scripts/myrealtrip_mcp.py tools3. 항공권 검색
국내선은 두 공항이 모두 한국일 때만 사용한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call searchDomesticFlights \
--arg origin=GMP \
--arg destination=CJU \
--arg departDate=2026-05-20 \
--arg maxResults=10국제선은 해외 목적지일 때 사용한다. 사용자가 출발 공항을 말하지 않으면 인천(ICN)을 기본값으로 둔다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call searchInternationalFlights \
--json '{"tripType":"ROUND_TRIP","origin":"ICN","destination":"KIX","departDate":"2026-06-10","returnDate":"2026-06-14","passengers":{"adults":1,"children":0,"infants":0},"maxResults":5}'날짜가 유동적인 최저가 요청은 캘린더를 먼저 본다. 캘린더 가격은 캐시/추정값이므로, 최종 답변 전에 실제 검색 도구로 후보 날짜를 다시 확인한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call flightsFareCalendar \
--arg from=ICN \
--arg to=NRT \
--arg departureDate=2026-06-01 \
--arg period=4 \
--arg maxResults=30특가/할인 항공사 요청은 프로모션 항공사를 먼저 확인한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call getPromotionAirlines4. 숙소 검색과 상세 조회
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call searchStays \
--json '{"keyword":"부산 해운대","checkIn":"2026-06-10","checkOut":"2026-06-12","adultCount":2,"childCount":0,"isDomestic":true,"order":"recommended","minReviewRating":4.0}'사용자가 특정 숙소의 객실, 가격, 편의시설, 리뷰, 취소정책을 묻거나 "자세히"를 요청하면 searchStays 결과의 gid로 상세를 이어서 호출한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call getStayDetail \
--json '{"gid":123456,"checkIn":"2026-06-10","checkOut":"2026-06-12","adultCount":2,"childCount":0}'5. 투어/티켓/액티비티 검색과 옵션 확인
도시별 카테고리 필터를 쓰려면 카테고리 값을 추측하지 말고 먼저 조회한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call getCategoryList --arg city=Osaka검색어는 한국어가 가장 잘 맞는다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call searchTnas \
--arg query="오사카 유니버설 스튜디오" \
--arg perPage=5상세는 검색 결과의 gid와 url을 같이 넘긴다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call getTnaDetail \
--json '{"gid":"123456","url":"https://www.myrealtrip.com/offers/123456"}'날짜별 예약 가능 여부와 실제 가격은 getTnaOptions로 확인한다.
python3 myrealtrip-search/scripts/myrealtrip_mcp.py call getTnaOptions \
--json '{"gid":"123456","url":"https://www.myrealtrip.com/offers/123456","selectedDate":"2026-06-10"}'사용 가능한 도구
| 도구명 | 용도 | 주요 입력 |
|---|---|---|
getCurrentTime | 현재 KST 조회 | 없음 |
searchDomesticFlights | 국내선 항공권 검색 | origin, destination, departDate, returnDate, passengers, cabinClass, maxResults |
searchInternationalFlights | 국제선 항공권 검색 | origin, destination, departDate, returnDate, passengers, cabinClass, directFlightOnly, preferredAirline |
flightsFareCalendar | 날짜별 최저가 캘린더 | from, to, departureDate, period, international, transfer |
getPromotionAirlines | 프로모션 항공사 조회 | 없음 |
searchStays | 숙소 목록 검색 | keyword, checkIn, checkOut, adultCount, childCount, isDomestic, 가격/평점/시설 필터 |
getStayDetail | 숙소 상세/객실/리뷰/편의시설 | gid, checkIn, checkOut, adultCount, childCount |
getCategoryList | 도시별 TNA 카테고리 조회 | city |
searchTnas | 투어/티켓/액티비티 검색 | query, page, perPage, category, sort |
getTnaDetail | TNA 상품 상세 | gid, url |
getTnaOptions | 날짜별 예약 가능 여부와 실제 가격 | gid, url, selectedDate |
응답 형식
래퍼는 MCP CallToolResult를 JSON으로 출력한다. 보통 content[].text에 사람이 읽을 수 있는 검색 결과가 들어온다.
{
"content": [
{
"type": "text",
"text": "검색 결과 ..."
}
],
"isError": false
}답변할 때는 원문을 그대로 길게 붙이지 말고 다음 기준으로 정리한다.
- 항공: 항공사, 출발/도착 시각, 총 소요시간, 직항/경유, 가격, 예약 URL
- 숙소: 숙소명, 지역, 1박/총액 가격, 평점, 핵심 장점, 상세 확인 필요 여부
- 투어/TNA: 상품명, 시작가, 평점/리뷰, 포함사항 핵심, 날짜별 옵션 확인 결과, URL
- 후보가 많으면 상위 3~5개만 비교
- 가격·좌석·재고·예약 가능 여부는 실시간 변동 가능하다고 명시
실패 상황과 대응
Python package 'mcp' is required:python3 -m pip install mcp후 재시도한다.- MCP 엔드포인트 연결 실패:
MYREALTRIP_MCP_ENDPOINT오타, 네트워크, upstream 장애를 확인한다. - 빈 결과: 날짜/지역/인원/공항코드를 바꿔 재검색한다.
- 항공 검색 실패: 국내/국제 도구 선택이 맞는지 확인한다. 해외 목적지는 반드시
searchInternationalFlights다. - 숙소 상세 실패:
searchStays결과의gid가 최신인지 확인하고 같은 날짜로 다시 검색한다. - TNA 옵션 실패:
getTnaOptions에는searchTnas결과의gid와url,YYYY-MM-DD날짜가 모두 필요하다. - 캘린더 가격 불일치:
flightsFareCalendar는 캐시/추정값이므로 실제 검색 결과를 우선한다. - 예약/결제 요청: 자동화하지 말고 예약 URL을 제공해 사용자가 직접 진행하게 한다.
완료 기준
- 요청 유형에 맞는 MCP 도구를 선택했다.
- 필요한 날짜, 인원, 공항/도시,
gid/url등 필수 입력을 확보했다. - 실제 MCP 호출 결과를 바탕으로 상위 후보를 요약했다.
- 가격·재고·예약 가능 여부의 변동 가능성을 안내했다.
- 예약/결제는 자동화하지 않고 마이리얼트립 URL을 제공했다.
#!/usr/bin/env python3
"""마이리얼트립 공개 Streamable HTTP MCP 서버를 호출한다.
엔드포인트는 https://docs.myrealtrip.com/#/api/mcp/overview 에 문서화되어
있으며 현재 별도 API 키가 필요하지 않다. 이 래퍼는 k-skill 사용자가
단순 조회와 도구 호출을 위해 MCP 클라이언트 코드를 직접 작성하지 않아도
되게 해준다.
"""
from __future__ import annotations
import argparse
import asyncio
import json
import os
import sys
from typing import Any, Sequence
DEFAULT_ENDPOINT = "https://mcp-servers.myrealtrip.com/mcp"
DEFAULT_TIMEOUT_SECONDS = 30.0
class MyRealTripMcpError(RuntimeError):
"""설정 또는 MCP 호출 실패 때 발생한다."""
def parse_json_object(raw: str, *, arg_name: str) -> dict[str, Any]:
try:
value = json.loads(raw)
except json.JSONDecodeError as exc:
raise argparse.ArgumentTypeError(f"{arg_name}은 올바른 JSON이어야 합니다: {exc}") from exc
if not isinstance(value, dict):
raise argparse.ArgumentTypeError(f"{arg_name}은 JSON 객체여야 합니다")
return value
def parse_positive_float(raw: str) -> float:
try:
value = float(raw)
except ValueError as exc:
raise argparse.ArgumentTypeError("timeout은 숫자여야 합니다") from exc
if value <= 0:
raise argparse.ArgumentTypeError("timeout은 0보다 커야 합니다")
return value
def parse_kv_pairs(pairs: Sequence[str]) -> dict[str, Any]:
args: dict[str, Any] = {}
for pair in pairs:
if "=" not in pair:
raise argparse.ArgumentTypeError(f"인자 '{pair}'는 key=value 형식이어야 합니다")
key, raw_value = pair.split("=", 1)
if not key:
raise argparse.ArgumentTypeError(f"인자 '{pair}'의 key가 비어 있습니다")
try:
value = json.loads(raw_value)
except json.JSONDecodeError:
value = raw_value
args[key] = value
return args
def parse_args(argv: Sequence[str] | None = None) -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Streamable HTTP로 마이리얼트립 MCP 도구를 호출합니다.",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=(
"예시:\n"
" myrealtrip_mcp.py tools\n"
" myrealtrip_mcp.py call getCurrentTime\n"
" myrealtrip_mcp.py call searchTnas --arg query='오사카 유니버설 스튜디오' --arg perPage=5\n"
" myrealtrip_mcp.py call searchDomesticFlights --json '{\"origin\":\"GMP\",\"destination\":\"CJU\",\"departDate\":\"2026-05-20\"}'\n"
),
)
parser.add_argument(
"--endpoint",
default=os.getenv("MYREALTRIP_MCP_ENDPOINT", DEFAULT_ENDPOINT),
help="마이리얼트립 MCP 엔드포인트(기본값: %(default)s).",
)
parser.add_argument(
"--timeout-seconds",
type=parse_positive_float,
default=DEFAULT_TIMEOUT_SECONDS,
help="MCP 연결/호출 전체 제한 시간(기본값: %(default)s초).",
)
subparsers = parser.add_subparsers(dest="command", required=True)
subparsers.add_parser("tools", help="사용 가능한 MCP 도구와 입력 스키마를 JSON으로 출력합니다.")
call_parser = subparsers.add_parser("call", help="MCP 도구 하나를 호출하고 CallToolResult를 JSON으로 출력합니다.")
call_parser.add_argument("tool", help="도구명. 예: searchStays, searchTnas, searchDomesticFlights.")
call_parser.add_argument(
"--json",
dest="json_args",
type=lambda raw: parse_json_object(raw, arg_name="--json"),
default=None,
help="도구 인자를 JSON 객체로 전달합니다.",
)
call_parser.add_argument(
"--arg",
dest="kv_args",
action="append",
default=[],
metavar="KEY=VALUE",
help="도구 인자입니다. VALUE는 가능하면 JSON으로 파싱하고, 아니면 문자열로 처리합니다. 반복 지정할 수 있습니다.",
)
return parser.parse_args(argv)
async def _run_mcp_once(endpoint: str, command: str, tool: str | None, arguments: dict[str, Any] | None) -> Any:
try:
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
except Exception as exc: # pragma: no cover - environment dependent
raise MyRealTripMcpError(
"Python 패키지 'mcp'가 필요합니다. 다음 명령으로 설치하세요: python3 -m pip install mcp"
) from exc
try:
async with streamablehttp_client(endpoint) as (read_stream, write_stream, _):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
if command == "tools":
result = await session.list_tools()
return [
{
"name": item.name,
"description": item.description,
"inputSchema": item.inputSchema,
}
for item in result.tools
]
if command == "call" and tool:
return await session.call_tool(tool, arguments or {})
except Exception as exc:
raise MyRealTripMcpError(f"마이리얼트립 MCP 엔드포인트 호출 실패 {endpoint}: {exc}") from exc
raise MyRealTripMcpError(f"지원하지 않는 명령입니다: {command}")
async def run_mcp(
endpoint: str,
command: str,
tool: str | None = None,
arguments: dict[str, Any] | None = None,
*,
timeout_seconds: float = DEFAULT_TIMEOUT_SECONDS,
) -> Any:
try:
return await asyncio.wait_for(
_run_mcp_once(endpoint, command, tool, arguments),
timeout=timeout_seconds,
)
except TimeoutError as exc:
raise MyRealTripMcpError(
f"마이리얼트립 MCP 엔드포인트 호출 시간이 {timeout_seconds:g}초를 초과했습니다: {endpoint}"
) from exc
def jsonable(value: Any) -> Any:
if hasattr(value, "model_dump"):
return value.model_dump(mode="json")
if hasattr(value, "dict"):
return value.dict()
return value
def main(argv: Sequence[str] | None = None) -> int:
args = parse_args(argv)
tool_args: dict[str, Any] | None = None
if args.command == "call":
tool_args = dict(args.json_args or {})
tool_args.update(parse_kv_pairs(args.kv_args))
try:
result = asyncio.run(
run_mcp(
args.endpoint,
args.command,
getattr(args, "tool", None),
tool_args,
timeout_seconds=args.timeout_seconds,
)
)
except MyRealTripMcpError as exc:
print(f"myrealtrip_mcp.py: {exc}", file=sys.stderr)
return 2
print(json.dumps(jsonable(result), ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())
import argparse
import asyncio
import importlib.util
import pathlib
import unittest
from unittest import mock
MODULE_PATH = pathlib.Path(__file__).with_name("myrealtrip_mcp.py")
spec = importlib.util.spec_from_file_location("myrealtrip_mcp", MODULE_PATH)
myrealtrip_mcp = importlib.util.module_from_spec(spec)
assert spec.loader is not None
spec.loader.exec_module(myrealtrip_mcp)
class ParseHelpersTest(unittest.TestCase):
def test_parse_json_object_requires_object(self):
self.assertEqual(myrealtrip_mcp.parse_json_object('{"gid": 123}', arg_name="--json"), {"gid": 123})
with self.assertRaises(argparse.ArgumentTypeError):
myrealtrip_mcp.parse_json_object('["not", "object"]', arg_name="--json")
def test_parse_kv_pairs_json_decodes_values_when_possible(self):
self.assertEqual(
myrealtrip_mcp.parse_kv_pairs(["query=오사카", "perPage=5", "directFlightOnly=true"]),
{"query": "오사카", "perPage": 5, "directFlightOnly": True},
)
def test_parse_kv_pairs_rejects_malformed_pairs(self):
with self.assertRaises(argparse.ArgumentTypeError):
myrealtrip_mcp.parse_kv_pairs(["missing_separator"])
with self.assertRaises(argparse.ArgumentTypeError):
myrealtrip_mcp.parse_kv_pairs(["=empty_key"])
def test_timeout_must_be_positive_number(self):
self.assertEqual(myrealtrip_mcp.parse_positive_float("1.5"), 1.5)
for raw in ["0", "-1", "not-a-number"]:
with self.subTest(raw=raw):
with self.assertRaises(argparse.ArgumentTypeError):
myrealtrip_mcp.parse_positive_float(raw)
class CliAssemblyTest(unittest.TestCase):
def test_json_and_arg_inputs_are_merged_before_call(self):
captured = {}
async def fake_run_mcp(endpoint, command, tool=None, arguments=None, *, timeout_seconds):
captured.update(
endpoint=endpoint,
command=command,
tool=tool,
arguments=arguments,
timeout_seconds=timeout_seconds,
)
return {"ok": True}
with mock.patch.object(myrealtrip_mcp, "run_mcp", side_effect=fake_run_mcp):
exit_code = myrealtrip_mcp.main(
[
"--endpoint",
"https://example.invalid/mcp",
"--timeout-seconds",
"2.5",
"call",
"searchTnas",
"--json",
'{"query":"오사카","perPage":3}',
"--arg",
"perPage=5",
]
)
self.assertEqual(exit_code, 0)
self.assertEqual(captured["endpoint"], "https://example.invalid/mcp")
self.assertEqual(captured["command"], "call")
self.assertEqual(captured["tool"], "searchTnas")
self.assertEqual(captured["arguments"], {"query": "오사카", "perPage": 5})
self.assertEqual(captured["timeout_seconds"], 2.5)
class TimeoutTest(unittest.TestCase):
def test_run_mcp_reports_timeout(self):
async def never_finishes(*args, **kwargs):
await asyncio.sleep(60)
with mock.patch.object(myrealtrip_mcp, "_run_mcp_once", side_effect=never_finishes):
with self.assertRaisesRegex(myrealtrip_mcp.MyRealTripMcpError, "초과"):
asyncio.run(
myrealtrip_mcp.run_mcp(
"https://example.invalid/mcp",
"tools",
timeout_seconds=0.001,
)
)
if __name__ == "__main__":
unittest.main()
Related skills
FAQ
What does myrealtrip-search do?
마이리얼트립 공식 Streamable HTTP MCP 서버로 항공권, 숙소, 투어/티켓/액티비티를 검색하고 상세·가격·예약 링크를 확인한다.
When should I use myrealtrip-search?
User asks about myrealtrip search or related SKILL.md workflows.
Is myrealtrip-search safe to install?
Review the Security Audits panel on this page before installing in production.