# Everfit API and MCP server

> Everfit has an API, but only for Enterprise customers, who ask the Enterprise team by email for a token (checked 11 Oct 2026). It manages clients, programs, Autoflows, collections, groups and forums, and sends two webhooks; its guide lists no endpoints for messages, body metrics, tasks or workout results.

Online coaching platform for personal trainers and fitness studios: client training calendars, programs, Autoflows, body metrics, tasks and Inbox messaging.

## What is the Everfit API?

Cotlet's Everfit API exposes 15 endpoints for your own Everfit account: list clients, get client, list workouts, get body metrics, list programs, list Autoflows, list conversations, get conversation, invite client, assign program, add client to Autoflow, log body metric, assign task, send message and send broadcast. The list_clients endpoint returns clients in your workspace with type, coach, groups and status. Each endpoint takes simple JSON inputs like client_id, limit or status and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Courses & training](https://cotlet.dev/integrations/category/courses-training)
- **Endpoints:** 15 (8 read, 7 write)
- **Updated:** 2026-10-11

Everfit has an API, but only for Enterprise customers, who ask the Enterprise team by email for a token (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Everfit with 15 endpoints (8 read, 7 write): your AI agent signs in as you and does the work.

## Does Everfit have an official API?

Everfit has an API, but only for Enterprise customers, who ask the Enterprise team by email for a token (checked 11 Oct 2026). It manages clients, programs, Autoflows, collections, groups and forums, and sends two webhooks; its guide lists no endpoints for messages, body metrics, tasks or workout results.

| Task | Everfit official | Cotlet |
|---|---|---|
| List clients and read profiles | Partly: Enterprise API: client IDs by email, profiles, bulk lookup | Yes |
| Assign a program to a client | Partly: Enterprise API, or Zapier on Studio with the plugin | Yes |
| Add a client to an Autoflow | Partly: Enterprise API, or Zapier on Studio with the plugin | Yes |
| Invite a new client | Partly: Enterprise API, or Zapier on Studio with the plugin | Yes |
| Message a client in Inbox | No | Yes |
| Broadcast to many clients | No | Yes |
| Read and log body metrics | No | Yes |
| Read logged workouts and assign tasks | No | Yes |

Sources: [Everfit API Integration Guide](https://help.everfit.io/en/articles/15176278-everfit-api-integration-guide), [Everfit Zapier Integration](https://help.everfit.io/en/articles/8543585-introducing-zapier-integration), [Everfit Help: Zap triggers and actions](https://help.everfit.io/en/articles/8564616-how-to-set-up-your-zap-that-includes-everfit-s-events), [Everfit pricing](https://everfit.io/pricing/), [Everfit Help: Inbox Broadcast Messages](https://help.everfit.io/en/articles/8258414-inbox-broadcast-messages), [Everfit Help: AI Smart Response](https://help.everfit.io/en/articles/13212021-ai-smart-response), [Everfit Help: Check-in Dashboard (Beta)](https://help.everfit.io/en/articles/14495409-check-in-dashboard-overview-beta)

## For AI agents

```text
Everfit has an API, but only for Enterprise customers, who ask the Enterprise team by email for a token (checked 11 Oct 2026). It manages clients, programs, Autoflows, collections, groups and forums, and sends two webhooks; its guide lists no endpoints for messages, body metrics, tasks or workout results.
Cotlet provides a hosted MCP server and REST API for Everfit: 15 tools (8 read, 7 write).
Access       Request access at https://cotlet.dev/app/signup?app=everfit; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/everfit
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_clients, get_client, list_workouts, get_body_metrics, list_programs, list_autoflows, list_conversations, get_conversation, invite_client, assign_program, add_client_to_autoflow, log_body_metric, assign_task, send_message, send_broadcast
Confirm      invite_client, assign_program, add_client_to_autoflow, log_body_metric, assign_task, send_message, send_broadcast (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/everfit-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=everfit (Everfit is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Everfit once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

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

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Everfit in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Everfit's terms; Cotlet is not affiliated with Everfit.
```

## What can an AI agent do in Everfit?

Cotlet is best for Everfit coaches below the Enterprise plan who want their AI agent to check in on clients, run Autoflow enrollment, assign tasks and read metrics without running or fixing a server.

- **[Check in on clients who stopped training](https://cotlet.dev/integrations/everfit-api-mcp-server/check-in-on-inactive-clients)** (runs: weekly): "Every Monday, find my active Everfit clients who had workouts planned last week but tracked none, read their notes, and draft a short personal check-in for each. Show me the drafts before anything is sent." → `list_clients`, `get_client`, `list_workouts`, `get_conversation`, `send_message`
- **Put new clients into an Autoflow** (runs: weekly): "Put the 3 clients who joined this week into my 12-week fat loss Autoflow starting Monday." → `list_clients`, `list_autoflows`, `add_client_to_autoflow`
- **[Weekly client progress report](https://cotlet.dev/integrations/everfit-api-mcp-server/weekly-client-progress-report)** (runs: weekly): "Every Friday, compare each active client's Weight and Waist over the last 4 weeks in Everfit, flag anyone moving against their goal or not logging, and propose a Monday weigh-in task for the ones who skipped." → `list_clients`, `get_body_metrics`, `assign_task`
- **[Answer client Inbox messages](https://cotlet.dev/integrations/everfit-api-mcp-server/answer-client-inbox-messages)** (runs: daily): "Every evening, go through my unread Everfit Inbox, check each client's workouts this week and their notes, draft a reply to the simple questions, and flag anything about pain, injuries or billing for me." → `list_conversations`, `get_conversation`, `get_client`, `list_workouts`, `send_message`
- **Broadcast a message to all clients**: "Broadcast to all clients that the studio is closed on Friday." → `send_broadcast`
- **Assign a weekly measurements task** (runs: weekly): "Every Monday, give each active client a task to log weight and waist, with a reminder at 8:00." → `list_clients`, `assign_task`

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

Yes. Cotlet does not replace your automation platform: it gives it a Everfit 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 check in on clients who stopped training, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/everfit/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/everfit/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/everfit/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/everfit/{tool} with your API key. | cron or GitHub Actions. |

## Tools

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

### list_clients

Clients in your workspace with type, coach, groups and status. Access: read. REST: `POST /api/v1/everfit/list_clients`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | active or archived. Default: active. |
| `type` | enum | no | online, in_person or hybrid. |
| `group` | string | no | Only clients in this group. |
| `coach_id` | string | no | Only clients of this coach. |
| `search` | string | no | Name or email contains. |
| `limit` | integer | no | 1 to 200. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists your clients with type (online, in person or hybrid), the coach they belong to, groups and status. Archived clients are returned only when you ask for them. Use the client_id of each item in the other tools. Pass next_cursor back as cursor for the next page.

Example response:

```json
{
  "clients": [
    {
      "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
      "first_name": "Sam",
      "last_name": "Rivera",
      "email": "sam@example.com",
      "type": "online",
      "coach_id": "64a1b2c3d4e5f6a7b8c9d0e1",
      "groups": [
        "Fat loss"
      ],
      "status": "active",
      "joined_at": "2026-09-15"
    }
  ],
  "next_cursor": null
}
```

### get_client

Client overview: profile, goals, limitations or injuries, private notes and workout counts. Access: read. REST: `POST /api/v1/everfit/get_client`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |

Returns what the client overview page shows: profile, goals, limitations or injuries, your private notes, and the number of workouts tracked in the last 7 and 30 days. Notes and limitations are not shared with the client.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "first_name": "Sam",
  "last_name": "Rivera",
  "type": "online",
  "goals": "Lose 5 kg before the wedding in March.",
  "limitations": "Mild left knee pain on deep squats.",
  "notes": "Prefers morning sessions.",
  "workouts_tracked": {
    "last_7_days": 0,
    "last_30_days": 9
  }
}
```

### list_workouts

Workouts on a client's training calendar in a date range, with completion and logged results. Access: read. REST: `POST /api/v1/everfit/list_workouts`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `from` | date | no | Start date. Default: 7 days ago. |
| `to` | date | no | End date. Default: 7 days ahead. |

Returns the workouts on one client's training calendar between two dates, each with whether the client completed it and the results they logged. The default range is the last 7 days and the next 7 days. Use it to find clients with no tracked workouts.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "workouts": [
    {
      "workout_id": "w_4a91",
      "date": "2026-10-06",
      "title": "Lower Body A",
      "completed": false,
      "results": null
    },
    {
      "workout_id": "w_4a92",
      "date": "2026-10-08",
      "title": "Upper Body A",
      "completed": false,
      "results": null
    }
  ],
  "completed_count": 0,
  "planned_count": 2
}
```

### get_body_metrics

Entries for a client's tracked metrics, such as weight, with date, time and unit. Access: read. REST: `POST /api/v1/everfit/get_body_metrics`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `metric` | string | no | Metric name, e.g. Weight. Default: all tracked metrics. |
| `from` | date | no | Start date. Default: 90 days ago. |
| `to` | date | no | End date. Default: today. |

Returns the entries a client has for a metric, such as Weight or a custom metric, each with date, time, value and unit, plus the change from the first to the last entry in the range. Only metrics enabled for that client return data. Without metric, it returns every tracked metric.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "metric": "Weight",
  "unit": "kg",
  "entries": [
    {
      "recorded_at": "2026-07-12T08:10:00Z",
      "value": 84.2
    },
    {
      "recorded_at": "2026-08-16T08:05:00Z",
      "value": 82.9
    },
    {
      "recorded_at": "2026-09-20T08:20:00Z",
      "value": 81.5
    },
    {
      "recorded_at": "2026-10-10T08:12:00Z",
      "value": 80.6
    }
  ],
  "change": -3.6
}
```

### list_programs

Programs in your Program Library with length in weeks. Access: read. REST: `POST /api/v1/everfit/list_programs`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `search` | string | no | Program name contains. |

Lists the programs in your Program Library with their length in weeks. Pass program_id to assign_program.

Example response:

```json
{
  "programs": [
    {
      "program_id": "65d8b7c6a5f4e3d2c1b0a9f8",
      "title": "Beginner Strength",
      "weeks": 8
    },
    {
      "program_id": "65d8b7c6a5f4e3d2c1b0a9f9",
      "title": "Hypertrophy Block",
      "weeks": 12
    }
  ]
}
```

### list_autoflows

Your Autoflows with name, status and number of clients. Access: read. REST: `POST /api/v1/everfit/list_autoflows`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | active, paused or all. Default: all. |

Lists the Autoflows you can see, your own and those shared with the team, with their status (active or paused) and how many clients are in each. Adding a client to a paused Autoflow sends them nothing until it is activated.

Example response:

```json
{
  "autoflows": [
    {
      "autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d0",
      "name": "12-week Fat Loss",
      "status": "active",
      "clients": 18
    },
    {
      "autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d1",
      "name": "New client onboarding",
      "status": "paused",
      "clients": 4
    }
  ]
}
```

### list_conversations

Your Inbox conversations with clients: who, unread flag and last message. Access: read. REST: `POST /api/v1/everfit/list_conversations`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `unread_only` | boolean | no | Only conversations with unread messages. |
| `limit` | integer | no | 1 to 100. Default: 30. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists your Inbox conversations with clients, with the last message and whether it is unread. Chats with teammates are in the Team tab in Everfit and are not returned. Set unread_only to get what needs an answer.

Example response:

```json
{
  "conversations": [
    {
      "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
      "name": "Sam Rivera",
      "unread": true,
      "last_message": "Can I swap barbell rows for dumbbell rows this week?",
      "updated_at": "2026-10-10T17:42:00Z"
    }
  ],
  "next_cursor": null
}
```

### get_conversation

Messages with one client, oldest first, with links to images and videos. Access: read. REST: `POST /api/v1/everfit/get_conversation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `limit` | integer | no | 1 to 200. Default: 50. |

Returns the messages in your Inbox conversation with one client, oldest first, with who sent each and links to images and videos they attached. Read the thread before drafting a reply.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "messages": [
    {
      "from": "Sam Rivera",
      "text": "Can I swap barbell rows for dumbbell rows this week?",
      "media": [],
      "sent_at": "2026-10-10T17:42:00Z"
    }
  ]
}
```

### invite_client

Add a client and email them an invite to set up the Everfit app. Access: write, asks the user first. REST: `POST /api/v1/everfit/invite_client`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `first_name` | string | yes | First name. |
| `last_name` | string | yes | Last name. |
| `email` | string | yes | Client email; the invite goes here. |
| `type` | enum | no | online, in_person or hybrid. Default: online. |
| `coach_id` | string | no | Assign another coach. Owners and admins only. Default: you. |

Adds a client with first name, last name, email and type, and Everfit emails them an invite right away to set up their profile. By default you are their coach; owners and admins can assign another coach. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5b7",
  "email": "alex@example.com",
  "type": "online",
  "coach_id": "64a1b2c3d4e5f6a7b8c9d0e1",
  "status": "invited"
}
```

### assign_program

Add a program to a client's training calendar from a start date. Access: write, asks the user first. REST: `POST /api/v1/everfit/assign_program`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `program_id` | string | yes | Program ID from list_programs. |
| `start_date` | date | yes | First day of the program on the calendar. |
| `start_day` | integer | no | Program day to start at. Default: 1. |
| `end_day` | integer | no | Program day to end at. Default: the last day. |

Adds a program from your Program Library to one client's training calendar, starting on the date you give. Set start_day and end_day to assign only part of the program. Workouts appear on the calendar right away and you can adjust them per client afterwards. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "program": {
    "program_id": "65d8b7c6a5f4e3d2c1b0a9f8",
    "title": "Beginner Strength",
    "weeks": 8
  },
  "start_date": "2026-10-12",
  "end_date": "2026-12-06",
  "workouts_added": 24
}
```

### add_client_to_autoflow

Enroll a client in an Autoflow; an active one sends its workouts, tasks and announcements. Access: write, asks the user first. REST: `POST /api/v1/everfit/add_client_to_autoflow`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `autoflow_id` | string | yes | Autoflow ID from list_autoflows. |
| `start_date` | date | no | Date the client starts. Default: today. |
| `start_day` | integer | no | Autoflow day to begin on. Default: 1. |

Adds a client to an Autoflow. In an active Autoflow the client is activated and receives all scheduled workouts, announcements and tasks; in a paused one they receive nothing until it is activated. start_date and start_day set where the client begins. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "autoflow": {
    "autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d0",
    "name": "12-week Fat Loss",
    "status": "active"
  },
  "client_status": "active",
  "start_date": "2026-10-12",
  "start_day": 1
}
```

