이 MCP로 할 수 있는 일
Searches safari destinations and travel content, builds and prices day-by-day itineraries, and supports paid itinerary verification and booking services.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id', 'day_id', 'slot', 'title'], 'properties': {'slot': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string'}, 'title': {'type': 'string', 'minLength': 1, 'description': 'Short title for the activity'}, 'day_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'The day UUID to add the activity to'}, 'description': {'type': 'string'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Parent itinerary UUID'}, 'wp_content_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Source content id'}, 'wp_content_type': {'enum': ['itinerary', 'activity', 'destination', 'post'], 'type': 'string', 'description': 'Content type to link'}, 'duration_minutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 5}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'notes': {'type': 'string'}, 'title': {'type': 'string', 'description': "Optional day label, e.g. 'Drive to Hwange'"}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title', 'num_days'], 'properties': {'title': {'type': 'string', 'minLength': 1, 'description': "Itinerary title, e.g. '7-Day Hwange Safari'"}, 'num_days': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Number of days'}, 'start_date': {'type': 'string', 'description': "Optional ISO date string for day 1, e.g. '2025-06-01'"}, 'description': {'type': 'string', 'description': 'Optional short description'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title', 'places', 'num_days'], 'properties': {'title': {'type': 'string', 'minLength': 1, 'description': "Itinerary title, e.g. 'Highlights of Zimbabwe'"}, 'places': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 3, 'description': "At least 3 place names, e.g. ['Victoria Falls', 'Hwange', 'Mana Pools']"}, 'language': {'enum': ['en', 'ru', 'zh'], 'type': 'string', 'description': "Language for day titles, notes, and activity text: 'en' (English), 'ru' (Russian), or 'zh' (Chinese). Defaults to English."}, 'num_days': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Number of days for the trip'}, 'preferences': {'type': 'string', 'description': 'Traveller preferences that should shape the plan: pace, interests, budget, travel style'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type', 'id'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Source content id (WordPress post id)'}, 'type': {'enum': ['itinerary', 'activity', 'destination', 'post'], 'type': 'string'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'Either a destination id or its URL slug'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'The UUID of the itinerary'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type', 'id'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Source content id (WordPress post id)'}, 'type': {'enum': ['itinerary', 'activity', 'destination', 'post'], 'type': 'string'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'region': {'type': 'string', 'description': "Filter by region name, e.g. 'Matabeleland North'"}, 'category': {'type': 'string', 'description': "Filter by category, e.g. 'National Park'"}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'nights': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': "Defaults to the cost model's reference length"}, 'tier_id': {'type': 'string', 'description': 'Defaults to the cheapest tier'}, 'option_ids': {'type': 'array', 'items': {'type': 'object', 'required': ['group_id', 'option_id'], 'properties': {'group_id': {'type': 'string'}, 'option_id': {'type': 'string'}}}, 'description': 'One entry per cost option group you want to choose in'}, 'travellers': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'minimum': 1}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'notes': {'type': 'string'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'contact_email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'notes': {'type': 'string'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'contact_email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'notes': {'type': 'string', 'description': 'Anything the experts should know (dates, group size, budget)'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'contact_email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Where to send the report + receipt'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type'], 'properties': {'type': {'enum': ['itinerary', 'activity', 'destination', 'post'], 'type': 'string', 'description': 'Content type to search'}, 'search': {'type': 'string', 'description': 'Search keyword'}, 'per_page': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type'], 'properties': {'type': {'enum': ['itinerary', 'activity', 'destination', 'post'], 'type': 'string', 'description': 'Content type to search'}, 'search': {'type': 'string', 'description': 'Search keyword'}, 'per_page': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'legs': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'start_day', 'end_day'], 'properties': {'title': {'type': 'string', 'minLength': 1, 'description': 'Where this stretch is, in a word or two'}, 'end_day': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'summary': {'type': 'string', 'description': 'A sentence or two on what these nights are for'}, 'start_day': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, 'minItems': 1, 'description': "The route's chapters. Every day must belong to exactly one leg, and legs must not overlap."}, 'choices': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'options'], 'properties': {'title': {'type': 'string', 'minLength': 1, 'description': "'Pick your coast'"}, 'options': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1, 'description': 'What this option is actually like, and who should choose it'}, 'label': {'type': 'string', 'minLength': 1}, 'subtitle': {'type': 'string'}}}, 'minItems': 2}}}, 'minItems': 1, 'description': 'Either/ors deliberately left open for the traveller'}, 'countries': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'How many countries the route crosses'}, 'cost_model': {'type': 'object', 'required': ['currency', 'reference_nights', 'lines', 'tiers'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'scales_with_length'], 'properties': {'key': {'type': 'string', 'minLength': 1, 'description': "Short stable key used by tiers and option groups â\x80\x94 'land', 'permits', 'park_fees', 'flights'"}, 'label': {'type': 'string', 'minLength': 1}, 'scales_with_length': {'type': 'boolean', 'description': 'True for nightly costs (camps, park fees), false for per-trip costs (permits, internal flights)'}}}, 'minItems': 1}, 'notes': {'type': 'string', 'description': 'What the figures exclude and how firm they are'}, 'tiers': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'amounts'], 'properties': {'label': {'type': 'string', 'minLength': 1, 'description': "'Lean', 'Mid-range', 'Luxury'"}, 'amounts': {'type': 'array', 'items': {'type': 'object', 'required': ['line_key', 'amount'], 'properties': {'amount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Per person, in minor units â\x80\x94 620000 for $6,200'}, 'line_key': {'type': 'string'}}}, 'minItems': 1, 'description': 'One entry per cost line'}}}, 'minItems': 1}, 'currency': {'type': 'string', 'maxLength': 3, 'minLength': 3, 'description': "ISO 4217, lowercase â\x80\x94 'usd'"}, 'option_groups': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'line_key', 'options'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'options': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'amount'], 'properties': {'label': {'type': 'string', 'minLength': 1}, 'amount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Per person, in minor units â\x80\x94 620000 for $6,200'}, 'is_default': {'type': 'boolean'}}}, 'minItems': 2}, 'line_key': {'type': 'string', 'minLength': 1, 'description': 'Which cost line this choice overrides'}}}}, 'length_options': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'description': 'Shorter or longer variants offered to the reader, in nights'}, 'reference_nights': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'The trip length the amounts are quoted at'}}, 'description': 'Per-person breakdown lines, amounts per comfort tier, and any per-line choices'}, 'field_notes': {'type': 'array', 'items': {'type': 'object', 'required': ['heading', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'heading': {'type': 'string', 'minLength': 1, 'description': "'Visas', 'Yellow fever', 'Luggage'"}}}, 'minItems': 1, 'description': 'Visas, certificates, luggage limits, kit'}, 'seasonality': {'type': 'object', 'required': ['rows', 'months', 'recommended_month'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'scores'], 'properties': {'label': {'type': 'string', 'minLength': 1, 'description': 'What is being scored â\x80\x94 a wildlife event, a trail condition, a sea state'}, 'scores': {'type': 'array', 'items': {'type': 'integer', 'maximum': 3, 'minimum': 0}, 'maxItems': 12, 'minItems': 12, 'description': 'January first. 0 = avoid, 1 = poor, 2 = workable, 3 = peak'}}}, 'minItems': 1}, 'months': {'type': 'array', 'items': {'type': 'object', 'required': ['month', 'rank', 'verdict', 'tags'], 'properties': {'rank': {'enum': ['primary', 'alternative', 'workable', 'avoid'], 'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4, 'description': "Short labels: 'Peak crossings', 'Books out first', 'Avoid'"}, 'month': {'type': 'integer', 'maximum': 12, 'minimum': 1}, 'verdict': {'type': 'string', 'minLength': 1, 'description': "Why this month is or isn't the one, in two or three sentences"}}}, 'minItems': 1}, 'recommended_month': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'The month this plan is actually built around'}}, 'description': 'One row per thing the trip is timed around, scored 0-3 across all twelve months, plus a verdict per month worth arguing about'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'booking_order': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'detail'], 'properties': {'title': {'type': 'string', 'minLength': 1}, 'detail': {'type': 'string', 'minLength': 1, 'description': 'Why it sits at this point in the order'}}}, 'minItems': 1, 'description': 'What to book, in the order it has to happen'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id'], 'properties': {'title': {'type': 'string'}, 'is_public': {'type': 'boolean', 'description': 'Set false to unpublish the shareable link'}, 'start_date': {'type': 'string'}, 'description': {'type': 'string'}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['itinerary_id', 'day_number', 'narrative'], 'properties': {'callouts': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'title', 'body'], 'properties': {'body': {'type': 'string', 'minLength': 1}, 'kind': {'enum': ['alternative', 'swap', 'warning', 'note'], 'type': 'string'}, 'title': {'type': 'string', 'minLength': 1, 'description': "'Alternative', 'Swap worth considering'"}}}, 'maxItems': 3}, 'narrative': {'type': 'string', 'minLength': 1, 'description': 'Two or three short paragraphs, separated by blank lines. Plain text, no markup.'}, 'day_number': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'itinerary_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
최근 도구 변경
유사한 MCP 서버
MolTravel
Searches and provides details for flights, hotels, rental cars, ferries, airports, travel experiences, destinations, country info…
Wmata
Provides Washington Metro rail and bus routes, stops, stations, service incidents, route details, and real-time arrival predictio…
Openrouteservice
Provides geocoding, routing, travel-time matrices, isochrones, snapping, and elevation data using OpenStreetMap-based services.
Google_maps
Provides Google Maps geocoding, place search and details, directions, distance matrices, and elevation data.
SeaWeb
Searches and extracts web information about entities and travel locations, including restaurants, salons, tourist conditions, dis…
Aviationstack
Provides airline, airport, city, country, and flight directory data, including real-time and scheduled flight details.
Nps
Searches National Park Service data for parks, campgrounds, activities, alerts, visitor statistics, locations, fees, and operatin…
Tfl
Provides London transport journey planning, line status, disruptions, stop arrivals, and Santander Cycle availability.