WorkoutX Exercise API

Exercise API MCP: 1,900+ exercises with video, workout generator, supplements, dev tools.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
90%
Vollständigkeit des Schemas
87%
Qualität der Benennung
97%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (3)

  • LOWTool 'find_exercise_alternatives' description lacks action verbin find_exercise_alternatives
  • LOWTool 'find_similar_exercises' description lacks action verbin find_similar_exercises
  • LOWTool 'estimate_calories' description lacks action verbin estimate_calories

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,303Tokens (Tool-Definitionen)
~1.7 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.36% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "workoutx": {
      "command": "npx",
      "args": [
        "workoutx-mcp"
      ]
    }
  }
}

Ausführbare Pakete

npmworkoutx-mcp2.1.0stdio

Remote-Endpunkte

https://api.workoutxapp.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (20)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢list_exercise_filters(lang)

Every valid value (with counts) for body parts, target muscles, equipment, categories and muscles. Call this before search_exercises when unsure of a value.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_exercises(name, bodyPart, target, muscle, equipment, ...)

Search 1,900+ exercises. Filters are optional and case-insensitive; combining two or more filters needs the Starter plan or higher. Results include instructions, tips, muscles, equipment, difficulty, calories and signed MP4/thumbnail links.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Partial name match, e.g. \"bench press\""
    },
    "bodyPart": {
      "type": "string",
      "description": "e.g. Chest, Back, Upper Legs, Waist"
    },
    "target": {
      "type": "string",
      "description": "Primary target, e.g. Pectorals, Glutes, Lats"
    },
    "muscle": {
      "type": "string",
      "description": "Matches primary or secondary muscles"
    },
    "equipment": {
      "type": "string",
      "description": "e.g. Barbell, Dumbbell, Body Weight, Cable"
    },
    "category": {
      "type": "string",
      "enum": [
        "strength",
        "flexibility",
        "cardio",
        "yoga",
        "plyometric",
        "balance"
      ]
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "mechanic": {
      "type": "string",
      "enum": [
        "compound",
        "isolation"
      ]
    },
    "force": {
      "type": "string",
      "enum": [
        "push",
        "pull",
        "static",
        "carry"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Only these top-level fields, e.g. [\"name\",\"target\",\"equipment\"]; id is always included. Smaller answers, fewer tokens."
    },
    "includeMedia": {
      "type": "boolean",
      "description": "false: no video links and no use of the distinct-exercise media limit (default true)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 10, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_exercise(id, lang)

One exercise by v2 id: instructions, tips, muscles, equipment, sets/reps guidance, calories and signed media links.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_exercise_media(id)

Fresh signed MP4 and thumbnail links for one exercise (links expire; call again rather than storing them).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_exercise_alternatives(id, equipment, excludeEquipment, model, limit, ...)

Ranked swaps that train the same muscles, e.g. when equipment is missing. Optionally require or exclude equipment.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "equipment": {
      "type": "string",
      "description": "Only alternatives using this equipment (comma-separated)"
    },
    "excludeEquipment": {
      "type": "string",
      "description": "Leave out this equipment (comma-separated)"
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "any"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 10, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_similar_exercises(id, model, limit, lang)

Exercises most similar to the given one (same pattern, muscles and equipment), ranked by score.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "any"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 10, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢estimate_calories(id, weightKg, minutes)

Calories burned for an exercise from its MET value, body weight and duration.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "weightKg": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Body weight in kg (default 70)"
    },
    "minutes": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Duration in minutes (default 10)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢map_v1_exercise(v1Id, lang)

Find the v2 exercise for an old v1 id (e.g. "0025"), with the match quality: exact, equivalent, alternative, closest or none.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "v1Id": {
      "type": "string",
      "minLength": 1,
      "description": "v1 exercise id, e.g. \"0025\""
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "v1Id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_workout(goal, level, duration, split, equipment, ...)

One complete session built from movement patterns: warm-up, main work with sets/reps/rest, cool-down and swap suggestions. Needs the Growth plan or higher.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "mobility",
        "general_fitness"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "duration": {
      "type": "integer",
      "minimum": 15,
      "maximum": 120,
      "description": "Minutes (default 45)"
    },
    "split": {
      "type": "string",
      "enum": [
        "full_body",
        "upper",
        "lower",
        "push",
        "pull",
        "legs",
        "core",
        "conditioning",
        "mobility",
        "push_pull_legs",
        "upper_lower"
      ]
    },
    "equipment": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Available equipment, e.g. [\"dumbbell\",\"bench\"]; empty = gym"
    },
    "bodyFocus": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Muscles or body parts to emphasise"
    },
    "exclude": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Exercise ids to leave out"
    },
    "avoidJoints": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "knee",
          "shoulder",
          "lumbar_spine",
          "elbow",
          "wrist",
          "hip",
          "ankle"
        ]
      },
      "description": "Joints to spare; exercises that load them are left out"
    },
    "format": {
      "type": "string",
      "enum": [
        "auto",
        "straight",
        "superset",
        "circuit"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "seed": {
      "type": "string",
      "description": "Same seed + same inputs = same workout"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_program(goal, level, weeks, daysPerWeek, duration, ...)

A multi-week program with periodisation, deloads and weekly volume targets. Needs the Scale plan.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "mobility",
        "general_fitness"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "weeks": {
      "type": "integer",
      "minimum": 2,
      "maximum": 16,
      "description": "Default 4"
    },
    "daysPerWeek": {
      "type": "integer",
      "minimum": 2,
      "maximum": 6,
      "description": "Default 3"
    },
    "duration": {
      "type": "integer",
      "minimum": 20,
      "maximum": 120,
      "description": "Minutes per session (default 60)"
    },
    "equipment": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "avoidJoints": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "knee",
          "shoulder",
          "lumbar_spine",
          "elbow",
          "wrist",
          "hip",
          "ankle"
        ]
      },
      "description": "Joints to spare; exercises that load them are left out"
    },
    "format": {
      "type": "string",
      "enum": [
        "auto",
        "straight",
        "superset",
        "circuit"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "seed": {
      "type": "string"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_supplements(search, category, goal, timing, evidence, ...)

Supplements with evidence ratings, dosage and timing. Filter by category, goal, timing, evidence or free text. Needs the Growth plan or higher.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "description": "e.g. protein, creatine, pre-workout"
    },
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "recovery",
        "mobility",
        "general_health"
      ]
    },
    "timing": {
      "type": "string",
      "description": "e.g. pre-workout, post-workout, morning"
    },
    "evidence": {
      "type": "string",
      "description": "e.g. strong, moderate"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 200, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_supplement_stack(goal, level)

A recommended stack for a goal with dosages and timing. Needs the Scale plan.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "recovery",
        "mobility",
        "general_health"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "essential",
        "standard",
        "comprehensive"
      ]
    }
  },
  "required": [
    "goal"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢export_exercise_seed(bodyPart, target, equipment, category, model, ...)

Exercise ids, names, muscles and equipment without media, as JSON or CSV, to seed your own database or fixtures. Does not use the distinct-exercise media limit. Page with offset; plan caps per call apply (Free 10, Starter 100, others 200).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "bodyPart": {
      "type": "string"
    },
    "target": {
      "type": "string"
    },
    "equipment": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "enum": [
        "strength",
        "flexibility",
        "cardio",
        "yoga",
        "plyometric",
        "balance"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "name",
          "model",
          "counterpartId",
          "category",
          "bodyPart",
          "target",
          "equipment",
          "difficulty",
          "mechanic",
          "force",
          "met",
          "caloriesPerMinute",
          "isUnilateral",
          "recommendedSets",
          "recommendedReps",
          "description",
          "instructions",
          "tips"
        ]
      },
      "description": "Default: name, model, bodyPart, target, equipment, difficulty, category"
    },
    "format": {
      "type": "string",
      "enum": [
        "json",
        "csv"
      ],
      "description": "Default json"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 200, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_usage_stats(days)

Your account's API usage: requests, success rate, response times (avg and p95), errors by status code, top endpoints, daily counts, live quota, rate limit and media-limit usage. Use it to answer "why am I getting 429s?" or "when will my quota run out?". Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Window in days (default 30, max 60)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_trending_exercises(limit, lang)

The exercises and filters (body parts, muscles, equipment, categories) requested most across WorkoutX apps in the last 30 days. Anonymised: only values at least 3 different accounts asked for, filters as shares. Good for deciding what to feature in an app. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 20, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_endpoint_reference(endpoint)

Parameters, response shape, errors and a curl example for any v2 endpoint, straight from the OpenAPI spec. Call with no endpoint to list them all. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "endpoint": {
      "type": "string",
      "maxLength": 300,
      "description": "e.g. \"/v2/exercises\", \"exercises/{id}/alternatives\" or a full URL"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_types(language, models)

Ready-to-paste TypeScript, Swift (Codable), Kotlin (kotlinx.serialization) or Dart models for v2 responses, generated from the OpenAPI spec. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "enum": [
        "typescript",
        "swift",
        "kotlin",
        "dart"
      ]
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Default: ExerciseV2, ExercisePageV2, WorkoutV2, ProgramV2. Others: MediaLinksV2, MuscleV2, RankedPageV2, CaloriesV2, SupplementV2, AccountUsageV2, TrendingV2…"
    }
  },
  "required": [
    "language"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_code_example(platform, topic)

A working snippet for a platform and task: listing and paging exercises, playing the looping MP4 and refreshing its signed link, the workout generator, error and rate-limit handling, or a backend proxy that keeps your key off the device. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "react-native",
        "swift",
        "flutter",
        "nextjs",
        "node",
        "python"
      ]
    },
    "topic": {
      "type": "string",
      "enum": [
        "list-exercises",
        "play-video",
        "workout-generator",
        "handle-errors",
        "backend-proxy"
      ]
    }
  },
  "required": [
    "platform",
    "topic"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢diagnose_request(request, status, response)

Paste a failing WorkoutX request (curl, URL or "GET /v2/...") and optionally the status and response body: explains what is wrong (wrong host, key in the URL, missing header, unknown or repeated parameter, invalid value, v1 id, plan gate, rate limit, quota, expired media link) and how to fix it. Only reads the text; never sends the request. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "curl command, URL or \"GET /v2/...\" line, with headers if you have them"
    },
    "status": {
      "type": "integer",
      "minimum": 100,
      "maximum": 599
    },
    "response": {
      "type": "string",
      "maxLength": 5000,
      "description": "Response body, if any"
    }
  },
  "required": [
    "request"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_api_key

Confirm the configured API key works and show the plan and remaining quota. Uses one request.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet20 Tools