Two things to set up. The AI takes a minute; the watch takes two.
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.
https://wrought.fit/mcp
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
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.
| 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 |
Sign in to mint a key for this phone.
https://wrought.fit/ingest.Authorization: Bearer YOUR_KEY and Content-Type: application/json.{
"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.
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.
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".
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 }
]
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.
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.
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.
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.
/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.