BailaYa MCP by usefulapi
Read schedules, students and packages; add or change classes, events and students in BailaYa.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"bailaya": {
"url": "https://bailaya.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://bailaya.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (24)
🟢bailaya_list_classes(limit, offset)
List the studio's classes (scheduled occurrences) with date, time, instructor, room, capacity and price. Needs scope classes:read. BailaYa API: GET /v1/classes.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_class(id)
Get one class by id. Needs scope classes:read. BailaYa API: GET /v1/classes/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_events(limit, offset)
List the studio's events (workshops and special sessions) with date, time, instructor and capacity. Needs scope events:read. BailaYa API: GET /v1/events.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_event(id)
Get one event by id. Needs scope events:read. BailaYa API: GET /v1/events/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_students(limit, offset)
List the studio's students with name, email, phone, level and status. Personal data: use only when the studio owner asks. Needs scope students:read. BailaYa API: GET /v1/students.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_student(id)
Get one student by id. Personal data. Needs scope students:read. BailaYa API: GET /v1/students/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_team_members(role, limit, offset)
List studio team members (staff, instructors, owners, admins), optionally filtered by role. Needs scope team:read. BailaYa API: GET /v1/team.
Esquema de entrada
{
"type": "object",
"properties": {
"role": {
"description": "Only members with this role.",
"type": "string",
"enum": [
"staff",
"instructor",
"owner",
"admin"
]
},
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_team_member(id)
Get one team member by id. Needs scope team:read. BailaYa API: GET /v1/team/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_instructors(limit, offset)
List the studio's instructors. Needs scope instructors:read. BailaYa API: GET /v1/instructors.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_instructor(id)
Get one instructor by id. Needs scope instructors:read. BailaYa API: GET /v1/instructors/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_packages(is_active, limit, offset)
List class packages (pre-paid bundles of sessions) with price, sessions and validity. Set is_active to filter. Needs scope packages:read. BailaYa API: GET /v1/packages.
Esquema de entrada
{
"type": "object",
"properties": {
"is_active": {
"description": "true = active packages only; false = inactive only.",
"type": "boolean"
},
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_package(id)
Get one class package by id. Needs scope packages:read. BailaYa API: GET /v1/packages/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_rooms(limit, offset)
List the studio's rooms with capacity and location. Needs scope rooms:read. BailaYa API: GET /v1/rooms.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_room(id)
Get one room by id. Needs scope rooms:read. BailaYa API: GET /v1/rooms/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_locations
List the studio's locations (primary first). The API is not paginated: every location is returned. Needs scope locations:read. BailaYa API: GET /v1/locations.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_get_location(id)
Get one location by id. Needs scope locations:read. BailaYa API: GET /v1/locations/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢bailaya_list_dance_types(limit, offset)
List the studio's dance types (studio types) used to tag classes. Includes types hidden from the website. Needs scope classes:read. BailaYa API: GET /v1/studio-types.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"description": "Rows per page (the API default applies if omitted).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "Rows to skip, for paging. Stop when a page is shorter than limit.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_create_class(name, discipline, level, date, start_time, ...)
Create ONE class occurrence on a date. Visible on the studio's booking page. Needs scope classes:write. BailaYa API: POST /v1/classes.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"discipline": {
"type": "string",
"minLength": 1,
"description": "Discipline name (free text, e.g. 'Salsa')."
},
"level": {
"type": "string",
"minLength": 1,
"description": "Level name (free text, e.g. 'Beginner')."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Studio-local calendar date, yyyy-mm-dd."
},
"start_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"end_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"team_member_id": {
"type": "string",
"minLength": 1,
"description": "The instructor's team member id. Must belong to the studio."
},
"description": {
"type": "string"
},
"room_id": {
"type": [
"string",
"null"
]
},
"location": {
"description": "Location id.",
"type": [
"string",
"null"
]
},
"capacity": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"studio_type_id": {
"description": "Dance type id (from bailaya_list_dance_types).",
"type": [
"string",
"null"
]
},
"allow_packages": {
"type": "boolean"
},
"require_package": {
"type": "boolean"
},
"allowed_package_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"is_virtual": {
"type": "boolean"
},
"virtual_platform": {
"anyOf": [
{
"type": "string",
"enum": [
"ZOOM",
"GOOGLE_MEET",
"TEAMS"
]
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"discipline",
"level",
"date",
"start_time",
"end_time",
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_update_class(id, name, description, discipline, level, ...)
Change fields of one class (time, instructor, room, capacity, price). Only the fields you pass change. Needs scope classes:write. BailaYa API: PATCH /v1/classes/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"discipline": {
"type": "string",
"minLength": 1
},
"level": {
"type": "string",
"minLength": 1
},
"start_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"end_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"team_member_id": {
"type": "string",
"minLength": 1
},
"room_id": {
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"capacity": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"allow_packages": {
"type": "boolean"
},
"require_package": {
"type": "boolean"
},
"allowed_package_ids": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_delete_class(id, apply_to_series)
Delete (cancel) one class. Set apply_to_series to true to delete every occurrence of a repeating series. Irreversible. Needs scope classes:delete. BailaYa API: DELETE /v1/classes/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
},
"apply_to_series": {
"description": "true = delete the whole recurring series. Default false: this occurrence only.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_create_event(name, discipline, level, date, start_time, ...)
Create ONE event (workshop or special session) on a date. Visible on the studio's booking page. Needs scope events:write. BailaYa API: POST /v1/events.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"discipline": {
"type": "string",
"minLength": 1,
"description": "Discipline name (free text)."
},
"level": {
"type": "string",
"minLength": 1,
"description": "Level name (free text)."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Studio-local calendar date, yyyy-mm-dd."
},
"start_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"end_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"team_member_id": {
"type": "string",
"minLength": 1,
"description": "The host's team member id. Must belong to the studio."
},
"description": {
"type": "string"
},
"room_id": {
"type": [
"string",
"null"
]
},
"location": {
"description": "Location id.",
"type": [
"string",
"null"
]
},
"capacity": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"studio_type_id": {
"description": "Dance type id (from bailaya_list_dance_types).",
"type": [
"string",
"null"
]
},
"allow_packages": {
"type": "boolean"
},
"require_package": {
"type": "boolean"
},
"allowed_package_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"is_virtual": {
"type": "boolean"
},
"virtual_platform": {
"anyOf": [
{
"type": "string",
"enum": [
"ZOOM",
"GOOGLE_MEET",
"TEAMS"
]
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"discipline",
"level",
"date",
"start_time",
"end_time",
"team_member_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_update_event(id, name, description, discipline, level, ...)
Change fields of one event (time, host, room, capacity, price). Only the fields you pass change. Needs scope events:write. BailaYa API: PATCH /v1/events/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"discipline": {
"type": "string",
"minLength": 1
},
"level": {
"type": "string",
"minLength": 1
},
"start_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"end_time": {
"type": "string",
"pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
"description": "Time as HH:MM, 24-hour."
},
"team_member_id": {
"type": "string",
"minLength": 1
},
"room_id": {
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"capacity": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"allow_packages": {
"type": "boolean"
},
"require_package": {
"type": "boolean"
},
"allowed_package_ids": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_create_student(name, lastname, email, level, phone, ...)
Add ONE student record to the studio. Personal data. Needs scope students:write. BailaYa API: POST /v1/students.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"lastname": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"level": {
"type": "string",
"minLength": 1,
"description": "Level name (free text)."
},
"phone": {
"type": [
"string",
"null"
]
},
"status": {
"description": "Student status. The API default is 'pending'.",
"type": "string"
}
},
"required": [
"name",
"lastname",
"email",
"level"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴bailaya_update_student(id, name, lastname, email, level, ...)
Change fields of one student record (contact details, level, status). Only the fields you pass change. Personal data. Needs scope students:write. BailaYa API: PATCH /v1/students/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The id from the matching list tool."
},
"name": {
"type": "string",
"minLength": 1
},
"lastname": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"level": {
"type": "string",
"minLength": 1
},
"phone": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia