Skip to main content
Glama

Update Module

update_module
Destructive

Update an existing module's name, position or published state, and return the updated module object. Only the fields you pass are changed — anything you omit keeps its current value.

Instructions

Update an existing module's name, position or published state, and return the updated module object. Only the fields you pass are changed — anything you omit keeps its current value. Setting published: true publishes the module AND every item inside it (items Canvas couldn't publish come back as publish_warning_items); published: false unpublishes the module and every item inside it the same way — there is no way to change a module's published state without it cascading to its items. Use get_module to check the current state first, and list_modules to find the module_id. Requires instructor/TA permission to manage course content.

Input Schema

NameRequiredDescriptionDefault
nameNoNew name for the module
positionNoNew position in the module list
course_idYesThe Canvas course ID
module_idYesThe Canvas module ID
publishedNoWhether the module is published

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.18.15
    • addedInput schema / properties / course_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / course_id / type
      Removed value: -"number"
    • addedInput schema / properties / module_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / module_id / type
      Removed value: -"number"
  2. Changed1 schema field changedv1.18.11
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. First observedv1.18.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only flag destructiveHint/openWorldHint; the description goes far beyond by disclosing that any published-state change cascades to every item in the module with no way to avoid it, that unpublishing cascades identically, that partial items come back as publish_warning_items, and that omitted fields are preserved. That is exactly the non-obvious blast-radius information an agent needs before calling a destructive tool.

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

Conciseness4/5

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

Front-loaded with purpose, then side effects, then navigation hints — no wasted sentences. It is a dense single block, though, and the cascade warning is long enough that it could be broken out for faster scanning.

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?

No output schema exists, so the description carries the return contract itself ('return the updated module object' plus publish_warning_items), and it covers permissions, side effects, and prerequisites. Nothing material for correct invocation is missing.

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 coverage is 100% so the baseline is 3, but the description adds real meaning the schema lacks: patch-style 'only fields you pass are changed' semantics, and the cascading consequence of the published boolean, which the schema only labels 'Whether the module is published'.

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?

Opens with a specific verb+resource+field list ('Update an existing module's name, position or published state') plus the return value, which cleanly separates it from update_module_item, create_module and delete_module in the sibling set.

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

Usage Guidelines4/5

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

Gives explicit prerequisite routing: use get_module to check state first and list_modules to find the module_id, plus the instructor/TA permission requirement. It stops short of explicitly excluding the module-item sibling (update_module_item), so an agent must infer that boundary from the resource name.

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

Deploy Server

Other Tools