LearnWorlds MCP server Let your AI agent run the admin work in LearnWorlds.

Your AI agent enrolls new learners, tags graduates, grades the Review Center queue and nudges stalled learners, with your OK before anything reaches a learner. Sign in to your school's admin once in your own Cloud Browser. No API plan to buy and no code to keep running.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with LearnWorlds
LearnWorlds logo LearnWorlds Cloud Browser

11 tools Read and write

Sign-up to certificate

What can your AI agent do in LearnWorlds? The clicks in your school admin.

  • Enroll a cohort in a course

  • Report who finished and got a certificate

  • Tag learners who completed a course

  • Draft grades for the Review Center queue

  • Message learners who stalled

  • Suspend leavers from a list

API yes, MCP no

Does LearnWorlds have an MCP server or an API? An API yes, an MCP server no.

LearnWorlds has a REST API (v2) and webhooks, but they come with the Learning Center plan and above, $249 a month billed annually or $299 monthly. It has no official MCP server (checked 6 Nov 2026). Cotlet runs 11 LearnWorlds tools hosted, 6 of them writes, over MCP for agents and REST for scripts.

  • The API reads and writes: it creates users, enrolls them in products, updates tags, suspends users and reads enrollments. You request keys under Settings > Developers > API, tokens expire, and v1 is no longer supported.
  • Webhooks send events such as registrations and enrollments, and Zapier has an official LearnWorlds app with triggers like Assessment Completed and actions like Enroll User in Product.
  • A community MCP server on GitHub, ohneben/Learnworlds-MCP (MIT, 2 stars, last commit 15 Sep 2026), turns all 94 API endpoints into tools. You host it and give it your API token.
The LearnWorlds API, Zapier and Cotlet compared
What you need LearnWorlds APIZapierCotlet
List users and course progress Yes, with your code Triggers, no lists Yes, as data
Enroll and unenroll users Yes, with your code Yes, as actions Yes, after your OK
Add or remove tags Yes, with your code Yes, as actions Yes
Suspend or unsuspend a user Yes, with your code No action Yes, after your OK
Grade Review Center assessments Yes, with your code Trigger only Yes, after your OK
Send a direct message to a user No endpoint No Yes, after your OK
What it takes to start Learning Center plan and a developer A Zap per job Your admin login

Checked 6 Nov 2026. Sources: LearnWorlds Help: LearnWorlds API documentation · LearnWorlds Help: How to request your API keys and access tokens · LearnWorlds Help: How to monitor, segment and export user progress · LearnWorlds pricing · Zapier: LearnWorlds integrations · LearnWorlds: Extended API and webhooks · GitHub: ohneben/Learnworlds-MCP

Set up once

How does the LearnWorlds MCP server work? Your agent works in your own admin login.

  1. 1Sign in to LearnWorlds

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    Add one address to its settings.

  3. 3Hand it the chores

    It prepares the work, you OK each change.

We never keep your LearnWorlds password, and no enrollment, message, suspension or grade reaches a learner until you approve it. Who can see your session

Any MCP client

How to connect LearnWorlds to your AI agent

  1. 1

    Enable LearnWorlds for agents. Create a Cotlet account, sign in to your school's admin in its Cloud Browser as the admin the agent should act as, then press Enable for agents.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 in your agent as a remote MCP server or custom connector.

  3. 3

    Approve the link. Chat apps ask you to sign in to Cotlet once. Editors, n8n and scripts send an API key from the console.

https://cotlet.dev/mcp/v1 carries LearnWorlds next to your other apps. The tools act with the admin role of the user you sign in as, so pick an admin who can reach Users, Courses and the Review Center. Refresh the connector after enabling LearnWorlds so the tools load.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-learnworlds \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-learnworlds": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-learnworlds]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: learnworlds_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: learnworlds_write
5 read, 6 write

All 11 LearnWorlds MCP tools

Users and tags4

