# dev.anatome/anatome

> Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.

- name: dev.anatome/anatome
- version: 2.6.0
- connection class: R0 (autonomous)
- trust: 79/100 flags: no-repository
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.anatome%2Fanatome
- tools: https://api.protogrid.dev/v1/servers/dev.anatome%2Fanatome/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "anatome": {
      "type": "http",
      "url": "https://anatome.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% ~updated-69d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 36 of 36 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 16 of 36 tools declare all four hints; missing: search_exercises (destructiveHint); list_routines (destructiveHint); get_routine (destructiveHint); …
- pass `tools.token_cost`: about 4,700 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 36, about 4,700 tokens to load them all
- tool set hash: 1be1b15f613571fcc6f975a687af1c9d
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.anatome/anatome.svg)](https://protogrid.dev/servers/dev.anatome/anatome)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://anatome.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (36)

- `ai_meal_plan`: Draft a meal plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.
- `ai_parse_meal`: Parse free-text meal description ('2 eggs and toast with butter') into structured items with grams + macros.
- `ai_photo_macros`: 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).
- `ai_workout_plan`: Draft a workout plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.
- `delete_meal`: Delete a logged meal by id (soft delete, 30-day recovery window). Requires X-App-User-Id.
- `delete_workout`: Delete a logged workout and its sets by id (soft delete, 30-day recovery window).
- `export_data`: 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.
- `generate_muscle_image`: Render an SVG diagram of the human body with muscles highlighted in arbitrary colors. Returns SVG.
- `get_body_metrics`: 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.
- `get_cardio_activities`: List the current app user's cardio activities (most recent first).
- `get_events`: 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.
- `get_exercise`: Fetch one exercise by name, id, or random.
- `get_meals`: List the current app user's meals for a date range.
- `get_muscle_recovery`: 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.
- `get_nutrition_daily`: 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.
- `get_profile`: Get the current app user's fitness profile (height, weight, macro + water goals, diet, active sports). Requires an app user context.
- `get_progress`: 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.
- `get_routine`: 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.
- `get_water`: List the current app user's water intake entries for a date range. Requires X-App-User-Id.
- `get_workouts`: List the current app user's workouts (most recent first).
- `instantiate_routine`: Schedule the signed-in user's routine into planned workouts from start_date. Coach assignment of another user is REST-only.
- `list_muscles`: List all 23 supported muscle slugs with anatomical names.
- `list_routines`: 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.
- `log_body_metric`: 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.
- `log_cardio`: Log a cardio activity (run/bike/swim/etc.) for the current app user. Supports duration, distance, HR, power, calories.
- `log_meal`: Log a meal (calories + macros + optional ingredients) for the current app user.
- `log_water`: Log water intake (ml) for the current app user.
- `log_workout`: Log a workout with exercise sets (strength or cardio unified). Requires an app user context.
- `lookup_barcode`: Lookup a food product by EAN/UPC barcode.
- `my_training_context`: 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.
- `resolve_exercise`: Resolve an exercise name into primary/secondary muscle layers for rendering.
- `search_exercises`: 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`.
- `search_foods`: Search food products by name (Open Food Facts + USDA). Returns macros per 100g.
- `update_meal`: 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.
- `update_sets`: 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.
- `upsert_profile`: 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.
