Skip to main content
Glama

find_exercises

Find exercises that target specific muscles with filters for equipment, difficulty, movement pattern, and exercise type to customize workout plans.

Instructions

Find exercises that target a specific muscle, with optional filters. Use search_muscles first if you don't know the muscle ID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
muscleYesMuscle ID or name (e.g. 'pectoralis_major_sternal')
equipmentNoFilter by equipment type
difficultyNoFilter by difficulty level
movement_patternNoFilter by movement pattern
exercise_typeNoFilter by exercise type
roleNoFilter by muscle role
limitNoMax results (default: 50)

Implementation Reference

  • The handler for the 'find_exercises' tool, which takes a muscle and optional filters, calls the client.findExercises method, and returns the result as JSON.
    server.tool(
      "find_exercises",
      "Find exercises that target a specific muscle, with optional filters. " +
        "Use search_muscles first if you don't know the muscle ID.",
      {
        muscle: z.string().describe("Muscle ID or name (e.g. 'pectoralis_major_sternal')"),
        equipment: z
          .enum([
            "barbell", "dumbbell", "kettlebell", "cable", "machine", "bodyweight",
            "band", "smith_machine", "trap_bar", "ez_bar", "suspension",
            "medicine_ball", "plate", "landmine", "none",
          ])
          .optional()
          .describe("Filter by equipment type"),
        difficulty: z
          .enum(["beginner", "intermediate", "advanced"])
          .optional()
          .describe("Filter by difficulty level"),
        movement_pattern: z
          .enum([
            "horizontal_push", "horizontal_pull", "vertical_push", "vertical_pull",
            "squat", "hinge", "lunge", "carry", "rotation", "anti_rotation",
            "flexion", "extension", "isolation", "abduction", "adduction",
          ])
          .optional()
          .describe("Filter by movement pattern"),
        exercise_type: z
          .enum(["compound", "isolation", "isometric"])
          .optional()
          .describe("Filter by exercise type"),
        role: z
          .enum(["primary", "secondary", "stabilizer"])
          .optional()
          .describe("Filter by muscle role"),
        limit: z
          .number()
          .int()
          .min(1)
          .max(200)
          .optional()
          .describe("Max results (default: 50)"),
      },
      async ({ muscle, ...filters }) => {
        try {
          const result = await client.findExercises(muscle, filters);
          return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
        } catch (err) {
          return { content: [{ type: "text", text: formatError(err) }], isError: true };
        }
      },
    );
  • src/tools.ts:49-99 (registration)
    Registration of the 'find_exercises' tool using server.tool in src/tools.ts.
    server.tool(
      "find_exercises",
      "Find exercises that target a specific muscle, with optional filters. " +
        "Use search_muscles first if you don't know the muscle ID.",
      {
        muscle: z.string().describe("Muscle ID or name (e.g. 'pectoralis_major_sternal')"),
        equipment: z
          .enum([
            "barbell", "dumbbell", "kettlebell", "cable", "machine", "bodyweight",
            "band", "smith_machine", "trap_bar", "ez_bar", "suspension",
            "medicine_ball", "plate", "landmine", "none",
          ])
          .optional()
          .describe("Filter by equipment type"),
        difficulty: z
          .enum(["beginner", "intermediate", "advanced"])
          .optional()
          .describe("Filter by difficulty level"),
        movement_pattern: z
          .enum([
            "horizontal_push", "horizontal_pull", "vertical_push", "vertical_pull",
            "squat", "hinge", "lunge", "carry", "rotation", "anti_rotation",
            "flexion", "extension", "isolation", "abduction", "adduction",
          ])
          .optional()
          .describe("Filter by movement pattern"),
        exercise_type: z
          .enum(["compound", "isolation", "isometric"])
          .optional()
          .describe("Filter by exercise type"),
        role: z
          .enum(["primary", "secondary", "stabilizer"])
          .optional()
          .describe("Filter by muscle role"),
        limit: z
          .number()
          .int()
          .min(1)
          .max(200)
          .optional()
          .describe("Max results (default: 50)"),
      },
      async ({ muscle, ...filters }) => {
        try {
          const result = await client.findExercises(muscle, filters);
          return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
        } catch (err) {
          return { content: [{ type: "text", text: formatError(err) }], isError: true };
        }
      },
    );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/csjoblom/musclesworked-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server