Trainerize MCP Server

Clients, programs, check-ins and messages for your Trainerize business.

Hosted MCP Server

npx add-mcp 'https://cotlet.dev/mcp/v1/trainerize'

Installs into Claude Code, Codex, Cursor and more

Documentation

Cotlet · Integrations · How it works · Security · For developers · For automation agencies · Blog · API docs · Help center · Changelog · Contact · Pricing · Sign up

Trainerize API and MCP server

Trainerize has an API, but only on Studio and Enterprise plans or with the paid FitMetrics add-on (checked 10 Oct 2026). Grow and Pro trainers get Zapier, not the API, and there is no public API reference.

Clients, programs, check-ins and messages for your Trainerize business. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.

MCP setup REST API guide

ABC Trainerize is coaching software for personal trainers and studios: client programs, nutrition, habits, check-ins, messaging and appointments in a branded client app.

What is the Trainerize API?

Cotlet's Trainerize API exposes 14 endpoints for your own Trainerize account: list clients, get client, get body stats, list check-ins, list conversations, get conversation, list master programs, list appointments, send message, subscribe to program, log body stats, schedule appointment, add client tags and set client status. The list_clients endpoint returns clients with client type, trainer, tags and last activity. Each endpoint takes simple JSON inputs like client_id, limit or search and works both as an operation of the trainerize_read or trainerize_write MCP tool for agents and as a REST call for scripts.

  • Category: Health & fitness
  • Endpoints: 14 (8 read, 6 write)
  • Updated: 2026-11-10

Trainerize has an API, but only on Studio and Enterprise plans or with the paid FitMetrics add-on (checked 10 Oct 2026). Cotlet is a hosted MCP server and REST API for Trainerize with 14 endpoints (8 read, 6 write): you sign in once in your own cloud browser, your AI agent does the work.

Does Trainerize have an official API?

Trainerize has an API, but only on Studio and Enterprise plans or with the paid FitMetrics add-on (checked 10 Oct 2026). Grow and Pro trainers get Zapier, not the API, and there is no public API reference.

TaskTrainerize officialCotlet
List and filter clientsPartly: Studio or Enterprise; Zapier only finds a client by emailYes
Read client progress and body statsPartly: Studio or Enterprise, last 180 days onlyYes
Read check-in formsPartly: Studio or Enterprise onlyYes
Read and send client messagesPartly: Studio or Enterprise; Zapier can send, not readYes
Subscribe a client to a master programPartly: Studio or Enterprise, or Zapier on paid plansYes
Schedule appointmentsPartly: Studio or Enterprise only, not in ZapierYes
Log body stats for a clientPartly: Studio or Enterprise only, not in ZapierYes
Tag, deactivate or reactivate clientsPartly: Studio or Enterprise, or Zapier on paid plansYes

Sources: Using API and Webhooks With ABC Trainerize (help center), What Is FitMetrics in ABC Trainerize? (help center), Trainerize pricing, Trainerize triggers and actions on Zapier, Zapier MCP for ABC Trainerize, Automating Content Delivery with Product Automation (help center)

Quick reference

Trainerize has an API, but only on Studio and Enterprise plans or with the paid FitMetrics add-on (checked 10 Oct 2026). Grow and Pro trainers get Zapier, not the API, and there is no public API reference.
Cotlet provides a hosted MCP server and REST API for Trainerize: 14 tools (8 read, 6 write).
Access       Sign up at https://cotlet.dev/app/signup?app=trainerize and request the app in the Cotlet console. ChatGPT and Claude connect with OAuth at https://cotlet.dev/mcp/v1/connect, no API key; code editors and scripts use an API key from the console.

