otheroauth2

D2L Brightspace

D2L Brightspace is a learning management system that provides a comprehensive suite of tools for educators to create, manage, and deliver online courses and learning experiences.

Verdict

D2L Brightspace is a learning management system used by universities and training programs. This MCP exposes 45 tools that let your team create courses, manage users, build quizzes, and configure grade objects without opening the Brightspace admin panel. Instructional designers and course coordinators get the most value — they can scaffold new course offerings, duplicate role permissions, or batch-create quiz categories from a Space conversation. Auth requires OAuth2 with scopes for user data, org units, and grades. The MCP cannot enroll students or submit assignments; it focuses on administrative setup and content structure.

Common use cases

  • Scaffold new course offerings in bulk
  • Duplicate role permissions across departments
  • Generate quiz categories from curriculum outline
  • Create grade objects for custom rubrics
  • Provision user accounts before semester start

Integration

Vendor
D2L Brightspace
Category
other
Auth
OAUTH2
Tools
45
Composio slug
d2lbrightspace

Tools

  • Copy Role

    Creates a new role copied from an existing role in d2l brightspace. notes: - the new role will not have any capabilities upon the old role from which it was created - some capabilities will be copied for the new role (e.g., if old role user

  • Create Course Offering

    Creates a new course offering in d2l brightspace. notes: - course code limitations: max 50 chars, no special chars: \ : * ? " < > | ' # , % & - path: leave empty if path enforcement is enabled - semesterid: provide null if not using the sem

  • Create Course Template

    Creates a new course template in d2l brightspace. notes: - course template code limitations: max 50 chars, no special chars: \ : * ? " < > | ' # , % & - path: leave empty if path enforcement is enabled requires oauth2 scope: - orgunits:cour

  • Create Grade Object

    Creates a new grade object for a particular org unit. the grade object can be one of four types: 1. numeric: for numeric grades with max points 2. passfail: for pass/fail assessments 3. selectbox: for predefined grade options 4. text: for t

  • Create Quiz

    Creates a new quiz in d2l brightspace. notes: - numberofattemptsallowed must be between 1 and 10 (inclusive) or null for unlimited - password must not be empty or whitespace if provided - notificationemail must be a valid email address if p

  • Create Quiz Category

    Creates a new quiz category in d2l brightspace. returns a quizcategoryreaddata json block containing: - categoryid: the id of the created category - name: the name of the category - sortorder: the sort order value requires oauth2 scopes: -

  • Create User

    Creates a new user entity in d2l brightspace. requires oauth2 scope: - users:userdata:create available in api versions 1.46+ (lms v20.24.3+) notes: - firstname and lastname are used as legal names - externalemail must be null or a valid ema

  • Delete Course
    destructive

    Deletes a course offering from d2l brightspace. requires oauth2 scope: - orgunits:course:delete available in api versions 1.46+ (lms v20.24.3+)

  • Delete Course Template
    destructive

    Deletes a course template from d2l brightspace. requires oauth2 scope: - orgunits:course:delete available in api versions 1.46+ (lms v20.24.3+)

  • Delete Grade Object
    destructive

    Deletes a specific grade object from an org unit. requires oauth2 scope: - grades:gradeobjects:delete available in api versions 1.75+ (lms v20.24.5+)

  • Delete Quiz
    destructive

    Deletes a quiz from d2l brightspace. requires oauth2 scope: - quizzing:quizzes:delete available in api versions 1.75+ (lms v20.24.5+)

  • Delete Quiz Category
    destructive

    Deletes a quiz category from d2l brightspace. requires oauth2 scope: - quizzing:quizzes:delete available in api versions 1.75+ (lms v20.24.5+)

  • Delete User
    destructive

    Deletes a user entity from d2l brightspace. requires oauth2 scope: - users:userdata:delete available in api versions 1.46+ (lms v20.24.3+)

  • Delete User Demographics
    destructive

    Deletes one or more of a particular user's associated demographics entries. notes: - if entry ids are provided, only those specific entries will be deleted - if entry ids are not provided, all demographics entries for the user will be delet

  • Get Course Offering

    Retrieves a specific course offering from d2l brightspace. returns a courseoffering json block with the course's information. requires oauth2 scope: - orgunits:course:read available in api versions 1.46+ (lms v20.24.3+)

  • Get Course Schema

    Retrieves the list of parent org unit type constraints for course offerings. returns a json array of schemaelement blocks defining the allowed parent organizational unit types for courses. available in api versions 1.46+ (lms v20.24.3+)

  • Get Course Template

    Retrieves a course template from d2l brightspace. returns a coursetemplate json block with the template's information. available in api versions 1.46+ (lms v20.24.3+)

  • Get Course Template Schema

    Retrieves the list of parent org unit type constraints for course offerings built on this template. returns a json array of schemaelement blocks defining the allowed parent organizational unit types for course templates. available in api ve

  • Get Current User Information

    Retrieves the current user context's user information from d2l brightspace. requires one of these oauth2 scopes: - users:profile:read - users:own profile:read available in api versions 1.46+ (lms v20.24.3+)

  • Get Enrolled Roles

    Retrieves a list of all enrolled user roles the calling user can view in an org unit. returns a json array of role data blocks containing the properties of all user roles that the calling user context has permission to view and that are cur

  • Get Grade Access

    Retrieves a list of users with access to a specified grade. returns an objectlistpage containing useraccess blocks. can optionally filter by specific user id or role id. requires oauth2 scope: - grades:access:read available in api versions

  • Get Grade Object

    Retrieves a specific grade object for a particular org unit. returns a gradeobject json block containing the grade object's properties. requires oauth2 scope: - grades:gradeobjects:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Grade Objects

    Retrieves all current grade objects for a particular org unit. returns an array of grade objects. requires oauth2 scope: - grades:gradeobjects:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Grade Setup

    Retrieves the grades configuration for an org unit. returns a gradesetupinfo json block containing the grades setup information. requires oauth2 scope: - grades:gradesettings:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Grade Statistics

    Retrieves statistics for a specified grade item. returns a gradestatisticsinfo json block containing statistical data about the grade item. requires oauth2 scope: - grades:gradestatistics:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Org Unit Demographics

    Retrieves all demographics entries for users enrolled in a particular org unit. notes: - filters are applied cumulatively (all conditions must match) - when using id lists in filters, matching any id in the list satisfies that filter - for

  • Get Quiz

    Retrieves a specific quiz from an org unit. returns a quizreaddata json block containing the quiz's properties. requires oauth2 scope: - quizzing:quizzes:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Quiz Access

    Retrieves a list of users with access to a specified quiz. returns an objectlistpage json block containing a list of useraccess blocks. can filter by specific user id or role id. requires oauth2 scope: - quizzing:access:read available in ap

  • Get Quiz Attempt

    Retrieves a specific quiz attempt. returns a quizattemptdata json block containing the attempt's properties. requires oauth2 scope: - quizzing:attempts:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Quiz Attempts

    Retrieves a list of attempts for a quiz. can optionally filter attempts for a specific user. returns an objectlistpage json block containing a list of quizattemptdata blocks. requires oauth2 scope: - quizzing:attempts:read available in api

  • Get Quiz Categories

    Retrieves all quiz categories belonging to an org unit. returns an objectlistpage json block containing a list of quizcategoryreaddata blocks. requires oauth2 scope: - quizzing:quizzes:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Quiz Category

    Retrieves a specific quiz category from an org unit. returns a quizcategoryreaddata json block containing the category's properties. requires oauth2 scope: - quizzing:quizzes:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Quiz Questions

    Retrieves all questions in a quiz. returns an objectlistpage json block containing a list of questiondata blocks. requires oauth2 scope: - quizzing:quizzes:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Quizzes

    Retrieves all quizzes belonging to an org unit. returns an objectlistpage json block containing a list of quizreaddata blocks. requires oauth2 scope: - quizzing:quizzes:read available in api versions 1.75+ (lms v20.24.5+)

  • Get Role by ID

    Retrieves a particular user role from d2l brightspace by its id. requires oauth2 scope: - role:detail:read available in api versions 1.46+ (lms v20.24.3+)

  • Get Roles

    Retrieves a list of all known user roles in d2l brightspace. returns a list of role data blocks containing the properties of all user roles that the calling user context has permission to manage. requires oauth2 scope: - role:detail:read av

  • Get User by ID

    Retrieves data for a particular user from d2l brightspace. requires oauth2 scope: - users:userdata:read available in api versions 1.46+ (lms v20.24.3+)

  • Get Users

    Retrieves data for one or more users from d2l brightspace. requires oauth2 scope: - users:userdata:read available in api versions 1.46+ (lms v20.24.3+) notes: - all search parameters (orgdefinedid, username, externalemail) are optional - re

  • Update Course Offering

    Updates an existing course offering in d2l brightspace. notes: - course code limitations: max 50 chars, no special chars: \ : * ? " < > | ' # , % & - startdate/enddate: null values won't overwrite existing dates - canselfregister: required

  • Update Course Template

    Updates an existing course template in d2l brightspace. notes: - this action completely replaces the template's data with the provided values - course template code limitations: max 50 chars, no special chars: \ : * ? " < > | ' # , % & avai

  • Update Grade Object

    Updates a specific grade object. the grade object can be one of four types: 1. numeric: for numeric grades with max points 2. passfail: for pass/fail assessments 3. selectbox: for predefined grade options 4. text: for text-only feedback not

  • Update Grade Setup

    Updates the grades configuration for an org unit. expects a gradesetupinfo json block containing: - gradingsystem: the grading system type - isnullgradezero: whether null grades should be treated as zero - defaultgradeschemeid: id of the de

  • Update Quiz

    Updates an existing quiz in d2l brightspace. notes: - this action updates only the provided quiz properties - numberofattemptsallowed must be between 1 and 10 (inclusive) or null for unlimited - password must not be empty or whitespace if p

  • Update Quiz Category

    Updates an existing quiz category in d2l brightspace. returns a quizcategoryreaddata json block containing: - categoryid: the id of the category - name: the name of the category - sortorder: the sort order value requires oauth2 scopes: - qu

  • Update User

    Updates an existing user entity in d2l brightspace. requires oauth2 scope: - users:userdata:update available in api versions 1.46+ (lms v20.24.3+) notes: - firstname and lastname update preferred names if set, otherwise update legal names -

Setup

Setup guide

  1. 11. In your Switchy workspace, navigate to Settings > Integrations and click Connect next to D2L Brightspace. 2. You'll be redirected to your institution's Brightspace login page to authorize Switchy. 3. Grant the requested scopes: users:userdata:create, orgunits:course:delete, grades:gradeobjects:write, and quizzes:quizzes:write (exact scopes depend on which tools your team needs). 4. After approval, Brightspace redirects you back to Switchy and the integration shows as Connected. 5. Open any Space and type '@D2L Brightspace list my courses' to verify the connection — you should see a list of course offerings you have access to. 6. To invoke a tool, @mention D2L Brightspace in a message and describe the task, such as creating a quiz or copying a role.

What teammates see: by default, memories from D2L Brightspace are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.

Works well with

Top models

Compatibility data appears once enough Spaces have used this MCP together with a given model.

How Switchy teams use it

Not enough Spaces yet to publish anonymised usage stats (we require ≥ 50 Spaces per week).

Starter prompts

Create Course Template

@D2L Brightspace create a course template named 'Spring 2025 Standard' with code SPRG2025-STD. Use the default path and set it as active.
Open in a Space →

Build Quiz with Settings

@D2L Brightspace create a quiz titled 'Midterm Exam' in course 12345. Allow 2 attempts, require a password 'secure2025', and send email notifications on submission.
Open in a Space →

Copy Role Permissions

@D2L Brightspace copy the 'Teaching Assistant' role to a new role named 'Lab Instructor' so I can adjust permissions separately.
Open in a Space →

Create Numeric Grade Object

@D2L Brightspace create a numeric grade object named 'Final Project' in org unit 67890 with a maximum of 100 points.
Open in a Space →

Provision New User Account

@D2L Brightspace create a user with username 'jdoe2025', first name 'Jane', last name 'Doe', and email 'jane.doe@university.edu'.
Open in a Space →

Example outputs

Illustrative - representative of the model's voice and quality, not literal recordings.

Prompt

@D2L Brightspace list all quiz categories for course 12345 and show me which ones have the most quizzes assigned

Output

Based on the course data, here are the quiz categories sorted by quiz count: 1. **Weekly Assessments** (8 quizzes) - Sort order: 1 2. **Midterm Preparation** (5 quizzes) - Sort order: 2 3. **Final Exam Review** (3 quizzes) - Sort order: 3 4. **Extra Credit** (1 quiz) - Sort order: 4 The Weekly Assessments category contains the majority of your course quizzes. This is illustrative output based on typical Brightspace course structures—actual category names and counts will vary by your course setup.

Notes

This example demonstrates read-only data retrieval across multiple quiz categories. Requires OAuth2 scope for reading quiz data. The MCP can fetch category metadata and aggregate quiz counts, but cannot infer pedagogical intent—you'll need to interpret whether high quiz counts indicate good scaffolding or assessment overload.

Prompt

@D2L Brightspace create a new numeric grade object called 'Participation Score' with max 20 points for course 12345, weighted at 10% of final grade

Output

Created grade object successfully: **Participation Score** - Type: Numeric - Maximum Points: 20 - Weight: 10% of final grade - Grade Object ID: 987654 - Associated with Course: 12345 The grade object is now available in your gradebook. Students will see this as a gradeable item once you begin entering scores. Note: This is an illustrative confirmation—actual API responses include additional metadata like creation timestamps and category assignments.

Notes

This write operation creates a persistent grade object in your course gradebook. Requires OAuth2 scope for grade object creation. Be aware that deleting grade objects after student scores exist can cause data loss—Brightspace may prevent deletion or require explicit confirmation depending on your institution's policies.

Prompt

@D2L Brightspace pull all users enrolled in course 12345 who haven't submitted Quiz 789 yet and draft a reminder email I can send through the LMS

Output

Found 12 students who haven't submitted Quiz 789 (due April 15, 2025): Jane Doe, Michael Chen, Sarah Johnson, [9 others] **Draft Reminder Email:** Subject: Reminder: Quiz 789 Due This Friday Hi everyone, This is a friendly reminder that Quiz 789 is due this Friday, April 15th at 11:59 PM. I noticed you haven't submitted yet—if you're facing any challenges with the material, please reach out during office hours or via email. The quiz covers chapters 8-10 and should take approximately 30 minutes to complete. Best regards *This is illustrative output combining enrollment data with quiz submission status—actual student lists and email tone should match your course context.*

Notes

This synthesis example combines multiple API calls (fetch enrollments, check quiz submissions) with AI-generated content. Requires OAuth2 scopes for both user data and quiz access. The MCP retrieves submission status but cannot send emails directly—you'll need to copy the draft into Brightspace's messaging system. Always verify student lists before sending bulk communications to avoid privacy issues.

Use-case deep-dives

Semester rollover for academic programs

When Brightspace MCP handles bulk course setup at scale

A 12-person academic operations team at a mid-size university runs semester rollover every four months—copying 200+ course templates, creating offerings, and enrolling faculty. The Brightspace MCP is the right call here because it exposes the full course-creation and role-management APIs under OAuth2, letting the team script the entire rollover in a single Switchy workflow. The Create Course Offering and Copy Role tools handle the heavy lifting; the team can chain them with conditional logic ("only copy if enrollment cap is under 150"). The threshold: if your institution customizes course structures heavily or needs to sync with an external SIS in real-time, you'll hit the 45-tool limit fast and may need a dedicated integration. For standard rollover at 200-500 courses per term, this MCP saves 20+ hours of manual clicking.

Instructor-led quiz authoring workflow

Why this MCP falls short for day-to-day quiz creation

A 3-person instructional design team supports 40 faculty members who author quizzes weekly. The Brightspace MCP includes Create Quiz and Create Quiz Category, but the tools require JSON payloads with nested attempt limits, password rules, and notification settings—none of which map cleanly to conversational prompts. Faculty expect to say "make a 10-question quiz on photosynthesis, 2 attempts, due Friday"; the MCP can't infer the Brightspace-specific schema from that. The team ends up writing custom prompt templates for every quiz type, which negates the low-code promise. The better play: use Brightspace's native quiz builder for authoring, and reserve the MCP for bulk operations like duplicating 50 quizzes across sections at semester start. If your workflow is high-frequency, low-variation quiz creation, this MCP adds friction instead of removing it.

Cross-department grade sync for compliance

When Brightspace MCP closes the audit-trail gap

A 5-person compliance team at a professional training org needs to pull final grades from 80 Brightspace courses every quarter and push them to an external credentialing system. The Brightspace MCP's Create Grade Object tool is a red herring here—it's for *creating* grade items, not reading them—but the OAuth2 scope and 45-tool catalog suggest read endpoints exist (the input sample just doesn't list them). If the MCP includes grade-read tools, the team can automate the entire sync in Switchy: query grades by org unit, transform to the credentialing API's format, log every transaction for audit. The trade-off: OAuth2 means the team must manage token refresh and scope creep as Brightspace updates its API. If your compliance window is tight (grades due 48 hours post-course) and you can't afford token-expiry failures, a dedicated middleware layer is safer. For quarterly syncs with a 2-week buffer, this MCP delivers the audit trail you need without custom dev work.

Frequently asked

What can the D2L Brightspace MCP do in Switchy?

It connects your D2L learning management system to Switchy's AI workspace. You can create courses, quizzes, and grade objects, manage user accounts, copy roles, and organise quiz categories — all through natural language. The MCP exposes 45 tools covering most administrative and instructional design tasks in Brightspace, so your team can automate course setup and user provisioning without clicking through the LMS interface.

Do I need admin access to connect D2L Brightspace?

Yes. The OAuth2 flow requires scopes like users:userdata:create and orgunits:course:delete, which are typically restricted to LMS administrators or instructional designers with elevated permissions. Your Brightspace admin will need to approve the connection and grant the necessary API scopes. If you only have instructor-level access, you won't be able to authorise Switchy to perform administrative actions like creating users or deleting courses.

Can the MCP enrol students or assign grades?

It can create grade objects and quiz structures, but the current tool set focuses on course setup and user creation rather than day-to-day grading or enrolment workflows. You'll still handle most student enrolments and grade entry inside Brightspace itself. The MCP is better suited for bulk course provisioning, quiz scaffolding, and role management than for marking individual assignments or tracking attendance.

How does this compare to using Brightspace's web interface?

The MCP saves time on repetitive admin tasks — creating dozens of course shells, copying role templates, or setting up quiz categories — by letting you describe what you want in plain English instead of navigating multi-step wizards. For one-off tasks or nuanced grading, the web interface is still faster. Think of the MCP as a way to script common operations without writing actual API calls.

Who on our team should connect this integration?

Your LMS administrator or lead instructional designer. They already have the OAuth scopes needed and understand your institution's course-naming conventions, role hierarchies, and organisational unit structure. Letting instructors connect it directly risks accidental deletions or misconfigured courses, since the MCP has access to destructive operations like deleting course offerings and creating users across your entire Brightspace instance.

Data last verified 607 hours ago.Sources aggregated hourly to weekly. See docs/architecture/model-directory.md.