Skip to main content
Glama

List Account Users

list_account_users
Read-only

Lists every user in a Canvas account with optional search and filters, fetching all pages so results are complete. Use it to audit or look up accounts, not course rosters.

Instructions

List every user in a Canvas account — every role the account contains, not only students — optionally filtered by search_term matching name, email, or login. Fetches every page (100 per request) and fails with a 'Results are incomplete' error instead of silently truncating. Use include to add email, last_login, avatar_url, time_zone, or uuid to each returned user, sort/order to control result ordering (sort: "id" is Canvas's recommended choice when paging through many results), and list_course_users to scope the roster to one course rather than the whole account. When CANVAS_PSEUDONYMIZE_STUDENTS is enabled, every returned user's name and contact info is replaced with a stable pseudonym — this tool has no enrollment data to tell students from staff, so every row is masked the same way; use resolve_pseudonym to map one back to a real user_id. Requires an admin role on the account.

Input Schema

NameRequiredDescriptionDefault
sortNoSort field. Use "id" for efficient pagination through many pages of results.
orderNoSort order
includeNoExtra fields to include on each user (Canvas include[] param)
account_idYesThe Canvas account ID
search_termNoSearch users by name, email, or login

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.18.20
    • addedInput schema / properties / include
      Added value: +{
      +  "description": "Extra fields to include on each user (Canvas include[] param)",
      +  "items": {
      +    "enum": [
      +      "email",
      +      "last_login",
      +      "avatar_url",
      +      "time_zone",
      +      "uuid"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / order
      Added value: +{
      +  "description": "Sort order",
      +  "enum": [
      +    "asc",
      +    "desc"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "Sort field. Use \"id\" for efficient pagination through many pages of results.",
      +  "enum": [
      +    "username",
      +    "email",
      +    "sis_id",
      +    "integration_id",
      +    "last_login",
      +    "id"
      +  ],
      +  "type": "string"
      +}
  2. Changed2 schema fields changedv1.18.15
    • addedInput schema / properties / account_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / account_id / type
      Removed value: -"number"
  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.6/5.0
Behavior5/5

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

Annotations only cover readOnly/openWorld, but the description adds substantial non-obvious behavior: full pagination at 100 per request, hard failure with a 'Results are incomplete' error rather than silent truncation, and pseudonymization under CANVAS_PSEUDONYMIZE_STUDENTS with a pointer to resolve_pseudonym.

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?

Front-loaded with purpose and scope, then behavior, then alternatives and prerequisites. It is dense but nearly every clause carries information; the include/sort sentence is the closest to restating schema content.

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 paginated read-only admin tool with no output schema, the description covers scope, pagination behavior, failure mode, masking, and auth requirements. Nothing an agent needs 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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description restates search_term and include semantics already documented in the schema, and its sort guidance ('id' recommended when paging) largely mirrors the schema's own note, adding little genuinely new parameter meaning.

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 ('List every user in a Canvas account') and immediately clarifies scope ('every role the account contains, not only students'). It explicitly distinguishes itself from list_course_users, so an agent can route without inspecting 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 Guidelines5/5

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

Names the alternative (list_course_users) and the condition that selects it ('to scope the roster to one course rather than the whole account'). It also states the prerequisite ('Requires an admin role on the account') and how to widen results via include/sort.

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