MCP 서버

public

com.kratons/public
여행 및 호스피탈리티 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches bespoke tours and experiences in Spain, Portugal, and Morocco and submits or checks human-reviewed proposal requests.

get_company_facts
Kratons company facts
Who Kratons is: legal identity, address, contact channels, countries served, languages, services, pricing policy and how to request a proposal. Read-only.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['brand', 'legalName', 'taxId', 'iata', 'foundedYear', 'basedIn', 'description', 'address', 'contact', 'web', 'areaServed', 'languages', 'services', 'positioning', 'pricingPolicy', 'proposalRequest', 'agentStatement', 'api'], 'properties': {'api': {'type': 'object', 'required': ['baseUrl', 'endpoints', 'mcpPath'], 'properties': {'baseUrl': {'type': 'string'}, 'mcpPath': {'type': 'string'}, 'endpoints': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'title', 'description', 'contentType'], 'properties': {'path': {'type': 'string'}, 'title': {'type': 'string'}, 'method': {'enum': ['GET', 'POST'], 'type': 'string'}, 'contentType': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}, 'web': {'type': 'object', 'required': ['home', 'homeEs', 'logo', 'sameAs', 'pages'], 'properties': {'home': {'type': 'string'}, 'logo': {'type': 'string'}, 'pages': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'title', 'url', 'description'], 'properties': {'key': {'type': 'string'}, 'url': {'type': 'string'}, 'title': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': True}}, 'homeEs': {'type': 'string'}, 'sameAs': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}, 'iata': {'type': 'string', 'description': 'IATA accreditation number'}, 'brand': {'type': 'string'}, 'taxId': {'type': 'string', 'description': 'Spanish NIF / CIF'}, 'address': {'type': 'object', 'required': ['lines', 'streetAddress', 'postalCode', 'locality', 'region', 'countryName', 'countryCode'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'string'}}, 'region': {'type': 'string'}, 'locality': {'type': 'string'}, 'postalCode': {'type': 'string'}, 'countryCode': {'type': 'string'}, 'countryName': {'type': 'string'}, 'streetAddress': {'type': 'string'}}, 'additionalProperties': True}, 'basedIn': {'type': 'string'}, 'contact': {'type': 'object', 'required': ['email', 'phones', 'channels'], 'properties': {'email': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'number', 'e164', 'country'], 'properties': {'e164': {'type': 'string'}, 'label': {'type': 'string'}, 'number': {'type': 'string'}, 'country': {'type': 'string'}}, 'additionalProperties': True}}, 'channels': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}, 'services': {'type': 'array', 'items': {'type': 'string'}}, 'languages': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'code'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': True}}, 'legalName': {'type': 'string'}, 'areaServed': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'code'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': True}}, 'description': {'type': 'object', 'required': ['short', 'long'], 'properties': {'long': {'type': 'string'}, 'short': {'type': 'string'}}, 'additionalProperties': False}, 'foundedYear': {'type': 'integer'}, 'positioning': {'type': 'array', 'items': {'type': 'string'}}, 'pricingPolicy': {'type': 'object', 'required': ['summary', 'rules'], 'properties': {'rules': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': 'string'}}, 'additionalProperties': True}, 'agentStatement': {'type': 'string'}, 'proposalRequest': {'type': 'object', 'required': ['how', 'checklist', 'afterwards'], 'properties': {'how': {'type': 'string'}, 'checklist': {'type': 'array', 'items': {'type': 'string'}}, 'afterwards': {'type': 'string'}}, 'additionalProperties': True}}, 'additionalProperties': True}
get_proposal_request_status
Status of a proposal request
Where a submitted proposal request stands (received, being prepared, proposal sent, confirmed, closed), looked up by the reference returned when it was submitted. Returns the stage, dates and the reply commitment; no personal data.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['reference'], 'properties': {'reference': {'type': 'string', 'pattern': '^PR-\\d{8}-[A-Za-z0-9]{4}$', 'description': 'The reference returned by request_a_proposal, e.g. PR-20260916-U8GB'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['reference', 'status', 'statusText', 'receivedAt', 'lastUpdateAt', 'slaBusinessDays', 'nextStep'], 'properties': {'status': {'enum': ['received', 'being_prepared', 'proposal_sent', 'confirmed', 'closed'], 'type': 'string'}, 'nextStep': {'type': 'string'}, 'reference': {'type': 'string'}, 'receivedAt': {'type': 'string', 'description': 'ISO timestamp'}, 'statusText': {'type': 'string'}, 'lastUpdateAt': {'type': 'string', 'description': 'ISO timestamp'}, 'slaBusinessDays': {'type': 'integer'}}, 'additionalProperties': False}
get_reviews
Traveller reviews
Aggregate rating (1–5) and the newest traveller reviews of Kratons from Zicasso and Google, each attributed to the platform that published it, with a link to read them all. A source that cannot be read is listed as unavailable — never invented.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Newest reviews to return (default 6, max 20)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ratingValue', 'bestRating', 'reviewCount', 'sources', 'reviews', 'note', 'generatedAt'], 'properties': {'note': {'type': 'string'}, 'reviews': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'reviewer', 'rating', 'title', 'excerpt', 'date', 'countries', 'url'], 'properties': {'url': {'$ref': '#/properties/sources/items/properties/url'}, 'date': {'$ref': '#/properties/sources/items/properties/url'}, 'title': {'$ref': '#/properties/sources/items/properties/url'}, 'rating': {'type': 'number'}, 'source': {'enum': ['Zicasso', 'Google'], 'type': 'string'}, 'excerpt': {'type': 'string'}, 'reviewer': {'type': 'string', 'description': 'As published by the platform'}, 'countries': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'available', 'rating', 'bestRating', 'reviewCount', 'url'], 'properties': {'url': {'type': ['string', 'null']}, 'error': {'type': 'string'}, 'rating': {'type': ['number', 'null'], 'description': 'Average on the 1â\x80\x935 scale'}, 'source': {'enum': ['Zicasso', 'Google'], 'type': 'string'}, 'available': {'type': 'boolean', 'description': 'false when the platform could not be read; `error` says why'}, 'bestRating': {'type': 'number', 'const': 5}, 'reviewCount': {'type': 'integer'}}, 'additionalProperties': False}}, 'bestRating': {'type': 'number', 'const': 5}, 'generatedAt': {'type': 'string'}, 'ratingValue': {'type': ['number', 'null'], 'description': 'Weighted average over the available sources, 1â\x80\x935'}, 'reviewCount': {'type': 'integer'}}, 'additionalProperties': False}
how_to_request_a_proposal
How to request a proposal
The checklist a traveller or agent should send to Kratons to receive a bespoke proposal, the pricing policy, and how a human advisor follows up. Read-only.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['guide', 'how', 'checklist', 'afterwards', 'contact', 'pricingPolicy', 'agentStatement'], 'properties': {'how': {'type': 'string'}, 'guide': {'type': 'string', 'description': 'The full guide as Markdown'}, 'contact': {'type': 'object', 'required': ['email', 'phones'], 'properties': {'email': {'type': 'string'}, 'phones': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'number', 'e164'], 'properties': {'e164': {'type': 'string'}, 'label': {'type': 'string'}, 'number': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'checklist': {'type': 'array', 'items': {'type': 'string'}, 'description': 'What a traveller or agent should include in a request'}, 'afterwards': {'type': 'string', 'description': 'What happens after a request is submitted'}, 'pricingPolicy': {'type': 'object', 'required': ['summary', 'rules'], 'properties': {'rules': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': 'string'}}, 'additionalProperties': False}, 'agentStatement': {'type': 'string'}}, 'additionalProperties': False}
list_destinations
Destinations with experiences
Countries and cities where Kratons currently offers tours or tickets, with counts. Read-only.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['countries', 'generatedAt'], 'properties': {'countries': {'type': 'array', 'items': {'type': 'object', 'required': ['country', 'experienceCount', 'cities'], 'properties': {'cities': {'type': 'array', 'items': {'type': 'object', 'required': ['city', 'experienceCount'], 'properties': {'city': {'type': 'string'}, 'experienceCount': {'type': 'integer'}}, 'additionalProperties': False}}, 'country': {'type': 'string'}, 'experienceCount': {'type': 'integer'}}, 'additionalProperties': False}}, 'generatedAt': {'type': 'string', 'description': 'ISO timestamp of the underlying query (cached for an hour)'}}, 'additionalProperties': False}
list_sample_itineraries
Sample itineraries
Published sample itineraries Kratons operates, as { itineraries: [...] } (name, destination, duration, category, summary, day-by-day outline) to start a conversation from. Never prices or suppliers — every trip is quoted as one package price by a human advisor.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Free text on name, summary and tags'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20, max 50)'}, 'country': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Destination filter, e.g. Portugal, Andalusia'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['itineraries'], 'properties': {'itineraries': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'destination', 'durationDays', 'category', 'tags', 'summary', 'days', 'pricing'], 'properties': {'id': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'items'], 'properties': {'day': {'type': 'integer', 'description': '1-based day number'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'label'], 'properties': {'kind': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'name': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'pricing': {'type': 'string', 'description': 'The pricing note: one package price per trip, no public price list'}, 'summary': {'$ref': '#/properties/itineraries/items/properties/destination'}, 'category': {'type': 'string'}, 'destination': {'type': ['string', 'null']}, 'durationDays': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
request_a_proposal
Request a bespoke proposal
Submit a structured proposal request to Kratons on behalf of a traveller or a travel agent: contact, destinations within Spain/Portugal/Morocco, dates, travellers, total budget, interests. Returns a reference. A human advisor replies by e-mail — there is no automatic booking, no online checkout and no price list. Send idempotencyKey to retry safely.
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['contact', 'trip'], 'properties': {'utm': {'type': 'object', 'properties': {'medium': {'type': 'string', 'maxLength': 100}, 'source': {'type': 'string', 'maxLength': 100}, 'campaign': {'type': 'string', 'maxLength': 100}}, 'description': 'UTM parameters of the landing link, when any', 'additionalProperties': False}, 'trip': {'type': 'object', 'required': ['destinations', 'dates', 'travelers'], 'properties': {'dates': {'type': 'object', 'properties': {'end': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD'}, 'month': {'type': 'string', 'pattern': '^\\d{4}-(0[1-9]|1[0-2])$', 'description': 'YYYY-MM when exact dates are not fixed'}, 'start': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD'}, 'flexible': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}, 'needs': {'type': 'string', 'maxLength': 2000, 'description': 'Mobility or dietary needs'}, 'notes': {'type': 'string', 'maxLength': 4000, 'description': 'Anything else the advisor should know'}, 'nights': {'type': 'integer', 'maximum': 90, 'minimum': 1}, 'currency': {'enum': ['EUR', 'USD'], 'type': 'string', 'default': 'EUR'}, 'occasion': {'type': 'string', 'maxLength': 200, 'description': 'Anniversary, birthday, honeymoonâ\x80¦'}, 'interests': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Interests and preferred pace'}, 'travelers': {'type': 'object', 'required': ['adults'], 'properties': {'ages': {'type': 'array', 'items': {'type': 'integer', 'maximum': 120, 'minimum': 0}, 'maxItems': 40, 'description': 'Ages of children (and adults if relevant)'}, 'adults': {'type': 'integer', 'maximum': 40, 'minimum': 1}, 'children': {'type': 'integer', 'default': 0, 'maximum': 40, 'minimum': 0}}, 'additionalProperties': False}, 'budgetTotal': {'type': 'number', 'maximum': 5000000, 'minimum': 0, 'description': 'Approximate total budget for the WHOLE trip'}, 'destinations': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'maxItems': 12, 'minItems': 1, 'description': 'Countries, regions or cities within Spain, Portugal and/or Morocco'}, 'hotelPreferences': {'type': 'object', 'properties': {'level': {'enum': ['3_star', '4_star', '5_star', 'luxury', 'boutique', 'historic_or_parador', 'mixed'], 'type': 'string', 'description': "Hotel level the traveller expects; 'mixed' when it may vary by city"}, 'names': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 10, 'description': 'Specific hotels the traveller has in mind, by name'}, 'notes': {'type': 'string', 'maxLength': 500, 'description': 'Anything else about accommodation (room types, location, must-haves)'}}, 'description': 'Accommodation preferences by level or by hotel name (2026-09-17)', 'additionalProperties': False}, 'accommodationStyle': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, 'source': {'enum': ['social', 'web', 'agent', 'referral', 'other'], 'type': 'string', 'description': 'Where this request originated, e.g. "social" when the traveller followed a link in one of Kratons\' social posts'}, 'contact': {'type': 'object', 'required': ['name', 'email'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Traveller's (or the person to reply to) full name"}, 'email': {'type': 'string', 'format': 'email', 'maxLength': 254, 'description': 'E-mail address a human advisor will reply to'}, 'phone': {'type': 'string', 'maxLength': 40, 'description': 'Phone / WhatsApp number with country code'}, 'language': {'enum': ['en', 'es'], 'type': 'string', 'description': 'Language for the reply (English or Spanish)'}, 'preferredChannel': {'enum': ['email', 'phone', 'whatsapp', 'video_call'], 'type': 'string'}}, 'additionalProperties': False}, 'requester': {'type': 'object', 'default': {'kind': 'ai_agent'}, 'properties': {'kind': {'enum': ['ai_agent', 'travel_agent', 'traveller'], 'type': 'string', 'default': 'ai_agent'}, 'agentName': {'type': 'string', 'maxLength': 120, 'description': 'Name of the assistant or agency submitting this'}, 'agentVendor': {'type': 'string', 'maxLength': 120, 'description': 'Vendor / platform of the assistant (e.g. OpenAI, Anthropic)'}}, 'additionalProperties': False}, 'socialPostId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{24}$', 'description': 'The Kratons social post the traveller came from, when the link carried it'}, 'idempotencyKey': {'type': 'string', 'maxLength': 120, 'description': 'Send the same key to retry safely; the same reference comes back'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['reference', 'duplicate', 'receivedAt', 'whatHappensNext', 'contactForChanges', 'missing', 'acknowledged'], 'properties': {'missing': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Recommended details this request did not carry â\x80\x94 collect them before the advisor has to ask'}, 'duplicate': {'type': 'boolean', 'description': 'true when the same request was already received in the last 24 h (same reference returned)'}, 'reference': {'type': 'string', 'description': 'Quote it in any follow-up; get_proposal_request_status reads it'}, 'receivedAt': {'type': 'string', 'description': 'ISO timestamp'}, 'acknowledged': {'type': 'string', 'description': 'One sentence echoing what was received, to confirm it to the traveller'}, 'whatHappensNext': {'type': 'string'}, 'contactForChanges': {'type': 'string'}}, 'additionalProperties': False}
search_experiences
Search experiences
Tours and tickets Kratons operates, filtered by country, city and free text. Returns { experiences: [...] } with name, type, city, country, category, duration, free-cancellation flag and a summary — never prices or suppliers (Kratons quotes one package price per trip).
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Free-text search on name, description and tags'}, 'city': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'City name, e.g. Madrid, Lisbon, Marrakech'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20, max 50)'}, 'country': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Country name, e.g. Spain, Portugal, Morocco'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['experiences'], 'properties': {'experiences': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type', 'city', 'country', 'category', 'durationMinutes', 'freeCancellation', 'summary'], 'properties': {'id': {'type': 'string'}, 'city': {'type': ['string', 'null']}, 'name': {'type': 'string'}, 'type': {'enum': ['Tour', 'Ticket'], 'type': 'string'}, 'country': {'$ref': '#/properties/experiences/items/properties/city'}, 'summary': {'type': 'string'}, 'category': {'anyOf': [{'enum': ['private', 'small_group', 'group'], 'type': 'string'}, {'type': 'null'}]}, 'durationMinutes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'freeCancellation': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Never prices or suppliers â\x80\x94 one package price per trip, quoted by a human'}}, 'additionalProperties': False}
변경됨
request_a_proposal
2026년 9월 26일 2:41 AM
추가됨
request_a_proposal
2026년 9월 18일 2:40 AM
추가됨
how_to_request_a_proposal
2026년 9월 18일 2:40 AM
추가됨
get_proposal_request_status
2026년 9월 18일 2:40 AM
추가됨
get_reviews
2026년 9월 18일 2:40 AM
추가됨
list_sample_itineraries
2026년 9월 18일 2:40 AM
추가됨
search_experiences
2026년 9월 18일 2:40 AM
추가됨
list_destinations
2026년 9월 18일 2:40 AM
추가됨
get_company_facts
2026년 9월 18일 2:40 AM