### log_body_metric

Add a result for one of a client's tracked metrics. Access: write, asks the user first. REST: `POST /api/v1/everfit/log_body_metric`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `metric` | string | yes | Metric name, e.g. Weight. |
| `value` | number | yes | Value in the metric's unit. |
| `recorded_at` | datetime | no | ISO 8601. Default: now. |

Saves a result for one metric enabled for the client, with a value and the date and time of the entry. The client sees it in their metrics and charts. The metric must already be enabled for the client in Everfit. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "metric": "Weight",
  "value": 80.6,
  "unit": "kg",
  "recorded_at": "2026-10-10T08:12:00Z",
  "status": "saved"
}
```

### assign_task

Add a task to a client's calendar, with instructions and a reminder time. Access: write, asks the user first. REST: `POST /api/v1/everfit/assign_task`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `title` | string | yes | Task title. |
| `date` | date | yes | Day the task appears. |
| `instructions` | string | no | Task details for the client. |
| `link` | string | no | URL to attach, e.g. a form or video. |
| `reminder_time` | string | no | Reminder time HH:MM in the client's local time. Default: 10:00. |

Adds one task to a client's calendar on a date. The client gets a push notification on that day, at 10:00 in their local time unless you set reminder_time, and checks the task off in the client app. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "task_id": "t_7c20",
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "title": "Weekly measurements",
  "date": "2026-10-12",
  "reminder_time": "08:00",
  "status": "assigned"
}
```

