Tools · Courses
MCP tools for courses: listing and viewing courses with their modules and lessons, building a whole course with the product that sells it, editing and deleting the course, adding, editing, moving and deleting modules and lessons, and the student's side: enrollment and progress.
Building and maintaining courses: a whole course in one call (space, modules, lessons and the sales product), the cover and the status, and then the modules and lessons: adding, renaming, reordering, moving a lesson to another module and deleting. Students enroll and mark their progress through the conversation. Each lesson's content (text, video) still goes in through the dashboard.
Each tool carries a badge: Read-only changes nothing, Changes creates or changes something right away, and Asks to confirm only acts after your yes to a summary. See Money and confirmation.
In short
| Tool | What it does | Minimum role | Type |
|---|---|---|---|
list_courses | The community's courses | Any | Read-only |
get_course | A course with its modules and lessons | Any | Read-only |
create_course | Space, course, modules, lessons and the product, in one go | Admin | Changes |
update_course | Edits a course's title, level, status and cover | Admin | Changes |
create_course_module | Adds a module to a course | Admin | Changes |
create_lesson | Adds a lesson to a module | Admin | Changes |
update_course_module | Renames a module or changes its position | Admin | Changes |
update_lesson | Changes a lesson, or moves it to another module | Admin | Changes |
delete_course_module | Deletes a module with its lessons | Admin | Asks to confirm |
delete_lesson | Deletes a lesson | Admin | Asks to confirm |
delete_course | Deletes a course | Admin | Asks to confirm |
enroll_in_course | Enrolls you in a published course | Member (not finance) | Changes |
complete_lesson | Records your progress in a lesson | Member (not finance) | Changes |
list_courses
Read-only
List courses. The community's courses. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
space_id | id | No | Only the courses in one courses space |
Returns: the courses, with id, slug, title, level and status.
Ask like this: "Which courses already exist?"
get_course
Read-only
View a course with modules and lessons. A course with its full structure. Minimum role: any.
| Parameter | Type | Required | Description |
|---|---|---|---|
course | text | Yes | The course id or slug |
Returns: the course, the modules (with the id create_lesson needs) and each module's lessons.
Ask like this: "Show me the structure of the Excel from Scratch course."
create_course
Changes
Create a complete course. Courses space → course → modules → lessons → (optional) the product that unlocks the space. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | text, up to 255 | Yes | The course title |
description | plain text | No | No formatting: Markdown marks are stripped |
level | beginner, intermediate, advanced | No | Default: beginner |
space_id | id | No | An existing Courses space |
section_id | id | No | Where to create the space, if space_id isn't given |
space_title | text | No | Default: the course title |
icon | one of the icons in the list | No | The icon of the space it creates. See Icons |
image_url | link | No | The course cover. See Images |
modules | list, up to 30 | No | Each with title (required) and lessons |
sale | object | No | The product that sells the course (see below) |
idempotency_key | text, up to 100 | No |
Each module has title and lessons, a list of up to 50, and each lesson has title (required), type (text, video, link, image; default text) and duration (e.g. 12 min).
The sale (and the ticket, in create_event):
| Field | Type | Description |
|---|---|---|
price | number, in reais | Required |
title | text, 3 to 255 | Default: the course title (or Ingresso — event title) |
type | ONE_TIME, INSTALLMENT, SUBSCRIPTION | Default: ONE_TIME (one-time) |
interval | MONTHLY, YEARLY | Only for SUBSCRIPTION |
max_installments | 1 to 12 | Up to how many card installments |
stock | number | Quantity on sale |
direct_link | yes or no | Sold by direct link |
publish | yes or no | Put on sale right away. Default: draft |
Returns: the space (and whether it was just created), the course (id, title, slug, status), the modules with their lessons, and the product (id, title, price, status), if any.
Ask like this: "Build the Excel from Scratch course in the courses space, with the modules Basics, Formulas and Pivot tables, 3 video lessons in each, and a R$ 297 product in up to 10 installments, as a draft."
Notes: lessons store title, type and duration; the content goes in through the dashboard. The product unlocks the course space for buyers.
update_course
Changes
Edit a course. Changes the title, description, level, status (draft, published, archived) and the cover. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
course | id, slug or link | Yes | |
title, description | text | No | |
level | beginner, intermediate, advanced | No | |
status | draft, published, archived | No | |
image_url or image_base64 | link or file | No | The new cover |
Ask like this: "Publish the Excel from Zero course and swap the cover for this one."
Notes: modules and lessons change with update_course_module, update_lesson and the delete tools.
create_course_module
Changes
Add a module to a course. Adds a module to the end of an existing course. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
course_id | id | Yes | From list_courses or create_course |
title | text | Yes |
Returns: the new module, with the id create_lesson needs.
Ask like this: "Add a Charts module to the Excel from Scratch course."
Notes: to rename it or change its position later, update_course_module.
create_lesson
Changes
Add a lesson to a module. Adds a lesson to the end of a module. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | id | Yes | From get_course |
title | text | Yes | |
type | text, video, link, image | No | Default: text |
duration | text | No | E.g. 12 min |
Returns: the new lesson.
Ask like this: "In the Charts module, create the lessons Line charts (8 min) and Pie charts (6 min), both video."
Notes: the lesson stores title, type and duration. The content (the text, the video) isn't saved through MCP yet: add it in the dashboard.
update_course_module
Changes
Edit course module. Renames a module or changes its position. Only what you send changes. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | id | Yes | From get_course |
title | text, up to 255 | No | |
order | number, from 0 | No | The position in the course |
Ask like this: "Rename the Formulas module to Essential formulas and make it second."
update_lesson
Changes
Edit lesson. Changes a lesson's title, type, duration or position, or moves it to another module of the same course. Only what you send changes. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
lesson_id | id | Yes | From get_course |
title | text, up to 255 | No | |
type | text, video, link, image | No | |
duration | text | No | E.g. 12 min |
order | number, from 0 | No | The position in the module |
module_id | id | No | Moves the lesson to this module (of the same course). Without order, it goes to the end |
Ask like this: "Move the Pie chart lesson to the Fundamentals module, as the last lesson."
Notes: the lesson's content still goes in through the dashboard.
delete_course_module
Asks to confirm
Delete course module. Deletes a module and all its lessons. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | id | Yes | From get_course |
course | id, slug or link | No | The course, so the summary shows the names of the module and its lessons |
Notes: the progress of whoever already watched is kept.
delete_lesson
Asks to confirm
Delete lesson. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
lesson_id | id | Yes | From get_course |
course | id, slug or link | No | The course, so the summary shows the lesson's name |
Notes: the progress of whoever already watched is kept.
delete_course
Asks to confirm
Delete course. The course is archived and leaves the feed. Minimum role: admin.
| Parameter | Type | Required | Description |
|---|---|---|---|
course | id, slug or link | Yes |
Returns: on the first call, the title, how many modules and enrollments the course has, and the confirmation code.
enroll_in_course
Changes
Enroll in course. Enrolls you in a published course. Role: owner, admin, moderator or member.
| Parameter | Type | Required | Description |
|---|---|---|---|
course | id, slug or link | Yes |
Ask like this: "Enroll me in the Excel from Scratch course."
complete_lesson
Changes
Record lesson progress. Marks a lesson as completed, or records a percentage, in a course you're enrolled in. Role: owner, admin, moderator or member.
| Parameter | Type | Required | Description |
|---|---|---|---|
course | id, slug or link | Yes | |
lesson_id | id | Yes | From get_course |
completed | yes or no | No | Default yes |
progress_percent | from 0 to 100 | No |
Ask like this: "Mark the Basic formulas lesson as watched."