Skip to main content
Glama

Cubite LMS: Learning Management System

Replace course content

course_content_set
Destructive

Replace a course's lessons by saving a complete new content version, which enrolled learners see immediately; settings such as price or visibility are changed with course_update instead. Earlier versions stay readable with course_content_get, so a bad write can be rolled back. This is not a patch: send the whole course every time, as blocks (EditorJS) or markdown (prose only), with H2 headers as section titles and H3 headers as unit titles. Keep each existing block's id from course_content_get: learners' answers, submissions and completion records are tied to block ids, so a block saved without its id (and every block written as markdown) no longer shows its learners' history. Get block shapes from block_type_list; its courseAssessments blocks (quiz, assignment, form, poll and similar) are valid ONLY in course content. Every call adds a version, even an identical one; returns the new version number and block count.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesCourse id (required).
blocksNoThe complete lesson list as EditorJS blocks [{id?, type, data}], in order (must not be empty). Include each existing block's id to keep its learner records; blocks without one get a new id. Wins over markdown if both are sent.
authorIdNoUser recorded as this version's author; must belong to this site. Defaults to the site's first admin.
markdownNoThe whole course as Markdown (headings, paragraphs, lists, checklists, quotes, tables, code), converted to blocks with new ids; it cannot express graded blocks. Use this OR blocks.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the destructiveHint=true annotation: learners see changes immediately, every call creates a version, earlier versions remain readable for rollback, and block ids are essential for preserving learner history. It also discloses the return value (new version number and block count) despite no output schema, which is unusually thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, front-loading the core action and then covering usage, format, ids, and versioning in a logical order. Every sentence carries actionable information, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a destructive replace operation with no output schema, the description covers everything an agent needs: scope, alternatives, format requirements, id handling, rollback path, and return values. It is complete and leaves no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes further by explaining the semantics of `blocks` versus `markdown` (EditorJS vs prose only, markdown cannot express graded blocks), the heading conventions (H2 for sections, H3 for units), the importance of block ids, and that blocks wins over markdown if both are sent. This meaningfully enriches the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and scope: 'Replace a course's lessons by saving a complete new content version.' It distinguishes itself from siblings by naming course_update for settings and course_content_get for reading earlier versions, so the agent knows exactly what this tool does and doesn't do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance by contrasting this tool with course_update ('settings such as price or visibility are changed with course_update instead') and clarifies that it is not a patch ('send the whole course every time'). It also points to course_content_get for rollback, naming alternatives directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources