Learning Studio / agents
Connect through MCP
Use the same validated course-editing path as the editor.
Connect
Section titled “Connect”Configure a compatible MCP client with your Learning Studio app origin followed by /mcp. Complete OAuth authorization. The KB domain does not host the MCP endpoint.
| Task | Tools |
|---|---|
| Discover and read | list_courses, get_course, list_course_versions |
| Course workspace | create_course, duplicate_course, rename_course, archive_course, delete_course, move_course |
| Folders | list_folders, create_folder, rename_folder, delete_folder |
| Check and reuse | validate_course, get_course_alignment, list_templates |
| Edit content | apply_course_ops |
| AI | draft_course, suggest_course_edit, suggest_blueprint, build_from_blueprint |
Use the client’s discovered tool schemas for exact arguments. Workspace writes and apply_course_ops take an idempotency key. AI drafting has a separate retry boundary described below. Read the latest version before applying course operations.
A reliable authoring sequence
Section titled “A reliable authoring sequence”- Create or locate the course.
- Read its content and version.
- Prepare native operations with fresh IDs.
- Apply operations, then read back and validate.
- Check the rendered result in the app.
AI edit and blueprint tools return suggestions to apply explicitly. draft_course creates a new course; it is not a suggestion-only operation. Prefer archive over deletion unless permanent removal is intended.
Input reference
Section titled “Input reference”courseId and folderId are UUID strings. Optional fields are marked with ?. Workspace write keys are 8–100 characters; use a new key for a different intended write.
| Tool | Inputs |
|---|---|
list_courses, list_folders |
No arguments |
list_templates |
kind? (block or section) |
get_course, list_course_versions, validate_course, get_course_alignment |
courseId |
create_course |
title (1–200 characters), idempotencyKey, language? (up to 16), folderId? (UUID or null) |
duplicate_course, rename_course |
courseId, title (1–200), idempotencyKey |
archive_course |
courseId, archived (boolean), idempotencyKey |
delete_course |
courseId, idempotencyKey |
move_course |
courseId, folderId (UUID or null), idempotencyKey |
create_folder |
name (1–120), idempotencyKey |
rename_folder |
folderId, name (1–120), idempotencyKey |
delete_folder |
folderId, idempotencyKey |
apply_course_ops |
courseId, baseVersion (integer ≥1), idempotencyKey, ops (1–500), label? (up to 200) |
draft_course |
text (up to 60,000), mode? (prompt or document), title?, language? |
suggest_course_edit |
courseId, baseVersion, instruction (3–2,000), scopeSectionId?, scopeBlockId? |
suggest_blueprint |
courseId, baseVersion, brief (10–4,000), length? (short, medium, long) |
build_from_blueprint |
courseId, baseVersion |
For suggest_course_edit, provide a content page’s scopeSectionId or a block’s scopeBlockId. The schema marks them optional, but the current runtime requires a valid page scope and rejects the cover or a chapter. If both are present they must refer to the same page. Suggestions cannot edit other pages.
MCP does not expose the HTTP dryRun option. Use the HTTP operation endpoint when validation without saving is required.
Drafting retry boundary
Section titled “Drafting retry boundary”draft_course requires at least 20 trimmed characters for a prompt or 200 for document text. It creates a course and has no idempotency key. If its response is interrupted, list courses and check whether creation completed before trying again. Suggestion tools can also invoke paid model requests on each retry even though they do not save course content.