trackmyage

Agent access over MCP

TrackMyAge runs an MCP server, so an AI assistant you already use can work with your health data directly. Connect it once and your agent can read your body age, sleep, training, meals, weight and blood markers, and log meals, weights and daily check-ins on your behalf. Nothing is shared with anyone else. The connection is scoped to your own account by the key you give it.

Endpoint
https://app.trackmyage.com/api/mcp
Transport
Streamable HTTP. There is no SSE endpoint.
Authentication
Authorization: Bearer <your key>
Where to get a key
In the app, open Settings, then Agent access. The key is shown once when you generate it.

The key works while your account is active. Requests from an account that is not are refused.

Set up your client

Every snippet here shows the placeholder tma_YOUR_KEY. Replace it with your own key. Your real key is shown once, at the moment you generate it in Settings, then Agent access, and cannot be read back afterwards.

Claude, custom connector

In Claude, open Settings, then Connectors, then Add custom connector. Give it the URL below and the same bearer header.

https://app.trackmyage.com/api/mcp
Authorization: Bearer tma_YOUR_KEY

Claude Code

claude mcp add --transport http trackmyage https://app.trackmyage.com/api/mcp --header "Authorization: Bearer tma_YOUR_KEY"

claude.ai and other JSON configured clients

{
  "mcpServers": {
    "trackmyage": {
      "url": "https://app.trackmyage.com/api/mcp",
      "headers": { "Authorization": "Bearer tma_YOUR_KEY" }
    }
  }
}

ChatGPT

ChatGPT connectors accept a remote MCP server URL. Open Settings, then Connectors, then Add, and give it the URL below with the same bearer header.

https://app.trackmyage.com/api/mcp
Authorization: Bearer tma_YOUR_KEY

Try it

Once the connection is live, paste this into your agent.

Log my lunch: chicken salad with olive oil, roughly 550 kcal, 40g protein. Then show my age snapshot.

Tools

10 tools. Every one of them is scoped to the account the key belongs to. No tool takes a user as an argument.

Tool What it does Inputs
get_age_snapshot The headline numbers: Body Age, Aging Speed, the chronological-age comparison and the inputs behind them. Use this first to see where the user stands today. None
get_daily_metrics Daily wearable metrics per calendar day: VO2 max, fitness age, body battery, resting heart rate and overnight HRV.
  • days whole number, 1 to 90. Defaults to 30.
get_sleep Per-night sleep: duration, score, resting heart rate, HRV and stage breakdown. One row per night, deduplicated across wearables.
  • days whole number, 1 to 90. Defaults to 14.
get_activity Per-day activity summary: number of sessions, calories burned, total duration and intensity minutes.
  • days whole number, 1 to 90. Defaults to 30.
get_meals Logged meals with calories and macros, one row per meal.
  • days whole number, 1 to 31. Defaults to 7.
log_meal Log a meal with optional calories and macros. The client estimates the numbers; the server stores what it is given and does not estimate.
  • name text, 1 to 120 characters. Required.
  • date YYYY-MM-DD. Defaults to today.
  • time HH:MM on a 24 hour clock. Defaults to now.
  • calories whole number, 0 to 5000.
  • protein_g number, 0 to 1000.
  • carbs_g number, 0 to 1000.
  • fat_g number, 0 to 1000.
  • sugar_g number, 0 to 1000.
log_weight Record a body weight in kilograms for a day. Overwrites any earlier reading for the same day.
  • weight_kg number, 20 to 400. Required.
  • date YYYY-MM-DD. Defaults to today.
get_weights Body weight history as a date and kilograms series.
  • days whole number, 1 to 365. Defaults to 90.
get_bloodwork The latest reading of every blood marker on file, with reference range and category. None
log_checkin Record how the user feels today: mood and energy, each on a 1 (worst) to 5 (best) scale. An omitted field keeps its existing value.
  • mood whole number, 1 to 5.
  • energy whole number, 1 to 5.
  • date YYYY-MM-DD. Defaults to today.

Limits and privacy

Requests are limited to 120 per hour per account. Connection handshakes and notifications do not count against it. Over the limit, the endpoint answers 429 with a Retry-After header saying how long to wait.

Testing by hand with curl needs an Accept header naming both content types, or the endpoint answers 406: -H 'Accept: application/json, text/event-stream'. MCP clients send it for you.

Your key grants full read and write access to your health data. Treat it like a password. Do not paste it into a shared document or a public chat.

The key is stored as a hash, so it cannot be read back after it is shown. If you lose it, generate a new one, which replaces the old one. You can revoke a key at any time in Settings, and it stops working on the next request.