Connect your AI
Your training, in your own AI. Pro members.
What it is
A key from the app lets an agent you run read your sessions, your lines, your records, your readiness and your runs, and save programs to your library. It can't see anyone else, and it can't log a set. Revoke it in the app any time.
Your own agent has none of the Coach's rules. What it says about your numbers is its own.
Get a key
- In PRESZN, open Settings → Connect your AI.
- Tap Create a key and name it after the agent ("Claude Code", "my script").
- Copy it. It is shown once. Keys look like
pz_…and are sent as a bearer token.
Five keys at a time. A key stops working the hour a Pro membership ends.
The MCP server
https://ofvvnljeryargswvyozq.supabase.co/functions/v1/mcp
Claude Code
claude mcp add --transport http preszn https://ofvvnljeryargswvyozq.supabase.co/functions/v1/mcp \
--header "Authorization: Bearer pz_YOUR_KEY"Cursor, Windsurf, any client with a config file
{
"mcpServers": {
"preszn": {
"url": "https://ofvvnljeryargswvyozq.supabase.co/functions/v1/mcp",
"headers": { "Authorization": "Bearer pz_YOUR_KEY" }
}
}
}Tools: get_lines, get_profile, list_sessions, get_session, get_exercise_history, search_exercises, get_personal_records, get_scoreline, get_readiness, list_runs, list_programs, create_program.
claude.ai on the web, Claude Desktop and the Claude mobile apps sign in rather than using a key. That is coming next.
The REST API
https://ofvvnljeryargswvyozq.supabase.co/functions/v1/api-v1
curl -H "Authorization: Bearer pz_YOUR_KEY" https://ofvvnljeryargswvyozq.supabase.co/functions/v1/api-v1/lines| GET /me | Name, unit, time zone, plan |
| GET /lines | The line per lift: mean e1RM (kg) of your hard sets over 28 days |
| GET /sessions?from&to | Finished sessions, athlete-local days (default 28 days) |
| GET /sessions/{id} | Every completed set, priced in kg |
| GET /exercises?q= | Search the catalogue and your own lifts |
| GET /exercises/{name}/history?weeks= | Every set of one lift, up to 26 weeks |
| GET /records?exercise= | The rep-max ladder |
| GET /scoreline?weeks= | Each session against your average |
| GET /readiness?days= | Recovery score, overnight HRV, resting HR, sleep |
| GET /runs?from&to | Runs and cardio |
| GET /programs | Your programs |
| POST /programs | Save a program (below) |
Weights are kilograms. Dates are your local days: pass ?tz=600 (minutes from UTC) or let the app's time zone decide. Everything carries as_of and a freshness note: the server is as fresh as your phone's last sync.
ChatGPT Actions: import the base URL above with Bearer authentication and paste a key.
Writing a program
Send one document. A week you leave out copies the latest earlier week, so a four-week block can be one week. Days are slots 1–7. Spell exercises as /exercises?q= returns them, or pass exercise_id; an unknown name creates a custom lift. Loads are percent_1rm, never kilograms: the app prices from your own line. The program lands in PRESZN → Programs, ready to start. Nothing is started for you.
POST https://ofvvnljeryargswvyozq.supabase.co/functions/v1/api-v1/programs
{
"title": "Upper/Lower, 4 weeks",
"duration_weeks": 4,
"days_per_week": 4,
"days": [
{ "week": 1, "day": 1, "title": "Upper A", "exercises": [
{ "name": "Barbell Bench Press", "sets": 4, "reps_min": 5, "reps_max": 5,
"rest_seconds": 180, "percent_1rm": 80 },
{ "name": "Pull-Up", "sets": 3, "reps_min": 6, "reps_max": 10,
"superset_group": "A", "superset_letter": "A", "superset_number": 1 }
] }
]
}What it never does
- Log a set, a session, a record or a reading. Training is logged in the app.
- Start, edit or delete a program.
- Show friends, teams or rivals.
- Accept a key in the URL. Header only.