Suspended users sit on their own list and show up only when you ask. Tags are created when a tag does not exist yet.

  • list_users Users of the school with email, tags and sign-up date, from Users > All users. read

    Returns users the way Users > All users shows them, newest sign-up first. Search by name or email and filter by tag. user_id goes into get_user, enroll_users, unenroll_users, update_tags, send_message and suspend_user. Suspended users are not in this list; they sit on their own Suspended users list and appear only when you pass suspended true.

    MCP calllearnworlds_read → list_users

    REST endpointGET https://cotlet.dev/api/v1/learnworlds/users

    Parameters

    Parameters: list_users
    NameTypeDescription
    query string string Part of a name or email.
    tag string string Tag name as shown in Users > Tags.
    suspended boolean boolean true lists the Suspended users instead. Default: false.
    limit integer integer Rows to return.

    Example response

    {
      "users": [
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e601",
          "name": "Lena Fischer",
          "email": "lena.fischer@example.com",
          "tags": [
            "newsletter"
          ],
          "signed_up": "2026-11-03"
        },
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e602",
          "name": "Marco Bianchi",
          "email": "marco.bianchi@example.com",
          "tags": [
            "cohort-autumn"
          ],
          "signed_up": "2026-11-02"
        }
      ]
    }
  • get_user One user card: details, tags and the products the user is enrolled in with progress. read

    Opens the user card and returns the profile, the tags and each product the user is enrolled in, with progress and the expiration date where one is set. A course the user finished by hand shows completed_manually true, as the admin dashboard marks it "Completed (Manually)". Use it to check before enrolling or messaging.

    MCP calllearnworlds_read → get_user

    REST endpointGET https://cotlet.dev/api/v1/learnworlds/users/{user_id}

    Parameters

    Parameters: get_user
    NameTypeDescription
    user_id string required string user_id from list_users.

    Example input

    {
      "user_id": "user_8c41d2"
    }

    Example response

    {
      "user_id": "5f3a9c1e2b7d4a0011c8e601",
      "name": "Lena Fischer",
      "email": "lena.fischer@example.com",
      "tags": [
        "newsletter"
      ],
      "products": [
        {
          "product": "Photography Basics",
          "progress_percent": 60,
          "completed_manually": false,
          "expires": null
        }
      ]
    }
  • update_tags Add or remove tags on users. write

    Adds the tags in add and removes the tags in remove on each listed user. A tag that does not exist yet is created, as when you press Enter in the tags field of the user card. It reaches no one directly and one call with the opposite lists undoes it, so it does not wait for your OK. A tag change can fire the Tag Added and Tag Removed triggers that other tools of your school listen to.

    MCP calllearnworlds_write → update_tags

    REST endpointPATCH https://cotlet.dev/api/v1/learnworlds/tags

    Parameters

    Parameters: update_tags
    NameTypeDescription
    user_ids array required array user_id values from list_users.
    add array array Tag names to add.
    remove array array Tag names to remove.

    Example input

    {
      "user_ids": "user ids"
    }

    Example response

    {
      "updated": [
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e602",
          "name": "Marco Bianchi",
          "tags": [
            "cohort-autumn",
            "graduate"
          ]
        }
      ]
    }
  • set_user_suspended Suspend a user or lift a suspension. writeasks first

    Uses Suspend Account on the Users page. A suspended user cannot log in and cannot sign up again with the same email, and moves to the Suspended users list. Suspending does not pause or cancel the user's active payments, so cancel those where you take payments. A call with suspended false lifts it. By default you confirm each call; you can switch that off for this tool.

    MCP calllearnworlds_write → set_user_suspended

    REST endpointPUT https://cotlet.dev/api/v1/learnworlds/users/{user_id}/suspended

    Parameters

    Parameters: set_user_suspended
    NameTypeDescription
    user_id string required string user_id from list_users.
    suspended boolean required boolean true suspends, false lifts the suspension.

    Example input

    {
      "user_id": "user_8c41d2",
      "suspended": true
    }

    Example response

    {
      "user_id": "5f3a9c1e2b7d4a0011c8e603",
      "name": "Tom Walker",
      "suspended": true
    }

Courses and enrollments4

