Write a daily strength coaching report from watch data over MCP

Onur Ergüden has ChatGPT read a computed brief from his own MCP server each day and write the coaching text; in six scheduled runs over three days the save was blocked, so the server now sends a numbers-only fallback.

Done withChatGPT· Oct 23, 2026

What they did

Ergüden built GymRap, a single-user strength coach. A small Kotlin bridge uploads 23 record types from his watch and phone via Health Connect to a Cloudflare Worker, which computes a readiness score against his 30-day baseline, sleep debt, training targets and weekly sets per muscle group in tested code. The Worker is a remote MCP server with 13 tools behind OAuth scopes. ChatGPT connects to it on a schedule, reads the structured brief and writes only the coaching words, saving them with a tool that checks the text against a schema and ignores repeats of the same report key. The server then emails the report to a fixed address; the model can ask for a send but cannot choose the recipient.

How it went

The first version relied on ChatGPT completing the save, and it did not always. In six scheduled runs over three days ChatGPT's safety layer blocked the save tool; in the chat it looked as if the tool had been called, but the server log showed nothing arrived. He changed the design so a cron check sends a numbers-only report if no coaching text lands by a deadline, and attaches late text to the web report instead of sending a second email. Running cost is nothing beyond his existing ChatGPT subscription. The backend has 137 tests at the published commit.

Worth knowing

Do not let a step the model can be blocked from be the only path to the result. Logging each tool call's name and outcome, without arguments, is what let him tell a refused call from one never made. The readiness score is his own formula, not a medical measure.

Try it

With ChatGPT· 4 parts to fill in

Each morning, call [my MCP server]'s read tools to get today's brief of [health and training metrics] with the targets it has already computed. Do not calculate or change any number yourself. Write a short coaching note that explains the numbers, what to train today and one thing to watch, as JSON matching [the coach schema]. Save it with [the save tool] using today's report key, and if the save fails or you are unsure it arrived, say so plainly instead of retrying with a new key. Stop after one successful save.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related