Skip to main content
Glama

Get User

get_user
Read-only

Fetch a Canvas user's full profile by numeric ID, including name, email, login ID, time zone, bio, and pronouns, when the caller is permitted to view it.

Instructions

Get a single Canvas user by numeric ID, returning the full Canvas user object (name, email, login_id, time_zone, bio, pronouns) when the caller is permitted to see it. Use get_profile instead when the target is the caller's own account, search_users to find a user when you only know their name, login, or email in an account, or list_course_users to see every user enrolled in a specific course. Because a bare ID lookup carries no enrollment data, pseudonymized mode cannot tell staff from students here and conservatively anonymizes the name and email on every call; list_course_users only keeps a real name when it is also called with include: ["enrollments"] and Canvas reports a teacher, TA, or designer enrollment for that user.

Input Schema

NameRequiredDescriptionDefault
user_idYesThe Canvas user ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.18.15
    • addedInput schema / properties / user_id / anyOf
      Added value: +[
      +  {
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^[1-9][0-9]{0,18}$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / user_id / type
      Removed value: -"number"
  2. 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"
  3. First observedv1.18.0

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, it discloses a non-obvious behavioral trait: a bare ID lookup carries no enrollment data, so pseudonymized mode conservatively anonymizes name and email on every call. That is material context an agent cannot get from the schema or annotations and directly affects interpretation of results.

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?

The core purpose and sibling routing are front-loaded and efficient. The final clause explaining that list_course_users needs include:["enrollments"] to preserve real names drifts into sibling-specific detail rather than this tool's behavior, making the description longer than strictly necessary.

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 one-parameter read-only lookup with annotations covering the safety profile and full schema coverage, nothing an agent needs in order to call it or interpret the risk of anonymized output 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?

There is a single parameter already documented at 100% schema coverage ('The Canvas user ID'). The description adds only that the ID is numeric, a marginal clarification over the schema's integer/string-pattern union. Baseline 3 applies when the schema does the heavy lifting.

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 ('Get a single Canvas user by numeric ID') and enumerates the returned fields (name, email, login_id, time_zone, bio, pronouns), so the agent knows exactly what it gets back. It also explicitly distinguishes itself from get_profile, search_users, and list_course_users.

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 three concrete alternatives and the exact condition that selects each: get_profile for the caller's own account, search_users when only name/login/email is known, list_course_users for course rosters. This is explicit when-to-use routing with no inference required.

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