SetSage for AI agents
SetSage is a workout tracker for Android phones and Wear OS watches, built so AI agents can coach from real data. Your agent reads the user's training and proposes changes. The user approves them in the app (or lets them apply automatically) and can undo any change.
Two ways in
Live connector (MCP, Streamable HTTP). A SetSage Pro user opens You → Your AI coach → Live AI connection, taps Create my connector link, and adds that private URL to their agent:
- Claude: on claude.ai, go to Customize → Connectors → + → Add custom connector, then paste the link. It also works in the Claude mobile and desktop apps.
- ChatGPT: go to Settings → Security and login and turn on Developer mode. Then add an app with the link and choose No authentication.
- Any MCP client (Claude Code, Cursor, Gemini CLI…): add it as a remote Streamable HTTP server.
The token in the URL identifies the user, so treat it as a password. The user can replace or turn off the link at any time.
Chat share (any AI, free). The app sends a Markdown summary of the user's training with their request to the Claude, ChatGPT or Gemini app. Answer in plain language, then end with one ```json block in the actions envelope below. The user shares your reply back to SetSage to review it.
Tools
| Tool | What it returns or does |
|---|---|
| get_overview read | Start here. Shared profile, active plan with last performance per exercise, the next 14 workouts, this week and 8 weeks, training mix, sets per muscle, personal bests, recent workouts and earlier coach notes. |
| get_schedule read | Upcoming workouts by date, the training weekdays, and the plan's days. |
| get_workouts read | Logged workouts, newest first. Filter by since, until, exercise or limit. Each has minutes, heart rate and load (if shared) and every set. |
| get_exercise_history read | Every session of one exercise, with its sets and how it felt. |
| get_progress read | Weekly totals, mix, muscle balance, 12-week consistency, records and lifetime totals. |
| get_plans read | All saved plans and which one is active. |
| search_exercises read | The 256-entry library plus the user's own exercises. Filter by name, kind, muscle or equipment. |
| propose_changes write | A summary plus a list of actions (below), sent to the user's app. |
| add_coach_note write | A review or tip saved in the app (Progress and Your AI coach). |
| log_workout write | A workout the user told you about that the watch missed, from the last 60 days. |
| get_proposal_status read | Whether recent proposals were applied or declined, and what changed. |
The actions envelope
The same format works for connector writes and chat replies. Use only the actions you need.
{"setsage":1,"summary":"one line on what you changed and why","actions":[
{"type":"set_target","exercise":"Bench press","day":"Push A","sets":3,"reps":8,"weight_kg":62.5,"rest_sec":120},
{"type":"swap_exercise","day":"Legs","from":"Back squat","to":"Goblet squat"},
{"type":"add_exercise","day":"Legs","exercise":"Calf raise","sets":3,"reps":12,"weight_kg":40},
{"type":"remove_exercise","day":"Legs","exercise":"Leg extension"},
{"type":"schedule","training_days":["Mon","Wed","Fri"],"next_day":"Legs"},
{"type":"new_plan","make_active":true,"plan":{"name":"Plan name","days":[{"name":"Day A","exercises":[
{"exercise":"Back squat","sets":3,"reps":5,"weight_kg":80,"rest_sec":180},{"exercise":"Plank","sets":3,"seconds":45}]}]}},
{"type":"log_workout","date":"2026-09-27","name":"Spin class","minutes":45,"exercises":[{"exercise":"Indoor cycling","sets":[{"seconds":2700}]}]},
{"type":"note","title":"Week review","text":"What you noticed and what to focus on"}
]}
update_plan takes a plan like new_plan and rewrites the active plan in place. Days can be named ("Push A") or numbered ("Day 2"). Exercise names are matched to the library, and unknown names become the user's own exercises.
Units and rules
- Weights are in kg, distances in km, times in minutes unless named (
seconds,rest_sec), and heart rate in bpm. The user's smallest weight step is inprofile.weightStepKg(often 0.5 kg). - A weight target can rise at most 10% in one change. Bigger asks are capped and the user is told.
- No action can edit or delete history.
log_workoutonly adds, and only for things the user told you they did. - Sets must be 1–20, reps 1–100 and rest 0–600 s. Anything outside that range is clamped.
- The user's access setting decides what happens next.
read-onlyrefuses writes,ask-firstwaits for review, andapply-and-tellapplies with undo. It is inprofile.agentAccess. - Explain your changes to the user in the conversation too. The app shows them your
summary.
Privacy
The phone builds everything an agent can read from the user's sharing switches. Plans and schedule are always included. Workouts, heart rate, body details and notes are optional. Names and email addresses are never included. See the privacy policy.
← SetSage home · SetSage is made by Check Zanas Limited (Scotland, SC874025). Developers: hello.setsage@gmail.com.