### send_message

Send a message to a client in Inbox, as you. Access: write, asks the user first. REST: `POST /api/v1/everfit/send_message`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_id` | string | yes | Client ID from list_clients. |
| `text` | string | yes | Message text. |

Sends a text message to one client in your Inbox conversation, under your name. Everfit lets you edit a plain text message only within 60 minutes. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "message_id": "msg_91d3",
  "status": "sent",
  "sent_at": "2026-10-11T09:05:00+02:00"
}
```

### send_broadcast

Inbox Broadcast to many clients at once. Studio plan. Access: write, asks the user first. REST: `POST /api/v1/everfit/send_broadcast`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `client_ids` | string[] | no | Recipients. Omit when all_clients is true. |
| `all_clients` | boolean | no | Send to every client. |
| `messages` | string[] | yes | Up to 3 messages; {first_name} is filled in per client. |

Sends an Inbox Broadcast of up to 3 messages to the clients you pick, or to all clients. {first_name} is filled in per client. Needs the Studio plan, and Everfit asks you to wait 2 minutes before the next broadcast. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "broadcast_id": "bc_2f08",
  "recipients": 42,
  "messages_per_client": 1,
  "status": "sent",
  "sent_at": "2026-10-11T09:10:00+02:00"
}
```

## How do I connect Everfit to Claude Code, Codex or Cursor?

Connecting Everfit takes three steps: request access, sign in to Everfit once, then add one MCP server or call the REST API with the same key.

### Connect Everfit to your agent.

1. **Create an account** Sign up and add Everfit in the console. Your API key is there too.

2. **Sign in to Everfit once** Open the connect page from the console and sign in to Everfit the way you always do. We keep the session, never your password, and you can revoke it anytime.

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

   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"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Everfit 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.

```
Every Monday, find my active Everfit clients who had workouts planned last week but tracked none, read their notes, and draft a short personal check-in for each. Show me the drafts before anything is sent.
```

### Call Everfit 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_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/everfit/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/everfit/assign_program \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","program_id":"65d8b7c6a5f4e3d2c1b0a9f8","start_date":"2026-10-12"}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
  "program": {
    "program_id": "65d8b7c6a5f4e3d2c1b0a9f8",
    "title": "Beginner Strength",
    "weeks": 8
  },
  "start_date": "2026-10-12",
  "end_date": "2026-12-06",
  "workouts_added": 24
}
```

