# fit.benperlman.dev Agent-first fitness tracker: the agent decides meals, loads and session plans; this service stores them and shows them to the user. Nutrition, body composition, training, per-location equipment, health sync. Authentication: `Authorization: Bearer fitk_...` on every request. MCP: POST https://fit.benperlman.dev/mcp (Streamable HTTP, stateless; send Accept: application/json, text/event-stream). Tools: log_weighin, get_body_trend, log_meal, update_meal, delete_meal, log_water, log_supplement, log_checkin, get_day_summary, get_week_summary, get_targets, update_targets, search_exercises, create_exercise, update_exercise, get_exercise_history, list_routines, create_routine, get_next_workout, start_session (with your plan), plan_workout, log_set, end_session, get_workout, list_workouts, import_workout, plate_math, get_equipment, add_equipment, remove_equipment, list_locations, create_location, pair_display, get_live_state, start_rest, skip_rest, get_health_sync. Session flow: get_equipment -> get_next_workout (context) -> start_session { routine, plan: [...] } -> log_set per set -> end_session. Displays: a TV/iPad/phone opens https://fit.benperlman.dev/tv and shows a 4-char code; pair_display(code) attaches it to the user, and it then follows the live workout over WebSocket (current set, plates, next, rest timer). start_session also returns display_url (/tv?code=XXXXXX) for a QR. Touch displays can log sets, adjust targets, skip rest and end. Web app: https://fit.benperlman.dev/app (sign in by pasting an API token; dashboard of the week, body trend, lifts). REST (JSON): base https://fit.benperlman.dev/v1 GET /me POST /weigh-ins GET /weigh-ins?from&to&limit GET /body/trend?date POST /meals GET /meals?date PATCH /meals/:id DELETE /meals/:id POST /water POST /supplements POST /checkins GET /checkins/:date GET /summary/day?date GET /summary/week?week_start GET /targets PUT /targets GET /exercises?q&equipment&muscle&limit POST /exercises GET /exercises/:id PATCH /exercises/:id GET /exercises/:id/history GET /routines POST /routines GET /workouts/next GET /workouts/live GET /workouts?from&to&limit GET /workouts/:id POST /workouts (start, with plan) PUT /workouts/:id/plan POST /workouts/:id/sets POST /sets (live) POST /workouts/:id/end POST /workouts/import GET /locations POST /locations GET /equipment?location POST /equipment PATCH /equipment/:id DELETE /equipment/:id GET /plate-math?weight&unit&bar&location GET /health/latest POST /ingest/hae (Health Auto Export REST automation target) GET /export GET /export/:table.csv Times: ISO 8601 with offset is exact; '2026-10-26 14:10' is local to the user's time zone; date alone means noon. Units: body weight default lb, loads default kg; pass `unit` to override. Stored canonical in kg.