Site operations · 4 modules
WordPress LMS and Membership MCP that treats access as the risk it is.
A WordPress LMS and membership MCP, events included, changes who can reach what: an attendee list, a paid membership level, a course enrolment. These modules work through each plugin's own model, and the calls that change someone's access wait for confirmation.
What goes wrong without a plugin-aware module
- Membership or enrollment changes mistaken for payment or refund operations
- Event and group changes made without confirming the exact target and scope
- Member, attendee, learner, or customer data returned beyond the workflow's minimum need
Why it matters
What plugin-aware changes for site operations
These modules govern access rather than appearance. A wrong write here does not make a page ugly, it removes a paying member's entry to the content they bought, cancels an attendee, or exposes a learner record. The blast radius is people, and people notice immediately.
A first safe workflow
Set up a test member, attendee or learner first, and make every early change against that account. Then check what they can see, from their session rather than yours. Access work is the one category where the correct result is invisible from an administrator's view, so borrowing a real member's account for testing is exactly what to avoid.
How to tell it worked
Test against a dedicated test member, attendee or learner, never a real one. Confirm access from that account's point of view after the change, and check whether the platform sent an automated email as a side effect before you assume nothing left the site.
Worked example
Build a short Tutor LMS course on a staging copy and check a test learner can open it, without touching a real student.
Tutor LMS, because enrolment is the clearest case of a write whose result only a learner can see.
wppilot/tutor-lms-create-courseProCreates the course as a draft with its description, level and price type. A paid course links an existing WooCommerce product; no product is created.
wppilot/tutor-lms-create-topicProAdds a topic, a section of the curriculum, at the end of the course.
wppilot/tutor-lms-create-lessonProAdds a lesson at the end of that topic, with content, video source and the preview flag.
wppilot/tutor-lms-get-course-structureProReads the curriculum back as topics with lessons and quizzes in display order, drafts included, and no learner data.
wppilot/tutor-lms-update-courseProSets the staging course's status to publish once the curriculum reads back as intended. Learners cannot open a draft course, so the check below only works after this step; on a live site, publishing is the course owner's decision.
wppilot/tutor-lms-enroll-userProEnrols an approved existing test account only when Tutor reports the course as non-purchasable. Check membership and other paid-access rules separately; the guard does not inspect every monetization arrangement.
wppilot/tutor-lms-get-user-enrollmentsProConfirms the enrolment record exists, without returning the account's email, profile or quiz attempts.
What to check yourself. Sign in as the test learner in a private window and open the first lesson of the published staging course. Then remove the enrolment with wppilot/tutor-lms-unenroll-user, which deletes the record only; it never refunds an order or cancels a subscription, so it is not the tool for a real student's dispute.
Modules
4 modules compared
Each module loads only when its plugin is active and needs GoBuildWP Pro. Open a module for its full ability list, requirements and safety notes.
| Module | Edition | Abilities | Inspect / change / destructive | Covers |
|---|---|---|---|---|
| Pro | 7 | 4 / 1 / 2 | setup health, event discovery, event details, draft event creation | |
| Pro | 13 | 5 / 4 / 4 | setup health, membership levels, discount codes, order reads | |
| Pro | 24 | 9 / 10 / 5 | setup health, course discovery, course authoring, topics and lessons | |
| Pro | 8 | 5 / 1 / 2 | setup health, privacy-bounded member discovery, member profiles, group discovery |
Access, enrolment and events across plugins
How the four plugins differ when a write goes wrong
These modules share a risk, not a data model. Each plugin stores access its own way, so the same mistake has a different cost and a different way back depending on where you made it.
- Tutor LMS keeps a course as a tree of posts, so new courses, topics, lessons and quizzes, and deletes that only trash, can be undone from the change ledger. Quiz questions sit in their own tables and cannot, and neither can reorders, added instructors or permanent deletes. A permanent course delete takes quiz attempts and enrolments with it.
- Paid Memberships Pro keeps levels, memberships and discount codes in its own tables. Every write is logged without a before-image, so none of it rolls back from the ledger; the ability returns the previous values for a person to write back.
- The Events Calendar mirrors each event post into its own date tables. A new event can be undone by trashing it, but edits and deletions count as irreversible, because restoring the post alone may not resync those tables.
- BuddyPress keeps groups in its own tables with no trash. Group writes are logged without an undo, and deleting a group removes its memberships, invitations and metadata for good.
Where to let an agent draft and where to make it ask
That difference ranks the work. Course authoring is the safest place to let an agent draft freely, since drafts stay invisible to learners and most of it can be undone. Event edits deserve a review of the date, timezone and venue before they are confirmed. Membership levels, enrolments and group privacy deserve a person approving each change, because the ledger cannot take them back and the people affected notice before you do. A confirm flag alone does not give you that, since the agent sets it; turn on Pro's approval queue or the "A person approves" confirmation mode for these writes.
Where these plugins meet WooCommerce and each other
A membership or course site is rarely one plugin. The places they connect are where an agent's change can land in the wrong system:
- A Tutor course sold through WooCommerce links an existing product no other course uses. The course abilities attach it; creating or repricing that product is WooCommerce work for the commerce modules.
- A Tutor course priced through Easy Digital Downloads or a membership plugin is refused for paid setup. Set the price in that plugin and let the agent handle the curriculum.
- Granting a Paid Memberships Pro level is an administrative change with no checkout, order or gateway subscription behind it. A paid level granted that way has not been paid for, and nobody will be billed.
- Changing a level's price affects future checkouts only. Existing members stay on their old terms at the gateway; the update reports how many are affected, which is the number to read before approving it.
- Event tickets belong to the separate Event Tickets plugin and are read-only here: inventory and RSVPs, never attendee names, emails or orders.
What each plugin keeps out of the agent's answers
Access work touches personal data, so each module has a fixed list of fields it never returns. Knowing that list helps you write prompts that do not ask for the impossible, and explain to a client exactly what an AI client on their site can see.
- Paid Memberships Pro order reads carry totals, level, gateway and status, never card details, billing addresses, transaction ids or order notes.
- Tutor LMS enrolment reads confirm a record exists without the learner's email, profile or quiz attempts. Quiz attempts have a read of their own; leave it off any token that does not need it.
- BuddyPress member reads leave out email addresses, private messages, extended profile values, authentication data, notification settings and private activity.
- Event ticket reads never include attendee details.
Outside these modules, and what to use instead
Some operations work stays in the plugins' own screens. Plan for these before promising a client an agent can run the whole site:
- Recurring series from Events Calendar Pro. An edit is never series-wide, and an event that belongs to a series is flagged before any change.
- Ticket creation, capacity, check-ins and ticket refunds.
- BuddyPress messages, activity, friendships, extended profiles, invitations, bans and member roles.
- Matching, ordering, image and Tutor Pro interactive quiz questions, which can be read but are edited in Tutor's quiz builder.
- Refunds of any kind. Cancelling a level or removing an enrolment never returns money; that is done where the payment was taken.
Building one of these sites first
If the membership or course site is still being planned, the membership and booking site guide covers the build. This page is about running one once members, learners and attendees depend on it.
FAQ
Site operations and AI, answered
Can an agent change who has access to paid content?
Membership and enrolment abilities exist, and they are the ones to hold behind approvals. A wrong write removes a paying member's access, which is a support incident rather than a cosmetic bug.
Will changing an event or membership send an automated email?
It can. These platforms send notifications on state changes by design, so check the plugin's notification settings before a bulk edit rather than after the messages have gone out.
How should this be tested?
With a dedicated test member, attendee or learner account, and by confirming access from that account rather than from an administrator session, which sees everything regardless.
Can an agent enrol someone in a paid course?
The guard refuses courses Tutor LMS reports as purchasable. It does not independently inspect membership-based or other paid-access arrangements. Read the course and access rules, get owner approval, and use the configured paid-access flow rather than treating a non-purchasable result as proof that access is free.
Does cancelling a membership level or an enrolment refund the payment?
Not by itself. wppilot/tutor-lms-unenroll-user deletes the enrolment record and explicitly does not refund an order or cancel a subscription. wppilot/paid-memberships-pro-cancel-user-level cancels the level through Paid Memberships Pro's own function, which changes access and runs whatever that plugin and its gateway hooks do on cancellation. A refund is always issued where the payment was taken, by a person who can see the charge.
Start in Read Only, then add what the site runs
Connect your AI client to the free MCP foundation and check what it can see. Add Pro when a job needs the module for your installed plugin.