Skip to main content
Glama

Upload Course File

upload_course_file
Destructive

Uploads a local file to Canvas course storage and returns a file ID for use with module items or conversations.

Instructions

Upload a file to Canvas course storage.

Uploads a local file to a Canvas course. The returned file ID can be used with add_module_item (item_type='File') or send_conversation (attachment_ids).

Input Schema

NameRequiredDescriptionDefault
file_pathYesAbsolute path to the local file to upload
folder_pathNoCanvas folder path (default: "course files" root)
display_nameNoOverride the filename shown in Canvas
on_duplicateNo"rename" (default) or "overwrite"rename
course_identifierYesCourse code or Canvas ID

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. Changed15 schema fields changedv1.8.0
    • addedInput schema / additionalProperties
      Added value: +false
    • 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 / display_name / description
      Added value: +"Override the filename shown in Canvas"
    • removedInput schema / properties / display_name / title
      Removed value: -"Display Name"
    • addedInput schema / properties / file_path / description
      Added value: +"Absolute path to the local file to upload"
    • removedInput schema / properties / file_path / title
      Removed value: -"File Path"
    • addedInput schema / properties / folder_path / description
      Added value: +"Canvas folder path (default: \"course files\" root)"
    • removedInput schema / properties / folder_path / title
      Removed value: -"Folder Path"
    • addedInput schema / properties / on_duplicate / description
      Added value: +"\"rename\" (default) or \"overwrite\""
    • removedInput schema / properties / on_duplicate / title
      Removed value: -"On Duplicate"
    • removedInput schema / title
      Removed value: -"upload_course_fileArguments"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"upload_course_fileOutput"
    • addedOutput schema / x-fastmcp-wrap-result
      Added value: +true
  3. Addedv1.3.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so safety is partly covered; the description is consistent with them. It adds useful downstream context about the file ID, but omits the meaningful behavioral facts: that duplicates are renamed vs overwritten by default, that re-uploading creates a new file, and any size/type limits or auth needs.

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?

Very short and front-loaded: the core action leads, the downstream-use note follows and genuinely earns its place. Slight redundancy between the title, the first line, and the first sentence of the second paragraph.

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

Completeness4/5

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

With no output schema, the description correctly covers the return value (a file ID) and how to consume it, and the input schema carries the field-level detail. The main gap for a destructive write operation is the absence of any note on overwrite/rename behavior or failure modes.

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 description coverage is 100%, so all five parameters (including folder_path, display_name, and on_duplicate) are documented in the schema itself. The description adds nothing about parameter meaning or format, which is acceptable at the baseline for a fully documented schema but is not additive.

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?

States a specific verb and resource ('Upload a file to Canvas course storage') and adds the resulting artifact ('returned file ID'). The verb alone cleanly separates it from download_course_file, read_course_file, and list_course_files 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 Guidelines3/5

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

The second sentence tells the agent what the output is *for* (add_module_item with item_type='File', send_conversation with attachment_ids), which implies when this tool is needed. However, it never states when to use this versus other file operations, nor any prerequisites such as ownership or enrollment requirements.

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