## Why use Cotlet for Everfit?

**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 Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to Everfit yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When Everfit changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Everfit MCP server on GitHub?

Zapier is the official no-code route. It needs the Studio plan plus Everfit's Zapier plugin, and its actions cover clients, programs, Autoflows and forums, not Inbox, metrics or tasks. We found no open-source Everfit MCP server.

|  | Zapier | Cotlet |
|---|---|---|
| Setup | Studio plan, the Zapier plugin from the Integration tab, an API secret, then a Zap per workflow | Request access, sign in to Everfit once in your browser, add one MCP server or API key |
| Messages, metrics and tasks | No Inbox messages, broadcasts, body metrics or tasks | Inbox, broadcasts, body metrics and tasks, each message confirmed by you by default |
| Ad hoc questions | Fixed Zaps for fixed triggers | Your agent reads clients, workouts and chats when you ask |
| When Everfit changes | Maintained by Everfit | Our team tests it daily and fixes it for you; failed calls are free |
| Your Everfit session | An API secret generated for the workspace | Your own coach login, kept as an encrypted session in an EU vault, revoked in one click |
| Where it runs | Zapier cloud | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | Studio plan plus the plugin, sized by Zapier tasks per month | Free 7-day trial with 5,000 credits, then credits per call |

### 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 Everfit 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 the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the Everfit API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Everfit API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/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 Everfit account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Everfit yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Everfit tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Everfit in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **Everfit's terms:** You use your own Everfit account and stay responsible for following Everfit's terms. Cotlet is independent and not affiliated with Everfit. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick Everfit. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to Everfit once in your browser 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 a hosted server safe? My Everfit session would leave my computer.**

Cotlet keeps your Everfit session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Do I need the Enterprise plan or Zapier to use this?**

No. Cotlet works in your own Everfit coach account and does not use the Enterprise API token or the Zapier plugin. Plan limits of the app still apply: broadcasts need the Studio plan, and Autoflow is a paid add-on in Everfit's pricing.

**Does Everfit notify clients when my agent assigns something?**

Yes, the same as when you do it by hand: tasks send a push notification on the task day, messages arrive in the client's Inbox, and an invite sends an email. That is why each of these write tools asks for your OK by default.

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

No. Every call to invite_client, assign_program, add_client_to_autoflow, log_body_metric, assign_task, send_message or send_broadcast 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 Everfit API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/everfit/{tool} from the HTTP Request node.