MCP server   https://cotlet.dev/mcp/v1
MCP tools    trainerize_read, trainerize_write, reads and writes apart; call one with {"operation": "<operation>", "arguments": {...}}
REST base    https://cotlet.dev/api/v1/trainerize, each operation at its own route, e.g. POST /api/v1/trainerize/clients/{client_id}/appointment/schedule
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one. Over MCP the input schemas come with sign-in.
Operations   list_clients, get_client, get_body_stats, list_check_ins, list_conversations, get_conversation, list_master_programs, list_appointments, send_message, subscribe_to_program, log_body_stats, schedule_appointment, add_client_tags, set_client_status
Confirm      send_message, subscribe_to_program, log_body_stats, schedule_appointment, add_client_tags, set_client_status (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/trainerize-api-mcp-server.md

How access works:
1. The user signs up at https://cotlet.dev/app/signup?app=trainerize and requests Trainerize in the Cotlet console.
2. The user signs in to Trainerize once in their Cotlet Cloud Browser (their own Chrome in the cloud, opened from the console) and enables Trainerize for agents. An agent cannot do this step.
3. ChatGPT and Claude: the user adds https://cotlet.dev/mcp/v1/connect as a connector and signs in to Cotlet (OAuth). Code editors and scripts: an API key from the console goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Trainerize server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords and never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Sign-in: the user signs in to Trainerize in their own Cloud Browser, a Chrome Cotlet runs for them in the EU; password saving is off, the profile is AES-256-GCM encrypted, and agents get Trainerize only after the user enables it. Calls are requests from that browser's IP with its cookies, each listed in the user's Background activity. Disable for agents, signing out in the browser or Reset browser cuts access. Cotlet is run by Take Group sp. z o.o. (EU VAT PL6342984273).
API key: holds no Trainerize login or cookies, only asks Cotlet to run a tool. Each key is scoped to chosen apps and tools, read only or read and write. Actions that reach other people wait for the user's approval by default, so a leaked key cannot post or message as the user. Every call is in the activity log; deleting the key ends access at once.
Terms: the user stays responsible for following Trainerize's terms; Cotlet is not affiliated with Trainerize.

What can an AI agent do in Trainerize?

Cotlet is best for personal trainers and studio owners on Trainerize Grow or Pro who want their AI agent to handle check-ins, messages, programs and bookings without running or fixing a server.

  • Follow up with clients who stopped logging body stats (runs: weekly): "Find my full-access clients whose last body stats entry is more than two weeks old and draft a short check-in message for each. Leave out anyone who told me they are sick or traveling." → list_clients, get_body_stats, list_conversations, send_message
  • Summarize weekly check-in forms (runs: weekly): "Summarize the check-in forms submitted since last Monday. Flag anyone whose energy or motivation score dropped, anyone who mentions pain, and list who has not checked in." → list_check_ins, get_client, list_clients
  • Assign the next program when a client's program expires (runs: weekly): "Find clients whose main program ends in the next week or already ended. Suggest the next master program for each based on their goal and last check-in, and subscribe them after I approve, starting the day after the old one ends." → list_clients, get_client, list_check_ins, list_master_programs, subscribe_to_program
  • Book recurring appointments (runs: weekly): "Book a 1-on-1 with Sam every Tuesday at 7:00 for the next month." → list_clients, list_appointments, schedule_appointment
  • Draft replies to client messages (runs: daily): "Go through my unread Trainerize messages from today, check each client's program before answering, and draft replies I can approve one by one. Flag anything about pain or payments for me." → list_conversations, get_conversation, get_client, send_message
  • Log body stats after a session: "Enter the weight and waist I measured for Alex at today's session." → list_clients, log_body_stats

Can Trainerize automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Trainerize connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to follow up with clients who stopped logging body stats, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

WhereHow to connectHow to schedule
Your AI agentAdd https://cotlet.dev/mcp/v1 with your API key.A scheduled agent run, for example a Claude Code routine.
n8nMCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node with the endpoint's method and URL, such as GET https://cotlet.dev/api/v1/trainerize/clients.Schedule Trigger node.
MakeHTTP module: the endpoint's method and URL with an Authorization: Bearer header, and a JSON body for POST, PUT and PATCH.Scenario schedule.
ZapierWebhooks by Zapier, Custom Request: the same method, URL, header and body.Schedule by Zapier trigger.
Your own scriptGET https://cotlet.dev/api/v1/trainerize/clients with your API key.cron or GitHub Actions.

Tools

For AI agents: Every endpoint and its schema is public. The 14 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 401 without an API key and 403 while the key has no access to Trainerize.

list_clients

Clients with client type, trainer, tags and last activity. Access: read. REST: GET /api/v1/trainerize/clients. MCP: trainerize_read → list_clients.

ParameterTypeRequiredDescription
client_typeenumnofull_access, offline, basic, prospect, pending or deactivated. Default: all except deactivated.
tagstringnoOnly clients with this custom or auto client tag.
searchstringnoMatch on name or email.
limitintegerno1 to 200. Default: 50.
cursorstringnoNext page cursor from the previous call.

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.

Example response:

{
  "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
}

get_client

Client profile: contact, client type, trainer, tags, goals, and main and add-on programs. Access: read. REST: GET /api/v1/trainerize/clients/{client_id}. MCP: trainerize_read → get_client.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.

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.

Example response:

{
  "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": []
}

get_body_stats

Body weight, body fat, body measurements and caliper entries for a date range. Access: read. REST: GET /api/v1/trainerize/clients/{client_id}/body-stats. MCP: trainerize_read → get_body_stats.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.
fromdatenoStart date. Default: 90 days ago.
todatenoEnd date. Default: today.

Returns the entries a client logged in the range, oldest first, grouped by date. Default range is the last 90 days.

Example response:

{
  "client_id": "4821937",
  "entries": [
    {
      "date": "2026-09-12",
      "body_weight": 84.1,
      "waist": 90
    },
    {
      "date": "2026-09-26",
      "body_weight": 83.2,
      "waist": 89
    }
  ]
}

list_check_ins

Check-in forms a client submitted, with each question and answer. Access: read. REST: GET /api/v1/trainerize/check-ins. MCP: trainerize_read → list_check_ins.

ParameterTypeRequiredDescription
client_idstringnoOne client. Default: all clients.
sincedatenoOnly check-ins submitted on or after this date.

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.

Example response:

{
  "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."
        }
      ]
    }
  ]
}

