BailaYa MCP by usefulapi
Read schedules, students and packages; add or change classes, events and students in BailaYa.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"bailaya": {
"url": "https://bailaya.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://bailaya.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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"
}コミュニティ
エビデンス