# MFIT Personal

> Client, workout, body composition, retention and finance management for personal trainers.

- name: io.github.mcp-dir/mfit-mcp
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 87/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.mcp-dir%2Fmfit-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.mcp-dir%2Fmfit-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "mfit-mcp": {
      "type": "http",
      "url": "https://api.mcp.ai/p_mfit"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 65
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-97% ~updated-132d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 8 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 48 of 48 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 12,484 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 48, about 12,484 tokens to load them all
- tool set hash: a0f1297d526c5f02b42070714834c7b1
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.mcp-dir/mfit-mcp.svg)](https://protogrid.dev/servers/io.github.mcp-dir/mfit-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.mcp.ai/p_mfit (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (48)

- `authenticate`: MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
- `connect`: Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
- `marketplace`: The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
- `mfit_client_files_delete`: Delete a student file (irreversible).

Bulk support: accepts client_ids, file_ids for batched execution.
- `mfit_client_files_get`: Read student files/attachments (diet plans, exams, planners, misc).
Actions: list (all files for a student), get (file detail with sharing info).

[Flattened action: get]

Bulk support: accepts client_ids, file_ids for batched execution.
- `mfit_client_files_list`: Read student files/attachments (diet plans, exams, planners, misc).
Actions: list (all files for a student), get (file detail with sharing info).

[Flattened action: list]

Bulk support: accepts client_ids, file_ids for batched execution.
- `mfit_client_files_write`: Update a student file: rename or change sharing settings.

Bulk support: accepts file_ids for batched execution.
- `mfit_client_get`: Read students in MFIT.
Actions:
  list — paginated list, filter by status/name
  get — full student profile
  list_groups — trainer's custom groups (DYNAMIC — call before creating/updating a student to get valid groupId)
Field types — STATIC: status (0=active/1=inactive).

[Flattened action: get]

Bulk support: accepts client_ids for batched execution.
- `mfit_client_list`: Read students in MFIT.
Actions:
  list — paginated list, filter by status/name
  get — full student profile
  list_groups — trainer's custom groups (DYNAMIC — call before creating/updating a student to get valid groupId)
Field types — STATIC: status (0=active/1=inactive).

[Flattened action: list]

Bulk support: accepts client_ids for batched execution.
- `mfit_client_list_groups`: Read students in MFIT.
Actions:
  list — paginated list, filter by status/name
  get — full student profile
  list_groups — trainer's custom groups (DYNAMIC — call before creating/updating a student to get valid groupId)
Field types — STATIC: status (0=active/1=inactive).

[Flattened action: list_groups]

Bulk support: accepts client_ids for batched execution.
- `mfit_client_write_create`: Create / update / deactivate students in MFIT.
Actions:
  create — register new student (name, email, phone required)
  update — edit student fields (partial update)
  deactivate — set student inactive (reversible via update)
Field types — STATIC: gender (m/f). DYNAMIC: groupId (per-trainer, call mfit_client list_groups first).

[Flattened action: create]

Bulk support: accepts client_ids for batched execution.
- `mfit_client_write_deactivate`: Create / update / deactivate students in MFIT.
Actions:
  create — register new student (name, email, phone required)
  update — edit student fields (partial update)
  deactivate — set student inactive (reversible via update)
Field types — STATIC: gender (m/f). DYNAMIC: groupId (per-trainer, call mfit_client list_groups first).

[Flattened action: deactivate]

Bulk support: accepts client_ids for batched execution.
- `mfit_client_write_update`: Create / update / deactivate students in MFIT.
Actions:
  create — register new student (name, email, phone required)
  update — edit student fields (partial update)
  deactivate — set student inactive (reversible via update)
Field types — STATIC: gender (m/f). DYNAMIC: groupId (per-trainer, call mfit_client list_groups first).

[Flattened action: update]

Bulk support: accepts client_ids for batched execution.
- `mfit_get_anamnesis_models`: Get available anamnesis form templates (e.g. PAR-Q) that can be sent to students.
- `mfit_get_client_count`: Get a summary count of active and inactive students.
- `mfit_get_client_evaluations`: Get evaluations for one or many students: heart rate zones, VO2max, and training frequency.
- `mfit_get_client_notes`: Read notes/observations for one or many students (bulk via client_ids).
- `mfit_get_client_notes_write`: Save (overwrite) notes/observations for a student. Replaces any existing notes text.

Bulk support: accepts client_ids for batched execution.
- `mfit_get_client_workouts`: Get all workout routines assigned to one or many students. Supports bulk via client_ids.
- `mfit_get_exercise_favorites`: Get the trainer's favorite exercises.
- `mfit_get_feedbacks`: Get all unread workout feedbacks from students. Each feedback includes: student name, Borg RPE score (1-10 perceived effort), text feedback, workout date/time, duration. Shows which students completed workouts and how they felt.
- `mfit_get_finances`: Get financial overview: transactions in date range, wallet/payment info, seller status.
- `mfit_get_invoices`: Get invoices/billing for one or many students (bulk via client_ids).
- `mfit_get_profile`: Get the trainer's own MFIT profile: name, email, plan, payment country.
- `mfit_get_retention`: Get student retention dashboard: active clients, engagement rate, growth rate, churn rate, NPS. Compare current period vs previous.
- `mfit_get_retention_clients`: List students by retention status: AT_RISK (may churn), ABANDONED (stopped training), ACTIVE, or all. Shows days since last workout, avg weekly workouts, WhatsApp link. Much more useful than listing clients — this tells you WHO NEEDS ATTENTION.
- `mfit_get_today_checkins`: Check which students trained today. Scans all active students and returns two lists: who_trained and who_didnt. Single call, no need to check one by one.
- `mfit_get_training_frequency`: Get which days one or many students trained in a date range. Returns true/false per day of week.
- `mfit_get_training_ranking`: Ranking of students who trained the most in a period (default: current month). Uses bulk frequency checks and returns top performers.
- `mfit_get_user_exercises`: Get custom exercises created by the trainer.
- `mfit_get_workout_library`: Browse the trainer's workout library folders and saved routines. Use folder_id=0 for the root.

Bulk support: accepts folder_ids for batched execution.
- `mfit_list_accounts`: List all MFIT accounts linked to this install.
Returns each account's id, email, label, and an "is_default" flag (true when only one is linked — no need to pass `account` in other tools). When multiple accounts are linked, every other mfit_* tool accepts an optional `account` parameter; pass id, email, or label (full or partial).
- `mfit_search_exercises`: Search the exercise library by name (Portuguese or English). Returns exercise name, category, muscle group, and video/image URL.
- `mfit_workout_delete_exercise`: Destructive operations on workout routines, sessions, and exercises.
Actions:
  delete_routine — soft-delete a routine (moves to "Excluídas"; reversible)
  delete_session — remove a session from a routine (irreversible)
  delete_exercise — remove an exercise from a session (irreversible). Get exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].idExercSession.

