audio_upload
ChatGPTDownload an audio file from the supplied public URL and host it on MCG storage. Accepts a staged downloadUrl from media_upload_url. Returns documentId and a durable url for a lesson audio block. Optional replaceId overwrites an existing audio document at the same hosted URL, affecting every lesson that uses it, including live lessons. Without replaceId each call creates a new document. Supported extensions include mp3, wav, ogg, flac, aac, m4a, mp4, and wma.
course_add_certificate
ChatGPTAdd the default completion-certificate configuration to a Course in the connected account, or return its existing configuration. New certificates use the default 85% success threshold, adjustable in the MCG admin interface. This configures course-level certificate eligibility; it does not issue or email a certificate to a learner during this call.
course_analytics
ChatGPTRetrieve aggregate analytics for a Course in the connected account: assigned, engaged and completed learners, certificates, badges, and mean quiz score. Optional moduleId narrows the report. Returns counts and aggregate scores without learner identities or individual answers. Public courses have no enrollment roster; use these engagement figures for their reach.
course_create
ChatGPTCreate a new Course in the connected MCG account with a default landing page and public-link access. The course landing page can be viewed by anyone with its link; modules are created separately as drafts. Optional landingPage YAML supplies custom copy and triggers background cover-image generation through MCG's image provider, unless coverImageUrl or the YAML's cover_image.url names an existing image, which is used as-is with no generation or credits (a third-party image url is first copied into MCG storage). A generated cover consumes MCG AI credits at the lesson-image rate; if credits are insufficient the landing page is saved without a cover. Returns the course ID and previewUrl. Each call creates another course, and a later landing-page failure can leave the course created. See get_content_format for the YAML format.
course_finishers
ChatGPTList learners who completed a whole Course in the connected account, with identity, mean score, completion time, and certificate URL when issued. Optional from filters by completion date. Paginated: default 20 rows, maximum 100. Contains learner personal data.
course_learner_add
ChatGPTAdd a learner to a Course's default team in the connected account, creating a learner account if needed. Supply email and/or username; username defaults to email. This grants team-based course access without changing the course's access rule. By default no email is sent. sendInvite: true also emails the learner the course's invite (its saved invite subject and body, with their personal sign-in link) — this emails a real person, so confirm with the user before setting it. Returns accountCreated, alreadyMember, and errors; a non-empty errors list means enrollment failed. With sendInvite, inviteSent and inviteError report the email; a learner invited in the last 10 minutes is not emailed again. Existing membership is not duplicated.
course_learner_invite
ChatGPTEmail a Course's invite to learners already on it in the connected account, using the course's saved invite subject and body; each learner gets their own sign-in (magic) link. This emails real people — confirm the recipients with the user before calling. Pass up to 20 emails or usernames. Learners not on the course are skipped (add them with course_learner_add first), as are learners without an email address and anyone invited in the last 10 minutes. onlyNotYetInvited (default true) also skips anyone ever sent this invite; set it false to resend. Returns sent and skipped (with a reason for each). Does not change course access.
course_learner_remove
ChatGPTRemove a learner from every team granting access to a Course in the connected account. Revokes team-based access and can also remove access to other courses shared by those teams. Does not block public-link access to public courses. Retains the learner account, progress, and certificates; re-adding to this course does not restore all prior team memberships. Returns removed: false when no matching membership exists. Does not send email.
course_learners
ChatGPTList a Course's enrolled learners with identity, progress, score, certificate state, and last activity. Paginated: default 20 rows, maximum 100. Public courses have no enrollment roster and return no rows with an explanatory note; this does not mean nobody viewed them. Use course_analytics for engagement. Contains personal data from the connected account.
course_list
ChatGPTList courses in the connected MCG account. A Course is a top-level program containing Modules. Returns a page of items with totalCount and hasNextPage; default page size is 20, maximum 100. Retrieve further pages when the requested result requires all courses.
course_update
ChatGPTReplace an existing Course's name, description, and/or cover image in the connected account. Only supplied non-empty fields change; at least one is required. coverImageUrl takes an image_upload url or any public image url (a third-party image is copied into MCG storage first); it replaces the cover, landing-page header image, and thumbnail without generating one. Changes can appear immediately on its public landing page. Does not edit landing-page body copy.
get_content_format
ChatGPTReturn the Mini Course Generator authoring guide, including Module YAML, lesson content blocks, quiz fields, landing-page copy, and media requirements. Use when preparing input for module_push, lesson_create, lesson_update, or course_create with landingPage. Does not create content.
image_upload
ChatGPTDownload an image from the supplied public URL and host it on MCG storage, adding it to the Media Library. Accepts a staged downloadUrl from media_upload_url. Returns imageId and a durable url to use as a lesson image block's url (instead of prompt): the image is placed as-is, with no AI generation and no AI credits. Each call creates a new image. Supported formats: png, jpg, gif, webp, svg (sanitized: scripts and external references are removed), tiff, and ico. Tools that take an image url copy third-party urls into MCG storage on their own; use this for local files or to get the url first.
learner_get
ChatGPTRetrieve one learner's course and per-module progress in the connected account, including scores, completion times, and certificate state. startedOnly excludes assigned courses the learner has not opened. Accepts email, username, or an anonymous session identifier returned by learner_list. Contains learner personal data.
learner_list
ChatGPTList learners across courses in the connected account with identity and counts of courses enrolled, started, and completed. search matches name, email, or username; completedOnly and registeredOnly narrow the results. Paginated: default 20 rows, maximum 100. Anonymous public-link learners have a session identifier and no name or email. Contains learner personal data.
lesson_create
ChatGPTCreate a new draft info or quiz Lesson in an existing Module and Section. Info content uses a content: YAML document; quiz content requires question and choices. See get_content_format. Image prompts trigger background generation through MCG's image provider and consume MCG AI credits; third-party url: images are copied into MCG storage without credits. Returns the new lesson ID. Learner access requires publishing; each call creates another lesson.
lesson_delete
ChatGPTDelete a Lesson from the connected account. Removes the lesson from learner access if published. Its content cannot be restored through this tool.
lesson_discard_changes
ChatGPTDiscard a Lesson's unpublished edits and restore its published version as the working copy. Removes draft content, newly added draft options, and pending option/setting changes without an undo operation. Intended for a lesson with published_with_changes status; does not unpublish its live version.
lesson_get
ChatGPTRetrieve a Lesson in the connected account, including its title, type, sectionId, and rendered HTML body in text. Does not return the original authoring YAML. Use module_get for publish status and lesson_selections for authored quiz options.
lesson_move
ChatGPTReplace a Lesson's saved order within its Module and optionally its Section assignment within the same module. Lower order values come first. These structural changes apply immediately to a published module; they do not wait for lesson_publish.
lesson_publish
ChatGPTPublish one Lesson or apply its pending edits to the live version. Overwrites previous live content and can remove quiz options without retaining the prior version. Learners can see it only if its Module is also published, under the course's access rules (public courses allow anyone with the link). Use for a request to make this lesson or its edits live.
lesson_selections
ChatGPTRetrieve a quiz or survey Lesson's authored options, including each option's ID, text, and correct-answer flag. Does not return learner responses; use module_answers for one learner's answers.
lesson_unpublish
ChatGPTUnpublish one Lesson and revoke learner access to it immediately, while leaving the rest of its Module unchanged. Retains its content, pending edits, ID, and progress records so it can be published again.
lesson_update
ChatGPTEdit a Lesson's title, its entire body, or a quiz's question and choices. At least one non-empty field is required. For an info lesson, content is an MCG content: YAML document that replaces the whole body. For a quiz lesson, content is the same YAML lesson_create accepts (question: and/or choices:, each choice a text: with correct: true on the right one); omit question: or choices: to keep it. choices: is the complete new list, matched to the existing options by position: option ids (and learners' past answers) are preserved, extra choices are added and surplus options removed; returns each option with its status. A content: body sent to a quiz, or content that compiles to an empty body, is rejected rather than overwriting the question. On published lessons, text, question and answer-key edits remain pending until lesson_publish. Image prompts also trigger external image generation, consume MCG AI credits, and can modify the stored live image body. Repeating image-bearing updates can generate and charge again. Third-party url: images are copied into MCG storage (no credits). Keep existing images: read the lesson with lesson_get first and write each image you are keeping as url: <its img src> instead of prompt: — a url: image is placed as-is, never regenerated. Use prompt: only for an image that is new or that the user asked to replace. See get_content_format for the content format.
media_upload_url
ChatGPTIssue temporary signed upload and download URLs for a new file location on MCG storage (about two hours). Grants a temporary upload capability but does not upload file bytes or host a finished media asset. A client capable of HTTP PUT must upload the bytes to uploadUrl using the matching contentType before passing downloadUrl to video_upload, audio_upload, image_upload, or scorm_upload. Returns key, contentType, and expiresAt as well as the URLs. Each call issues URLs for a new location.
module_analytics
ChatGPTRetrieve aggregate analytics for one Module in the connected account: assigned, engaged and completed learners, badges, and mean quiz score. Returns counts and aggregate scores without learner identities or individual answers.
module_answers
ChatGPTRetrieve one learner's per-question responses in a Module, including quiz lessons and supported activity blocks (crossword, wordle, word search, riddle, jumble, pixel quest, and SCORM). Returns selected options or text answers and grading where available; source and blockType identify the activity. isCorrect: null means ungraded or unanswered, not an incorrect answer. SCORM responses can lack question text. Contains learner personal data from the connected account.
module_create
ChatGPTCreate an empty draft Module inside an existing Course in the connected account. A Module contains Sections and Lessons; use module_push to create these together from YAML. Learners cannot access the module until it is published. Optional description is saved in a follow-up update; descriptionWarning reports a failure of that update. Each call creates another module.
module_delete
ChatGPTDelete a Module in the connected account together with its Sections and Lessons. Removes it from learner access if published. Content cannot be restored through this tool.
module_finishers
ChatGPTList learners who completed a Module in the connected account, with identity, progress, quiz score, and start/finish times. Optional from filters by completion date. Paginated: default 20 rows, maximum 100. Contains learner personal data.
module_get
ChatGPTRetrieve a Module in the connected account with its Sections, Lessons, and their IDs. Returns module and per-lesson publish status (draft, published, or published_with_changes), pendingLessonCount, and authored content. Use to inspect structure or pending changes before editing or publishing.
module_list
ChatGPTList the Modules in an existing Course in the connected account, including IDs, names, section/lesson counts, and module publish status. Use module_get for the Sections, Lessons, and pending edits within one module.
module_move
ChatGPTChange a Module's zero-based position within its Course. Other modules retain their relative order and shift around it. This replaces the saved ordering and can immediately change the sequence shown to learners. Use module_list to inspect the current order.
module_publish
ChatGPTPublish a Module and every Lesson inside it, including all pending lesson edits. Pending edits overwrite the previous live content and can remove quiz options; this tool does not retain the previous version. Learners gain access under the course's access rules, including anyone with the link for public courses. Returns publish state and published lesson count. Repeating the call refreshes the publication timestamp. Use for a request to make the entire module live.
module_push
ChatGPTCreate a new draft Module with Sections and Lessons from a kind: Module YAML spec. Optional spec.landingPage supplies landing-page content; courseId overrides the spec's target course. Image prompts and landing-page covers can trigger external image generation; lesson images and generated covers consume MCG AI credits (with insufficient credits the landing page is saved without a cover). Third-party image urls (image blocks, quiz images, landing covers) are copied into MCG storage first, without credits. The module requires module_publish for learner access. dryRun validates and renders lesson content locally without creating resources or generating images. Normal calls create another module on every retry and may leave partial content if a later step fails. Optional description is saved separately; failures appear as descriptionWarning. See get_content_format for the spec.
module_theme
ChatGPTReplace supplied Module theme settings: layout, typography, colors, and optional background image URL. Omitted settings remain unchanged. Theme changes apply immediately to a published module; learner browsers load the supplied background image URL. Use get_content_format for styling individual lesson content blocks instead.
module_unpublish
ChatGPTUnpublish a Module and revoke learner access to it immediately. The learner preview link stops working. Content and progress are retained so the module can be published again. Use for a request to take the whole module offline.
module_update
ChatGPTReplace a Module's name, description, cover image, and/or learner-interface language. At least one non-empty field is required; omitted fields remain unchanged. coverImageUrl takes an image_upload url or any public image url (a third-party image is copied into MCG storage first); it replaces the cover, landing-page header image, and thumbnail without generating one. Language resets interface labels to that language's defaults, including previously customized labels, and does not translate lesson text. These settings can change immediately for learners of a published module.
scorm_delete
ChatGPTDelete a hosted SCORM package and its files. Any lesson referencing the packageId, including a live lesson, will no longer be able to load the activity. This tool provides no restore operation. Use scorm_replace when the request is to update an existing package instead.
scorm_replace
ChatGPTDownload a replacement SCORM 1.2 ZIP from the supplied public URL and overwrite an existing hosted package, retaining its packageId. Every lesson referencing that package, including live lessons, uses the replacement without a separate lesson edit or publish step. Existing package files are replaced; this tool provides no rollback. Repeating the call downloads and processes the source again, which may have changed.
scorm_upload
ChatGPTDownload an existing SCORM 1.2 ZIP package from the supplied public URL and host it on MCG. Accepts a staged downloadUrl from media_upload_url. Does not author the activity or ZIP. Returns packageId, entryPointUrl, title, version, and fileName for a lesson scorm block. Each call creates a new hosted package; it does not publish a lesson. See get_content_format for package requirements.
section_create
ChatGPTAdd a new Section to an existing Module in the connected account. Sections group Lessons. Section structure is not held as a draft, so it can change the outline of a published module immediately. Each call creates another section.
section_delete
ChatGPTDelete a Section and its Lessons from a Module in the connected account. Removes that content from learner access if published. The deleted content cannot be restored through this tool.
section_update
ChatGPTReplace a Section's title in the connected account. Section titles are not held as drafts; the new title can appear immediately in a published module.
video_upload
ChatGPTImport a video from a publicly reachable file URL into MCG's Vimeo hosting account. Vimeo fetches the supplied URL and transcodes the video asynchronously. Accepts a staged downloadUrl from media_upload_url after the file has been uploaded. Returns shopClipId, clipId, and playerUrl; use shopClipId in a lesson video block. Playback may not be ready when the call returns. Each call creates a new hosted video; it does not publish a lesson.
whoami
ChatGPTReturn the authenticated Mini Course Generator account's user ID, email, the connected workspace's ID and name, the workspaces the account can connect to, and granted scopes. Use to check which account and workspace is connected; no account settings are changed.