list_conversations

Your message conversations with clients and groups, newest first, with unread count. Access: read. REST: GET /api/v1/trainerize/conversations. MCP: trainerize_read → list_conversations.

ParameterTypeRequiredDescription
unread_onlybooleannoOnly conversations with unread messages.
limitintegerno1 to 100. Default: 30.

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.

Example response:

{
  "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"
    }
  ]
}

get_conversation

Messages in one conversation, with sender, time and attachment names. Access: read. REST: GET /api/v1/trainerize/conversations/{conversation_id}. MCP: trainerize_read → get_conversation.

ParameterTypeRequiredDescription
conversation_idstringyesConversation ID from list_conversations.
limitintegernoMost recent messages, 1 to 200. Default: 50.

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.

Example response:

{
  "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": []
    }
  ]
}

list_master_programs

Master programs in your library, with program tags and subscriber count. Access: read. REST: GET /api/v1/trainerize/master-programs. MCP: trainerize_read → list_master_programs.

ParameterTypeRequiredDescription
searchstringnoMatch on program name.

Lists the master programs in your library, with tags and how many clients are subscribed. Use the program_id with subscribe_to_program.

Example response:

{
  "programs": [
    {
      "program_id": "552031",
      "name": "6-week Shred",
      "tags": [
        "fat loss"
      ],
      "subscribers": 14
    },
    {
      "program_id": "552012",
      "name": "4-week Base",
      "tags": [
        "beginner"
      ],
      "subscribers": 31
    }
  ]
}

list_appointments

Appointments on the schedule for a date range, with type, trainer and client. Access: read. REST: GET /api/v1/trainerize/appointments. MCP: trainerize_read → list_appointments.

