MCP Server

Salsa Vida

com.salsavida/mcp
Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Finds and retrieves Salsa and Bachata events, locations, and destination guides worldwide.

get_event
Read public event facts and dated occurrences within a requested window (default UTC today through 13 days later; pass user-local dates for today/tonight). Unknown timezones remain null. Inactive/private events are unavailable.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['event_id'], 'properties': {'date_to': {'type': 'string'}, 'event_id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'language': {'enum': ['en', 'es', 'ja', 'de', 'fr', 'fr-fr', 'it', 'nl', 'pt', 'ka', 'pl', 'tr'], 'type': 'string'}, 'date_from': {'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['calendar_basis', 'default_window_basis', 'source', 'coverage', 'source_checked_at', 'changes_checked_at', 'dates_are_local', 'freshness', 'freshness_warning', 'date_verification', 'event_id', 'title', 'summary', 'canonical_url', 'visit_url', 'returned_language', 'locale_fallback', 'event_types', 'dances', 'salsa_styles', 'venue', 'address', 'price', 'time_mode', 'start_time', 'end_time', 'timezone', 'source_modified_at', 'date_from', 'date_to', 'occurrences'], 'properties': {'price': {'type': 'string'}, 'title': {'type': 'string'}, 'venue': {'type': 'string'}, 'dances': {'type': 'array', 'items': {'enum': ['salsa', 'bachata'], 'type': 'string'}}, 'source': {'type': 'string', 'const': 'Salsa Vida'}, 'address': {'type': 'string'}, 'date_to': {'type': 'string'}, 'summary': {'type': 'string'}, 'coverage': {'type': 'object', 'required': ['from', 'through'], 'properties': {'from': {'type': ['string', 'null']}, 'through': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'end_time': {'type': ['string', 'null']}, 'event_id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'timezone': {'type': ['string', 'null']}, 'date_from': {'type': 'string'}, 'freshness': {'enum': ['unknown', 'fresh', 'delayed', 'degraded'], 'type': 'string'}, 'time_mode': {'enum': ['fixed', 'varies', 'tba'], 'type': 'string'}, 'visit_url': {'type': 'string', 'format': 'uri'}, 'start_time': {'type': ['string', 'null']}, 'event_types': {'type': 'array', 'items': {'enum': ['social', 'lesson', 'festival'], 'type': 'string'}}, 'occurrences': {'type': 'array', 'items': {'type': 'object', 'required': ['occurrence_id', 'start_date', 'end_date'], 'properties': {'end_date': {'type': 'string'}, 'start_date': {'type': 'string'}, 'occurrence_id': {'type': 'string'}}, 'additionalProperties': False}}, 'salsa_styles': {'type': 'array', 'items': {'type': 'string'}}, 'canonical_url': {'type': 'string', 'format': 'uri'}, 'calendar_basis': {'type': 'string', 'const': 'event_local_calendar_dates'}, 'dates_are_local': {'type': 'boolean', 'const': True}, 'locale_fallback': {'type': 'boolean'}, 'date_verification': {'type': 'string', 'const': 'scheduled_from_recorded_data_not_organizer_confirmed'}, 'freshness_warning': {'type': ['string', 'null']}, 'returned_language': {'type': 'string'}, 'source_checked_at': {'type': ['string', 'null']}, 'changes_checked_at': {'type': ['string', 'null']}, 'source_modified_at': {'type': ['string', 'null']}, 'default_window_basis': {'type': 'string', 'const': 'UTC today through UTC today plus 13 calendar dates; pass explicit user-local dates for today or tonight.'}}, 'additionalProperties': False}
get_guide
Read a public Salsa Vida city, region or country guide summary and its canonical link. Uses only existing published language versions, with English fallback.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location'], 'properties': {'language': {'enum': ['en', 'es', 'ja', 'de', 'fr', 'fr-fr', 'it', 'nl', 'pt', 'ka', 'pl', 'tr'], 'type': 'string'}, 'location': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Salsa Vida source location ID, slug, or location name. Use search_locations to disambiguate.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['calendar_basis', 'default_window_basis', 'source', 'coverage', 'source_checked_at', 'changes_checked_at', 'dates_are_local', 'freshness', 'freshness_warning', 'location_id', 'slug', 'name', 'summary', 'canonical_url', 'visit_url', 'returned_language', 'locale_fallback'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'source': {'type': 'string', 'const': 'Salsa Vida'}, 'summary': {'type': 'string'}, 'coverage': {'type': 'object', 'required': ['from', 'through'], 'properties': {'from': {'type': ['string', 'null']}, 'through': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'freshness': {'enum': ['unknown', 'fresh', 'delayed', 'degraded'], 'type': 'string'}, 'visit_url': {'type': 'string', 'format': 'uri'}, 'location_id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'canonical_url': {'type': 'string', 'format': 'uri'}, 'calendar_basis': {'type': 'string', 'const': 'event_local_calendar_dates'}, 'dates_are_local': {'type': 'boolean', 'const': True}, 'locale_fallback': {'type': 'boolean'}, 'freshness_warning': {'type': ['string', 'null']}, 'returned_language': {'type': 'string'}, 'source_checked_at': {'type': ['string', 'null']}, 'changes_checked_at': {'type': ['string', 'null']}, 'default_window_basis': {'type': 'string', 'const': 'UTC today through UTC today plus 13 calendar dates; pass explicit user-local dates for today or tonight.'}}, 'additionalProperties': False}
search_events
Find published salsa/bachata events for a location and dates. Defaults to UTC today through 13 days later; for today/tonight pass the user-local date. Supports up to one year, 50 results/page and 10 pages. response_size_limited means the page was shortened to fit; follow next_cursor. Narrow filters when pagination_limit_reached is true.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location'], 'properties': {'dance': {'enum': ['salsa', 'bachata'], 'type': 'string'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'cursor': {'type': 'string', 'maxLength': 2000}, 'date_to': {'type': 'string'}, 'language': {'enum': ['en', 'es', 'ja', 'de', 'fr', 'fr-fr', 'it', 'nl', 'pt', 'ka', 'pl', 'tr'], 'type': 'string'}, 'location': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Salsa Vida source location ID, slug, or location name. Use search_locations to disambiguate.'}, 'date_from': {'type': 'string'}, 'event_type': {'enum': ['social', 'lesson', 'festival'], 'type': 'string'}, 'salsa_style': {'enum': ['linear-salsa', 'salsa-on1', 'salsa-on2', 'cuban-salsa', 'salsa-rueda', 'salsa-calena', 'afro-cuban'], 'type': 'string', 'description': 'Filter recorded Salsa style tags. Many events have no recorded style, so an empty result does not prove the style is absent. linear-salsa includes salsa-on1/salsa-on2; cuban-salsa includes salsa-rueda.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['calendar_basis', 'default_window_basis', 'source', 'coverage', 'source_checked_at', 'changes_checked_at', 'dates_are_local', 'freshness', 'freshness_warning', 'location', 'date_from', 'date_to', 'results', 'next_cursor', 'pagination_limit_reached', 'response_size_limited'], 'properties': {'source': {'type': 'string', 'const': 'Salsa Vida'}, 'date_to': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['date_verification', 'event_id', 'title', 'summary', 'canonical_url', 'visit_url', 'returned_language', 'locale_fallback', 'event_types', 'dances', 'salsa_styles', 'venue', 'address', 'price', 'time_mode', 'start_time', 'end_time', 'timezone', 'source_modified_at', 'occurrence_id', 'start_date', 'end_date'], 'properties': {'price': {'type': 'string'}, 'title': {'type': 'string'}, 'venue': {'type': 'string'}, 'dances': {'type': 'array', 'items': {'enum': ['salsa', 'bachata'], 'type': 'string'}}, 'address': {'type': 'string'}, 'summary': {'type': 'string'}, 'end_date': {'type': 'string'}, 'end_time': {'type': ['string', 'null']}, 'event_id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'timezone': {'type': ['string', 'null']}, 'time_mode': {'enum': ['fixed', 'varies', 'tba'], 'type': 'string'}, 'visit_url': {'type': 'string', 'format': 'uri'}, 'start_date': {'type': 'string'}, 'start_time': {'type': ['string', 'null']}, 'event_types': {'type': 'array', 'items': {'enum': ['social', 'lesson', 'festival'], 'type': 'string'}}, 'salsa_styles': {'type': 'array', 'items': {'type': 'string'}}, 'canonical_url': {'type': 'string', 'format': 'uri'}, 'occurrence_id': {'type': 'string'}, 'locale_fallback': {'type': 'boolean'}, 'date_verification': {'type': 'string', 'const': 'scheduled_from_recorded_data_not_organizer_confirmed'}, 'returned_language': {'type': 'string'}, 'source_modified_at': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'coverage': {'type': 'object', 'required': ['from', 'through'], 'properties': {'from': {'type': ['string', 'null']}, 'through': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'location': {'type': 'object', 'required': ['id', 'slug', 'name'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}, 'date_from': {'type': 'string'}, 'freshness': {'enum': ['unknown', 'fresh', 'delayed', 'degraded'], 'type': 'string'}, 'next_cursor': {'type': ['string', 'null']}, 'calendar_basis': {'type': 'string', 'const': 'event_local_calendar_dates'}, 'dates_are_local': {'type': 'boolean', 'const': True}, 'freshness_warning': {'type': ['string', 'null']}, 'source_checked_at': {'type': ['string', 'null']}, 'changes_checked_at': {'type': ['string', 'null']}, 'default_window_basis': {'type': 'string', 'const': 'UTC today through UTC today plus 13 calendar dates; pass explicit user-local dates for today or tonight.'}, 'response_size_limited': {'type': 'boolean'}, 'pagination_limit_reached': {'type': 'boolean'}}, 'additionalProperties': False}
search_locations
Find Salsa Vida cities, regions and countries by name, ignoring case and diacritics. Use the returned source location ID to resolve ambiguous names. Localized guides fall back to English where available. response_size_limited means the page was shortened to fit; follow next_cursor.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'cursor': {'type': 'string', 'maxLength': 2000}, 'language': {'enum': ['en', 'es', 'ja', 'de', 'fr', 'fr-fr', 'it', 'nl', 'pt', 'ka', 'pl', 'tr'], 'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['calendar_basis', 'default_window_basis', 'source', 'coverage', 'source_checked_at', 'changes_checked_at', 'dates_are_local', 'freshness', 'freshness_warning', 'results', 'next_cursor', 'pagination_limit_reached', 'response_size_limited'], 'properties': {'source': {'type': 'string', 'const': 'Salsa Vida'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source_location_id', 'parent_id', 'slug', 'name', 'ancestors', 'canonical_url', 'visit_url', 'returned_language', 'locale_fallback'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'ancestors': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug', 'name'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}}, 'parent_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, {'type': 'null'}]}, 'visit_url': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}]}, 'canonical_url': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}]}, 'locale_fallback': {'type': 'boolean'}, 'returned_language': {'type': ['string', 'null']}, 'source_location_id': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}}, 'coverage': {'type': 'object', 'required': ['from', 'through'], 'properties': {'from': {'type': ['string', 'null']}, 'through': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'freshness': {'enum': ['unknown', 'fresh', 'delayed', 'degraded'], 'type': 'string'}, 'next_cursor': {'type': ['string', 'null']}, 'calendar_basis': {'type': 'string', 'const': 'event_local_calendar_dates'}, 'dates_are_local': {'type': 'boolean', 'const': True}, 'freshness_warning': {'type': ['string', 'null']}, 'source_checked_at': {'type': ['string', 'null']}, 'changes_checked_at': {'type': ['string', 'null']}, 'default_window_basis': {'type': 'string', 'const': 'UTC today through UTC today plus 13 calendar dates; pass explicit user-local dates for today or tonight.'}, 'response_size_limited': {'type': 'boolean'}, 'pagination_limit_reached': {'type': 'boolean'}}, 'additionalProperties': False}
Added
get_guide
Sept. 17, 2026, 12:37 p.m.
Added
search_locations
Sept. 17, 2026, 12:37 p.m.
Added
get_event
Sept. 17, 2026, 12:37 p.m.
Added
search_events
Sept. 17, 2026, 12:37 p.m.