AI tools — Gym Master
57 tools. The latest schema is always in gym_tool_catalog once connected.
Book a class
Write proposalScope:gym:writegym_book_classBook a group class session (Yoga, Zumba…) for a member with a class package, by class name and date. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
memberCode | string | no | Member code (e.g. HV001) |
className | string | yes | Class name |
date | string | yes | Date (yyyy-MM-dd) |
startTime | string | no | Start time (HH:mm) |
package | string | no | Class package name when the member has several |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_book_class",
"arguments": {
"args": {
"memberCode": "HV001",
"className": "Yoga cơ bản",
"date": "2026-10-30",
"startTime": "18:00"
}
}
}Book a PT session
Write proposalScope:gym:writegym_book_pt_sessionBook a 1-on-1 PT session for a member with a PT package, with a specific trainer and time. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
memberCode | string | no | Member code (e.g. HV001) |
trainer | string | yes | PT trainer name or staff code |
date | string | yes | Date (yyyy-MM-dd) |
startTime | string | yes | Start time (HH:mm) |
endTime | string | no | End time (HH:mm) |
contractCode | string | no | Contract code |
notes | string | no | Notes |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_book_pt_session",
"arguments": {
"args": {
"memberCode": "HV001",
"trainer": "Trần Minh Khoa",
"date": "2026-10-30",
"startTime": "07:00",
"endTime": "08:00"
}
}
}Check-ins
ReadScope:gym:readgym_checkins_queryQuery check-ins: count, list or group; filter by date, member, currently in the gym.
| Parameter | Type | Required | Description |
|---|---|---|---|
op | string | no | count = count only, list = list (default), group = count by groupBy |
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
groupBy | string | no | Group by |
sort | string | no | Sort "<key> asc|desc" |
limit | integer | no | Max rows |
page | integer | no | Page, starting at 1 |
fields | string[] | no | Fields to return |
ids | string[] | no | Record ids from a previous result |
search | string | no | Name, code or phone |
inGymNow | boolean | no | true = currently in the gym (not checked out) |
branch | string | no | Branch name or id; empty = all visible branches |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_checkins_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"op":"count","filter":[{"field":"date","op":"eq","value":"today"}]}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_checkins_query",
"arguments": {
"args": {
"op": "count",
"filter": [
{
"field": "date",
"op": "eq",
"value": "today"
}
]
}
}
}Class bookings
ReadScope:gym:readgym_classbookings_queryQuery class bookings: who booked, busiest classes, no-shows, cancellations; count, list or group.
| Parameter | Type | Required | Description |
|---|---|---|---|
op | string | no | count = count only, list = list (default), group = count by groupBy |
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
groupBy | string | no | Group by |
sort | string | no | Sort "<key> asc|desc" |
limit | integer | no | Max rows |
page | integer | no | Page, starting at 1 |
fields | string[] | no | Fields to return |
ids | string[] | no | Record ids from a previous result |
search | string | no | Name, code or phone |
branch | string | no | Branch name or id; empty = all visible branches |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_classbookings_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"op":"list","limit":10}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_classbookings_query",
"arguments": {
"args": {
"op": "list",
"limit": 10
}
}
}Class schedule
ReadScope:gym:readgym_classes_searchGroup class schedule over a day range: class name, time, trainer, booked seats.
| Parameter | Type | Required | Description |
|---|---|---|---|
fromDays | integer | no | Range start, days offset from today (0 = today) |
toDays | integer | no | Range end, same convention as fromDays (default 0) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_classes_search/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"fromDays":0,"toDays":7}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_classes_search",
"arguments": {
"args": {
"fromDays": 0,
"toDays": 7
}
}
}Staff commissions
ReadScope:gym:readgym_commissions_queryStaff commission slips (PT, sales) by period and payout status.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
branch | string | no | Branch name or id; empty = all visible branches |
staffId | string (uuid) | no | Staff id |
staffType | string | no | Staff type (PT, sales…) |
status | string | no | Status |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_commissions_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","staffType":"PT"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_commissions_query",
"arguments": {
"args": {
"period": "month",
"staffType": "PT"
}
}
}Export contracts
ExportScope:gym:exportgym_contracts_exportExport contracts to Excel by filter or id list; returns an export proposal and confirmation link.
| Parameter | Type | Required | Description |
|---|---|---|---|
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
ids | string[] | no | Record ids from a previous result |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_contracts_export",
"arguments": {
"args": {
"ids": [
"0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b"
]
}
}
}Membership contracts
ReadScope:gym:readgym_contracts_queryQuery member contracts: unpaid, frozen, expiring, total receivable; count, list or group.
| Parameter | Type | Required | Description |
|---|---|---|---|
op | string | no | count = count only, list = list (default), group = count by groupBy |
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
groupBy | string | no | Group by |
sort | string | no | Sort "<key> asc|desc" |
limit | integer | no | Max rows |
page | integer | no | Page, starting at 1 |
fields | string[] | no | Fields to return |
ids | string[] | no | Record ids from a previous result |
search | string | no | Name, code or phone |
expiringWithinDays | integer | no | Expiring from today to N days ahead |
sumFields | string[] | no | Totals to compute over the whole set, returned in totals |
branch | string | no | Branch name or id; empty = all visible branches |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_contracts_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"op":"group","groupBy":"status"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_contracts_query",
"arguments": {
"args": {
"op": "group",
"groupBy": "status"
}
}
}Create a membership package
Write proposalScope:gym:writegym_create_packageCreate a gym package with a name, type, term or session count, and price. Does not sell it or take payment. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Package name |
packageType | string | no | STANDARD, PT or CLASS |
unit | string | no | TIME_BASED or SESSION_BASED |
durationMonths | integer | no | Months |
durationDays | integer | no | Days |
sessionCount | integer | no | Sessions |
price | number | yes | Price |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_create_package",
"arguments": {
"args": {
"name": "Gói 12 tháng",
"packageType": "STANDARD",
"unit": "TIME_BASED",
"durationMonths": 12,
"price": 6000000
}
}
}Check-in device status
ReadScope:gym:readgym_devices_statusCheck-in devices and agents per branch: online or offline, last contact.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_devices_status/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_devices_status",
"arguments": {
"args": {}
}
}Explain an error code
ReadScope:gym:readgym_errors_explainExplain a gym error code or message: meaning, cause, what to do next.
| Parameter | Type | Required | Description |
|---|---|---|---|
error | string | yes | Error code or message to explain |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_errors_explain/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"error":"DeniedExpired"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_errors_explain",
"arguments": {
"args": {
"error": "DeniedExpired"
}
}
}Freeze a contract
Write proposalScope:gym:writegym_freeze_contractFreeze a gym contract from today (or a future date) until the resume date, without a freeze fee. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
contractCode | string | no | Contract code |
memberCode | string | no | Member code (e.g. HV001) |
resumeDate | string | yes | Resume date (yyyy-MM-dd) |
freezeDate | string | no | Freeze start date (yyyy-MM-dd, default today) |
reason | string | no | Reason |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_freeze_contract",
"arguments": {
"args": {
"contractCode": "HD00123",
"resumeDate": "2026-11-30",
"reason": "Đi công tác"
}
}
}Locker status
ReadScope:gym:readgym_lockers_reportCurrent locker status: total, rented, free, by locker type.
No parameters.
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_lockers_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_lockers_report",
"arguments": {
"args": {}
}
}Loyalty points
ReadScope:gym:readgym_loyalty_reportLoyalty overview: members with cards, total outstanding points and top members.
| Parameter | Type | Required | Description |
|---|---|---|---|
topCount | integer | no | Top members by points (default 10, max 20) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_loyalty_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"topCount":10}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_loyalty_report",
"arguments": {
"args": {
"topCount": 10
}
}
}Manual check-in
Write proposalScope:gym:writegym_manual_checkinManually check in a member. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
member_query | string | no | Member code, phone or full name |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_manual_checkin",
"arguments": {
"args": {
"member_query": "HV001"
}
}
}Member change log
ReadScope:gym:readgym_member_changesWho changed what and when on one member and their contracts and receipts.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | no | Member code or contract code |
member | string | no | Member profile id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_member_changes/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"code":"HV001"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_member_changes",
"arguments": {
"args": {
"code": "HV001"
}
}
}Member history
ReadScope:gym:readgym_member_historyContract and payment history of one member by code.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | no | Member code or contract code |
member | string | no | Member profile id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_member_history/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"code":"HV001"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_member_history",
"arguments": {
"args": {
"code": "HV001"
}
}
}Export members
ExportScope:gym:exportgym_members_exportExport members to Excel by filter; returns an export proposal and confirmation link.
| Parameter | Type | Required | Description |
|---|---|---|---|
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_members_export",
"arguments": {
"args": {
"match": "all",
"filter": [
{
"field": "status",
"op": "eq",
"value": "ACTIVE"
}
]
}
}
}Members
ReadScope:gym:readgym_members_queryQuery members: list, count, expiring, new, birthdays, inactive; count, list or group.
| Parameter | Type | Required | Description |
|---|---|---|---|
op | string | no | count = count only, list = list (default), group = count by groupBy |
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
groupBy | string | no | Group by |
sort | string | no | Sort "<key> asc|desc" |
limit | integer | no | Max rows |
page | integer | no | Page, starting at 1 |
fields | string[] | no | Fields to return |
ids | string[] | no | Record ids from a previous result |
search | string | no | Name, code or phone |
memberStatus | string | no | Card status: ACTIVE, EXPIRING_SOON, FROZEN… |
expiringInDays | integer | no | Expiring within N days (0 = today) |
cardExpiresWithinDays | integer | no | Card expires within N days |
birthdayWithinDays | integer | no | Birthday within N days (0 = today, max 31) |
noCheckinDays | integer | no | No check-in for N days |
neverCheckedIn | boolean | no | true = never checked in |
hasActivePackage | string | no | Has an active package of this type |
phones | string[] | no | Phone numbers |
branch | string | no | Branch name or id; empty = all visible branches |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_members_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"op":"group","groupBy":"status"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_members_query",
"arguments": {
"args": {
"op": "group",
"groupBy": "status"
}
}
}Print a contract
Write proposalScope:gym:writegym_print_contractPrepare the print of one gym contract by contract code or member code. Creates a proposal; it renders only after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
contractCode | string | no | Contract code |
memberCode | string | no | Member code |
templateName | string | no | Print template name |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_print_contract",
"arguments": {
"args": {
"contractCode": "HD00123"
}
}
}Print a ticket receipt
Write proposalScope:gym:writegym_print_ticketPrepare the receipt of one gym ticket by phone, member code, or QR. Creates a proposal; it renders only after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticketQuery | string | yes | Phone, member code, or QR |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_print_ticket",
"arguments": {
"args": {
"ticketQuery": "0901234567"
}
}
}PT sessions
ReadScope:gym:readgym_ptsessions_queryQuery PT sessions: today, completed, cancelled, no-show, by trainer; count, list or group.
| Parameter | Type | Required | Description |
|---|---|---|---|
op | string | no | count = count only, list = list (default), group = count by groupBy |
filter | object[] | no | Filters [{field, op, value}]; dates as yyyy-MM-dd or periods (today, this_week…) |
match | string | no | all = every condition (default), any = any condition |
groupBy | string | no | Group by |
sort | string | no | Sort "<key> asc|desc" |
limit | integer | no | Max rows |
page | integer | no | Page, starting at 1 |
fields | string[] | no | Fields to return |
ids | string[] | no | Record ids from a previous result |
search | string | no | Name, code or phone |
branch | string | no | Branch name or id; empty = all visible branches |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_ptsessions_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"op":"group","groupBy":"pt_name"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_ptsessions_query",
"arguments": {
"args": {
"op": "group",
"groupBy": "pt_name"
}
}
}Register a new member
Write proposalScope:gym:writegym_register_memberRegister a new member profile at the current branch (no package, no payment). Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
fullName | string | yes | Full name |
phone | string | no | Phone (0… or +84…) |
email | string | no | |
dateOfBirth | string | no | Date of birth (yyyy-MM-dd) |
notes | string | no | Notes |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_register_member",
"arguments": {
"args": {
"fullName": "Nguyễn Văn An",
"phone": "0901234567",
"dateOfBirth": "1995-05-20"
}
}
}Access control report
ReadScope:gym:readgym_reports_access_queryGym report — Access control: overview, traffic by zone, denied entries.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
decision | string | no | Denial reason (e.g. DeniedExpired, DeniedNoSubscription) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_access_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_access_query",
"arguments": {
"args": {
"period": "month"
}
}
}Revenue allocation report
ReadScope:gym:readgym_reports_allocation_queryGym report — Contract value allocation by year.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
year | integer | no | Year |
reportSubType | string | no | Report subtype |
allocationType | string | no | Allocation type |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_allocation_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"year":2026}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_allocation_query",
"arguments": {
"args": {
"year": 2026
}
}
}Branch summary report
ReadScope:gym:readgym_reports_branch_queryGym report — Compare branches across the 12 months of a year.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
year | integer | no | Year |
reportType | string | no | Report type |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_branch_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"year":2026}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_branch_query",
"arguments": {
"args": {
"year": 2026
}
}
}Business activity report
ReadScope:gym:readgym_reports_business_queryGym report — Business activity by period: receipts and payments, new contracts, new members.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
paymentMethod | string | no | Payment method |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_business_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_business_query",
"arguments": {
"args": {
"period": "month"
}
}
}Check-ins by period report
ReadScope:gym:readgym_reports_checkin_by_period_queryGym report — Check-ins by month, quarter or year.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_checkin_by_period_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"from":"2026-01-01","to":"2026-10-27","groupBy":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_checkin_by_period_query",
"arguments": {
"args": {
"from": "2026-01-01",
"to": "2026-10-27",
"groupBy": "month"
}
}
}Check-in detail report
ReadScope:gym:readgym_reports_checkin_detail_queryGym report — Detailed check-in list for members or PT.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
subType | string | no | Subtype (e.g. DETAIL, SUMMARY, MEMBER, PT) |
serviceType | string | no | Service type |
signStatus | string | no | Signing status |
search | string | no | Name, code or phone |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_checkin_detail_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"week","subType":"MEMBER"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_checkin_detail_query",
"arguments": {
"args": {
"period": "week",
"subType": "MEMBER"
}
}
}Member churn report
ReadScope:gym:readgym_reports_churn_queryGym report — Members whose package ended in the period without renewal.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
packageType | string | no | Package type |
minDaysStopped | integer | no | Stopped for at least N days |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_churn_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","packageType":"STANDARD"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_churn_query",
"arguments": {
"args": {
"period": "month",
"packageType": "STANDARD"
}
}
}Churn risk report
ReadScope:gym:readgym_reports_churn_risk_queryGym report — Members at risk of churn, by level.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
level | string | no | Risk level (HIGH, MEDIUM…) |
search | string | no | Name, code or phone |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_churn_risk_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"level":"HIGH"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_churn_risk_query",
"arguments": {
"args": {
"level": "HIGH"
}
}
}Classes and PT report
ReadScope:gym:readgym_reports_class_pt_queryGym report — Class fill rate, booking trend and class/PT trainer performance.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_class_pt_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_class_pt_query",
"arguments": {
"args": {
"period": "month"
}
}
}Customer analytics report
ReadScope:gym:readgym_reports_customer_analytics_queryGym report — Customer analytics: contract mix by package, type and source.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_customer_analytics_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_customer_analytics_query",
"arguments": {
"args": {
"period": "month"
}
}
}Receivables report
ReadScope:gym:readgym_reports_debt_queryGym report — Contract receivables by period.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
staffId | string (uuid) | no | Staff id |
serviceType | string | no | Service type |
search | string | no | Name, code or phone |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_debt_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_debt_query",
"arguments": {
"args": {
"period": "month"
}
}
}Export a gym report
ExportScope:gym:exportgym_reports_exportExport a gym report to Excel by its menu name; returns an export proposal and link, or the export job status.
| Parameter | Type | Required | Description |
|---|---|---|---|
report | string | no | Report name as on the menu |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
branch | string | no | Branch name or id; empty = all visible branches |
year | integer | no | Year |
month | string | no | Month (yyyy-MM) |
check | boolean | no | true = check only, no export proposal yet |
jobId | string | no | Export job id to check status |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_export",
"arguments": {
"args": {
"report": "Doanh thu",
"period": "month"
}
}
}Cash book report
ReadScope:gym:readgym_reports_fund_queryGym report — Cash book receipts and payments by period.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
transactionType | string | no | INCOME = receipts, EXPENSE = payments |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_fund_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","transactionType":"INCOME"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_fund_query",
"arguments": {
"args": {
"period": "month",
"transactionType": "INCOME"
}
}
}Training outcomes report
ReadScope:gym:readgym_reports_goal_outcomes_queryGym report — Members' training outcomes by grade and period.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_goal_outcomes_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"from":"2026-01-01","to":"2026-10-27","groupBy":"quarter"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_goal_outcomes_query",
"arguments": {
"args": {
"from": "2026-01-01",
"to": "2026-10-27",
"groupBy": "quarter"
}
}
}Goal progress report
ReadScope:gym:readgym_reports_goal_progress_queryGym report — Progress of members' open goals.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
status | string | no | Status |
source | string | no | Source |
search | string | no | Name, code or phone |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_goal_progress_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"status":"BEHIND"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_goal_progress_query",
"arguments": {
"args": {
"status": "BEHIND"
}
}
}Staff KPI report
ReadScope:gym:readgym_reports_kpi_queryGym report — Staff KPI by month.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
month | string | no | Month (yyyy-MM) |
staffId | string (uuid) | no | Staff id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_kpi_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"month":"2026-10"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_kpi_query",
"arguments": {
"args": {
"month": "2026-10"
}
}
}Lead-to-contract report
ReadScope:gym:readgym_reports_lead_funnel_queryGym report — Lead sources converted into gym contracts by period.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_lead_funnel_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_lead_funnel_query",
"arguments": {
"args": {
"period": "month"
}
}
}Loyalty program report
ReadScope:gym:readgym_reports_loyalty_queryGym report — Loyalty program analytics: tiers and points.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_loyalty_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"limit":20}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_loyalty_query",
"arguments": {
"args": {
"limit": 20
}
}
}Packages and check-ins report
ReadScope:gym:readgym_reports_members_queryGym report — Packages and check-ins: new, active, expiring soon, long inactive members.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
expireInDays | integer | no | Package expiring within N days (default 7) |
inactiveDays | integer | no | Inactive for N days |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_members_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","expireInDays":7}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_members_query",
"arguments": {
"args": {
"period": "month",
"expireInDays": 7
}
}
}Contract usage report
ReadScope:gym:readgym_reports_progress_queryGym report — Package usage progress per contract: used and remaining.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
activationStatus | string | no | Contract activation status |
paymentStatus | string | no | Payment status |
ptId | string (uuid) | no | PT trainer id |
staffId | string (uuid) | no | Staff id |
serviceType | string | no | Service type |
serviceCode | string | no | Service code |
search | string | no | Name, code or phone |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_progress_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_progress_query",
"arguments": {
"args": {
"period": "month"
}
}
}PT commission report
ReadScope:gym:readgym_reports_pt_commission_queryGym report — PT commission detail by service.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
ptId | string (uuid) | no | PT trainer id |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_pt_commission_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_pt_commission_query",
"arguments": {
"args": {
"period": "month"
}
}
}PT training report
ReadScope:gym:readgym_reports_pt_training_queryGym report — PT sessions taught and allocated value by trainer.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
ptId | string (uuid) | no | PT trainer id |
search | string | no | Name, code or phone |
serviceCode | string | no | Service code |
packageType | string | no | Package type |
sessionForm | string | no | Session format |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_pt_training_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_pt_training_query",
"arguments": {
"args": {
"period": "month"
}
}
}Registrations by period report
ReadScope:gym:readgym_reports_registrations_queryGym report — New registrations by month, quarter or year.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_registrations_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"from":"2026-01-01","to":"2026-10-27","groupBy":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_registrations_query",
"arguments": {
"args": {
"from": "2026-01-01",
"to": "2026-10-27",
"groupBy": "month"
}
}
}Remaining contract value report
ReadScope:gym:readgym_reports_remaining_queryGym report — Unused contract value as of a date.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
asOfDate | string (date) | no | As-of date (yyyy-MM-dd) |
contractType | string | no | Contract type |
activationStatus | string | no | Contract activation status |
staffId | string (uuid) | no | Staff id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_remaining_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"asOfDate":"2026-10-27"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_remaining_query",
"arguments": {
"args": {
"asOfDate": "2026-10-27"
}
}
}Lockers and rentals report
ReadScope:gym:readgym_reports_rental_queryGym report — Locker, towel and equipment rentals by period and locker occupancy.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_rental_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_rental_query",
"arguments": {
"args": {
"period": "month"
}
}
}Revenue breakdown report
ReadScope:gym:readgym_reports_revenue_breakdown_queryGym report — Revenue breakdown by category per day, week or month.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
includeServiceBreakdown | boolean | no | true = include per-service breakdown |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_revenue_breakdown_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","groupBy":"week"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_revenue_breakdown_query",
"arguments": {
"args": {
"period": "month",
"groupBy": "week"
}
}
}Revenue by service report
ReadScope:gym:readgym_reports_revenue_by_service_queryGym report — Revenue allocated by service line.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_revenue_by_service_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","groupBy":"service"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_revenue_by_service_query",
"arguments": {
"args": {
"period": "month",
"groupBy": "service"
}
}
}Service frequency report
ReadScope:gym:readgym_reports_service_frequency_queryGym report — Usage count and amount by service line (PT, EMS, Yoga…).
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
groupBy | string | no | Group by |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_service_frequency_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","groupBy":"service"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_service_frequency_query",
"arguments": {
"args": {
"period": "month",
"groupBy": "service"
}
}
}Single-visit tickets report
ReadScope:gym:readgym_reports_tickets_queryGym report — Single-visit ticket revenue.
| Parameter | Type | Required | Description |
|---|---|---|---|
branch | string | no | Branch name or id; empty = all visible branches |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
subType | string | no | Subtype (e.g. DETAIL, SUMMARY, MEMBER, PT) |
search | string | no | Name, code or phone |
ticketTypeId | string (uuid) | no | Ticket type id |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_reports_tickets_query/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_reports_tickets_query",
"arguments": {
"args": {
"period": "month"
}
}
}Renewal report
ReadScope:gym:readgym_retention_reportRenewal report: due contracts renewed or not, who needs follow-up.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
branch | string | no | Branch name or id; empty = all visible branches |
staffId | string (uuid) | no | Staff id |
packageTypes | string[] | no | Package types |
windowDays | integer | no | Window around expiry date (days) |
page | integer | no | Page, starting at 1 |
limit | integer | no | Max rows |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_retention_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_retention_report",
"arguments": {
"args": {
"period": "month"
}
}
}Collected revenue
ReadScope:gym:readgym_revenue_reportNet cash revenue (after refunds) by period and branch, with prior-period comparison.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
branch | string | no | Branch name or id; empty = all visible branches |
comparePrevious | boolean | no | true = compare with previous period |
groupBy | string | no | Group by |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_revenue_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month","comparePrevious":true}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_revenue_report",
"arguments": {
"args": {
"period": "month",
"comparePrevious": true
}
}
}Sales report
ReadScope:gym:readgym_sales_reportSales by salesperson and package, reconciled with collections.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | no | Period: today, week, month, last_month… |
from | string (date) | no | From date (yyyy-MM-dd) |
to | string (date) | no | To date (yyyy-MM-dd) |
branch | string | no | Branch name or id; empty = all visible branches |
staffId | string (uuid) | no | Staff id |
serviceCode | string | no | Service code |
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_sales_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"period":"month"}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_sales_report",
"arguments": {
"args": {
"period": "month"
}
}
}Gym overview
ReadScope:gym:readgym_summary_reportGym overview: total members, active, contracts expiring in 7 days, revenue.
No parameters.
Or call over REST with an API key
curl -X POST https://api.nextx.vn/api/v1/ai/tools/gym/gym_summary_report/read \
-H "X-Api-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{}'MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_summary_report",
"arguments": {
"args": {}
}
}Unfreeze a contract
Write proposalScope:gym:writegym_unfreeze_contractEnd a contract freeze early so the member resumes today. Creates a proposal; it only runs after the user taps Confirm in the app.
| Parameter | Type | Required | Description |
|---|---|---|---|
contractCode | string | no | Contract code |
memberCode | string | no | Member code (e.g. HV001) |
MCP call example (for AI assistants)
AI assistants send this call themselves when you ask in plain words; you only need it when debugging an MCP connection.
{
"name": "gym_unfreeze_contract",
"arguments": {
"args": {
"contractCode": "HD00123"
}
}
}