# NoteFit developer docs: MCP server and OAuth

> NoteFit exposes its training data to AI assistants and other clients through a remote MCP (Model Context Protocol) server at https://notefit.app/api/mcp. Clients authenticate with OAuth 2.1 and register themselves — there are no API keys to request and no sales contact in the way.

## Quick start

Step-by-step guides for the two most common clients: [connect NoteFit to Claude](https://notefit.app/en/ai/claude) and [connect NoteFit to ChatGPT](https://notefit.app/en/ai/chatgpt).

- Create a NoteFit account at [notefit.app/signup](https://notefit.app/signup) (self-serve; NoteFit is currently free of charge).
- Add `https://notefit.app/api/mcp` to your MCP client as a remote server (Streamable HTTP transport).
- The client discovers the authorization server, registers itself, and sends you to the NoteFit consent screen. Sign in and grant read access, write access, or both.
- Call `tools/list`. Start with `notefit_get_coach_briefing` or `notefit_list_athletes` to see what the account holds.

## Authentication

OAuth 2.1 authorization code flow with PKCE (`S256` only) and refresh tokens. Clients register through dynamic client registration, so nothing has to be created by hand. Access tokens are sent as `Authorization: Bearer <token>`. An unauthenticated call to the MCP endpoint answers 401 with a `WWW-Authenticate` header that points at the protected resource metadata.

Scopes: `notefit:read` and `notefit:write`. They are granted separately on the consent screen, and a read-only connection is never shown the write tools.

- Protected resource metadata (RFC 9728): `https://notefit.app/.well-known/oauth-protected-resource`
- Authorization server metadata (RFC 8414): `https://notefit.app/.well-known/oauth-authorization-server`
- Dynamic client registration (RFC 7591): `https://notefit.app/api/mcp/oauth/register`
- Authorization: `https://notefit.app/api/mcp/oauth/authorize`
- Token: `https://notefit.app/api/mcp/oauth/token`
- Revocation (RFC 7009): `https://notefit.app/api/mcp/oauth/revoke`

## Tools

The server advertises 42 training tools, grouped below. It also exposes `search` and `fetch` (the names ChatGPT requires for retrieval) and prompts such as `getting_started` and `plan_next_week`.

- **Read what is already there** (read scope) — Sees your athletes, the weeks, volume per muscle, the trend across the block and the load history of every exercise. Tools: `notefit_get_coach_briefing`, `notefit_get_current_week`, `notefit_list_athletes`, `notefit_get_athlete`, `notefit_list_mesocycles`, `notefit_list_microcycles`, `notefit_list_workouts`, `notefit_get_mesocycle`, `notefit_get_microcycle`, `notefit_get_weekly_volume`, `notefit_get_volume_trend`, `notefit_get_training_summary`, `notefit_get_exercise_history`, `notefit_get_measurements_history`.
- **Plan and write** (needs the write scope for changes) — Creates blocks, weeks and sessions, edits them and copies them. A 4-to-12-week block can be created whole in one call — or nothing is created at all, if any week comes back malformed. Tools: `notefit_create_mesocycle`, `notefit_create_microcycle`, `notefit_add_workouts`, `notefit_update_mesocycle`, `notefit_update_microcycle`, `notefit_update_workout`, `notefit_copy_mesocycle`, `notefit_copy_microcycle`, `notefit_copy_workout`, `notefit_delete_item`.
- **Manage athletes** (needs the write scope for changes) — Creates one athlete or a whole roster at once, updates details and measurements, archives whoever no longer trains with you. Tools: `notefit_create_athlete`, `notefit_create_athletes`, `notefit_update_athlete`, `notefit_update_athlete_measurements`, `notefit_set_athlete_active`.
- **Log what was done** (needs the write scope for changes) — Records the load on an exercise and leaves notes on a session. Tools: `notefit_log_exercise_weight`, `notefit_set_workout_comment`.
- **Week templates** (needs the write scope for changes) — Saves a week as a template and applies it to another athlete or another week, without deleting what was already there. Tools: `notefit_save_week_as_plan`, `notefit_list_workout_plans`, `notefit_get_workout_plan`, `notefit_update_workout_plan`, `notefit_apply_workout_plan`.
- **Share** (needs the write scope for changes) — Creates and revokes share links and manages who has access to a block. Tools: `notefit_create_share_link`, `notefit_list_share_links`, `notefit_revoke_share_link`, `notefit_list_access`, `notefit_remove_access`.
- **Find exercises** (read scope) — Searches the catalogue by name, equipment or muscle before building the session. Tools: `notefit_search_exercise_catalog`.

## Testing and limits

There is no separate sandbox environment. Create a free account, add a test athlete, and point your client at it — every read and write is scoped to the signed-in account and to what it has been granted. Calls are rate-limited per connection as a guard against runaway agent loops; a client that hits the limit gets an error and can retry a minute later.

There is no public REST API or SDK: the MCP server is the integration surface. It is listed in the official MCP registry as `app.notefit/notefit`.

## More

- [NoteFit with AI assistants](https://notefit.app/en/ai) — what the connector is for, with example requests.
- [llms.txt](https://notefit.app/llms.txt) — the site summary for language models.
- [About NoteFit](https://notefit.app/about) — who runs NoteFit and how to reach them.
- Questions: [admin@notefit.app](mailto:admin@notefit.app).

---

HTML version: https://notefit.app/developers
