WROUGHT

Connect it

Two things to set up. The AI takes a minute; the watch takes two.

1 · Put WROUGHT inside your AI

WROUGHT is an MCP server, which means any assistant that speaks MCP can use it — you add one URL and sign in once. After that it is simply there, in every conversation, forever.

The URL

https://wrought.fit/mcp

ChatGPT

  1. Settings → Connectors → Add custom connector.
  2. Paste the URL above. Leave authentication as OAuth.
  3. Sign in when the WROUGHT page appears. That is the only time you will see it.

Claude

  1. Settings → Connectors → Add custom connector.
  2. Paste the URL. Claude registers itself and opens the sign-in.

Anything else

Any MCP client works — the server advertises OAuth 2.1 with dynamic client registration at /.well-known/oauth-authorization-server, so a conforming client needs nothing but the URL.

Then just talk to it:

"eggs and black coffee, 182 on the scale"
"pushed 40 minutes upper body, bench 3x8 at 80"
"how's the month looking?"
"what should I eat, I've got 20 minutes"
"my left knee goes if I squat below parallel"   ← said once, remembered forever

2 · Let your watch do the boring half

Sleep, steps, resting heart rate, weight, and every run you have ever tracked should not be things you type. Connect once and they arrive on their own overnight.

You only need one connection. Not eight. Apple Health and Health Connect are already collecting everything else on your phone — Nike Run Club, Strava, Peloton, Oura, Whoop, Samsung Health and Fitbit all write into whichever one you have. Connect that, and the rest comes with it. So the only question is which phone you carry.
The two doors
iPhone / Apple Watch Apple Health — set up below
Samsung / Android / Pixel Health Connect — set up below
Rides through them, free
Watches & rings Oura, Whoop, Garmin, Polar, Fitbit, Samsung Health
Running & gym apps Strava, Nike Run Club, Peloton, Strong, Hevy
Scales Withings, Renpho, Eufy — weight, body fat, lean mass
Blood pressure Omron, Withings, Beurer
Continuous glucose Libre, Dexcom, Levels, Lingo
Bloodwork Read the numbers off the sheet to your AI, or POST them
Glucose against what you actually ate. In one place, on one timeline. Almost nobody can see that, and it's the fastest way to learn which of your meals spike you — not which meals spike a stranger in a study. Same for bloodwork: labs land as a PDF twice a year and vanish into an inbox. Kept here they become a line instead of a snapshot, sitting next to the training and the food that produced them.
Why it works by push, not pull. Neither Apple Health nor Health Connect has a cloud API — no entitlement, no partner programme, no price at which any server can read your watch directly. The data lives on your phone and leaves only if your phone sends it. Every "Apple Health integration" you have ever used is this underneath; most of them just do not say so. Nike Run Club is stronger still: it has had no public API for anyone since 2018, so going through your phone is not a compromise — it is the only route that exists.

Get your device key

Sign in to mint a key for this phone.

Option A — the Shortcut (free, five taps)

  1. Open Shortcuts on the iPhone → Automation → new Personal Automation.
  2. Trigger: Time of Day → 11:00 pm → Run Immediately.
  3. Add Find Health Samples. Set it to Steps, today. Repeat the action for Sleep Analysis, Resting Heart Rate, Heart Rate Variability, Active Energy and Body Mass.
  4. Add Get Contents of URL, method POST, pointed at https://wrought.fit/ingest.
  5. Headers: Authorization: Bearer YOUR_KEY and Content-Type: application/json.
  6. Request body → JSON, in this shape:
{
  "source": "apple_health",
  "metrics": [
    { "metric": "steps",         "value": 8412, "unit": "count", "measured_at": "2026-08-08T23:00:00Z" },
    { "metric": "sleep_minutes", "value": 402,  "unit": "min",   "measured_at": "2026-08-08T07:00:00Z" },
    { "metric": "resting_hr",    "value": 54,   "unit": "bpm",   "measured_at": "2026-08-08T07:00:00Z" },
    { "metric": "weight_kg",     "value": 82.6, "unit": "kg",    "measured_at": "2026-08-08T07:15:00Z" }
  ]
}

Run it once to check, then forget about it. Re-sending the same night twice is harmless — duplicates are dropped on arrival, so a Shortcut that fires twice never doubles your sleep.

Option B — Health Auto Export (no building)

The Health Auto Export app on the App Store posts the same data on a schedule with nothing to assemble. Point its REST endpoint at /ingest, add the same Authorization: Bearer header, and WROUGHT understands its format natively.

Option C — Android

Health Connect is built into Android 14 and up, and is a free Play Store install below that. Turn on writing to Health Connect inside Samsung Health, Fitbit and Nike Run Club — that is the step that puts everything in one place. Then use Health Sync, or a Tasker / Macrodroid job, to post to /ingest once a night with the same bearer header and the same JSON body, with "source": "health_connect".

Runs and rides

Add a workouts array alongside metrics and every run, ride or class lands in your training log next to the lifts — so a week of running does not read as a week of doing nothing:

"workouts": [
  { "kind": "Run",  "minutes": 32, "distance_km": 5.4, "occurred_at": "2026-08-08T18:00:00Z" },
  { "kind": "Ride", "duration_s": 3600, "distance_m": 32000 }
]

Get the verdict on your lock screen

One extra action in the same Shortcut. The reply to your nightly push contains that day's verdict — so after Get Contents of URL, add Show Notification and set the body to notification from the response. That is the whole thing: no app, no push certificates, no permissions to grant.

Get Contents of URL  →  https://wrought.fit/ingest
Get Dictionary Value →  notification      (from Contents of URL)
Show Notification    →  Wrought           (body: Dictionary Value)

You'll also get it by email at 10pm if you'd rather. Worth knowing why it works this way: an MCP server can never push into ChatGPT or Claude — the protocol is strictly request-and-reply, so nothing on our side can make your assistant speak first. But your phone is already calling us every night. So it carries the message home.

Rings, straps and scales

Oura, Whoop, Fitbit, Garmin, Polar, Strava and Withings all have real cloud APIs and will connect directly over OAuth — those are a build item here, not something waiting on you. Direct links buy extra depth (Oura's sleep staging, Strava's per-split pace, Whoop's strain), but they are an upgrade rather than the entry price: all of them already reach WROUGHT through your phone today.

Your data, and the way out

Everything lives in one Supabase database with row-level security, so your rows are reachable only by you. A device key can write health data and nothing else — it cannot read anything back and cannot touch your login. Revoke a key here and the phone using it stops working immediately. Delete your account and the rows go with it.

Take all of it, whenever you like

A hub you can't leave is a trap. The pitch here is "give us years of your life and we'll remember it" — and the only thing that makes that a reasonable ask is being able to take every row back, any day, without asking anyone.

GET /api/export — every event, set, metric, session, routine, goal and verdict as JSON. ?format=csv for spreadsheets, ?table=sets for one slice. Credentials are the only thing deliberately left out.

Anything else that measures you

/ingest is a plain documented endpoint, not a private protocol. Anything that can POST JSON can feed this — a script, a sensor, a spreadsheet, a machine you built yourself. That's what makes it a hub rather than an app with integrations.