ParameterTypeRequiredDescription
fromdateyesStart date.
todateyesEnd date.
trainer_idstringnoAdmins and managers: another trainer. Default: you.

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.

Example response:

{
  "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"
    }
  ]
}

send_message

Send a message to a client as you in the Trainerize messenger. Access: write, asks the user first. REST: POST /api/v1/trainerize/clients/{client_id}/messages. MCP: trainerize_write → send_message.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.
bodystringyesMessage text.

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.

Example response:

{
  "conversation_id": "3390127",
  "message_id": "88120045",
  "status": "sent",
  "sent_at": "2026-10-10T09:05:00-04:00"
}

subscribe_to_program

Subscribe one or more clients to a master program from a start date. Access: write, asks the user first. REST: POST /api/v1/trainerize/programs/{program_id}/subscribe. MCP: trainerize_write → subscribe_to_program.

ParameterTypeRequiredDescription
program_idstringyesProgram ID from list_master_programs.
client_idsstring[]yesClients to subscribe.
start_datedateyesFirst day of the program.
program_typeenumnomain or add_on. Default: main.

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.

Example response:

{
  "program_id": "552031",
  "program_type": "main",
  "start_date": "2026-10-19",
  "subscribed": [
    {
      "client_id": "4821937",
      "status": "subscribed"
    },
    {
      "client_id": "4821944",
      "status": "subscribed"
    }
  ]
}

log_body_stats

Enter body stats for a client on a date, in the client's units. Access: write, asks the user first. REST: POST /api/v1/trainerize/clients/{client_id}/body-stats. MCP: trainerize_write → log_body_stats.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.
datedateyesDay of the measurement.
statsobjectyesAny of body_weight, body_fat_percent, waist, hips, chest, neck and other body measurements.

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.

Example response:

{
  "client_id": "4821937",
  "date": "2026-10-10",
  "status": "logged",
  "stats": {
    "body_weight": 82.4,
    "waist": 88
  }
}

schedule_appointment

Book an appointment with a client, optionally weekly or monthly. Access: write, asks the user first. REST: POST /api/v1/trainerize/clients/{client_id}/appointment/schedule. MCP: trainerize_write → schedule_appointment.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.
appointment_typestringyesAppointment type name, e.g. 1-on-1 Appointment.
startdatetimeyesISO 8601 with time zone.
repeatenumnonone, weekly or monthly. Default: none.
repeat_untildatenoLast date of a repeating appointment.
notesstringnoAppointment notes. The client can see them.

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.

Example response:

{
  "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"
}

add_client_tags

Add custom client tags to one or more clients. Access: write, asks the user first. REST: POST /api/v1/trainerize/client-tags. MCP: trainerize_write → add_client_tags.

ParameterTypeRequiredDescription
client_idsstring[]yesClients to tag.
tagsstring[]yesExisting custom client tag names.

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.

Example response:

{
  "tags": [
    "Challenge"
  ],
  "tagged": [
    "4821937",
    "4821944"
  ],
  "status": "tagged"
}

set_client_status

Deactivate a client (they lose app access, history is kept) or reactivate them. Access: write, asks the user first. REST: PUT /api/v1/trainerize/clients/{client_id}/status. MCP: trainerize_write → set_client_status.

ParameterTypeRequiredDescription
client_idstringyesClient ID from list_clients.
statusenumyesdeactivated or active.

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.

Example response:

{
  "client_id": "4821944",
  "status": "deactivated"
}

How do I connect Trainerize to ChatGPT, Claude, Cursor or Codex?

Connecting Trainerize takes three steps: sign up, sign in to Trainerize once in your Cloud Browser and enable it for agents, then add Cotlet to ChatGPT or Claude as a connector, with no API key, or add one MCP server or call the REST API with an API key.

