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

  1. In PRESZN, open Settings → Connect your AI.
  2. Tap Create a key and name it after the agent ("Claude Code", "my script").
  3. 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 /meName, unit, time zone, plan
GET /linesThe line per lift: mean e1RM (kg) of your hard sets over 28 days
GET /sessions?from&toFinished 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&toRuns and cardio
GET /programsYour programs
POST /programsSave 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.