MCP tools reference
Trainerize MCP tools
14 tools for Trainerize on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your Trainerize trainer, admin or owner account on the web
- Integration page
- Trainerize
| Endpoint | Access | Description |
|---|---|---|
| trainerize_list_clients | read | Clients with client type, trainer, tags and last activity. |
| trainerize_get_client | read | Client profile: contact, client type, trainer, tags, goals, and main and add-on programs. |
| trainerize_get_body_stats | read | Body weight, body fat, body measurements and caliper entries for a date range. |
| trainerize_list_check_ins | read | Check-in forms a client submitted, with each question and answer. |
| trainerize_list_conversations | read | Your message conversations with clients and groups, newest first, with unread count. |
| trainerize_get_conversation | read | Messages in one conversation, with sender, time and attachment names. |
| trainerize_list_master_programs | read | Master programs in your library, with program tags and subscriber count. |
| trainerize_list_appointments | read | Appointments on the schedule for a date range, with type, trainer and client. |
| trainerize_send_message | write | Send a message to a client as you in the Trainerize messenger. |
| trainerize_subscribe_to_program | write | Subscribe one or more clients to a master program from a start date. |
| trainerize_log_body_stats | write | Enter body stats for a client on a date, in the client's units. |
| trainerize_schedule_appointment | write | Book an appointment with a client, optionally weekly or monthly. |
| trainerize_add_client_tags | write | Add custom client tags to one or more clients. |
| trainerize_set_client_status | write | Deactivate a client (they lose app access, history is kept) or reactivate them. |
List clients
readMCP tool trainerize_list_clients
Lists the clients you can see, in the order Trainerize shows them. Deactivated clients are left out unless you ask for them with client_type. Filter by tag to get a group, or search by name or email. Pages hold up to 200 clients; pass next_cursor back as cursor for the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| client_type | enum | full_access, offline, basic, prospect, pending or deactivated. Default: all except deactivated. |
| tag | string | Only clients with this custom or auto client tag. |
| search | string | Match on name or email. |
| limit | integer | 1 to 200. Default: 50. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_list_clients",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"clients": [
{
"client_id": "4821937",
"name": "Alex Rivera",
"email": "alex@example.com",
"client_type": "full_access",
"trainer": "yourname",
"tags": [
"Challenge"
],
"last_active": "2026-10-08T17:40:00Z"
},
{
"client_id": "4821944",
"name": "Sam Carter",
"email": "sam@example.com",
"client_type": "full_access",
"trainer": "yourname",
"tags": [
"Challenge",
"Online"
],
"last_active": "2026-10-09T06:12:00Z"
}
],
"next_cursor": null
},
"isError": false
} Get client
readMCP tool trainerize_get_client
Returns one client profile with contact details, client type, trainer, tags, goals and the main and add-on programs the client is on. Use it before a message or a program change to see where the client stands.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_get_client",
"arguments": {
"client_id": "client_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4821937",
"name": "Alex Rivera",
"email": "alex@example.com",
"client_type": "full_access",
"trainer": "yourname",
"tags": [
"Challenge"
],
"goals": [
"Lose 5 kg",
"Run 5 km"
],
"main_program": {
"program_id": "552012",
"name": "4-week Base"
},
"add_on_programs": []
},
"isError": false
} Get body stats
readMCP tool trainerize_get_body_stats
Returns the entries a client logged in the range, oldest first, grouped by date. Default range is the last 90 days.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| from | date | Start date. Default: 90 days ago. |
| to | date | End date. Default: today. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_get_body_stats",
"arguments": {
"client_id": "4821937",
"from": "2026-08-17",
"to": "2026-10-12"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4821937",
"entries": [
{
"date": "2026-09-12",
"body_weight": 84.1,
"waist": 90
},
{
"date": "2026-09-26",
"body_weight": 83.2,
"waist": 89
}
]
},
"isError": false
} List check-ins
readMCP tool trainerize_list_check_ins
Lists submitted check-in forms, newest first, each with every question and the answer. Leave client_id empty to read all clients. Use since to read only what is new since your last run.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id | string | One client. Default: all clients. |
| since | date | Only check-ins submitted on or after this date. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_list_check_ins",
"arguments": {
"since": "2026-10-05"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"check_ins": [
{
"check_in_id": "7710342",
"client_id": "4821937",
"client_name": "Alex Rivera",
"submitted_at": "2026-10-06T08:15:00Z",
"answers": [
{
"question": "How is your energy this week?",
"answer": "2 out of 5"
},
{
"question": "Anything getting in the way?",
"answer": "Two late shifts, skipped Thursday."
}
]
}
]
},
"isError": false
} List conversations
readMCP tool trainerize_list_conversations
Lists your conversations in the Trainerize messenger, newest first, with the other person or group, unread count and a preview of the last message. Set unread_only to see only what needs an answer.
Parameters
| Name | Type | Description |
|---|---|---|
| unread_only | boolean | Only conversations with unread messages. |
| limit | integer | 1 to 100. Default: 30. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_list_conversations",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"conversations": [
{
"conversation_id": "3390127",
"with": {
"client_id": "4821937",
"name": "Alex Rivera"
},
"unread": 1,
"last_message": "Can I swap lunges for something easier on my knee?",
"updated_at": "2026-10-10T07:02:00Z"
}
]
},
"isError": false
} Get conversation
readMCP tool trainerize_get_conversation
Returns the most recent messages of one conversation, oldest first, so your agent reads the thread in order. Attachments are listed by file name only.
Parameters
| Name | Type | Description |
|---|---|---|
| conversation_id required | string | Conversation ID from list_conversations. |
| limit | integer | Most recent messages, 1 to 200. Default: 50. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_get_conversation",
"arguments": {
"conversation_id": "3390127",
"limit": 30
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"conversation_id": "3390127",
"messages": [
{
"from": "Alex Rivera",
"body": "Can I swap lunges for something easier on my knee?",
"sent_at": "2026-10-10T07:02:00Z",
"attachments": []
}
]
},
"isError": false
} List master programs
readMCP tool trainerize_list_master_programs
Lists the master programs in your library, with tags and how many clients are subscribed. Use the program_id with subscribe_to_program.
Parameters
| Name | Type | Description |
|---|---|---|
| search | string | Match on program name. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_list_master_programs",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"programs": [
{
"program_id": "552031",
"name": "6-week Shred",
"tags": [
"fat loss"
],
"subscribers": 14
},
{
"program_id": "552012",
"name": "4-week Base",
"tags": [
"beginner"
],
"subscribers": 31
}
]
},
"isError": false
} List appointments
readMCP tool trainerize_list_appointments
Lists appointments in the range, earliest first, with type, trainer and client. Admins and managers can read another trainer's schedule with trainer_id; other roles see their own.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | Start date. |
| to required | date | End date. |
| trainer_id | string | Admins and managers: another trainer. Default: you. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_list_appointments",
"arguments": {
"from": "2026-10-01",
"to": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointments": [
{
"appointment_id": "90311102",
"client_id": "4821944",
"appointment_type": "1-on-1 Appointment",
"start": "2026-10-13T08:00:00-04:00",
"end": "2026-10-13T09:00:00-04:00",
"trainer": "yourname"
}
]
},
"isError": false
} MCP tool trainerize_send_message
Sends a message to one client in the Trainerize messenger under your name. The client sees it in the app. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| body required | string | Message text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_send_message",
"arguments": {
"client_id": "client_8c41d2",
"body": "body"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"conversation_id": "3390127",
"message_id": "88120045",
"status": "sent",
"sent_at": "2026-10-10T09:05:00-04:00"
},
"isError": false
} MCP tool trainerize_subscribe_to_program
Subscribes the clients to a master program as their main program or as an add-on, starting on the date you give. The program appears in each client's app. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| program_id required | string | Program ID from list_master_programs. |
| client_ids required | string[] | Clients to subscribe. |
| start_date required | date | First day of the program. |
| program_type | enum | main or add_on. Default: main. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_subscribe_to_program",
"arguments": {
"program_id": "552047",
"client_ids": [
"4821937",
"4821944"
],
"start_date": "2026-10-19",
"program_type": "main"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"program_id": "552031",
"program_type": "main",
"start_date": "2026-10-19",
"subscribed": [
{
"client_id": "4821937",
"status": "subscribed"
},
{
"client_id": "4821944",
"status": "subscribed"
}
]
},
"isError": false
} MCP tool trainerize_log_body_stats
Enters body stats for one client on one date, in the client's units. The entry shows in the client's progress. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| date required | date | Day of the measurement. |
| stats required | object | Any of body_weight, body_fat_percent, waist, hips, chest, neck and other body measurements. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_log_body_stats",
"arguments": {
"client_id": "client_8c41d2",
"date": "2026-10-01",
"stats": "stats"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4821937",
"date": "2026-10-10",
"status": "logged",
"stats": {
"body_weight": 82.4,
"waist": 88
}
},
"isError": false
} MCP tool trainerize_schedule_appointment
Books an appointment of the type you name, with the client, at the start time you give. A weekly or monthly repeat creates one appointment per date up to repeat_until. Notes are visible to the client. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| appointment_type required | string | Appointment type name, e.g. 1-on-1 Appointment. |
| start required | datetime | ISO 8601 with time zone. |
| repeat | enum | none, weekly or monthly. Default: none. |
| repeat_until | date | Last date of a repeating appointment. |
| notes | string | Appointment notes. The client can see them. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_schedule_appointment",
"arguments": {
"client_id": "4821937",
"appointment_type": "1-on-1 Appointment",
"start": "2026-10-13T07:00:00-04:00",
"repeat": "weekly",
"repeat_until": "2026-11-10"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"appointment_id": "90311284",
"client_id": "4821937",
"appointment_type": "1-on-1 Appointment",
"start": "2026-10-13T07:00:00-04:00",
"end": "2026-10-13T08:00:00-04:00",
"repeat": "weekly",
"occurrences": 5,
"trainer": "yourname"
},
"isError": false
} MCP tool trainerize_add_client_tags
Adds existing custom client tags to the clients. Tags group clients for list_clients and for your own filters in Trainerize. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_ids required | string[] | Clients to tag. |
| tags required | string[] | Existing custom client tag names. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_add_client_tags",
"arguments": {
"client_ids": [
"client ids"
],
"tags": [
"tags"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"tags": [
"Challenge"
],
"tagged": [
"4821937",
"4821944"
],
"status": "tagged"
},
"isError": false
} MCP tool trainerize_set_client_status
Deactivates a client, who then loses access to the app while the history is kept, or reactivates a deactivated one. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| status required | enum | deactivated or active. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trainerize_set_client_status",
"arguments": {
"client_id": "client_8c41d2",
"status": "deactivated"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4821944",
"status": "deactivated"
},
"isError": false
}