Skip to main content
Glama

Add Module Item

add_module_item

Adds an item such as a file, page, assignment, quiz, discussion, subheader, or external link to a Canvas course module with position and completion settings.

Instructions

Add an item to a module.

Required fields depend on item_type: content_id for File, Discussion, Assignment, Quiz, and ExternalTool; page_url for Page; title for SubHeader and ExternalUrl.

Input Schema

NameRequiredDescriptionDefault
titleNoItem title (required for SubHeader, ExternalUrl; optional for others)
indentNoIndentation level (0-4)
new_tabNoOpen external links in new tab (default: False)
page_urlNoURL slug of the page (required for Page type)
positionNoPosition within module (1-indexed)
item_typeYesOne of: File, Page, Discussion, Assignment, Quiz, SubHeader, ExternalUrl, ExternalTool
module_idYesTarget module ID
content_idNoCanvas ID of the content (required for File, Discussion, Assignment, Quiz, ExternalTool)
external_urlNoURL for ExternalUrl items
course_identifierYesCourse code or Canvas ID
completion_requirement_typeNoOne of: must_view, must_submit, must_contribute, min_score, must_mark_done
completion_requirement_min_scoreNoMinimum score (only for min_score type)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.10.0
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object",
      -  "x-fastmcp-wrap-result": true
      -}New value: +null
  2. Changed29 schema fields changedv1.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / completion_requirement_min_score / description
      Added value: +"Minimum score (only for min_score type)"
    • removedInput schema / properties / completion_requirement_min_score / title
      Removed value: -"Completion Requirement Min Score"
    • addedInput schema / properties / completion_requirement_type / description
      Added value: +"One of: must_view, must_submit, must_contribute, min_score, must_mark_done"
    • removedInput schema / properties / completion_requirement_type / title
      Removed value: -"Completion Requirement Type"
    • addedInput schema / properties / content_id / description
      Added value: +"Canvas ID of the content (required for File, Discussion, Assignment, Quiz, ExternalTool)"
    • removedInput schema / properties / content_id / title
      Removed value: -"Content Id"
    • addedInput schema / properties / course_identifier / description
      Added value: +"Course code or Canvas ID"
    • removedInput schema / properties / course_identifier / title
      Removed value: -"Course Identifier"
    • addedInput schema / properties / external_url / description
      Added value: +"URL for ExternalUrl items"
    • removedInput schema / properties / external_url / title
      Removed value: -"External Url"
    • addedInput schema / properties / indent / description
      Added value: +"Indentation level (0-4)"
    • removedInput schema / properties / indent / title
      Removed value: -"Indent"
    • addedInput schema / properties / item_type / description
      Added value: +"One of: File, Page, Discussion, Assignment, Quiz, SubHeader, ExternalUrl, ExternalTool"
    • removedInput schema / properties / item_type / title
      Removed value: -"Item Type"
    • addedInput schema / properties / module_id / description
      Added value: +"Target module ID"
    • removedInput schema / properties / module_id / title
      Removed value: -"Module Id"
    • addedInput schema / properties / new_tab / description
      Added value: +"Open external links in new tab (default: False)"
    • removedInput schema / properties / new_tab / title
      Removed value: -"New Tab"
    • addedInput schema / properties / page_url / description
      Added value: +"URL slug of the page (required for Page type)"
    • removedInput schema / properties / page_url / title
      Removed value: -"Page Url"
    • addedInput schema / properties / position / description
      Added value: +"Position within module (1-indexed)"
    • removedInput schema / properties / position / title
      Removed value: -"Position"
    • addedInput schema / properties / title / description
      Added value: +"Item title (required for SubHeader, ExternalUrl; optional for others)"
    • removedInput schema / properties / title / title
      Removed value: -"Title"
    • removedInput schema / title
      Removed value: -"add_module_itemArguments"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"add_module_itemOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  3. Addedv1.3.0

TDQS

B3.3/5.0
Behavior3/5

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

Annotations only declare idempotentHint=false and destructiveHint=false, so the description correctly implies a non-destructive write. The item_type → required-field matrix is genuine behavioral context, but it says nothing about permission requirements, position defaults, ordering effects, or duplicate-add behavior for a 12-parameter mutation.

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?

Three short sentences, front-loaded with the action and followed by the highest-value conditional logic. No filler and nothing redundant at the sentence level.

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

Completeness3/5

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

Covers the core conditional-required logic for a 12-param mutation, which is the main trap. However, it omits external_url for ExternalUrl items (it names only title), doesn't mention return value or how the created item is identified, and gives no permission/mutation side-effects — meaningful gaps with no output schema.

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

Parameters3/5

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

Schema coverage is 100% and every property already carries a description that states exactly the same conditional requirements (title, page_url, content_id), so the description largely restates the schema. Baseline 3 applies; no added syntax, formats, or cross-parameter rules beyond what the schema says.

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

Purpose4/5

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

States a specific verb and resource ('Add an item to a module'), which is unambiguous and immediately distinguishable from read siblings like list_module_items. It does not explicitly contrast with update_module_item, but the verb makes the distinction clear.

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

Usage Guidelines2/5

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

No guidance on when to use this versus update_module_item or create_module, no prerequisites (e.g. teacher/admin permission, module must exist), and no notes on what happens if the same content is added twice. The conditional-required clause is parameter guidance, not usage guidance.

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