Skip to main content
Glama
Fireiscoolsolo

Canvas LMS MCP – Remote Edition

Download Submission Attachment

download_submission_attachment
Read-onlyIdempotent

Downloads a file attached to your submission and saves it to local disk, returning the saved path. Use the attachment URL from list_submission_attachments.

Instructions

Download one file attached to your submission and save it to local disk. Returns the saved path. Get the URL from list_submission_attachments.

Input Schema

NameRequiredDescriptionDefault
urlYesDownload URL of the attachment: the attachments[].url field from list_submission_attachments or get_my_submission.
filenameNoFile name to save as. Defaults to the attachment's own name.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.1.3
    • addedInput schema / properties / filename / description
      Added value: +"File name to save as. Defaults to the attachment's own name."
    • changedInput schema / properties / url / description
      Previous value: -"Attachment URL from get_my_submission"New value: +"Download URL of the attachment: the attachments[].url field from list_submission_attachments or get_my_submission."
  2. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false; the description adds the meaningful non-obvious behavior that the file is written to local disk and the saved path is returned. It doesn't cover failure modes such as expired URLs or name collisions, which keeps it at 4.

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: action, return value, prerequisite. Nothing redundant and the most important information (what it does) leads.

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 usefully states the return value (saved path), and the two parameters are fully documented in the schema. Only edge-case behavior on download failure is absent.

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 the schema already explains both url and the filename default, so the description's URL guidance largely restates structured data. Baseline 3 applies.

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 ('Download one file attached to your submission') plus the side effect ('save it to local disk'), which separates it from download_file, download_media_captions, and download_all_course_files without needing to inspect schemas.

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?

Explicitly names list_submission_attachments as the source of the URL, giving a clear prerequisite and routing the agent away from guessing URLs. It doesn't state exclusions (e.g., use download_file for course files, or that only one attachment at a time is handled), so it stops short of a 5.

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