Skip to main content
Glama

Update Assignment

update_assignment
DestructiveIdempotent

Update an existing assignment in a course, changing only the fields you pass — anything omitted keeps its current value — and return the updated assignment object.

Instructions

Update an existing assignment in a course, changing only the fields you pass — anything omitted keeps its current value — and return the updated assignment object. Calling this again with the same arguments leaves the assignment in the same state, unlike create_assignment, which always makes a new one; use delete_assignment to remove this assignment instead. due_at, lock_at, and unlock_at set here apply to every student without an override; use create_assignment_override for a different date for one section, group, or set of students, or set_student_assignment_dates to fan one student's date change across many assignments at once. lock_at must stay after due_at and unlock_at before due_at when both are set. Requires instructor/TA permission to manage assignments and quizzes in the course.

Input Schema

NameRequiredDescriptionDefault
nameNoNew assignment name
due_atNoNew due date in ISO 8601 format (e.g. 2026-05-01T23:59:00Z)
lock_atNoNew date after which the assignment locks and stops accepting submissions, in ISO 8601 format. Must be after due_at when there is one
course_idYesThe Canvas course ID
publishedNoWhether the assignment is published and visible to students
unlock_atNoNew date the assignment becomes available to students, in ISO 8601 format. Must be before due_at when there is one
descriptionNoNew assignment description (HTML supported)
assignment_idYesThe Canvas assignment ID
points_possibleNoNew maximum points
submission_typesNoNew allowed submission types
assignment_group_idNoNew assignment group ID
omit_from_final_gradeNoWhether to leave this assignment out of the final grade calculation
grade_group_students_individuallyNoFor group assignments, whether each member is graded separately (false = one shared group grade)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.18.16
    • addedInput schema / properties / lock_at
      Added value: +{
      +  "description": "New date after which the assignment locks and stops accepting submissions, in ISO 8601 format. Must be after due_at when there is one",
      +  "type": "string"
      +}
    • addedInput schema / properties / unlock_at
      Added value: +{
      +  "description": "New date the assignment becomes available to students, in ISO 8601 format. Must be before due_at when there is one",
      +  "type": "string"
      +}
  2. Changed9 schema fields changedv1.18.15
    • addedInput schema / properties / assignment_group_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / assignment_group_id / type
      Removed value: -"number"
    • addedInput schema / properties / assignment_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / assignment_id / type
      Removed value: -"number"
    • 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 / grade_group_students_individually
      Added value: +{
      +  "description": "For group assignments, whether each member is graded separately (false = one shared group grade)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / omit_from_final_grade
      Added value: +{
      +  "description": "Whether to leave this assignment out of the final grade calculation",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / published
      Added value: +{
      +  "description": "Whether the assignment is published and visible to students",
      +  "type": "boolean"
      +}
  3. 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"
  4. First observedv1.18.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (idempotentHint/destructiveHint/openWorldHint) by spelling out partial-update semantics, that re-calling with identical arguments is a no-op (contrasted with create_assignment), that due/lock/unlock dates apply to every student absent an override, the lock_at/unlock_at vs due_at ordering constraints, and the instructor/TA permission requirement. No contradiction with the declared hints.

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?

Purpose and partial-update semantics are front-loaded in the first clause, and nearly every sentence carries routing or constraint information. The single dense paragraph bundles several distinct concerns (idempotency, alternatives, date cascading, validation, permissions), and the ordering rule duplicates the schema text.

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?

For a 13-parameter mutation tool with no output schema, the description covers what it does, what it returns (the updated assignment object), what is preserved on omission, the branching decision to override tools, validation constraints, and the permission gate. Nothing an agent needs in order to call it correctly 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 baseline is 3; the description adds real meaning by explaining that due_at, lock_at, and unlock_at set here cascade to all students without overrides — an effect the schema cannot express. The ordering constraint restates what lock_at/unlock_at schema descriptions already say, so it is not uniformly 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?

Opens with a specific verb+resource ("Update an existing assignment in a course") and immediately adds PATCH semantics — only passed fields change, the rest keep current values — plus what is returned. It explicitly distinguishes itself from create_assignment and delete_assignment by name, so an agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use routing: use this for an existing assignment, use create_assignment for a new one, delete_assignment to remove it. It also routes the date-override cases to create_assignment_override (per section/group/students) and set_student_assignment_dates (one student across many assignments), which is exactly the ambiguity a sibling list this large creates.

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