BailaYa MCP by usefulapi
Read schedules, students and packages; add or change classes, events and students in BailaYa.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"bailaya": {
"url": "https://bailaya.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://bailaya.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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"
}Community
Nachweis