MCP 서버

Yenta Directory

ai.yentaknows/directory
지도 및 위치 여행 및 호스피탈리티 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Supports read-only discovery of venues and destinations, including listings, menus, events, guides, dietary information, and location-based filters.

destination_events
Search a destination's events by name
Find a named destination's events overlapping a date window (default from today; a recurring event's span is not a single date — read its recurrence; the destination's own host calls this search_events).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'area': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Area slug from destination_facets.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'to_date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'default': None, 'description': 'ISO date; open-ended if omitted.'}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Category slug from destination_facets.'}, 'from_date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'default': None, 'description': 'ISO date; defaults to today.'}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_facets
Destination facets by name
List a named destination's valid area, category and tag filter values (the destination's own host calls this list_facets).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'kind': {'anyOf': [{'enum': ['area', 'category', 'tag'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Return only this facet family; omit for all three.'}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_faq
Destination FAQ by name
Search a named destination's FAQs, optionally filtered by text (the destination's own host calls this get_faq).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match in question/answer.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_guide
Destination guides by name
Read a named destination's editorial guides such as weather, getting here and safety (the destination's own host calls this get_guide).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match in guide title/body.'}, 'topic': {'anyOf': [{'enum': ['weather', 'getting_here', 'transportation', 'entry_requirements', 'emergencies', 'safety', 'culture', 'packing', 'sustainability'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Guide topic; omit for all.'}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_listing
Get a destination listing by name
Get one listing's full detail by its id, including a live linked venue's mcp_endpoint and linked_venue_slug to read or book it via the venue_* tools (the destination's own host calls this get_listing).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination', 'listing_id'], 'properties': {'listing_id': {'type': 'string', 'description': "The listing's id, as returned by destination_listings."}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_listings
Search a destination's listings by name
Search a named destination's listings by text, category, area and tags (slugs from destination_facets); optionally near another listing, and the destination's own host calls this search_listings.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'area': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Area slug from destination_facets.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Tag slugs; only listings carrying ALL are returned.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match listing names/descriptions.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Category slug from destination_facets.'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language code (e.g. 'en', 'es'); defaults to the destination's."}, 'radius_km': {'anyOf': [{'type': 'number', 'maximum': 50.0, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Search radius in km around near_listing_id; a larger value is reduced to the server maximum.'}, 'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}, 'near_listing_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'A listing id; returns listings within radius_km, nearest first.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
destination_overview
Destination overview by name
Get a named destination's summary: counts by category, currency, timezone — if it reports the destination is not available, fall back to get_destination with the slug from search_destinations (the destination's own host calls this get_overview).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination'], 'properties': {'destination': {'type': 'string', 'description': 'Destination name or slug; call search_destinations to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
facet_vocabulary
Facet vocabulary
The closed VENUE facet vocabulary (vibe, cuisine, dietary, and more) plus today's live cuisine, price_band and neighbourhood values across published venues, the exact values search_venues' matching filters accept — for a destination's areas, categories and tags call destination_facets instead.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
get_destination
Get destination
Get one published destination's summary and live mcp_endpoint by its slug — always available for any published destination, so use this if destination_overview reports it is not available.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['destination_slug'], 'properties': {'destination_slug': {'type': 'string', 'description': "The destination's slug, as returned by search_destinations."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
get_venue
Get venue
Get one published venue's summary, capabilities and live mcp_endpoint by its slug — always available for any published venue, so use this if venue_profile reports the venue is not available.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue_slug'], 'properties': {'venue_slug': {'type': 'string', 'description': "The venue's slug, as returned by search_venues."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
get_venues
Get venues (batch)
Get several published venues' summaries in ONE call by their slugs — the batch counterpart to get_venue, so a shortlist from search_venues needs no per-slug round-trip; the base view (identity, essentials, capabilities, booking, mcp_endpoint) is always returned, while include opts into heavier per-venue reads — hours, dietary (dietary-tag/allergen vocabulary), attributes (facets) and menu_summary — with items coming back in the requested order (a repeated slug resolves once) and not_found listing any requested slug that did not resolve to a published venue.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['slugs'], 'properties': {'slugs': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': "The venues' slugs, as returned by search_venues; duplicates resolve once. Either one slug per list entry, or comma-separated within an entry (a,b) — both work and mix; the cap applies to the total slug count."}, 'include': {'type': 'array', 'items': {'enum': ['attributes', 'dietary', 'hours', 'menu_summary'], 'type': 'string'}, 'maxItems': 4, 'description': 'Optional add-ons, any of: attributes, dietary, hours, menu_summary. Omit for the lean base view; an unknown value is a 422.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
list_cities
List cities
List the cities that have at least one published venue.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
search
Search venues and destinations
Search published venues and destinations together in one call, each result tagged with its kind (venue or destination); pass kind to scope to one type, query to match names and venue descriptions, and city to narrow venues, then use search_venues or search_destinations for type-specific filters such as cuisine, hours or area.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Narrow VENUES to this city (case-insensitive); destinations have no city and are not narrowed by it. Call list_cities for the exact values.'}, 'kind': {'anyOf': [{'enum': ['venue', 'destination'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Scope to 'venue' or 'destination'; omit to return both, each tagged kind."}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Match venue names/descriptions and destination names; omit for all.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
search_destinations
Search destinations
Search published travel destinations by name; omit the query to list all, and connect to each result's mcp_endpoint for its listings, events and guides.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match against destination names; omit to list all.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
search_menus
Search menus across venues
Search menu items across all published venues by text, city, required dietary tags and allergens to avoid, each result tagged with its venue so an agent can rank venues in one call.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Only return items from venues in this city (case-insensitive); call list_cities for the exact values.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match against menu item names and descriptions.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'allergens': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Exclude items that declare any of these allergens (spelling-insensitive).'}, 'dietary_tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Require ALL of these dietary tags (case- and separator-insensitive).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
search_venues
Search venues
Search published venues by name or description, optionally filtered by city, cuisine, price band, neighbourhood, whether the venue takes reservations, proximity (near a lat/long within a radius, nearest first) and opening hours (open on a given day/time, or open now) — all HARD filters that exclude on a miss, plus a HARD experiential-facet filter (facets, '<facet_type>:<value>' tokens from facet_vocabulary) — with prefer_cuisine, prefer_neighbourhood, avoid and prefer_facets as SOFT preferences that only rank a venue up or down and never drop it; each result carries the venue's capabilities and, when it is live, its mcp_endpoint.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'at': {'anyOf': [{'type': 'string', 'format': 'time'}, {'type': 'null'}], 'default': None, 'description': 'A 24-hour HH:MM time; with open_on, require the venue be open then.'}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Only return venues in this city (case-insensitive); call list_cities for the exact values this directory knows.'}, 'near': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['19.0413,-98.2062'], 'description': "Only return venues within radius_km of this 'latitude,longitude' point, nearest first, each with a distance_km; venues with no coordinates are excluded."}, 'avoid': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Soft preference: venues matching these cuisine/neighbourhood tokens rank LOWER; not dropped.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match against venue names and descriptions; omit to list all.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'facets': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': "HARD experiential-facet filter: each token is '<facet_type>:<value>' (e.g. 'dietary:vegetarian', 'vibe:romantic'). A venue must match every facet_type given (values OR within a type, types AND across); a miss EXCLUDES it. Call facet_vocabulary for the legal types and values."}, 'cuisine': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Only return venues with this cuisine (case-insensitive exact match).'}, 'open_on': {'anyOf': [{'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Only return venues open on this weekday (optionally at 'at'); venues with no published hours are excluded."}, 'open_now': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Only return venues open (true) or closed (false) at their own local time now; venues with no timezone or hours are excluded.'}, 'radius_km': {'anyOf': [{'type': 'number', 'maximum': 50.0, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': "Search radius in km around 'near' (default applied when omitted)."}, 'price_band': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Only return venues in this price band, e.g. '$$' (case-insensitive)."}, 'neighbourhood': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Only return venues in this neighbourhood (case-insensitive exact match).'}, 'prefer_facets': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': "SOFT experiential-facet preference, same '<facet_type>:<value>' tokens as facets: a venue that declares them ranks higher but is NEVER dropped. Call facet_vocabulary for the legal types and values."}, 'prefer_cuisine': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Soft preference: venues of these cuisines rank higher; non-matches are NOT dropped.'}, 'accepts_reservations': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Filter by whether the venue takes reservations (has a live booking tool or a booking link); omit for both.'}, 'prefer_neighbourhood': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Soft preference: venues in these neighbourhoods rank higher; non-matches are NOT dropped.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
venue_dietary_options
Venue dietary options by name
List a named venue's declared dietary tags and allergens — the exact spellings venue_menu_search matches literally (the venue's own host calls this get_dietary_options).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Disambiguate a name by city (call list_cities); ignored for a slug.'}, 'venue': {'type': 'string', 'description': 'Venue name or slug; call search_venues to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
venue_faq
Venue FAQ by name
Search a named venue's published FAQs, optionally filtered by text (the venue's own host calls this get_venue_faq).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Disambiguate a name by city (call list_cities); ignored for a slug.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match against questions and answers.'}, 'venue': {'type': 'string', 'description': 'Venue name or slug; call search_venues to discover one.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
venue_links
Venue links by name
Get a named venue's published booking and other links (connect to its mcp_endpoint to actually book; the venue's own host calls this get_venue_links).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Disambiguate a name by city (call list_cities); ignored for a slug.'}, 'venue': {'type': 'string', 'description': 'Venue name or slug; call search_venues to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
venue_menu_search
Search a venue's menu by name
Search a named venue's menu by text, required dietary tags and allergens to avoid; call venue_dietary_options first for the exact spellings (the venue's own host calls this search_menu).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Disambiguate a name by city (call list_cities); ignored for a slug.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of items to return.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 256}, {'type': 'null'}], 'default': None, 'description': 'Text to match against item names and descriptions.'}, 'venue': {'type': 'string', 'description': 'Venue name or slug; call search_venues to discover one.'}, 'cursor': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Number of items to skip; pass `next_cursor` from the previous page.'}, 'allergens': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Exclude items declaring any of these allergens (exact spelling).'}, 'dietary_tags': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'description': 'Require ALL of these tags (exact spelling from venue_dietary_options).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
venue_profile
Venue profile by name
Get a named venue's published profile summary — give its name (and city) or slug; not every venue enables this richer profile, so if it reports the venue is not available, fall back to get_venue with the slug from search_venues (the venue's own host calls this get_venue_profile).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['venue'], 'properties': {'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Disambiguate a name by city (call list_cities); ignored for a slug.'}, 'venue': {'type': 'string', 'description': 'Venue name or slug; call search_venues to discover one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'title': 'PublicResponse', 'required': ['status'], 'properties': {'item': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Item', 'default': None}, 'items': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Items', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'sample': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Sample', 'default': None}, 'source': {'type': 'object', 'title': 'SourceReference', 'required': ['content_version', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'powered_by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Powered By', 'default': None}, 'approved_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Approved At', 'default': None}, 'content_version': {'type': 'integer', 'title': 'Content Version'}}, 'description': 'FR-13: which approved revision an answer was read from, and how fresh.\n\n``source`` is ``approved-content-revision:<id>`` for every read that answers\nfrom one venue, and the literal ``directory`` for the two cross-venue reads,\nwhich have no single revision to cite.', 'additionalProperties': False}, 'status': {'enum': ['ok', 'not_available', 'validation_error'], 'type': 'string', 'title': 'Status'}, 'pagination': {'anyOf': [{'type': 'object', 'title': 'Pagination', 'required': ['limit', 'cursor', 'total'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit'}, 'total': {'type': 'integer', 'title': 'Total'}, 'cursor': {'type': 'integer', 'title': 'Cursor'}, 'next_cursor': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}}, 'description': 'The page a paginated read actually served (FR-13, INV-8).\n\n``next_cursor`` is ``None`` both at the end of the results and when the next\ncursor would exceed ``max_public_cursor`` — in either case there is no\nfurther page a caller can legally request.', 'additionalProperties': False}, {'type': 'null'}], 'default': None}}, 'description': 'The Yenta response envelope: a status, the answer in `item` or `items`, and the approved content revision it was read from.', 'additionalProperties': False}
변경됨
destination_faq
2026년 9월 25일 3:01 AM
변경됨
destination_guide
2026년 9월 25일 3:01 AM
변경됨
destination_events
2026년 9월 25일 3:01 AM
변경됨
destination_listing
2026년 9월 25일 3:01 AM
변경됨
destination_listings
2026년 9월 25일 3:01 AM
변경됨
destination_facets
2026년 9월 25일 3:01 AM
변경됨
destination_overview
2026년 9월 25일 3:01 AM
변경됨
venue_links
2026년 9월 25일 3:01 AM
변경됨
venue_faq
2026년 9월 25일 3:01 AM
변경됨
venue_dietary_options
2026년 9월 25일 3:01 AM
변경됨
venue_menu_search
2026년 9월 25일 3:01 AM
변경됨
venue_profile
2026년 9월 25일 3:01 AM
변경됨
facet_vocabulary
2026년 9월 25일 3:01 AM
변경됨
search_menus
2026년 9월 25일 3:01 AM
변경됨
get_destination
2026년 9월 25일 3:01 AM
변경됨
search
2026년 9월 25일 3:01 AM
변경됨
search_destinations
2026년 9월 25일 3:01 AM
변경됨
get_venues
2026년 9월 25일 3:01 AM
변경됨
get_venue
2026년 9월 25일 3:01 AM
변경됨
list_cities
2026년 9월 25일 3:01 AM
변경됨
search_venues
2026년 9월 25일 3:01 AM
추가됨
destination_faq
2026년 9월 17일 7:57 AM
추가됨
destination_guide
2026년 9월 17일 7:57 AM
추가됨
destination_events
2026년 9월 17일 7:57 AM
추가됨
destination_listing
2026년 9월 17일 7:57 AM
추가됨
destination_listings
2026년 9월 17일 7:57 AM
추가됨
destination_facets
2026년 9월 17일 7:57 AM
추가됨
destination_overview
2026년 9월 17일 7:57 AM
추가됨
venue_links
2026년 9월 17일 7:57 AM
추가됨
venue_faq
2026년 9월 17일 7:57 AM