Check LearnWorlds courses, learners, progress, grades and payments, and enroll or tag users. Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"learnworlds": {
"url": "https://learnworlds.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
learnworlds_list_courses | read | 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. |
learnworlds_get_course | read | Get a course Fetch one course by id (its slug). LearnWorlds: GET /v2/courses/{id}. |
learnworlds_get_course_contents | read | 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. |
learnworlds_get_course_analytics | read | 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. |
learnworlds_list_course_users | read | 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. |
learnworlds_get_course_grades | read | 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. |
learnworlds_list_users | read | 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. |
learnworlds_get_user | read | 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}. |
learnworlds_list_user_courses | read | 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. |
learnworlds_get_user_course_progress | read | 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. |
learnworlds_list_payments | read | 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. |
learnworlds_get_payment | read | Get a payment Fetch one payment by payment id or transaction id. LearnWorlds: GET /v2/payments/{id}. |
learnworlds_list_certificates | read | 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. |
learnworlds_list_user_groups | read | 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. |
learnworlds_list_event_logs | read | 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. |
learnworlds_create_user | write | 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. |
learnworlds_update_user | write | 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}. |
learnworlds_update_user_tags | write | 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. |
learnworlds_enroll_user | write | 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. |
learnworlds_add_user_to_group | write | 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}. |
learnworlds_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
learnworlds_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED LearnWorlds tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper user | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.