MCPサーバー

Yenta Directory

ai.yentaknows/directory

この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
変更
destination_guide
2026年9月25日3:01
変更
destination_events
2026年9月25日3:01
変更
destination_listing
2026年9月25日3:01
変更
destination_listings
2026年9月25日3:01
変更
destination_facets
2026年9月25日3:01
変更
destination_overview
2026年9月25日3:01
変更
venue_links
2026年9月25日3:01
変更
venue_faq
2026年9月25日3:01
変更
venue_dietary_options
2026年9月25日3:01
変更
venue_menu_search
2026年9月25日3:01
変更
venue_profile
2026年9月25日3:01
変更
facet_vocabulary
2026年9月25日3:01
変更
search_menus
2026年9月25日3:01
変更
get_destination
2026年9月25日3:01
変更
search
2026年9月25日3:01
変更
search_destinations
2026年9月25日3:01
変更
get_venues
2026年9月25日3:01
変更
get_venue
2026年9月25日3:01
変更
list_cities
2026年9月25日3:01
変更
search_venues
2026年9月25日3:01
追加
destination_faq
2026年9月17日7:57
追加
destination_guide
2026年9月17日7:57
追加
destination_events
2026年9月17日7:57
追加
destination_listing
2026年9月17日7:57
追加
destination_listings
2026年9月17日7:57
追加
destination_facets
2026年9月17日7:57
追加
destination_overview
2026年9月17日7:57
追加
venue_links
2026年9月17日7:57
追加
venue_faq
2026年9月17日7:57