{"name":"dev.anatome/anatome","slug":"anatome","title":null,"description":"Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.","url":"https://mcp.market/server/anatome","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T07:02:03.797Z","last_ok_at":"2026-09-24T07:02:03.797Z","latency_ms":171},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://anatome.dev","version":"2.6.0","remotes":[{"type":"streamable-http","url":"https://anatome.dev/mcp"}],"packages":[],"tools":[{"name":"ai_meal_plan","description":"Draft a meal plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"days":{"type":"number"},"goal":{"type":"string"},"diet_type":{"type":"string"},"daily_calories":{"type":"number"},"confirm":{"type":"boolean"},"health":{"type":"object","properties":{"allergies":{"type":"array","items":{"type":"string"}},"injuries":{"type":"array","items":{"type":"string"}},"pregnancy":{"type":"boolean"},"medications":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}}}}},"required":["days","confirm"]}},{"name":"ai_parse_meal","description":"Parse free-text meal description ('2 eggs and toast with butter') into structured items with grams + macros.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"text":{"type":"string"},"locale":{"type":"string"}},"required":["text"]}},{"name":"ai_photo_macros","description":"Analyze a meal image and estimate foods + macros. Pass exactly one of image_url or image_base64. Vision model, capped separately from the text AI budget (free tier 1/mo).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"image_url":{"type":"string","description":"Public URL of the image. Mutually exclusive with image_base64."},"image_base64":{"type":"string","description":"Base64-encoded image bytes, no data: prefix. Mutually exclusive with image_url."}},"oneOf":[{"required":["image_url"]},{"required":["image_base64"]}]}},{"name":"ai_workout_plan","description":"Draft a workout plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"days_per_week":{"type":"number"},"goal":{"type":"string"},"experience":{"type":"string"},"confirm":{"type":"boolean"},"health":{"type":"object","properties":{"allergies":{"type":"array","items":{"type":"string"}},"injuries":{"type":"array","items":{"type":"string"}},"pregnancy":{"type":"boolean"},"medications":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}}}}},"required":["days_per_week","confirm"]}},{"name":"delete_meal","description":"Delete a logged meal by id (soft delete, 30-day recovery window). Requires X-App-User-Id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"meal_id":{"type":"string"}},"required":["meal_id"]}},{"name":"delete_workout","description":"Delete a logged workout and its sets by id (soft delete, 30-day recovery window).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_id":{"type":"string"}},"required":["workout_id"]}},{"name":"export_data","description":"Export the signed-in user's data as JSON. Pass `domains` (e.g. meals,workouts) or confirm:true for a full copy. Identity comes from the token, never a caller-supplied user id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domains":{"type":"string","description":"Comma-separated subset, e.g. 'meals,workouts'."},"confirm":{"type":"boolean","description":"Required true for a full dump when domains is omitted."}}}},{"name":"generate_muscle_image","description":"Render an SVG diagram of the human body with muscles highlighted in arbitrary colors. Returns SVG.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"gender":{"type":"string","enum":["male","female"]},"view":{"type":"string","enum":["front","back","dual"]},"layers":{"type":"array"}},"required":["layers"]}},{"name":"get_body_metrics","description":"List the current app user's body metrics / measurements (weight, height, bicep, body fat, etc.), most recent first. Filter by metric_type (e.g. 'weight', 'bicep') and/or a date range. Requires an app user context.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"metric_type":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"limit":{"type":"number","default":100}}}},{"name":"get_cardio_activities","description":"List the current app user's cardio activities (most recent first).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"number","default":20},"date_from":{"type":"string"},"date_to":{"type":"string"}}}},{"name":"get_events","description":"What changed since a cursor, including DELETES, which a list read cannot show. Returns {seq, entity, id, action}. Pass the last seq back as `since` on the next call to receive only entries after it; omit `since` for a first sync. seq is a global counter: gaps in your feed are other accounts' events, not lost data. Judge completeness from has_more, not seq.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"since":{"type":"string","description":"Cursor from the previous call's last seq. Omit for a first sync."},"entities":{"type":"string","description":"Optional comma-separated filter, e.g. 'workout,meal'."},"limit":{"type":"number","default":100}}}},{"name":"get_exercise","description":"Fetch one exercise by name, id, or random.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string"},"random":{"type":"boolean"}}}},{"name":"get_meals","description":"List the current app user's meals for a date range.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date_from":{"type":"string"},"date_to":{"type":"string"}}}},{"name":"get_muscle_recovery","description":"Per-muscle 7-day recovery % (Fitbod parity) — the 'what should I train today?' input. Recommends fresh muscles. Pass include_bodyweight=true to add the user's bodyweight to bodyweight exercises so recovery reflects real load.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"include_bodyweight":{"type":"boolean","description":"If true, add the user's bodyweight to bodyweight exercises (requires a logged weight or profile.weight)."}}}},{"name":"get_nutrition_daily","description":"Per-day calories, macros, fiber/sugar/sodium/alcohol, water, targets and adherence % over a date range (default: last 7 days). The 'how am I tracking today?' tool. Requires X-App-User-Id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date_from":{"type":"string","description":"YYYY-MM-DD"},"date_to":{"type":"string","description":"YYYY-MM-DD (defaults to the user's today, in their timezone)"}}}},{"name":"get_profile","description":"Get the current app user's fitness profile (height, weight, macro + water goals, diet, active sports). Requires an app user context.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_progress","description":"Any progression metric for the current user — pick one in `metric`. training_load is acute:chronic (>1.5 ramping too fast, <0.8 detraining); muscle_recovery is per-muscle freshness; correlate takes metric_a vs metric_b. Only completed sets count.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"metric":{"type":"string","enum":["prs","volume","one_rep_max","streaks","adherence","training_load","weight_trend","body_delta","muscle_recovery","cardio_prs","goal_trajectory","nutrition_balance","correlate","compare_periods"]},"exercise":{"type":"string","description":"Required for prs; optional filter for volume, one_rep_max and compare_periods."},"from":{"type":"string","description":"YYYY-MM-DD"},"to":{"type":"string","description":"YYYY-MM-DD"},"bucket":{"type":"string","enum":["day","week","month"]},"group_by":{"type":"string","enum":["exercise","muscle"],"description":"volume only"},"include_bodyweight":{"type":"boolean","description":"Add the user's bodyweight to bodyweight exercises (pull-ups, dips). prs, volume and muscle_recovery."},"days":{"type":"number","description":"training_load window"},"sport":{"type":"string","description":"training_load and cardio_prs"},"method":{"type":"string","description":"training_load: auto | power | hr | rpe"},"window":{"type":"number","description":"weight_trend smoothing window"},"goal_id":{"type":"string","description":"goal_trajectory"},"metric_a":{"type":"string","description":"correlate"},"metric_b":{"type":"string","description":"correlate"}},"required":["metric"]}},{"name":"get_routine","description":"Fetch a single curated routine by slug with all days + slots fully expanded (exercises, sets, reps ranges, rest, superset groupings). The 'give me a full program' tool.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"get_water","description":"List the current app user's water intake entries for a date range. Requires X-App-User-Id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date":{"type":"string"},"date_from":{"type":"string"},"date_to":{"type":"string"}}}},{"name":"get_workouts","description":"List the current app user's workouts (most recent first).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"number","default":20},"date_from":{"type":"string"},"date_to":{"type":"string"}}}},{"name":"instantiate_routine","description":"Schedule the signed-in user's routine into planned workouts from start_date. Coach assignment of another user is REST-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"routine_id":{"type":"string"},"start_date":{"type":"string","description":"YYYY-MM-DD"},"cadence_days":{"type":"number","default":1}},"required":["routine_id","start_date"]}},{"name":"list_muscles","description":"List all 23 supported muscle slugs with anatomical names.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_routines","description":"Browse the curated workout routine library (PPL, upper/lower, full-body, 5x5, etc.). Filter by difficulty, goal, split_type, days_per_week. Returns minimal list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"difficulty":{"type":"string","enum":["beginner","intermediate","advanced"]},"goal":{"type":"string","enum":["strength","hypertrophy","general","endurance","weight_loss"]},"split_type":{"type":"string","enum":["full_body","upper_lower","push_pull_legs","push_pull","bro","custom"]},"days_per_week":{"type":"number"},"limit":{"type":"number","default":20}}}},{"name":"log_body_metric","description":"Log a body measurement. metric_type: weight (kg), height (cm), body_fat (%), muscle_mass (kg), waist/chest/bicep/forearm/hip/thigh/calf/neck/shoulder (cm), bmi, resting_hr (bpm). Logging weight enables bodyweight-inclusive volume analytics.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"date":{"type":"string"},"metric_type":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string"},"notes":{"type":"string"}},"required":["date","metric_type","value","unit"]}},{"name":"log_cardio","description":"Log a cardio activity (run/bike/swim/etc.) for the current app user. Supports duration, distance, HR, power, calories.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"date":{"type":"string"},"sport":{"type":"string"},"title":{"type":"string"},"duration_seconds":{"type":"number"},"distance_m":{"type":"number"},"avg_hr":{"type":"number"},"calories":{"type":"number"},"notes":{"type":"string"}},"required":["date","sport"]}},{"name":"log_meal","description":"Log a meal (calories + macros + optional ingredients) for the current app user.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"date":{"type":"string"},"meal_type":{"type":"string"},"name":{"type":"string"},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fats":{"type":"number"}},"required":["date","name","calories"]}},{"name":"log_water","description":"Log water intake (ml) for the current app user.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"date":{"type":"string"},"amount_ml":{"type":"number"}},"required":["date","amount_ml"]}},{"name":"log_workout","description":"Log a workout with exercise sets (strength or cardio unified). Requires an app user context.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"date":{"type":"string"},"title":{"type":"string"},"primary_sport":{"type":"string"},"sets":{"type":"array","items":{"type":"object","properties":{"exercise_name":{"type":"string"},"set_number":{"type":"number"},"reps":{"type":"number"},"weight":{"type":"number"},"duration_seconds":{"type":"number"},"distance_m":{"type":"number"},"rpe":{"type":"number"},"rest_seconds":{"type":"number"},"notes":{"type":"string"},"completed":{"type":"boolean"}}}}},"required":["date"]}},{"name":"lookup_barcode","description":"Lookup a food product by EAN/UPC barcode.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"barcode":{"type":"string"}},"required":["barcode"]}},{"name":"my_training_context","description":"Returns a slice of the signed-in user's training picture. Default domains are workouts and today's nutrition. Pass `domains` to add checkin, notes or profile, or `domains=all`. Identity comes from the token, not a caller-supplied user id.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_limit":{"type":"number","default":10},"domains":{"type":"string","description":"Comma-separated subset. Accepted: workouts, nutrition, checkin, notes, profile, or 'all'. Default: workouts,nutrition."}}}},{"name":"resolve_exercise","description":"Resolve an exercise name into primary/secondary muscle layers for rendering.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"exercise":{"type":"string"}},"required":["exercise"]}},{"name":"search_exercises","description":"Search 873 exercises by name with muscle/equipment/level filters. Rows are lean (name, ext_id, equipment, level, muscles) — enough to pick one; get_exercise returns instructions and media. Paginates: pass next_cursor back as `cursor`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string"},"muscle":{"type":"string"},"equipment":{"type":"string"},"level":{"type":"string"},"limit":{"type":"number","default":20},"cursor":{"type":"string","description":"next_cursor from the previous response. Omit for the first page."},"fields":{"type":"string","description":"Extra fields, comma-separated, or `all`."}},"required":["q"]}},{"name":"search_foods","description":"Search food products by name (Open Food Facts + USDA). Returns macros per 100g.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string"},"locale":{"type":"string"},"page_size":{"type":"number"}},"required":["q"]}},{"name":"update_meal","description":"Correct a previously logged meal — name, macros, nutrients, portion, date or meal_type. Pass only the fields you want to change. Requires X-App-User-Id.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"idempotency_key":{"type":"string"},"meal_id":{"type":"string"},"date":{"type":"string"},"meal_type":{"type":"string"},"name":{"type":"string"},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fats":{"type":"number"},"fiber":{"type":"number"},"sugar":{"type":"number"},"saturated_fat":{"type":"number"},"sodium":{"type":"number","description":"mg"},"alcohol":{"type":"number","description":"g of ethanol"}},"required":["meal_id"]}},{"name":"update_sets","description":"Correct sets already logged, by set id (log_workout returns them). Relabel the exercise, fix weight/reps/rpe, mark completed, add notes, or delete. Selection and change are separate, so a subset can be relabelled. Adding a set is log_workout, not this.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"set_ids":{"type":"array","items":{"type":"string"}},"exercise":{"type":"string","description":"Catalog name, ext_id, or the user's own words for a custom movement."},"weight":{"type":"number"},"reps":{"type":"number"},"rpe":{"type":"number"},"completed":{"type":"boolean"},"notes":{"type":"string"},"delete":{"type":"boolean"}},"required":["set_ids"]}},{"name":"upsert_profile","description":"Upsert the current app user's fitness profile. Set `timezone` first: every daily total, streak and adherence window is bucketed by it and defaults to UTC. `weight` doubles as the fallback bodyweight for bodyweight-inclusive volume when no dated weight metric exists.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"goal":{"type":"string"},"height":{"type":"number","description":"cm"},"weight":{"type":"number","description":"kg"},"unit_system":{"type":"string","enum":["metric","imperial"]},"language":{"type":"string"},"timezone":{"type":"string","description":"IANA zone name, e.g. 'Europe/Warsaw'."},"daily_calorie_goal":{"type":"number"},"daily_protein_goal":{"type":"number"},"daily_carbs_goal":{"type":"number"},"daily_fats_goal":{"type":"number"},"daily_water_goal_ml":{"type":"number"},"daily_fiber_goal":{"type":"number","description":"g/day to reach"},"daily_sugar_limit":{"type":"number","description":"g/day to stay under"},"daily_sodium_limit":{"type":"number","description":"mg/day to stay under"},"diet_type":{"type":"string"},"meals_per_day":{"type":"number"},"active_sports":{"type":"array","items":{"type":"string"}}}}}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-23T17:17:23.685Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T17:17:23.745Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1483ms"]},"poisoning":{"score":15,"max":15,"notes":["36 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 4 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://anatome.dev/mcp","reachable":true,"authRequired":false,"latencyMs":1483,"serverInfo":{"name":"anatome","version":"2.7.1"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://anatome.dev/favicon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}