Skip to main content
Glama

check_enrollment

Read-only

Determine whether a campus login ID is enrolled in a Canvas course. Returns yes/no plus minimal enrollment metadata, scoped by role. Without roster-admin rights, the answer is indeterminate.

Instructions

Check whether a specific campus login ID is enrolled in a course.

Answers a roster-membership question about an externally-supplied person (NOT the caller). Returns only a yes/no plus minimal enrollment metadata — never the roster, names, or grades. Requires a Canvas token with roster-admin rights; without them the answer is INDETERMINATE, never "no".

To ask about YOURSELF, use get_my_enrollments instead — it needs no roster permission and cannot return an indeterminate answer.

Note that role defaults to "student". A NO answer is scoped to that role and will name any other role the person holds; pass role="any" when you just want to know whether they are in the course at all.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
roleNoEnrollment type that satisfies the check — "student" (default), "teacher", "ta", "observer", "designer", or "any".student
net_idYesThe person's campus login ID — NetID, uniqname, campus ID, or the full email-style Canvas login. Matched against Canvas `login_id` then `sis_user_id`; `zqian` and `zqian@umich.edu` are treated as the same identifier. NOT a display name.
active_onlyNoOnly count active enrollments (default True).
course_identifierYesCourse code, numeric ID, or SIS ID.
Behavior5/5

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

Annotations provide readOnlyHint=true, and the description builds on that by disclosing that it returns only yes/no plus minimal metadata, never roster, names, or grades. It further explains the indeterminate answer scenario, role scoping, and identifier matching rules—all beyond what annotations state.

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 description is thorough yet efficient. Each sentence adds critical information (purpose, scope, permissions, role semantics, identifier matching, and alternatives). It is well-structured with clear paragraphs and no redundancy.

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 the tool's complexity (4 params, read-only query with special semantics), the description covers all necessary context: the indeterminate answer, role scoping, identifier matching, and permission requirements. It also mentions the output nature (yes/no plus minimal metadata) despite no output schema, making it complete for an agent to use correctly.

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 significant meaning beyond the schema: it explains how net_id is matched (login_id then sis_user_id, equivalence of formats), clarifies course_identifier forms, and details the role default and 'any' behavior. This raises it to 4.

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 clearly states the tool checks whether an external person's campus login ID is enrolled in a course, which is a specific verb+resource. It explicitly differentiates itself from sibling tools like get_my_enrollments (for the caller) and other getters. The scope (external person, not caller) and the exact nature of the answer (yes/no + minimal metadata) are unambiguous.

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?

The description provides explicit when-to-use guidance (roster-membership question about an external person) and explicit when-not-to-use alternatives (use get_my_enrollments for self). It also explains the role default and the 'any' option, and the permission requirement (roster-admin rights) with the consequence (INDETERMINATE answer).

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vishalsachdev/canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server