Courses only: bundles and subscription plans are enrolled from the user card. A user who is already in comes back as skipped.

  • list_courses Courses of the school with their ID, status and number of enrolled users. read

    Returns the courses of the school as the Courses page shows them. course_id goes into list_course_users and enroll_users. It reads courses only; bundles and subscription plans are enrolled from the user card and are not covered here.

    MCP calllearnworlds_read → list_courses

    REST endpointGET https://cotlet.dev/api/v1/learnworlds/courses

    Parameters

    Parameters: list_courses
    NameTypeDescription
    query string string Part of a course title.

    Example response

    {
      "courses": [
        {
          "course_id": "photography-basics",
          "title": "Photography Basics",
          "status": "published",
          "enrolled": 128
        },
        {
          "course_id": "editing-masterclass",
          "title": "Editing Masterclass",
          "status": "published",
          "enrolled": 54
        }
      ]
    }
  • list_course_users Learners of one course with completion date, units completed, certificate date and score. read

    Reads the Course Users tab of the course insights. Each row has the completion date, units completed, certificate date and score, as that tab shows them. Filter by status to get only learners who finished or only those still in progress. Rows are ordered as the tab orders them. Free courses are missing from the Users report export, so this tool reads the course page instead.

    MCP calllearnworlds_read → list_course_users

    REST endpointGET https://cotlet.dev/api/v1/learnworlds/course-users

    Parameters

    Parameters: list_course_users
    NameTypeDescription
    course_id string required string course_id from list_courses.
    status enum enum completed or in_progress. Default: both.
    limit integer integer Rows to return.

    Example input

    {
      "course_id": "course_8c41d2"
    }

    Example response

    {
      "course": "Photography Basics",
      "users": [
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e601",
          "name": "Lena Fischer",
          "units_completed": 9,
          "completion_date": null,
          "certificate_date": null,
          "score": null
        },
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e602",
          "name": "Marco Bianchi",
          "units_completed": 14,
          "completion_date": "2026-11-01",
          "certificate_date": "2026-11-01",
          "score": 88
        }
      ]
    }
  • enroll_users Enroll users in one product, with an optional expiration date. writeasks first

    Enrolls the listed users through the Enroll to Product action of the Users page. Each enrollment can carry its own expiration date. The learner gets access to the product at once. A user who is already enrolled is returned in skipped. Subscription plans need the Stripe gateway and are enrolled one user at a time, so they are not part of this tool. By default you confirm each call; you can switch that off for this tool.

    MCP calllearnworlds_write → enroll_users

    REST endpointPOST https://cotlet.dev/api/v1/learnworlds/courses/{course_id}/users/enroll

    Parameters

    Parameters: enroll_users
    NameTypeDescription
    course_id string required string course_id from list_courses.
    user_ids array required array user_id values from list_users.
    expires string string Expiration date, YYYY-MM-DD. Default: no expiration.

    Example input

    {
      "course_id": "photography-basics",
      "user_ids": [
        "5f3a9c1e2b7d4a0011c8e601",
        "5f3a9c1e2b7d4a0011c8e602"
      ],
      "expires": "2027-05-01"
    }

    Example response

    {
      "product": "Photography Basics",
      "enrolled": [
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e601",
          "name": "Lena Fischer"
        },
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e602",
          "name": "Marco Bianchi"
        }
      ],
      "skipped": []
    }
  • unenroll_users Remove users from one course. writeasks first

    Unenrolls the listed users from one course. The learners lose access to it. Read the enrollment with get_user first. A Zapier trigger named User Unenrolled From Product fires on the school, so connected automations can react. By default you confirm each call; you can switch that off for this tool.

    MCP calllearnworlds_write → unenroll_users

    REST endpointPOST https://cotlet.dev/api/v1/learnworlds/courses/{course_id}/users/unenroll

    Parameters

    Parameters: unenroll_users
    NameTypeDescription
    course_id string required string course_id from list_courses.
    user_ids array required array user_id values from list_users.

    Example input

    {
      "course_id": "course_8c41d2",
      "user_ids": "user ids"
    }

    Example response

    {
      "product": "Photography Basics",
      "unenrolled": [
        {
          "user_id": "5f3a9c1e2b7d4a0011c8e602",
          "name": "Marco Bianchi"
        }
      ]
    }

Review Center and messages3

Open-ended answers wait in the Unreviewed tab for a manual grade. Feedback is text only, and a message goes to one user per call.

  • list_pending_reviews Assessments waiting for a grade in Courses > Review Center. read

    Returns the Unreviewed tab of the Review Center: the learner, the course, the assessment and when it was submitted. Open-ended questions (text, file upload, record video) wait here for a manual grade. review_id goes into grade_assessment.

    MCP calllearnworlds_read → list_pending_reviews

    REST endpointGET https://cotlet.dev/api/v1/learnworlds/pending-reviews

    Parameters

    Parameters: list_pending_reviews
    NameTypeDescription
    course_id string string Only reviews of this course.

    Example response

    {
      "reviews": [
        {
          "review_id": "rv_7d21a4",
          "learner": "Lena Fischer",
          "course": "Photography Basics",
          "assessment": "Final project",
          "submitted": "2026-11-04"
        }
      ]
    }
  • grade_assessment Give a score and written feedback on one assessment in the Review Center. writeasks first

    Opens Review Assessment for the review, sets a numeric score and a written comment, and clicks Submit Review. That makes the grade and the feedback visible to the learner. Feedback as a file, audio or video is not part of this tool. By default you confirm each call; you can switch that off for this tool.

    MCP calllearnworlds_write → grade_assessment

    REST endpointPOST https://cotlet.dev/api/v1/learnworlds/reviews/{review_id}/assessment/grade

    Parameters

    Parameters: grade_assessment
    NameTypeDescription
    review_id string required string review_id from list_pending_reviews.
    score number required number Numeric score for the assessment.
    feedback string string Written feedback shown to the learner.

    Example input

    {
      "review_id": "review_8c41d2",
      "score": 1
    }

    Example response

    {
      "review_id": "rv_7d21a4",
      "learner": "Lena Fischer",
      "assessment": "Final project",
      "score": 85,
      "feedback": "Strong composition. Work on exposure in the second shot.",
      "status": "reviewed"
    }
  • send_message Send a direct message to one user. writeasks first

    Uses the Send Message action in the three-dot menu of Users > All users. The user receives the message. It sends to one user per call, so the agent loops over a list. Write the subject and body plainly; the tool sends what you give it. By default you confirm each call; you can switch that off for this tool.

    MCP calllearnworlds_write → send_message

    REST endpointPOST https://cotlet.dev/api/v1/learnworlds/users/{user_id}/messages

    Parameters

    Parameters: send_message
    NameTypeDescription
    user_id string required string user_id from list_users.
    subject string required string Message subject.
    body string required string Message text.

    Example input

    {
      "user_id": "user_8c41d2",
      "subject": "subject",
      "body": "body"
    }

    Example response

    {
      "sent_to": {
        "user_id": "5f3a9c1e2b7d4a0011c8e601",
        "name": "Lena Fischer"
      },
      "subject": "Your project is waiting"
    }
