Skip to main content
Glama

canvas_create_assignment

Creates a Canvas course assignment with due dates, points, and submission types; defaults to unpublished so students see it only after publishing.

Instructions

Create an assignment. MUTATES the course.

Defaults to UNPUBLISHED so students do not see it until you publish — pass published=True only when the instructor says it is ready.

Args: name: assignment title. description: body HTML shown to students. points_possible: max score; omit for an ungraded assignment. due_at: ISO 8601 UTC, e.g. 2026-09-10T04:59:59Z. Canvas stores UTC, so an 11:59pm local deadline is not 23:59Z — convert first. unlock_at: ISO 8601 UTC; students cannot see it before this. lock_at: ISO 8601 UTC; submissions close after this. submission_types: comma-separated, from online_text_entry, online_upload, online_url, online_quiz, discussion_topic, media_recording, student_annotation, on_paper, external_tool, none. grading_type: points (default), percent, letter_grade, gpa_scale, pass_fail, not_graded. published: visible to students immediately (default False). assignment_group_id: group to file it under; see canvas_list_assignment_groups. omit_from_final_grade: True to score it without affecting the total. course_id: numeric course id; defaults to CANVAS_DEFAULT_COURSE_ID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
due_atNo
lock_atNo
course_idNo
publishedNo
unlock_atNo
descriptionNo
grading_typeNo
points_possibleNo
submission_typesNoonline_text_entry
assignment_group_idNo
omit_from_final_gradeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does: it declares the write/mutation, the default-unpublished visibility state, the UTC storage caveat that makes naive local deadlines wrong, and the default values for grading_type, submission_types and course_id. That is exactly the behavioral context an agent needs before calling.

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?

Front-loads purpose and the mutation/visibility warning before the Args block, then keeps one tight line per parameter. The timezone note is long but earns its place by preventing a concrete, common error.

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?

A 12-parameter mutation tool with an output schema present, so return values need not be explained. Everything else an agent needs — mutation semantics, visibility default, date format, enum values, course scoping — is covered.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate and it does, documenting all 12 parameters including the enumerated values for submission_types and grading_type, the ISO 8601 UTC format with a worked example, and the semantics of omit_from_final_grade and points_possible (omit for ungraded).

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 ("Create an assignment") and immediately flags the mutation ("MUTATES the course"), which cleanly separates it from canvas_update_assignment and the read-only siblings. An agent can pick this tool without opening the schema.

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 a clear conditional rule for the risky flag: default unpublished, pass published=True only when the instructor confirms readiness. It also routes the agent to canvas_list_assignment_groups for the group id. It stops short of naming when to prefer canvas_update_assignment or listing prerequisites, so it is strong but not exhaustive.

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