Skip to main content
Glama

check_enrollment

Read-only

Check whether a specific campus login ID is enrolled in a Canvas course. Returns a yes/no answer with minimal enrollment metadata, filtering by role and active status.

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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

Discloses that it returns only yes/no plus minimal metadata, never roster/names/grades. Warns about insufficient permissions yielding INDETERMINATE, not 'no'. Explains role-scoped NO answers and role default. These go well beyond the readOnlyHint annotation.

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?

Three paragraphs, each with distinct purpose: what it does, permissions/alternative, parameter nuance. No redundant phrases; front-loaded primary purpose.

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?

Covers purpose, permissions, limitations, alternatives, parameter semantics, and edge cases. The existence of an output schema means return values need no further explanation. Considering the tool's complexity, nothing critical 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?

While the input schema already details all four parameters (100% coverage), the description adds behavioral nuance: role default and NO scoping, net_id matching semantics, and active_only meaning. This supplements rather than repeats 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 opens with a specific verb and resource ('Check whether a specific campus login ID is enrolled in a course'), clearly distinguishing it from sibling tools like get_my_enrollments. It further clarifies scope (external person, not caller) and return type.

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?

Explicitly states when to use: for an external person's membership question. Explicitly directs self-inquiries to get_my_enrollments and explains permission requirements with consequences (INDETERMINATE). Provides guidance on role='any'.

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