[Flattened action: delete_exercise]

Bulk support: accepts routine_ids, session_ids, exercise_session_ids for batched execution.
- `mfit_workout_delete_routine`: Destructive operations on workout routines, sessions, and exercises.
Actions:
  delete_routine — soft-delete a routine (moves to "Excluídas"; reversible)
  delete_session — remove a session from a routine (irreversible)
  delete_exercise — remove an exercise from a session (irreversible). Get exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].idExercSession.

[Flattened action: delete_routine]

Bulk support: accepts routine_ids, session_ids, exercise_session_ids for batched execution.
- `mfit_workout_delete_session`: Destructive operations on workout routines, sessions, and exercises.
Actions:
  delete_routine — soft-delete a routine (moves to "Excluídas"; reversible)
  delete_session — remove a session from a routine (irreversible)
  delete_exercise — remove an exercise from a session (irreversible). Get exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].idExercSession.

[Flattened action: delete_session]

Bulk support: accepts routine_ids, session_ids, exercise_session_ids for batched execution.
- `mfit_workout_get_routine`: Read workout routines and sessions in MFIT.
Actions:
  get_routine — routine details with all sessions
  get_session — session prescription with all exercises, series, and exercise IDs

[Flattened action: get_routine]

Bulk support: accepts routine_ids, session_ids for batched execution.
- `mfit_workout_get_session`: Read workout routines and sessions in MFIT.
Actions:
  get_routine — routine details with all sessions
  get_session — session prescription with all exercises, series, and exercise IDs

[Flattened action: get_session]

Bulk support: accepts routine_ids, session_ids for batched execution.
- `mfit_workout_write_add_exercise`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: add_exercise]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_archive_routine`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: archive_routine]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_create_routine`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: create_routine]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_create_session`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: create_session]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_unarchive_routine`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: unarchive_routine]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_update_routine`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: update_routine]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `mfit_workout_write_update_serie`: Create / update workout routines, sessions, and exercises in MFIT.
Actions:
  create_routine — create a new workout routine for a student
  update_routine — edit routine name, dates, goal, difficulty, etc.
  archive_routine — archive a routine (status=1, reversible)
  unarchive_routine — restore archived routine to active (status=0)
  create_session — add a training session (day) to a routine
  add_exercise — add an exercise to a session (use mfit_search_exercises to find exercise_id). Added with 1 empty set — use update_serie to configure.
  update_serie — set reps, weight, rest for a serie. Get serie_id and exercise_session_id from mfit_workout get_session → exerciciosMontados.k{id}[0].series[0].id and .idExercSession.

Static options:
  trainingType: 1=Dia da Semana, 2=Numérico
  goal: 1=Hipertrofia, 2=Redução de gordura, 3=Redução de gordura/hipertrofia, 4=Definição muscular, 5=Condicionamento físico, 6=Qualidade de vida
  difficulty: 1=Iniciante, 2=Intermediário, 3=Avançado, 4=Adaptação
  day (session): 1=Domingo, 2=Segunda, 3=Terça, 4=Quarta, 5=Quinta, 6=Sexta, 7=Sábado

For destructive operations (delete routine / session / exercise) use mfit_workout_delete.

[Flattened action: update_serie]

Bulk support: accepts client_ids, routine_ids, session_ids, exercise_ids, exercise_session_ids, serie_ids for batched execution.
- `report_bug`: Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
- `show_version`: Show the current MCP platform and adapter versions.
- `toolkit_info`: Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