Encrypted, revocable

Who can see my LearnWorlds session, and how do I revoke it?

  • What we store

    Your signed-in LearnWorlds browser profile, AES-256-GCM encrypted, in Finland. No password.

  • What your agent gets

    The 11 LearnWorlds tools. Never the session cookie.

  • What the session sees

    What your admin role sees: users, tags, courses, enrollments and the Review Center.

  • What no tool touches

    Payments, plans, school design, course content and deleting users.

  • If LearnWorlds signs you out

    You sign in again in the Cloud Browser. We never type the password.

  • How to cut access

    Disable for agents, reset the browser, or remove that admin in your school.

Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). Cotlet has no SOC 2 report or third-party pentest yet.

No API plan needed

Which LearnWorlds plan do I need? Cotlet needs no API plan.

LearnWorlds plans and the API, from its pricing page on 6 Nov 2026
PlanPriceAPI and webhooks
Starter$49 a month, $44 billed annuallyNo
Pro Trainer$99 a month, $79 billed annuallyNo
Learning Center$299 a month, $249 billed annuallyYes
CorporateCustomYes
  • Cotlet signs in to your school admin, so it does not use Settings > Developers > API
  • Your plan is billed by LearnWorlds as before
  • Starter charges $5 per course enrollment; Cotlet adds none
  • The tools do what your admin dashboard offers on your plan
Tested every 12 h

What happens when LearnWorlds changes? We repair the tool; your prompts stay the same.

between tests of the LearnWorlds reads
12 h
between tests of writes a learner would notice
24 h
for a call to a LearnWorlds tool paused for repair
$0

LearnWorlds released a new platform version in 2025 and kept its API at v2, while the admin screens changed with it. When a menu or a field changes, the fix happens on our side and your prompts keep working. status.cotlet.dev checks the site, console and API every 3 minutes.

5 tools ask first

Approvals, undo and mistakes Learners hear nothing until you say so.

  1. 01 Reads the queue list_pending_reviews: learner, course, assessment, submitted date.
  2. 02 Drafts from your rubric A score and feedback for each submission.
  3. 03 Waits for your OK Each grade shows up in your Cotlet console first.
  4. 04 Reports the result Reviewed, skipped and anything already graded.
Which LearnWorlds actions can be undone
ActionUndo
Enroll usersUnenroll them; the learner had access in between
Unenroll usersEnroll them again
Update tagsOne call with the opposite lists
Suspend a userCall again with suspended false
Send a messageNo, the user has it
Grade an assessmentNo tool call; the learner sees it at once

5 of 11 tools ask first: enroll_users, unenroll_users, send_message, set_user_suspended, grade_assessment. Each one gives a learner access, takes it away, mails them or shows them a grade. Tag changes reach nobody directly, and the 5 reads run at once. Switch the wait off per tool for a scheduled run.

Suspending a user does not pause or cancel their active payments. Cancel those where you take payments.

