LifterLMS
New in 3.19.0 (Pro). Two dispatcher tools work with LifterLMS 10.x:
| Tool | Default | Purpose |
|---|---|---|
lifterlms-read | On | The setup, courses with their curriculum and plans, lessons, quizzes, memberships, access plans, enrolments and progress (10 operations) |
lifterlms-write | Off | Courses, sections, lessons, quizzes, the order, access plans, memberships and enrolments (20 operations) |
Enable the write tool under Tools > Plugins > LifterLMS. EMCP runs LifterLMS’s own lifterlms/* abilities, which use its REST controllers, and adds versions, exact checks, recovery and History on top. Administrators and LMS managers work on every course; instructors on their own, and they cannot enrol students.
Read first
Section titled “Read first”get-setup: the version, the free question types, difficulties and categories, whether you may enrol students (may_enrol), and the write operations you may run.list-courses,get-course: the course fields, the curriculum (sections, lessons and each lesson’s quiz, in order),orphans, access plans, instructors, student count and the course version.get-lesson,get-quiz(questions with their choice ids and the number of attempts),list-memberships,get-membership,list-access-plans,list-enrolments,get-student-progress.
Build a course
Section titled “Build a course”create-coursewithtitleand the details:content,excerpt,categories,tags,difficulties,tracks,video_embed,length, capacity and dates. It starts as a draft;dry_run: trueshows what would be sent.create-sectionfor each section, with the latestcourse_version.create-lessonin a section:title,content,video_embed,audio_embed,featured_media, drip settings,prerequisite,points,public.save-quizwithlesson_id,title,settingsandquestions{title, question_type, points, multi_choices, choices: [{choice, correct}]}. Insettings,allowed_attemptsneedslimit_attempts: trueandtime_limit(minutes) needslimit_time: true; a limit without its switch is refused.save-access-planwithpost_id(the course) andprice(0 is free). A course needs a plan before visitors can enrol themselves.get-courseto check, thenset-course-statuswithpublish.
The free question types are choice, picture_choice, true_false and content. Paid add-on types answer unsupported_question_type; an existing one is kept untouched.
If you write block markup into a course or membership, include LifterLMS’s own blocks (course information, instructors, pricing table, progress, syllabus); the answer carries a note when they are missing. Plain HTML is always safe.
Change things
Section titled “Change things”update-course,update-section,update-lessonandupdate-membershipchange only the fields you pass.update-lessonwithsection_idandordermoves a lesson.save-quizwithquiz_iddescribes the whole quiz; a question left out is removed.reorder-curriculumsets the whole order, every section and lesson exactly once (order_mismatchotherwise).
Course and membership writes pass course_version or membership_version; these cover the access plans’ full contents too. A change made since you read it is a conflict; force: true overwrites on purpose.
Trash, not delete
Section titled “Trash, not delete”Courses, lessons, quizzes and memberships are only moved to the trash. A quiz students took stays (has_attempts). delete-section (empty sections only) and delete-access-plan (refused while orders use the plan) are the only permanent deletes. All of these and cancel-enrolment need confirm: true.
Students and memberships
Section titled “Students and memberships”enrol-studentenrols an existing user in a course or membership; an enrolled student is reported asalready_enrolled, and a cancelled enrolment is set back to enrolled.- A membership’s
auto_enrollcourses come with it: enrolling in the membership enrols them in those courses, and cancelling it cancels them unless another membership still covers a course. The answer lists every course that changed.
On a real site
Section titled “On a real site”From our test run with the fictional Larkspur Kitchen School, recorded over a real MCP connection with LifterLMS’s free edition. The LifterLMS integration page shows every call the assistant made.

LifterLMS’s own course builder, with the quiz attached to the last lesson.

The published course. The $49 plan is saved too; LifterLMS shows paid plans once a payment gateway is set up, which this test site does not have.
History
Section titled “History”Every write can be undone in History, and an enrolment is put back exactly, for a membership with every course enrolment, trigger and level it touched. Undo never removes students’ work, force or not: a course or membership once anyone enrolled (has_students), a lesson once completed or an enrolment once the student made progress (has_progress), a quiz once taken (has_attempts).
