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
Trainerize Endpoints
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.

MCP 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

Parameters: list_clients
NameTypeDescription
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

read

MCP 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

Parameters: get_client
NameTypeDescription
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
}

MCP 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

Parameters: get_body_stats
NameTypeDescription
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
}

MCP 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

Parameters: list_check_ins
NameTypeDescription
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
}

MCP 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

Parameters: list_conversations
NameTypeDescription
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
}

MCP 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

Parameters: get_conversation
NameTypeDescription
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
}

MCP 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

Parameters: list_master_programs
NameTypeDescription
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
}

MCP 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

Parameters: list_appointments
NameTypeDescription
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
}

Send message

write Confirm

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

Parameters: send_message
NameTypeDescription
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
}

Subscribe to program

write Confirm

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

Parameters: subscribe_to_program
NameTypeDescription
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
}

Log body stats

write Confirm

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

Parameters: log_body_stats
NameTypeDescription
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
}

Schedule appointment

write Confirm

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

Parameters: schedule_appointment
NameTypeDescription
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
}

Add client tags

write Confirm

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

Parameters: add_client_tags
NameTypeDescription
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
}

Set client status

write Confirm

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

Parameters: set_client_status
NameTypeDescription
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
}