udemy-mcp
Connects an AI agent to your own signed-in Udemy instructor account so it can create and manage coupons (e.g. paid or free-enrollment codes with start dates and durations), edit course details such as titles and subtitles, and add lectures and upload videos to existing sections. Also exposes browser-style tools (guide, status, open, read, click, type, close) for navigating and inspecting Udemy screens in the hosted cloud browser.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@udemy-mcpMake a free coupon for 100 students on my Excel course and send me the link."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
How to connect Udemy to Claude Code, ChatGPT and any AI agent
Yes, Claude, ChatGPT and other AI agents can work in your Udemy account. Udemy's official ChatGPT app helps you discover public courses, and the official Udemy Business connector for Claude needs an Enterprise subscription with the AI Connectors add-on. Cotlet.dev connects your own signed-in Udemy instructor account to any AI agent, so the AI creates coupons and updates your courses for you.
What you can ask
Create a coupon BLACKFRIDAY26 for my Python Bootcamp course at $12.99, starting November 27 and running for 5 days.
Make a free coupon for 100 students on my Excel for Beginners course and send me the link.
Change the title of my React course to "React 19 Complete Guide" and rewrite the subtitle to match.
Add a lecture called "Deploying to Vercel" at the end of section 8 in my Next.js course and upload this video.
Which of my coupons end this week? Create new ones at the same price for my top 3 courses.
Related MCP server: Game Studio MCP
Connect in 2 minutes
Get your API key at https://cotlet.dev/app and export it as COTLET_API_KEY.
Claude Code
claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 --header "Authorization: Bearer $COTLET_API_KEY"ChatGPT
Settings → Apps → add connector URL https://cotlet.dev/mcp/v1, then sign in with Cotlet.dev. No API key needed.
Cursor
Copy .cursor/mcp.json from this repo into your project:
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": {
"Authorization": "Bearer ${COTLET_API_KEY}"
}
}
}
}Run it locally (stdio)
This repo is a real MCP server. It speaks MCP over stdio, lists its Udemy tools without any key, and forwards every tool call to the hosted Cotlet.dev server. The hosted URL above stays the recommended way. Use this when your client only starts local servers.
{"mcpServers":{"udemy":{"command":"uvx","args":["udemy-mcp"],"env":{"COTLET_API_KEY":"your-key"}}}}Or with Docker:
docker build -t udemy-mcp .
docker run -i --rm -e COTLET_API_KEY udemy-mcpTools: udemy_guide, udemy_status, udemy_open, udemy_read, udemy_click, udemy_type, udemy_close. Without COTLET_API_KEY a tool call answers: "Set COTLET_API_KEY. Get a key at https://cotlet.dev/app".
Command line
Python 3.10+, nothing else to install. From PyPI:
pip install udemy-mcp # or run it once: uvx udemy-mcp connect
udemy-mcp connectOr straight from this repo:
export COTLET_API_KEY="your-key"
python3 udemy_agent.py connect # ready config for Claude Code, Cursor, ChatGPT
python3 udemy_agent.py status # is Udemy ready in your Cotlet.dev account
python3 udemy_agent.py guide # Udemy screens and sign-in link
python3 udemy_agent.py read # open Udemy, read the page, close the browser
python3 udemy_agent.py tools # list Cotlet.dev tools
python3 udemy_agent.py serve # start the stdio MCP server (same as no argument)Questions from Udemy users
Does Udemy have an API?
Udemy has an Instructor API that lists your courses, reads reviews, and reads and answers Q&A questions and direct messages (checked 12 Oct 2026). It has no coupons, announcements, review responses, course edits or revenue. Cotlet.dev works in your own signed-in Udemy account, so your AI agent can create coupons and update courses with no API key and no code.
How do I connect Udemy to ChatGPT?
Udemy's official ChatGPT app helps you discover public courses. To manage your own courses, add Cotlet.dev as an app in ChatGPT (Settings → Apps, connector URL https://cotlet.dev/mcp/v1), sign in to Udemy once in your Cotlet.dev Cloud Browser, and ask ChatGPT in plain words. No code and no Udemy API key.
Is there a way to use Claude with Udemy?
Yes. Claude lists an official Udemy Business connector, which needs an Enterprise subscription plus the AI Connectors add-on. To work in your own Udemy account, run the one-line claude mcp add command above in Claude Code, or add https://cotlet.dev/mcp/v1 as a custom connector in the Claude app.
Is there a Udemy MCP server?
Udemy offers an official Udemy Business connector for Claude, focused on learning. Cotlet.dev is a hosted MCP server that works in your own Udemy account for you, 24/7, with Claude, ChatGPT, Cursor, Codex, n8n, Make and Zapier.
Find it on
Also works with
Start free: https://cotlet.dev/signup?app=udemy&utm_source=github&utm_medium=readme&utm_campaign=udemy
Available Tools
7 toolsudemy_clickBInspect
Click a numbered element on the current Udemy page.
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | Element number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it gives almost nothing: it does not say whether a click navigates to a new page, mutates server state, triggers async loading, or requires a subsequent udemy_read to re-number elements. For a browser-automation click with no annotation coverage, that leaves the agent guessing about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the action front-loaded and no filler. It is efficient, though the brevity is partly the source of the missing behavioral detail rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no description of post-click state, an agent cannot tell whether the click changes the page and invalidates element numbering. For a stateful browser tool the definition is under-specified relative to its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is already fully documented including the 'from the last read' provenance. The description reinforces the 'numbered element on the current page' framing but adds no new detail such as range limits or what happens with a stale index. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (click) and object (numbered element on the current Udemy page), which clearly separates it from siblings like udemy_type and udemy_read. It stops short of naming those siblings explicitly, so differentiation relies on the agent inferring intent from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Numbered element" plus the schema note "Element number from the last read" implies the prerequisite that a read must happen first and that a page must be current/open. There is no explicit statement of when to choose click over udemy_type or udemy_open, and no exclusion or failure guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_closeAInspect
Close the Udemy browser session when the work is done, so credits stop running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the cost consequence (credits stop running) and that the session terminates, but says nothing about idempotency, behavior when no session is open, or whether any state is lost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and followed by the reason to use it. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter teardown tool with no output schema and no annotations, the description covers purpose and motivation adequately. Only edge-case behavior (already-closed session, error modes) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close the Udemy browser session'), and the implicit counterpart to udemy_open is easy to infer. It does not name any sibling explicitly, so it falls just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition ('when the work is done') plus the reason to act (credits stop running). It stops short of naming udemy_open as the alternative or stating what happens if no session exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_guideAInspect
How to work in Udemy (create coupons and update courses): its screens and the sign-in link. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | What you want done in Udemy, in your words. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden. It does say what the tool surfaces (screens and sign-in link), which signals a read-only orientation/help resource, but it does not state the response shape (free text vs structured screen map) or any limits on the guide's coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence plus a front-loaded imperative; nothing is wasted. Slightly awkward phrasing ('its screens and the sign-in link') but every clause carries information about content or ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema helper this is close to adequate: it says what the guide contains and that it should be called first. It falls short on whether the guide must precede every task or only at session start, and on what the agent receives back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'task' parameter with 100% schema description coverage, so the schema already explains it as free-form user intent. The description's examples (create coupons, update courses) give useful framing for what to put in 'task' but add no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (Udemy) and what the guide covers concretely: 'its screens and the sign-in link', with example tasks (create coupons, update courses). That distinguishes it from the action siblings (udemy_open, udemy_click, udemy_type) which perform operations rather than explain them. The framing 'How to work in Udemy' is slightly soft but the parenthetical grounds it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first' is an explicit ordering directive that tells the agent when to reach for this tool relative to all six siblings. What's missing is a when-not condition or whether it needs to be re-called per task versus once per session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_openCInspect
Open a Udemy page in your signed-in Cloud Browser (default https://www.udemy.com) to work with create coupons and update courses.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Page to open. Default: https://www.udemy.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden; it does disclose that the page opens in a signed-in Cloud Browser, which is genuinely useful auth/session context. However, it never says whether an already-open session is reused or navigated away, whether existing page state is lost, or what happens on invalid URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence, so length is fine, but the second half ("to work with create coupons and update courses") is garbled and adds confusion rather than information. The useful scoping detail is front-loaded, but the sentence does not fully earn its words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For the entry-point tool in a browser-automation family (open/close/read/click/type), an agent needs to know the relationship to those siblings and whether this establishes the session they depend on; neither is addressed. With no output schema, the description should also indicate whether anything is returned (page content vs. just a navigation acknowledgement), and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single optional parameter at 100% schema description coverage, the schema already documents the url field and its default. The description merely restates the default (https://www.udemy.com) without adding constraints, accepted formats, or whether relative paths are allowed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The leading clause gives a clear verb and resource ("Open a Udemy page in your signed-in Cloud Browser"), but the trailing clause "to work with create coupons and update courses" is grammatically broken and could mislead an agent into thinking this tool creates coupons or updates courses itself. It also does not position the tool relative to siblings like udemy_read, udemy_click, or udemy_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this versus udemy_read, udemy_click, udemy_type, or udemy_guide, nor whether opening must precede those tools or whether it reuses an existing session. The only usage hint is the implied need for a signed-in browser.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_readAInspect
Read the current Udemy page: its text and numbered buttons, links and fields.
| Name | Required | Description | Default |
|---|---|---|---|
| element | No | Read only inside this element. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description must carry the behavioral burden. "Read" implies a non-mutating operation and the mention of numbered elements hints that the output assigns the indices consumed by sibling click/type tools, which is genuinely useful. It does not state what happens if no page is open, whether reading scrolls or navigates, or what the element numbering rules are.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the colon efficiently enumerates the returned content types. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter read tool with no output schema, the description covers purpose and rough return shape adequately. The remaining gap is the linkage between the numbered elements it emits and the indices accepted by udemy_click, which is only hinted at rather than stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional "element" parameter is documented as "Read only inside this element." The description never mentions the parameter, so it adds nothing beyond the schema; the baseline 3 applies when the schema already does this work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read the current Udemy page" names a specific verb and resource, and the clause about text and numbered buttons/links/fields previews what comes back. It implicitly separates itself from the sibling action tools (click, type, open, close) but never names them or states the contrast explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the inspection step before udemy_click or udemy_type. There is no explicit "use this when..." statement, no mention of prerequisites (e.g. a page must already be open via udemy_open), and no exclusions pointing to udemy_status or udemy_guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_statusAInspect
Check that your Cotlet.dev account and Udemy are ready: account, credits and Udemy connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the three areas inspected (account, credits, connection), which frames this as a read-only diagnostic. It does not state whether the call can fail, cost credits, require authentication, or what the result looks like — a real gap given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the enumerated check items are easy to scan. The phrasing "Check that your Cotlet.dev account and Udemy are ready" is slightly awkward, mixing the credential owner with the service being connected.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description should convey what the agent learns from the response. It names the checked dimensions but not the shape of the result (status flags, error text, remediation guidance), so an agent cannot predict the outcome format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The three named check domains add a little orientation without implying any input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ("Check") with a concrete resource set: Cotlet.dev account, credits, and the Udemy connection. This clearly separates it from siblings like udemy_open, udemy_click, and udemy_type, which are browser actions, though it never explicitly names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word "ready" suggests a preflight check before invoking the other udemy_* tools, but the description never says when to call it, when not to, or which sibling to use instead if it fails. The agent must infer the workflow position itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
udemy_typeCInspect
Type text into a numbered field on the current Udemy page.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type. | |
| element | Yes | Field number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not say whether typing replaces existing text or appends to it, whether it places focus first, whether it triggers change/keyboard events, or whether it ever submits the form — all behaviors an agent needs to know before acting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundant restatement of the name. It is appropriately sized for a simple two-parameter tool, though brevity is achieved partly by omitting needed context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple low-complexity tool with full schema coverage and no output schema, the definition covers the basic mechanics. However, with zero annotations and no statement of replace-vs-append or submission behavior, an agent could still invoke it incorrectly in a form-filling flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented ('Text to type,' 'Field number from the last read'). The description only echoes the notion of a numbered field and adds no syntax, formatting, or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action on a specific target ('type text into a numbered field on the current Udemy page'), which is distinct from the verbs used by siblings like udemy_read, udemy_click, and udemy_close. It does not explicitly differentiate itself from the sibling set, but the verb+resource combination is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool rather than udemy_click or udemy_read, and no mention of the prerequisite workflow that the 'numbered field' concept implies (i.e., that element numbers come from a prior page read). The only usage hint, 'Field number from the last read,' lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.1.0- First observed
udemy_click - First observed
udemy_close - First observed
udemy_guide - First observed
udemy_open - First observed
udemy_read - First observed
udemy_status - First observed
udemy_type
TDQS
Scored across 7 tools
Each tool has a distinct role in a browser-automation workflow: setup/help (guide, status), session lifecycle (open, close), and page interaction (read, click, type). There is no meaningful overlap between tools, and the descriptions make the boundaries clear.
All tools consistently use the udemy_ prefix, which makes the set easy to recognize. Most names use clear action verbs, though guide and status are noun-like rather than verb-based, a minor deviation.
Seven tools is well-scoped for a browser-automation server focused on Udemy coupon creation and course updates. Each tool earns its place, with no obviously redundant or missing lifecycle pieces.
The set covers the essential browser workflow: check readiness, read page state, open pages, interact via click/type, and close the session. Some common browser actions like scrolling, navigation history, or waiting are absent, but the core loop is functional.
Maintenance
Related MCP Connectors
The official Upwork MCP server, letting AI agents connect to Upwork and act on your behalf.
The AI admin for Discord: manage channels, roles, members, moderation and automations.
Teachable MCP server for ChatGPT, Claude and any AI agent: update lecture, create coupon, send email, reply to comment and list enrollments in your own Teachable account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Teachable yourself; Cotlet does not store your password and you need no Teachable API key. About the official Teachable API: Teachable has a public API, but only on the Growth plan and up, and it reads courses and lecture content and manages users, enrollments, pricing plans and transactions (checked 11 Oct 2026). Lesson editing, coupons, emails to students and comments are not in it. Setup and FAQ: https://cotlet.dev/integrations/teachable-api-mcp-server
Build Discord communities with AI: roles, channels, modules, automations and reviewed announcements.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceControl your Discord server with AI. Lets you manage channels, roles, members, messages, and more through natural language.203 npmMIT
- FlicenseNot gradedqualityDmaintenanceThis server enables AI assistants to directly control the Unity Editor via MCP, supporting scene manipulation, script editing, level generation, monetization management, build pipelines, and more—all with zero external dependencies.-
- AlicenseBqualityDmaintenanceAn MCP server that enables AI agents to manage a Frappe LMS instance, including creating courses, chapters, lessons, quizzes, enrollments, batches, and certificates.39MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous Discord server administration via natural language, allowing users to delegate tasks like channel/role creation, permission checks, and automations to an AI agent with safety gates and audit trails.MIT