MCP call
{
  "name": "enroll_users",
  "arguments": {
    "course_id": "photography-basics",
    "user_ids": [
      "5f3a9c1e2b7d4a0011c8e601",
      "5f3a9c1e2b7d4a0011c8e602"
    ],
    "expires": "2027-05-01"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/learnworlds/courses/photography-basics/users/enroll \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_ids":["5f3a9c1e2b7d4a0011c8e601","5f3a9c1e2b7d4a0011c8e602"],"expires":"2027-05-01"}'
Response
{
  "product": "Photography Basics",
  "enrolled": [
    {
      "user_id": "5f3a9c1e2b7d4a0011c8e601",
      "name": "Lena Fischer"
    },
    {
      "user_id": "5f3a9c1e2b7d4a0011c8e602",
      "name": "Marco Bianchi"
    }
  ],
  "skipped": []
}

A script or a nightly job calls the same tools over REST at /api/v1/learnworlds, with one key and one price, and no LearnWorlds API keys of your own. A call LearnWorlds refuses, such as a feature your admin role lacks, costs nothing. The tools table gives the REST path of each tool.

Pay per call

How much does the LearnWorlds MCP server cost?

About $20 a monthfor a school enrolling about 40 learners a month, 3,420 credits. Your LearnWorlds plan is billed by LearnWorlds as before.

A month of LearnWorlds jobs for one school, in credits
JobCallsCredits
Enroll the week's sign-ups6 × 4240
Friday completion report4 × 4160
Tag graduates, each workday4 × 22880
Grade the Review Center queue9 × 4360
Message stalled learners7 × 4280
Cloud Browser, 30 days1,500
Total3,420
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No Learning Center upgrade for the API

LearnWorlds publishes no usage per school. Its own cost guide uses a creator enrolling 50 learners a month, so the month is our example of 40. Plans cap active learners at 1,000 on Starter and 2,000 above it. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

LearnWorlds MCP server on GitHub, Zapier or hosted: which to use If you have the API plan and a developer, use it.

Other LearnWorlds options, checked 6 Nov 2026
OptionWhat it doesWhere it stops
LearnWorlds API v2Official REST and webhooks: users, courses, enrollments, tags, suspensions, assessment reviews.Learning Center plan and above, and your code. No endpoint to message a user.
ohneben/Learnworlds-MCPCommunity MCP server on the API: all 94 endpoints as tools, stdio or Streamable HTTP, MIT, 2 stars.You host it and keep the API token, so the API plan applies. Last commit 15 Sep 2026.
Pipedream LearnWorlds MCPHosted MCP server at mcp.pipedream.net/v2.You sign in to Pipedream to see its tools; we could not list them without an account.
ZapierOfficial app: instant triggers such as Assessment Completed and Course Completed, actions to enroll, unenroll, tag and create users.Fixed steps. No list reads, suspend, grading or messages. Make has a help center article too.

If your school is on the Learning Center plan and you have a developer, the API is official and covers nearly every job on this page. A community MCP server turns it into tools. When an admin wants an agent to run the enrollments, tags and grading today, without an API plan, keys or code, that is the part Cotlet covers.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. builds and runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), operating since 2019 and founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the LearnWorlds tools go to contact@cotlet.dev.

LearnWorlds MCP server: questions

How do I connect LearnWorlds to ChatGPT or Claude?

Sign up at cotlet.dev, log in to LearnWorlds once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your LearnWorlds account through Cotlet, in their phone apps too.

What can ChatGPT do in LearnWorlds?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in LearnWorlds: enroll a list of learners in a course; weekly course completion report; tag learners who finished a course. You ask in plain words, and anything that reaches other people waits for your OK first.

How do I get access?

Sign up free at https://cotlet.dev, open LearnWorlds under Integrations in the console and sign in to your school admin in its Cloud Browser. The trial starts with your first app, and no card is asked.

Which LearnWorlds plan do I need for the API?

The Learning Center plan or higher. LearnWorlds' help center says the progress export through the API is available on Learning Center and higher plans, and its pricing page points to Learning Center for tools like API. Cotlet works in your own admin session, so it follows what your admin dashboard offers on your plan.

Can the agent grade assessments?

Yes, the ones in Courses > Review Center. Open-ended questions (text, file upload, record video) wait there for a manual grade, and Submit Review shows the score and written feedback to the learner. Each grade asks for your OK by default.

Does LearnWorlds have webhooks?

Yes, on the Learning Center plan and above. They send events such as registrations and enrollments to a URL you set under Settings > Developers > Webhooks. Cotlet does not receive them. Run your agent on a schedule instead, for example a daily list_course_users pass.

Do I need the LearnWorlds API plan?

No. Cotlet works in your school admin with your own login, so there are no API keys to request. If you have the API, both can run side by side.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 11 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with LearnWorlds?

No. Cotlet is independent and not affiliated with LearnWorlds (CY) Ltd.

Give your agent access to LearnWorlds.

Free 7-day trial with 2,000 credits, no card needed.