Connect Trainerize to your agent.

  1. Create an account Sign up and add Trainerize in the console. ChatGPT and Claude need no API key: you sign in to Cotlet when you add the connector. Code editors and scripts take an API key from the console.

  2. Sign in to Trainerize in your Cloud Browser Open your Cloud Browser in the console: your own Chrome in the cloud. Sign in to Trainerize there yourself, the way you always do, then press Enable for agents, read only or read and write. We never save your password, and your agent keeps working even when your computer is off.

  3. Add Cotlet to ChatGPT, Claude or your agent Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

    ChatGPT:

Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth

Claude:

Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:

claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"

Cursor:

{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}

Codex:

# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
  1. Ask your agent Ask in plain words. Your agent finds the Trainerize tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.
Find my full-access clients whose last body stats entry is more than two weeks old and draft a short check-in message for each. Leave out anyone who told me they are sick or traveling.

Call Trainerize from your scripts.

  1. Export your API key Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.
export COTLET_API_KEY="cotlet_..."
  1. Call a tool Every tool is an endpoint under /api/v1/trainerize with its own method and path, listed with the endpoints above. Path parameters go in the URL; the other parameters go in the query for GET and DELETE and in a JSON body otherwise.
curl -X POST https://cotlet.dev/api/v1/trainerize/clients/4821937/appointment/schedule \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"appointment_type":"1-on-1 Appointment","start":"2026-10-13T07:00:00-04:00","repeat":"weekly","repeat_until":"2026-11-10"}'
  1. Read the result You get plain JSON back, ready for your script. A failed call costs nothing.
{
  "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"
}

How to use the Trainerize REST API

Create your Cotlet API key

Create a Cotlet API key with access to Trainerize and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Connect Trainerize in Cotlet and enable it for agents. Account access: Your Trainerize trainer, admin or owner account on the web.

Make your first Trainerize API request

REST:

curl "https://cotlet.dev/api/v1/trainerize/clients?limit=5" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read clients and apply the operation limits

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt:

{
  "status": "success",
  "app": "trainerize",
  "tool": "list_clients",
  "result": {
    "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
  }
}

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.

limit: 1 to 200. Default: 50.

cursor: Next page cursor from the previous call.

Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.

Trainerize workflows for agents and automations

ToolConnect throughExample workflow
n8nHTTP RequestBody weight, body fat, body measurements and caliper entries for a date range. Use get_body_stats in your configured private activity report.
MakeHTTP > Make a requestCheck-in forms a client submitted, with each question and answer. Use list_check_ins in your configured private activity report.
Python or Node.jsREST APIClient profile: contact, client type, trainer, tags, goals, and main and add-on programs. Use get_client in your configured private activity report.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads Trainerize; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

Why use Cotlet for Trainerize?

Built for agents

  • One MCP server for every app you connect.
  • The same tools as a REST API for scripts and cron jobs.
  • Works with ChatGPT, Claude, Claude Code, Codex and Cursor.

Your login stays yours

  • You sign in to Trainerize yourself, in your own Cloud Browser. We never save your password; the profile is encrypted with AES-256-GCM, the cipher 1Password uses.
  • A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory.
  • The model never sees a login.
  • No stored passwords, no MFA bypass.

You stay in control

  • Scope each API key: its apps, its tools, read only or read and write.
  • Anything that reaches other people waits for your OK, so a leaked key cannot post or message as you.
  • Every background request listed in your Background activity. Disable for agents in one click.

Kept working for you

  • We test every integration every 6 hours.
  • When Trainerize changes, the tool pauses until we fix it.
  • Failed calls cost nothing.

Is it safe to connect Trainerize to Cotlet?

Yes. You sign in to Trainerize yourself, in your own Cloud Browser, and we never save your password. Your agents only get Trainerize once you enable it, and every background request is listed. The browser profile is stored encrypted with AES-256-GCM, the same cipher 1Password uses for its vaults and Apple for iCloud Keychain. Independent public scanners grade cotlet.dev A+ and find it clean; click a result to rerun it yourself.

  • A+ on Qualys SSL Labs: Encryption in transit: TLS setup and certificates, on all four server addresses. Live result
  • A+ on securityheaders.com: Browser protections sent with every page, all six headers present. Live result
  • A+ on Mozilla Observatory: Mozilla's web security baseline: score 120 of 100, 12 of 12 tests passed. Live result
  • Clean on Sucuri SiteCheck: No malware, spam or defacement, and not on any of 9 blocklists, Google Safe Browsing included. Live result

