Health & fitness
Trainerize
Clients, programs, check-ins and messages for your Trainerize business.
14 endpoints
Fitsly publishes no public API and no MCP server (checked 14 Nov 2026). Cotlet runs a hosted Fitsly MCP server with 10 tools that ChatGPT and Claude use in your own coach account. Invites, plans and messages wait for your OK.
10 tools Read and write
Fitsly publishes no public API, developer documentation or API key on fitsly.com or in its Help Center. No Fitsly MCP server and no official ChatGPT or Claude connector was verified. Inside the app, Fitsly has its own automations and onboarding flows.
| What you need | Fitsly API | By hand | Cotlet |
|---|---|---|---|
| Ask ChatGPT or Claude to do the work | No API or MCP server | Copy and paste | Hosted MCP server |
| Progress of every client before check-ins | No public API | One profile at a time | All clients in one request |
| Programs, meal plans and habits | No public API | In the dashboard | 10 tools, writes after your OK |
| Run from n8n or a script | Nothing to call | Manual only | REST, same key |
Checked 14 Nov 2026. Sources: Fitsly · Fitsly pricing · Fitsly Help Center · Help: Add a new client · Help: The client profile · Help: The workout builder · Help: Build a phased program · Help: How Nutrition works · Fitsly habits · Fitsly messaging · Fitsly payments
Once, in a browser we host for you.
One address in its settings.
See who fell behind, then approve the follow-up.
Your agent works in your own signed-in Cloud Browser. Anything a client will see or pay waits for your OK. Who can see your session
Sign in to Fitsly in a Cloud Browser. Open app.fitsly.com/login in your Cotlet Cloud Browser and log in with your own coach account.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
Fitsly shares the address https://cotlet.dev/mcp/v1 with the other apps you enable, so a single connector reaches all of them. Enabled Fitsly after connecting? Refresh the connector to load its 10 tools.
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth 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/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: fitsly_read One tool per coach workflow in the Fitsly Help Center and feature pages. Progress and food logs only read; tools with an `action` read with `list` or `get` and ask first for everything else.
The roster, invites, and the Overview snapshot that fills in as clients log.
A new client starts as Pending until they finish signup from the invite. The invite reaches the client, so the agent shows the name and email first. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → manage_clients
REST endpointPOST https://cotlet.dev/api/v1/fitsly/clients/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`, `resend_invite`. `list` and `get` only read. |
| client string | string | Client, for `update` and `resend_invite`. |
| coaching_mode string | string | `online` (default), `in_person` or `hybrid`. |
| first_name string | string | Required for `create`, up to 35 characters. |
| last_name string | string | Required for `create`, up to 35 characters. |
| email string | string | Required for `create`: login and invitation address. |
| details object | object | Optional: date of birth, sex, height, activity level, units. |
| send_invite boolean | boolean | Email the invite on save. Defaults to true. |
| onboarding_flow string | string | An onboarding flow that assigns programs, plans, forms and habits. |
{
"action": "action"
} {
"client": "Riley Sample",
"email": "riley@example.com",
"coaching_mode": "online",
"status": "Pending",
"invite_sent": true
} The Overview fills in as the client logs: last check-in, last and next workout, today's kcals, steps and sleep, weight, body fat and program progress. A Pending client has no data yet and shows as pending. Read only.
MCP callfitsly_read → get_client_overview
REST endpointGET https://cotlet.dev/api/v1/fitsly/client-overview
| Name | Type | Description |
|---|---|---|
| client string required | string | Client name or email, as on the Clients roster. |
{
"client": "client"
} {
"client": "Jamie Example",
"status": "Active",
"last_check_in": "2026-11-10",
"last_workout": "2026-11-13",
"next_workout": "2026-11-15",
"kcals_today": 1640,
"steps_today": 8210,
"weight_kg": 74.2,
"program_progress": 62
} Library workouts and phased programs of 1 to 50 phases, 1 to 16 weeks each.
Saves to Training > Workouts as a library workout you can assign or add to a program. Nothing reaches a client until it is assigned. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → build_workout
REST endpointPOST https://cotlet.dev/api/v1/fitsly/workout/build
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`. `list` and `get` only read. |
| name string | string | Up to 100 characters, shown to the client. |
| duration_min number | number | Up to 999 minutes. Defaults to 45. |
| intensity string | string | `low`, `medium` (default), `high` or `max`. |
| focus string | string | Shown on the client's workout preview. |
| sections array | array | Sections of exercises, each with sets, rest, tempo, tracking columns and notes. Every section needs an exercise; interval sets need a time. |
{
"action": "action"
} {
"workout": "Upper body A",
"duration_min": 50,
"intensity": "medium",
"exercises": 6,
"saved": true
} Under Training > Programs > Phased programs. The editor saves each change as it is made. Subscribing clients puts the program in front of them, so that step waits for your OK. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → manage_phased_program
REST endpointPOST https://cotlet.dev/api/v1/fitsly/phased-program/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `add_phase`, `add_workout`, `subscribe_clients`. `list` and `get` only read. |
| program string | string | Program name, up to 60 characters. |
| phases number | number | For `create`: 1 to 50, default 1. |
| weeks_per_phase number | number | For `create`: 1 to 16, default 4. |
| phase string | string | Phase name, up to 50 characters. |
| workout string | string | Library workout, for `add_workout`. |
| day string | string | Weekday the workout lands on. |
| clients array | array | For `subscribe_clients`. |
{
"action": "action"
} {
"program": "12-week hypertrophy",
"phases": 3,
"weeks_per_phase": 4,
"subscribed_clients": [
"Jamie Example"
]
} Meal plans clients log against, macro targets, food logs, and habits with streaks and reminders.
A library plan is invisible to clients until assigned. Each client gets their own copy and can log food straight from it. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → manage_meal_plans
REST endpointPOST https://cotlet.dev/api/v1/fitsly/meal-plans/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `assign`. `list` and `get` only read. |
| plan string | string | Meal plan name. |
| days array | array | For `create`: days, then meals, then options of foods and recipes. |
| clients array | array | For `assign`: one or many clients. |
{
"action": "action"
} {
"plan": "High protein, 2,000 kcal",
"days": 7,
"assigned": [
"Jamie Example",
"Riley Sample"
]
} Lives on the client profile under Nutrition > Macro Targets. The client sees new targets in their app. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → set_macro_targets
REST endpointPUT https://cotlet.dev/api/v1/fitsly/macro-targets
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `update`. `list` and `get` only read. |
| client string required | string | Client name or email, as on the Clients roster. |
| targets object | object | kcals, protein, carbs and fat per day, a variance band, and dated overrides. |
{
"action": "action",
"client": "client"
} {
"client": "Jamie Example",
"kcals": 2100,
"protein_g": 150,
"carbs_g": 220,
"fat_g": 70,
"variance_pct": 5
} Clients log food in the client app by search, barcode scan or from an assigned meal plan; calories and macros add up on their own. This reads the client profile's Nutrition > Food Log. Read only.
MCP callfitsly_read → get_food_log
REST endpointGET https://cotlet.dev/api/v1/fitsly/food-log
| Name | Type | Description |
|---|---|---|
| client string required | string | Client name or email, as on the Clients roster. |
| date string | string | ISO date. Defaults to today. |
{
"client": "client"
} {
"client": "Jamie Example",
"date": "2026-11-13",
"meals": {
"Breakfast": 420,
"Lunch": 610,
"Dinner": 540,
"Snacks": 180
},
"kcals": 1750,
"protein_g": 138,
"carbs_g": 172,
"fat_g": 58
} Each client gets their own copy, so you can change it for one person. Clients see habits in Today's Tasks and get the push at the time you set. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → manage_habits
REST endpointPOST https://cotlet.dev/api/v1/fitsly/habits/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `assign`. `list` and `get` only read. |
| client string | string | For `list`: whose habits to read. |
| name string | string | Habit name, for example Daily fruit. |
| goal string | string | A measurable amount, such as 8 cups a day or 7,500 steps a day. |
| days array | array | Every day, or the weekdays you pick. |
| reminder string | string | Push reminder time, in the client's timezone. |
| clients array | array | For `create` and `assign`: one or several clients. |
{
"action": "create",
"name": "Stay hydrated",
"goal": "8 cups/day",
"days": [
"every day"
],
"reminder": "09:00",
"clients": [
"Jamie Example",
"Riley Sample"
]
} {
"client": "Jamie Example",
"habits": [
{
"habit": "Stay hydrated",
"goal": "8 cups/day",
"streak": 6,
"completion_7d": 86
},
{
"habit": "Move daily",
"goal": "7,500 steps/day",
"streak": 2,
"completion_7d": 57
}
]
} Direct, group and broadcast messages, and the Stripe packages on your storefront.
Every message pushes to the client's phone the moment it is sent, and broadcasts arrive with an announcement badge, so the agent shows recipients and text first. `list` reads the inbox with unread counts. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → send_message
REST endpointPOST https://cotlet.dev/api/v1/fitsly/messages
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `send`. `list` and `get` only read. |
| to string | string | `direct`, `group` or `broadcast`. |
| name string | string | Client or group name. |
| text string | string | The message. |
{
"action": "action"
} {
"to": "group",
"name": "Summer Shred Crew",
"sent": true
} Packages sell on your storefront through Stripe. A price change is what buyers pay, so it waits for your OK. Switching a package off stops new sales without cancelling anyone on it. By default you confirm each call; you can switch that off for this tool.
MCP callfitsly_write → manage_packages
REST endpointPOST https://cotlet.dev/api/v1/fitsly/packages/manage
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `create`, `update`, `switch_off`. `list` and `get` only read. |
| package string | string | Package name. |
| price number | number | Price in the package currency. |
| billing string | string | `one_time`, `weekly`, `monthly` or `yearly`. |
| options object | object | currency, setup fee, free trial days, minimum term, client slots, compare-at price, unlisted. |
{
"action": "action"
} {
"package": "12-Week Transformation",
"price": 249,
"currency": "AUD",
"billing": "monthly",
"trial_days": 7,
"slots_left": 20,
"subscribers": 4
} Your signed-in Fitsly browser profile, AES-256-GCM encrypted, in Finland. Never your password.
The 10 Fitsly tools. The session cookie stays in the Cloud Browser.
The clients, programs, plans and messages your coach login can open.
Your email, password and devices, your Brand kit, Stripe payouts, refunds and the white label app.
You log in again yourself, in the same Cloud Browser.
Disable Fitsly for agents, reset the browser, or sign out its session in Fitsly's Security & devices.
Cotlet never sees or stores your password: you log in to Fitsly yourself and the agent works only with that session. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
Cotlet watches the apps it serves and updates the Fitsly server when the dashboard changes, so your agent keeps working without a change on your side.
New Fitsly features become available to the agent. It still sees only what your coach login sees.
If Fitsly signs you out, one click in the Cotlet console reopens the Cloud Browser so you can log in again.
| Action | How to put it right |
|---|---|
| Client details | Update them again with manage_clients |
| Macro targets | Set the earlier values with set_macro_targets |
| Package price or trial | Edit it back with manage_packages; switch_off stops new sales |
| Invite or message | Already with the client: follow up in Fitsly messages |
All 8 write tools ask first: by default you confirm each call, and you can switch that off per tool. The 2 read tools, client overviews and food logs, run at once.
{
"name": "manage_habits",
"arguments": {
"action": "create",
"name": "Stay hydrated",
"goal": "8 cups/day",
"days": [
"every day"
],
"reminder": "09:00",
"clients": [
"Jamie Example",
"Riley Sample"
]
}
} curl -X POST https://cotlet.dev/api/v1/fitsly/habits/manage \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action":"create","name":"Stay hydrated","goal":"8 cups/day","days":["every day"],"reminder":"09:00","clients":["Jamie Example","Riley Sample"]}' {
"habit": "Stay hydrated",
"goal": "8 cups/day",
"reminder": "09:00",
"assigned": [
"Jamie Example",
"Riley Sample"
],
"created": true
} The example gives Jamie Example and Riley Sample their own copy of a Stay hydrated habit, 8 cups a day with a 09:00 reminder. A cron job or n8n flow can make the same call over REST at /api/v1/fitsly with the same key and price, in JSON. Failed calls are free.
About $21 a monthfor a coach with 30 active clients, 3,580 credits. Your Fitsly tier stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Weekly review: roster plus 30 overviews | 31 × 4 | 1,240 |
| Habit streaks for the weekly review | 1 × 4 | 40 |
| Client messages and broadcasts | 1 × 40 | 400 |
| Food log reads and macro changes | 2 × 8 | 160 |
| New client invited with program and plan | 3 × 4 | 120 |
| Workouts and program edits | 1 × 12 | 120 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 208 calls | 3,580 |
The smallest pack, 5,000 credits for $29, covers this month. The weekly review is most of it: each client overview is one call.
Credit packs are one-time purchases, not a subscription. The month above is an example built from our own assumptions, not measured customer usage.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,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.
| Option | What it does | Where it stops |
|---|---|---|
| Fitsly dashboard and coach app | Every screen, on the web or on iOS and Android. | One client profile at a time, while you are at it. |
| Fitsly automations and onboarding flows | Assign content when a client joins and run set rules inside Fitsly. | Rules you set up in advance; they do not read a week and decide. |
| Sub-coaches | More coaches on your account. | More people doing the work by hand. |
If Fitsly publishes an API that covers your job, use it: it would be the vendor's own route. Cotlet fits when you want ChatGPT, Claude or a script working in Fitsly today, from your own coach login, with nothing to host.
Take Group sp. z o.o. operates Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), active since 2019, with founders Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev about the Fitsly tools.
Sign up free at https://cotlet.dev/signup?app=fitsly, turn on Fitsly under Integrations in the console and log in at https://app.fitsly.com/login in your Cloud Browser. Then connect your AI agent and ask it about your clients. The trial needs no card.
Fitsly publishes no public API and no developer documentation on fitsly.com or in its Help Center (checked 14 Nov 2026). No Fitsly MCP server and no official ChatGPT or Claude connector was verified. Cotlet does not need one: it works in your own signed-in Fitsly coach account.
Any. Per Fitsly's pricing page, every feature is on every tier and the price depends only on how many active clients you coach, from $39 a month for up to 20. The tools work on any tier.
No, it works next to them. Onboarding flows and automations run inside Fitsly; the agent can pick an onboarding flow when it creates a client, and handles the reviews and one-off changes you would otherwise click through.
No. Clients keep logging in the Fitsly client app. The agent reads what they logged and works on the coach side: clients, programs, plans, habits, messages and packages.
Only in how it is called. Both carry the same 10 tools, inputs, answers, API key and price. Agents use MCP; scripts and n8n HTTP steps use REST.
No. Cotlet is independent and not affiliated with Fitsly.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy