Skip to main content
Glama

Update Page

update_page
DestructiveIdempotent

Update an existing wiki page's title, body, published state or editing_roles. Only the fields you pass are sent to Canvas; omitted fields are left unchanged.

Instructions

Update an existing wiki page's title, body, published state or editing_roles. Only the fields you pass are sent to Canvas; omitted fields are left unchanged. body is not merged — it replaces the entire HTML body, so read the current content with get_page first and send back the full edited body, not just the changed part. Returns the updated page. Idempotent: calling it again with the same fields produces the same resulting page. Use create_page to make a new page instead, delete_page to remove this one, and update_course's syllabus_body parameter to edit the course syllabus, which is not a wiki page editable here. Requires permission to manage wiki content in the course.

Input Schema

NameRequiredDescriptionDefault
bodyNoNew HTML body content
titleNoNew title for the page
page_urlYesThe page URL slug
course_idYesThe Canvas course ID
publishedNoWhether the page is published
editing_rolesNoWho can edit: "teachers", "students", "members", or "public"

Output Schema

NameRequiredDescriptionDefault
urlYes
bodyNo
titleYes
page_idYes
publishedNo
created_atNo
updated_atNo
editing_rolesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.18.15
    • 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"
    • changedOutput schema / properties / page_id / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
  2. Changed2 schema fields 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"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed1 schema field changedv1.18.9
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "body": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "created_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "editing_roles": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "page_id": {
      +      "type": "number"
      +    },
      +    "published": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "updated_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "page_id",
      +    "url",
      +    "title"
      +  ],
      +  "type": "object"
      +}
  4. First observedv1.18.0

TDQS

A4.9/5.0
Behavior5/5

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

The description adds important behavior beyond the annotations: only passed fields are sent, omitted fields remain unchanged, and body replaces the entire HTML body rather than merging. It also states the tool returns the updated page, is idempotent, and requires permission to manage wiki content, all of which are consistent with the annotations.

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?

The purpose is front-loaded in the first sentence, followed by operational constraints, alternatives, and permission requirements. The description is dense but not wasteful; each sentence contributes routing, safety, or behavior information.

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?

Given a 6-parameter mutation tool with an output schema and annotations, the description is complete enough for correct invocation. It covers purpose, partial update semantics, body replacement, return behavior, idempotency, sibling alternatives, and permission requirements.

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 the schema already documents all parameters, but the description adds crucial semantics for body and omitted fields that the schema does not express. It clearly explains that body is a full replacement and that only passed fields are sent, though it does not add further meaning for course_id or page_url beyond the schema.

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?

The description states a specific verb and resource: update an existing wiki page, with named editable fields. It also distinguishes this tool from create_page, delete_page, and update_course's syllabus_body parameter, so an agent can route correctly without opening sibling schemas.

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?

It explicitly says to use create_page for a new page, delete_page to remove this one, and update_course's syllabus_body to edit the syllabus instead. It also gives a concrete read-before-write guideline: call get_page first and resend the full edited body.

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