How Cotlet protects your access

Common concerns

Who runs Cotlet?

Cotlet is run by Take Group, a Polish software company working since 2019. Take Group runs about 3,200 websites on its own systems and has its own DevOps team for infrastructure security. We built and used integrations like this inside the company for years before opening them as Cotlet.

Is this an official Trainerize integration?

No, Cotlet is independent of Trainerize. Trainerize's own API comes only with a paid plan. Cotlet works through your own Trainerize account, the way you use Trainerize in the browser, so you need no partner approval and no developer setup.

What about client data and GDPR?

Cotlet is run from the EU and follows the GDPR. Cloud Browsers run in Finland, a Tier 1 country in the ITU Global Cybersecurity Index 2024. Data passes through a call and is not kept after it.

Can I start with read only?

Yes. Enable the app for agents as read only, or make the API key read only, and anything that reaches other people waits for your OK unless you switch that off per tool.

Is it reliable?

Every Cotlet service is checked every 3 minutes from Europe, North America, Asia and Australia. The live results and any outage are public at status.cotlet.dev.

How do I stop?

Press Disable for agents next to Trainerize in your console: your agents lose access at once and you stay signed in. Signing out of Trainerize in the browser works too, and Reset browser deletes the whole profile.

Is there a Trainerize MCP server on GitHub?

No open-source Trainerize MCP server turned up. Zapier works on paid Trainerize plans and its MCP server can create clients, assign programs and send messages, but it cannot read messages, progress, check-ins or appointments.

ZapierCotlet
SetupConnect Trainerize in a Zapier account, then add Zapier MCP to your agentSign up, sign in to Trainerize once in your Cloud Browser, add one MCP server or API key
Reading dataFind a client by email; events arrive as triggersClients, messages, body stats, check-ins, programs and appointments
Write actionsClients, tags, groups, programs, messages and filesClients, tags, programs, messages, appointments and body stats, with your OK on each by default
When Trainerize changesZapier maintains its appOur team tests it daily and fixes it for you; failed calls are free
When the session expiresReconnect the account in ZapierYour agent gets a link to sign in again
Where it runsZapier cloud, any MCP clientHosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
PriceFree tier with limits, then a paid Zapier planFree 7-day trial, then pay-as-you-go credit packs, no subscription

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when Trainerize changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want your sign-in to stay on your own computer
  • you only need it now and then, from one MCP client

How much does the Trainerize API cost?

Free 7-day trial with 2,000 credits, no card needed. After that, the Trainerize API is pay as you go with no limit on apps: Credit packs from $29 for 5,000 credits, one-time, no subscription. A successful call uses 10 to 100 credits (10 for most tools, about $0.04 to $0.06), your Cloud Browser uses 50 credits a day while it has an app enabled for agents, however many apps that is, and an agent driving the browser itself uses 5 credits a minute. Credit packs stay valid for 12 months and stack, so unused credits carry over.

CreditsPrice, one timeCalls at 10 creditsPer 1,000 credits
5,000$29500$5.80
15,000$791,500$5.27
32,000$1493,200$4.66
60,000$2496,000$4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header. See full pricing

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Trainerize account.

  • Company details: Cotlet is run by Take Group sp. z o.o., a company registered in Poland. Its full address and registration numbers are in the Terms of service. Terms of service
  • Your sign-in: You sign in to Trainerize yourself, in your own Cloud Browser: a Chrome we run for you in the EU, one per app. We never save your password (password saving is off), the profile is stored encrypted with AES-256-GCM, and your agents get Trainerize only after you enable it. When Trainerize signs you out, your agent gives you a link to sign in again. Security
  • Revoking access: Press Disable for agents next to Trainerize, sign out of Trainerize in your Cloud Browser, or reset the browser. Every background request is listed in your Background activity. Actions that reach other people wait for your OK unless you switch that off per tool.
  • What we never do: Store passwords or bypass MFA.
  • Trainerize's terms: You use your own Trainerize account and stay responsible for following Trainerize's terms. Cotlet is independent and not affiliated with Trainerize. Terms
  • Contact: Questions about the company, security or an app: contact@cotlet.dev

