Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,521Letters: 13Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:b3ab1b726abf4584b4991e28664330ef5ee1d35db76b73d4d2a593a8400aac7f
What it is
What a remote MCP server returned when asked what it offers: 36 tools

The blob, as servednamed by its sha256

{ "instructions": "Fitness and nutrition data. Stateless reference tools (exercise search, muscle diagrams, food lookup, calculators) work with no key. Per-user tools need an identity: sign in when your host offers it, or mint a free key at POST /v1/demo/key (no signup) and send it with X-App-User-Id. Read the anatome://write-policy resource before your first write: units are canonical SI and unknown field names are rejected, not dropped.", "tools": [ { "description": "Draft a meal plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.", "inputSchema": { "properties": { "confirm": { "type": "boolean" }, "daily_calories": { "type": "number" }, "days": { "type": "number" }, "diet_type": { "type": "string" }, "goal": { "type": "string" }, "health": { "properties": { "allergies": { "items": { "type": "string" }, "type": "array" }, "conditions": { "items": { "type": "string" }, "type": "array" }, "injuries": { "items": { "type": "string" }, "type": "array" }, "medications": { "items": { "type": "string" }, "type": "array" }, "pregnancy": { "type": "boolean" } }, "type": "object" } }, "required": [ "days", "confirm" ], "type": "object" }, "name": "ai_meal_plan", "outputSchema": null }, { "description": "Parse free-text meal description ('2 eggs and toast with butter') into structured items with grams + macros.", "inputSchema": { "properties": { "locale": { "type": "string" }, "text": { "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "ai_parse_meal", "outputSchema": null }, { "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).", "inputSchema": { "oneOf": [ { "required": [ "image_url" ] }, { "required": [ "image_base64" ] } ], "properties": { "image_base64": { "description": "Base64-encoded image bytes, no data: prefix. Mutually exclusive with image_url.", "type": "string" }, "image_url": { "description": "Public URL of the image. Mutually exclusive with image_base64.", "type": "string" } }, "type": "object" }, "name": "ai_photo_macros", "outputSchema": null }, { "description": "Draft a workout plan. Not medical advice. confirm:true required. Pass health constraints so the draft can honour them.", "inputSchema": { "properties": { "confirm": { "type": "boolean" }, "days_per_week": { "type": "number" }, "experience": { "type": "string" }, "goal": { "type": "string" }, "health": { "properties": { "allergies": { "items": { "type": "string" }, "type": "array" }, "conditions": { "items": { "type": "string" }, "type": "array" }, "injuries": { "items": { "type": "string" }, "type": "array" }, "medications": { "items": { "type": "string" }, "type": "array" }, "pregnancy": { "type": "boolean" } }, "type": "object" } }, "required": [ "days_per_week", "confirm" ], "type": "object" }, "name": "ai_workout_plan", "outputSchema": null }, { "description": "Delete a logged meal by id (soft delete, 30-day recovery window). Requires X-App-User-Id.", "inputSchema": { "properties": { "meal_id": { "type": "string" } }, "required": [ "meal_id" ], "type": "object" }, "name": "delete_meal", "outputSchema": { "properties": { "deleted": { "type": "string" } }, "type": "object" } }, { "description": "Delete a logged workout and its sets by id (soft delete, 30-day recovery window).", "inputSchema": { "properties": { "workout_id": { "type": "string" } }, "required": [ "workout_id" ], "type": "object" }, "name": "delete_workout", "outputSchema": { "properties": { "deleted": { "type": "string" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "confirm": { "description": "Required true for a full dump when domains is omitted.", "type": "boolean" }, "domains": { "description": "Comma-separated subset, e.g. 'meals,workouts'.", "type": "string" } }, "type": "object" }, "name": "export_data", "outputSchema": null }, { "description": "Render an SVG diagram of the human body with muscles highlighted in arbitrary colors. Returns SVG.", "inputSchema": { "properties": { "gender": { "enum": [ "male", "female" ], "type": "string" }, "layers": { "type": "array" }, "view": { "enum": [ "front", "back", "dual" ], "type": "string" } }, "required": [ "layers" ], "type": "object" }, "name": "generate_muscle_image", "outputSchema": { "properties": { "format": { "type": "string" }, "muscles_rendered": { "type": "array" }, "svg": { "type": "string" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "from": { "type": "string" }, "limit": { "default": 100, "type": "number" }, "metric_type": { "type": "string" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_body_metrics", "outputSchema": { "properties": { "items": { "type": "array" } }, "type": "object" } }, { "description": "List the current app user's cardio activities (most recent first).", "inputSchema": { "properties": { "date_from": { "type": "string" }, "date_to": { "type": "string" }, "limit": { "default": 20, "type": "number" } }, "type": "object" }, "name": "get_cardio_activities", "outputSchema": { "properties": { "items": { "type": "array" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "entities": { "description": "Optional comma-separated filter, e.g. 'workout,meal'.", "type": "string" }, "limit": { "default": 100, "type": "number" }, "since": { "description": "Cursor from the previous call's last seq. Omit for a first sync.", "type": "string" } }, "type": "object" }, "name": "get_events", "outputSchema": null }, { "description": "Fetch one exercise by name, id, or random.", "inputSchema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "random": { "type": "boolean" } }, "type": "object" }, "name": "get_exercise", "outputSchema": null }, { "description": "List the current app user's meals for a date range.", "inputSchema": { "properties": { "date_from": { "type": "string" }, "date_to": { "type": "string" } }, "type": "object" }, "name": "get_meals", "outputSchema": { "properties": { "items": { "type": "array" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "include_bodyweight": { "description": "If true, add the user's bodyweight to bodyweight exercises (requires a logged weight or profile.weight).", "type": "boolean" } }, "type": "object" }, "name": "get_muscle_recovery", "outputSchema": { "properties": { "muscles": { "type": "array" }, "threshold_volume": { "type": "number" }, "window_days": { "type": "number" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "date_from": { "description": "YYYY-MM-DD", "type": "string" }, "date_to": { "description": "YYYY-MM-DD (defaults to the user's today, in their timezone)", "type": "string" } }, "type": "object" }, "name": "get_nutrition_daily", "outputSchema": { "properties": { "days": { "type": "array" }, "from": { "type": "string" }, "limits": {}, "targets": {}, "to": { "type": "string" } }, "type": "object" } }, { "description": "Get the current app user's fitness profile (height, weight, macro + water goals, diet, active sports). Requires an app user context.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_profile", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "bucket": { "enum": [ "day", "week", "month" ], "type": "string" }, "days": { "description": "training_load window", "type": "number" }, "exercise": { "description": "Required for prs; optional filter for volume, one_rep_max and compare_periods.", "type": "string" }, "from": { "description": "YYYY-MM-DD", "type": "string" }, "goal_id": { "description": "goal_trajectory", "type": "string" }, "group_by": { "description": "volume only", "enum": [ "exercise", "muscle" ], "type": "string" }, "include_bodyweight": { "description": "Add the user's bodyweight to bodyweight exercises (pull-ups, dips). prs, volume and muscle_recovery.", "type": "boolean" }, "method": { "description": "training_load: auto | power | hr | rpe", "type": "string" }, "metric": { "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" ], "type": "string" }, "metric_a": { "description": "correlate", "type": "string" }, "metric_b": { "description": "correlate", "type": "string" }, "sport": { "description": "training_load and cardio_prs", "type": "string" }, "to": { "description": "YYYY-MM-DD", "type": "string" }, "window": { "description": "weight_trend smoothing window", "type": "number" } }, "required": [ "metric" ], "type": "object" }, "name": "get_progress", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "slug": { "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_routine", "outputSchema": null }, { "description": "List the current app user's water intake entries for a date range. Requires X-App-User-Id.", "inputSchema": { "properties": { "date": { "type": "string" }, "date_from": { "type": "string" }, "date_to": { "type": "string" } }, "type": "object" }, "name": "get_water", "outputSchema": null }, { "description": "List the current app user's workouts (most recent first).", "inputSchema": { "properties": { "date_from": { "type": "string" }, "date_to": { "type": "string" }, "limit": { "default": 20, "type": "number" } }, "type": "object" }, "name": "get_workouts", "outputSchema": { "properties": { "items": { "type": "array" } }, "type": "object" } }, { "description": "Schedule the signed-in user's routine into planned workouts from start_date. Coach assignment of another user is REST-only.", "inputSchema": { "properties": { "cadence_days": { "default": 1, "type": "number" }, "idempotency_key": { "type": "string" }, "routine_id": { "type": "string" }, "start_date": { "description": "YYYY-MM-DD", "type": "string" } }, "required": [ "routine_id", "start_date" ], "type": "object" }, "name": "instantiate_routine", "outputSchema": null }, { "description": "List all 23 supported muscle slugs with anatomical names.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_muscles", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "days_per_week": { "type": "number" }, "difficulty": { "enum": [ "beginner", "intermediate", "advanced" ], "type": "string" }, "goal": { "enum": [ "strength", "hypertrophy", "general", "endurance", "weight_loss" ], "type": "string" }, "limit": { "default": 20, "type": "number" }, "split_type": { "enum": [ "full_body", "upper_lower", "push_pull_legs", "push_pull", "bro", "custom" ], "type": "string" } }, "type": "object" }, "name": "list_routines", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "date": { "type": "string" }, "idempotency_key": { "type": "string" }, "metric_type": { "type": "string" }, "notes": { "type": "string" }, "unit": { "type": "string" }, "value": { "type": "number" } }, "required": [ "date", "metric_type", "value", "unit" ], "type": "object" }, "name": "log_body_metric", "outputSchema": { "properties": { "date": { "type": "string" }, "id": { "type": "string" }, "metric_type": { "type": "string" }, "value": { "type": "number" } }, "type": "object" } }, { "description": "Log a cardio activity (run/bike/swim/etc.) for the current app user. Supports duration, distance, HR, power, calories.", "inputSchema": { "properties": { "avg_hr": { "type": "number" }, "calories": { "type": "number" }, "date": { "type": "string" }, "distance_m": { "type": "number" }, "duration_seconds": { "type": "number" }, "idempotency_key": { "type": "string" }, "notes": { "type": "string" }, "sport": { "type": "string" }, "title": { "type": "string" } }, "required": [ "date", "sport" ], "type": "object" }, "name": "log_cardio", "outputSchema": { "properties": { "date": { "type": "string" }, "distance_m": { "type": "number" }, "duration_s": { "type": "number" }, "id": { "type": "string" }, "sport": { "type": "string" } }, "type": "object" } }, { "description": "Log a meal (calories + macros + optional ingredients) for the current app user.", "inputSchema": { "properties": { "calories": { "type": "number" }, "carbs": { "type": "number" }, "date": { "type": "string" }, "fats": { "type": "number" }, "idempotency_key": { "type": "string" }, "meal_type": { "type": "string" }, "name": { "type": "string" }, "protein": { "type": "number" } }, "required": [ "date", "name", "calories" ], "type": "object" }, "name": "log_meal", "outputSchema": { "properties": { "calories": { "type": "number" }, "carbs": { "type": "number" }, "date": { "type": "string" }, "fats": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "protein": { "type": "number" } }, "type": "object" } }, { "description": "Log water intake (ml) for the current app user.", "inputSchema": { "properties": { "amount_ml": { "type": "number" }, "date": { "type": "string" }, "idempotency_key": { "type": "string" } }, "required": [ "date", "amount_ml" ], "type": "object" }, "name": "log_water", "outputSchema": { "properties": { "date": { "type": "string" }, "id": { "type": "string" }, "ml": { "type": "number" } }, "type": "object" } }, { "description": "Log a workout with exercise sets (strength or cardio unified). Requires an app user context.", "inputSchema": { "properties": { "date": { "type": "string" }, "idempotency_key": { "type": "string" }, "primary_sport": { "type": "string" }, "sets": { "items": { "properties": { "completed": { "type": "boolean" }, "distance_m": { "type": "number" }, "duration_seconds": { "type": "number" }, "exercise_name": { "type": "string" }, "notes": { "type": "string" }, "reps": { "type": "number" }, "rest_seconds": { "type": "number" }, "rpe": { "type": "number" }, "set_number": { "type": "number" }, "weight": { "type": "number" } }, "type": "object" }, "type": "array" }, "title": { "type": "string" } }, "required": [ "date" ], "type": "object" }, "name": "log_workout", "outputSchema": { "properties": { "date": { "type": "string" }, "id": { "type": "string" }, "title": { "type": "string" } }, "type": "object" } }, { "description": "Lookup a food product by EAN/UPC barcode.", "inputSchema": { "properties": { "barcode": { "type": "string" } }, "required": [ "barcode" ], "type": "object" }, "name": "lookup_barcode", "outputSchema": { "properties": { "barcode": { "type": "string" }, "found": { "type": "boolean" }, "message": { "type": "string" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "domains": { "description": "Comma-separated subset. Accepted: workouts, nutrition, checkin, notes, profile, or 'all'. Default: workouts,nutrition.", "type": "string" }, "workout_limit": { "default": 10, "type": "number" } }, "type": "object" }, "name": "my_training_context", "outputSchema": { "properties": { "date": { "type": "string" }, "domains": {}, "latest_checkin": {}, "nutrition_today": {}, "profile": {}, "recent_notes": {}, "recent_workouts": {} }, "type": "object" } }, { "description": "Resolve an exercise name into primary/secondary muscle layers for rendering.", "inputSchema": { "properties": { "exercise": { "type": "string" } }, "required": [ "exercise" ], "type": "object" }, "name": "resolve_exercise", "outputSchema": null }, { "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`.", "inputSchema": { "properties": { "cursor": { "description": "next_cursor from the previous response. Omit for the first page.", "type": "string" }, "equipment": { "type": "string" }, "fields": { "description": "Extra fields, comma-separated, or `all`.", "type": "string" }, "level": { "type": "string" }, "limit": { "default": 20, "type": "number" }, "muscle": { "type": "string" }, "q": { "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "search_exercises", "outputSchema": { "properties": { "next_cursor": { "type": "string" }, "results": { "items": { "type": "object" }, "type": "array" }, "total_matched": { "type": "number" } }, "type": "object" } }, { "description": "Search food products by name (Open Food Facts + USDA). Returns macros per 100g.", "inputSchema": { "properties": { "locale": { "type": "string" }, "page_size": { "type": "number" }, "q": { "type": "string" } }, "required": [ "q" ], "type": "object" }, "name": "search_foods", "outputSchema": { "properties": { "count": { "type": "number" }, "items": { "items": { "type": "object" }, "type": "array" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "alcohol": { "description": "g of ethanol", "type": "number" }, "calories": { "type": "number" }, "carbs": { "type": "number" }, "date": { "type": "string" }, "fats": { "type": "number" }, "fiber": { "type": "number" }, "idempotency_key": { "type": "string" }, "meal_id": { "type": "string" }, "meal_type": { "type": "string" }, "name": { "type": "string" }, "protein": { "type": "number" }, "saturated_fat": { "type": "number" }, "sodium": { "description": "mg", "type": "number" }, "sugar": { "type": "number" } }, "required": [ "meal_id" ], "type": "object" }, "name": "update_meal", "outputSchema": { "properties": { "calories": { "type": "number" }, "carbs": { "type": "number" }, "date": { "type": "string" }, "fats": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "protein": { "type": "number" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "completed": { "type": "boolean" }, "delete": { "type": "boolean" }, "exercise": { "description": "Catalog name, ext_id, or the user's own words for a custom movement.", "type": "string" }, "notes": { "type": "string" }, "reps": { "type": "number" }, "rpe": { "type": "number" }, "set_ids": { "items": { "type": "string" }, "type": "array" }, "weight": { "type": "number" } }, "required": [ "set_ids" ], "type": "object" }, "name": "update_sets", "outputSchema": { "properties": { "deleted": { "type": "number" }, "missing": { "type": "array" }, "updated": { "type": "number" } }, "type": "object" } }, { "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.", "inputSchema": { "properties": { "active_sports": { "items": { "type": "string" }, "type": "array" }, "daily_calorie_goal": { "type": "number" }, "daily_carbs_goal": { "type": "number" }, "daily_fats_goal": { "type": "number" }, "daily_fiber_goal": { "description": "g/day to reach", "type": "number" }, "daily_protein_goal": { "type": "number" }, "daily_sodium_limit": { "description": "mg/day to stay under", "type": "number" }, "daily_sugar_limit": { "description": "g/day to stay under", "type": "number" }, "daily_water_goal_ml": { "type": "number" }, "diet_type": { "type": "string" }, "goal": { "type": "string" }, "height": { "description": "cm", "type": "number" }, "language": { "type": "string" }, "meals_per_day": { "type": "number" }, "timezone": { "description": "IANA zone name, e.g. 'Europe/Warsaw'.", "type": "string" }, "unit_system": { "enum": [ "metric", "imperial" ], "type": "string" }, "weight": { "description": "kg", "type": "number" } }, "type": "object" }, "name": "upsert_profile", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b3ab1b726abf4584b4991e28664330ef5ee1d35db76b73d4d2a593a8400aac7f | sha256sum