MCP 서버

learnworlds

io.usefulapi/learnworlds
교육 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Manages LearnWorlds courses, learners, enrollments, progress, grades, certificates, groups and course payments.

learnworlds_add_user_to_group
Add a user to a user group
WRITE: add an existing user to a user group (which may enroll them in the group's products). LearnWorlds: POST /v2/user_groups/{id}/users/{uid}.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['group_id', 'user'], 'properties': {'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'group_id': {'type': 'string', 'minLength': 1, 'description': 'The user group id (from learnworlds_list_user_groups).'}}}
learnworlds_create_user
Create a user
WRITE: create a learner account. Deliberately no password or admin flag — set send_registration_email so the learner sets their own password. LearnWorlds: POST /v2/users.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['email', 'username'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags to attach to the new user.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "The user's email."}, 'fields': {'type': 'object', 'description': 'Sign-up fields to set, e.g. {"company": "Acme", "phone": "+1..."}. Built-in keys include bio, location, url, phone, address, country, birthday, company, company_size, university, graduation_year and social links; custom fields use their cf_ key (e.g. cf_skill).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': ['string', 'null']}}, 'username': {'type': 'string', 'minLength': 1, 'description': "The user's username (display name)."}, 'send_registration_email': {'type': 'boolean', 'description': "Send LearnWorlds' registration email to the user."}, 'signup_validation_rules': {'type': 'boolean', 'description': "Apply the school's sign-up validation rules (default false)."}, 'subscribed_for_marketing_emails': {'type': 'boolean', 'description': 'Marketing-email consent.'}}}
learnworlds_enroll_user
Enroll a user in a product
WRITE: manually enroll a user in a course, bundle or subscription. This grants access and records a manual enrollment at the given price (use 0 for a free grant) — it does not charge the learner's card. Optionally emails the learner. LearnWorlds: POST /v2/users/{id}/enrollment.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user', 'product_id', 'product_type', 'price'], 'properties': {'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'price': {'type': 'number', 'minimum': 0, 'description': 'Price recorded for this enrollment; 0 for a free grant.'}, 'duration': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Subscriptions only: how many duration_type units.'}, 'product_id': {'type': 'string', 'minLength': 1, 'description': 'The product id (for a course, its slug).'}, 'product_type': {'enum': ['course', 'bundle', 'subscription'], 'type': 'string'}, 'duration_type': {'enum': ['months', 'weeks', 'days'], 'type': 'string', 'description': 'Subscriptions only.'}, 'justification': {'type': 'string', 'description': 'A note, e.g. "Added by admin".'}, 'send_enrollment_email': {'type': 'boolean', 'description': 'Send the enrollment email to the learner.'}}}
learnworlds_get_course
Get a course
Fetch one course by id (its slug). LearnWorlds: GET /v2/courses/{id}.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['course_id'], 'properties': {'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}}}
learnworlds_get_course_analytics
Get course analytics
Course-level analytics: students, learning units, average score and success rate, total study time, average time to finish, social interactions and certificates issued. LearnWorlds: GET /v2/courses/{id}/analytics.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['course_id'], 'properties': {'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}}}
learnworlds_get_course_contents
Get course contents
The course outline: its sections (with drip-feed settings) and the learning activities (videos, PDFs, SCORM, assessments, certificates...) in each, with their ids. LearnWorlds: GET /v2/courses/{id}/contents.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['course_id'], 'properties': {'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}}}
learnworlds_get_course_grades
Get course grades
Assessment grades of the users enrolled in a course — per user and learning unit, with submission time. LearnWorlds: GET /v2/courses/{id}/grades.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['course_id'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'sort': {'enum': ['created', 'submittedTimestamp'], 'type': 'string', 'description': 'Field to sort by.'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction.'}, 'users': {'type': 'string', 'description': 'Comma-separated user ids to filter by.'}, 'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}, 'items_per_page': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Items per page, 1-200.'}, 'learning_units': {'type': 'string', 'description': 'Comma-separated learning-unit ids to filter by (from learnworlds_get_course_contents).'}}}
learnworlds_get_payment
Get a payment
Fetch one payment by payment id or transaction id. LearnWorlds: GET /v2/payments/{id}.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['payment_id'], 'properties': {'payment_id': {'type': 'string', 'minLength': 1, 'description': 'The payment id or the transaction id.'}}}
learnworlds_get_user
Get a user
Fetch one user by id or email — profile, role, tags, sign-up fields, UTMs and last login. LearnWorlds: GET /v2/users/{id}.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user'], 'properties': {'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'include_suspended': {'type': 'boolean', 'description': 'Also return the user if suspended.'}}}
learnworlds_get_user_course_progress
Get a user's progress in a course
A user's progress in one course — status, progress rate, average score, time on course, completed units, and a per-section / per-activity breakdown. LearnWorlds: GET /v2/users/{id}/courses/{cid}/progress.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user', 'course_id'], 'properties': {'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}}}
learnworlds_list_certificates
List certificates
Certificates awarded, newest first (20 per page), for a course and/or a user — at least one of course_id or user_id is required. LearnWorlds: GET /v2/certificates.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'user_id': {'type': 'string', 'description': 'Only certificates of this user (id or email).'}, 'course_id': {'type': 'string', 'description': 'Only certificates for this course id.'}}}
learnworlds_list_courses
List courses
List the school's courses, newest first, 50 per page — title, price fields, access (paid/free/draft...), categories and author. A cheap way to confirm the credentials work. LearnWorlds: GET /v2/courses.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'access': {'type': 'array', 'items': {'enum': ['paid', 'free', 'coming_soon', 'private', 'draft', 'enrollment_closed'], 'type': 'string'}, 'description': 'Only courses with one of these access values.'}, 'categories': {'type': 'string', 'description': 'Comma-separated category names to filter by.'}}}
learnworlds_list_course_users
List users enrolled in a course
The users enrolled in one course, newest first (20 per page by default). LearnWorlds: GET /v2/courses/{id}/users.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['course_id'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'course_id': {'type': 'string', 'minLength': 1, 'description': 'The course id — the course slug, e.g. "my-first-course".'}, 'items_per_page': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Items per page, 1-200.'}}}
learnworlds_list_event_logs
List event logs
The school's activity log (50 per page) — registrations, logins, purchases, enrollments, course completions, certificates, subscription changes and more, filterable by user, activity and time. LearnWorlds: GET /v2/event-logs.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'sort': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'By creation time; default desc.'}, 'user_id': {'type': 'string', 'description': 'Only events of this user (id or email).'}, 'activity': {'enum': ['register', 'login', 'logout', 'purchase', 'manual_enrollment', 'drip_feed_section_unlocked', 'subscription_signup', 'subscription_trial', 'subscription_trial_expired', 'subscription_changed', 'subscription_renewal', 'subscription_cancelled', 'subscription_scheduled_cancellation', 'subscription_reactivated', 'failed_purchase', 'new_affiliate', 'new_affiliate_manual', 'affiliate_deactivated', 'affiliate_payout', 'follow', 'post', 'post_comment', 'post_like', 'award_certificate', 'visit_course', 'complete_course', 'installment_paid', 'payment_plan_completed', 'payment_plan_canceled', 'payment_failed', 'sca_related_events', 'session_scheduled', 'session_attended', 'session_manually_attended', 'group_session_scheduled', 'group_session_attended', 'group_session_manually_attended'], 'type': 'string', 'description': 'Only this kind of event.'}, 'created_after': {'type': 'number', 'minimum': 0, 'description': 'Created after (Unix timestamp in seconds, e.g. 1626088013).'}, 'created_before': {'type': 'number', 'minimum': 0, 'description': 'Created before (Unix timestamp in seconds, e.g. 1626088013).'}}}
learnworlds_list_payments
List payments
List payments, newest first (50 per page by default) — product, price, discount, tax, coupon, affiliate, gateway and billing info. All filters are ANDed. LearnWorlds: GET /v2/payments.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'user_id': {'type': 'string', 'description': 'Only payments by this user (id or email).'}, 'product_id': {'type': 'string', 'description': 'Only payments for this product id.'}, 'affiliate_id': {'type': 'string', 'description': 'Only payments referred by this affiliate (id or email).'}, 'product_type': {'enum': ['course', 'bundle', 'subscription'], 'type': 'string'}, 'created_after': {'type': 'number', 'minimum': 0, 'description': 'Created after (Unix timestamp in seconds, e.g. 1626088013).'}, 'created_before': {'type': 'number', 'minimum': 0, 'description': 'Created before (Unix timestamp in seconds, e.g. 1626088013).'}, 'items_per_page': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Items per page, 1-200.'}}}
learnworlds_list_user_courses
List a user's course enrollments
The courses a user is enrolled in, with enrollment and expiry dates (50 per page). LearnWorlds: GET /v2/users/{id}/courses.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}}}
learnworlds_list_user_groups
List user groups
List the school's user groups (cohorts / B2B seats), newest first — title, products, group managers, capacity and tags. LearnWorlds: GET /v2/user_groups.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}}}
learnworlds_list_users
List users
List the school's users, newest first (20 per page by default), filterable by status, role, tags, registration date and custom fields. All filters are ANDed. LearnWorlds: GET /v2/users.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'role': {'enum': ['user', 'admin', 'instructor', 'reporter', 'license_reporter'], 'type': 'string'}, 'tags': {'type': 'string', 'description': 'Comma-separated tags; users with these tags.'}, 'status': {'enum': ['paying', 'non_paying', 'suspended', 'never_logged_in'], 'type': 'string'}, 'custom_fields': {'type': 'object', 'description': 'Custom-field filters, e.g. {"cf_skill": "Excel"}. The cf_ prefix is added if missing.', 'propertyNames': {'type': 'string', 'pattern': '^(cf_)?[A-Za-z0-9_]+$'}, 'additionalProperties': {'type': 'string'}}, 'items_per_page': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Items per page, 1-200.'}, 'include_suspended': {'type': 'boolean', 'description': 'Include suspended users (default false).'}, 'registration_after': {'type': 'number', 'minimum': 0, 'description': 'Registered after (Unix timestamp in seconds, e.g. 1626088013).'}, 'registration_before': {'type': 'number', 'minimum': 0, 'description': 'Registered before (Unix timestamp in seconds, e.g. 1626088013).'}}}
learnworlds_update_user
Update a user
WRITE: update a user's email, username, marketing consent, sign-up fields or tags. Only the fields you pass are sent. Passing `tags` REPLACES the tag list — use learnworlds_update_user_tags to add/remove individual tags. LearnWorlds: PUT /v2/users/{id}.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The complete new tag list (replaces existing tags).'}, 'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, 'fields': {'type': 'object', 'description': 'Sign-up fields to set, e.g. {"company": "Acme", "phone": "+1..."}. Built-in keys include bio, location, url, phone, address, country, birthday, company, company_size, university, graduation_year and social links; custom fields use their cf_ key (e.g. cf_skill).', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': ['string', 'null']}}, 'username': {'type': 'string', 'minLength': 1}, 'subscribed_for_marketing_emails': {'type': 'boolean'}}}
learnworlds_update_user_tags
Attach or detach user tags
WRITE: add (attach) or remove (detach) tags on a user, leaving their other tags untouched. Reversible with the opposite action. LearnWorlds: PUT /v2/users/{id}/tags.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['user', 'tags', 'action'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'The tags to attach or detach.'}, 'user': {'type': 'string', 'minLength': 1, 'description': "The user's id, or their email address."}, 'action': {'enum': ['attach', 'detach'], 'type': 'string'}}}
추가됨
learnworlds_add_user_to_group
2026년 10월 2일 2:40 AM
추가됨
learnworlds_enroll_user
2026년 10월 2일 2:40 AM
추가됨
learnworlds_update_user_tags
2026년 10월 2일 2:40 AM
추가됨
learnworlds_update_user
2026년 10월 2일 2:40 AM
추가됨
learnworlds_create_user
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_event_logs
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_user_groups
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_certificates
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_payment
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_payments
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_user_course_progress
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_user_courses
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_user
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_users
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_course_grades
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_course_users
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_course_analytics
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_course_contents
2026년 10월 2일 2:40 AM
추가됨
learnworlds_get_course
2026년 10월 2일 2:40 AM
추가됨
learnworlds_list_courses
2026년 10월 2일 2:40 AM