Also listed on: Odel, mcpbeat

Trainerize API and MCP: questions

How do I get access?

Sign up free, open Trainerize in the console and press Activate. Then you create your API key and connect Trainerize there.

Do I need to be technical?

No. You sign in to Trainerize once in your Cloud Browser, a normal Chrome you open from the console, and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is it safe to connect Trainerize to Cotlet?

Yes. You sign in to Trainerize yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Trainerize once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

Is a hosted server safer than a local one? My Trainerize sign-in would leave my computer.

On Cotlet you sign in inside your own Cloud Browser, which only you open, and its profile is stored encrypted with AES-256-GCM in the EU. Agents get only the apps you enable, and every background request is listed. A local server keeps your Trainerize cookie in a plain file on your computer, readable by any program you run, and stops when your computer is off.

Why does Cotlet send requests instead of clicking in my browser?

To be fast, Cotlet doesn't click through Trainerize's pages. It sends the same requests your browser would, from your browser's IP with its cookies, without opening a window. Trainerize sees the same browser and IP you signed in with, and every request is listed in your Background activity.

What if someone gets my Cotlet API key?

The key holds no Trainerize login or cookies, it only asks Cotlet to run a tool. It can call only the apps and tools you gave it, and a read-only key changes nothing. Anything that reaches other people, like posts, comments or messages, waits for your OK in the dashboard by default, so a leaked key cannot post or message as you. When you switch approval off for a scheduled job, give that job its own key limited to that one tool. Every call is in your activity log, and deleting the key ends access at once.

Why a signed-in browser and not OAuth, like other integration platforms?

Trainerize offers no OAuth token you can simply grant for these tools: its official API leaves them out or needs a developer app, a plan or an approval first (see the official API section above). That is why Cotlet sets the limits itself: per key, per tool, with your approval before anything reaches other people. Cotlet is run by Take Group sp. z o.o., an EU company (VAT PL6342984273).

How do I connect Trainerize to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Trainerize once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Trainerize account through Cotlet, in their phone apps too.

What can ChatGPT do in Trainerize?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Trainerize: follow up with clients who stopped logging body stats; summarize weekly check-in forms; assign the next program when a client. You ask in plain words, and anything that reaches other people waits for your OK first.

Do I need a Studio or Enterprise plan?

No. Cotlet works in your own Trainerize account and does not use the API, which Trainerize limits to Studio and Enterprise plans or the FitMetrics add-on (checked 10 Oct 2026). Some tools depend on your role: reading another trainer's schedule needs an admin or manager.

Can my agent post or send messages in Trainerize without asking me?

No. Every call to send_message, subscribe_to_program, log_body_stats, schedule_appointment, add_client_tags or set_client_status waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals.

Can I use the Trainerize API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call its endpoints under https://cotlet.dev/api/v1/trainerize from the HTTP Request node.

Can I use the Trainerize API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.


Give your AI agents your signed-in browser.

Product: Integrations · How it works · Pricing · Security

Resources: Blog · API docs · Help center · Changelog · GitHub

Solutions: For developers · For automation agencies

Company: About · AI info: company facts · Contact

Legal: Terms of service · Privacy policy · Refund policy · Acceptable use · Cookie policy · DPA · Subprocessors

Elsewhere: Status page · Cotlet on GitHub · Cotlet on X · Cotlet on LinkedIn · Cotlet on Product Hunt · Cotlet on Crunchbase · Cotlet on SaaSHub

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. About us

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.