How to integrate Blackboard MCP with LlamaIndex

Framework Integration Gradient
Blackboard Logo
LlamaIndex Logo
divider

Introduction

This guide walks you through connecting Blackboard to LlamaIndex using the Composio tool router. By the end, you'll have a working Blackboard agent that can list all announcements for my course, create a new announcement in biology 101, get my grade details for chemistry 201, copy last semester's course to a new shell through natural language commands.

This guide will help you understand how to give your LlamaIndex agent real control over a Blackboard account through Composio's Blackboard MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

TL;DR

Here's what you'll learn:
  • Set your OpenAI and Composio API keys
  • Install LlamaIndex and Composio packages
  • Create a Composio Tool Router session for Blackboard
  • Connect LlamaIndex to the Blackboard MCP server
  • Build a Blackboard-powered agent using LlamaIndex
  • Interact with Blackboard through natural language

What is LlamaIndex?

LlamaIndex is a data framework for building LLM applications. It provides tools for connecting LLMs to external data sources and services through agents and tools.

Key features include:

  • ReAct Agent: Reasoning and acting pattern for tool-using agents
  • MCP Tools: Native support for Model Context Protocol
  • Context Management: Maintain conversation context across interactions
  • Async Support: Built for async/await patterns

What is the Blackboard MCP server, and what's possible with it?

The Blackboard MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Blackboard account. It provides structured and secure access to your institution’s course and gradebook data, enabling your agent to retrieve course info, manage announcements, copy courses, and interact with gradebooks on your behalf.

  • Automated course announcements management: Easily create new course announcements or retrieve existing ones, helping instructors keep students updated with important messages and reminders.
  • Personalized gradebook access and monitoring: Request up-to-date gradebook details for a specific student in any course, supporting grade reviews and academic tracking.
  • Efficient course duplication and setup: Ask your agent to copy courses with granular options or by course ID, streamlining semester rollovers or course template creation.
  • Course list retrieval and catalog integration: Fetch a structured list of all courses available in your Blackboard environment to power custom dashboards or sync with other systems.
  • File management in gradebook attempts: Attach uploaded files to student gradebook attempts, making it easier for instructors to manage and organize student submissions.

Supported Tools & Triggers

Tools
Course Announcements AccessRetrieves a list of announcements for a specific course in the blackboard learning management system.
Get course announcement by idRetrieves a specific announcement from a particular course in the blackboard learn system.
Update child course in parentThis endpoint updates the relationship between a parent course and its child course in the blackboard learning management system.
Upload file to attempt in gradebookThis endpoint allows for the upload and attachment of files to a specific attempt within a course's gradebook in the blackboard learning management system.
Get oauth2 authorization codeInitiates the oauth 2.
Get user gradebook for courseRetrieves the gradebook information for a specific user within a particular course in blackboard.
Copy course with specific optionsThe coursecopytool allows you to create a copy of a blackboard course with fine-grained control over which elements are included in the copy.
Copy course by courseidThis endpoint creates a copy of an existing course in the blackboard learning management system.
Create course announcementCreates a new announcement within a specified course in the blackboard learning management system.
Retrieve course listRetrieves a list of courses from the blackboard learn platform.
Course endpoint entitlement accessRetrieves detailed information about a specific course in the blackboard learn platform using its unique identifier.
Retrieve course details by idRetrieves detailed information about a specific course in the blackboard learning management system.
Create course groupCreates a new group within a specified course in the blackboard learn system.
Update group details by course and group idUpdates the properties of a specific group within a blackboard learn course.
Update course information by courseidThe patchcourse endpoint allows for updating specific details and settings of an existing course in the blackboard learn system.
Update course informationUpdates an existing course in the blackboard learn system.
Delete course by courseidDeletes a specific course from the blackboard learn platform.
Create a class courseCreates a new course in the blackboard learn system with specified settings and configurations.
Delete user from courseRemoves a specific user from a particular course in the blackboard learning management system.
Update user criterion in adaptive ruleThis endpoint updates a user-specific criterion within an adaptive release rule for a particular content item in a blackboard course.
Create adaptive release criteria by ruleThis endpoint allows for the creation of new adaptive release criteria for a specific rule within a course's content in blackboard.
Create system announcementCreates a new system-wide announcement in the blackboard learn environment.
Create assignment in course contentsCreates a new assignment within a specified blackboard course.
Update user meeting attendance statusAdds a user to a specific meeting within a blackboard course and sets their attendance status.
Create calendar itemsThis endpoint creates a new calendar item in the blackboard platform.
Add catalog category by typeCreates a new category in the blackboard catalog system.
Create child content in courseCreates a new content item within a specified course and parent content in the blackboard learn platform.
Add child node in hierarchyCreates a new child node within the institutional hierarchy of blackboard learn.
Submit gradebook attemptCreates a new attempt for a specific gradebook column in a blackboard course.
Post group attempts for gradebook columnThe creategroupattempt endpoint allows for the creation or update of a group attempt for a specific gradebook column in a blackboard learn course.
Create course content in courseCreates new content within a specified blackboard course.
Update content group associationThis endpoint updates the association between a specific content item and a group within a blackboard learn course.
Create a new courseCreates a new course in the blackboard learn system with specified attributes and settings.
Create course meetingCreates a new meeting for a specific course within the blackboard learning management system.
Create data source with external idCreates a new data source in the blackboard learn system.
Create discussion forum in courseCreates a new discussion forum within a specified course in the blackboard learning management system.
Create lti domain configurationCreates or updates an lti (learning tools interoperability) domain configuration in blackboard learn.
Add course content attachmentAdds an attachment to a specific content item within a blackboard learn course.
Add new gradebook column for courseCreates a new grade column in a course's gradebook within the blackboard learn platform.
Post grade notation to course gradebookCreates a new grade notation in the gradebook for a specific course in blackboard.
Create course gradebook schemaCreates a new gradebook schema for a specific course in blackboard learn.
Create grading period in course gradebookCreates a new grading period within a specific course's gradebook in the blackboard learn system.
Create course group in courseCreates a new group within a specified course in the blackboard learning management system.
Update user in course groupThis endpoint updates a user's information within a specific group in a blackboard course.
Modify course content adaptive release group criteriaThis endpoint updates the criteria for a specific group within an adaptive release rule for a particular content item in a blackboard course.
Create group setCreates a new group set within a specified course in the blackboard learn platform.
Create group in courseCreates a new group within a specified course group set in the blackboard learn platform.
Update course category detailsThis endpoint updates an existing course within a specific category in the blackboard catalog.
Post course message with bbml supportCreates a new message within a specific blackboard course.
Post discussion message replyCreates a reply to a specific message within a blackboard course discussion.
Create institutional hierarchy nodeCreates a new node in the institutional hierarchy of blackboard.
Update course primary node associationThis endpoint updates the association between a specific course and a node in the blackboard institutional hierarchy.
Update institutional hierarchy user nodeUpdates a user's information or association within a specific node of the institutional hierarchy in blackboard.
Update user observerUpdates the observer relationship between a user and an observer in the blackboard learn platform.
Create new lti placementCreates a new lti (learning tools interoperability) placement in the blackboard learn system.
Post pronouns detailsCreates a new pronoun entry in the blackboard learning management system.
Post course assessment questionThis endpoint creates a new question within an existing blackboard assessment.
Create course rubric with detailsCreates a new rubric for a specific course in blackboard learn.
Create rubric association in courseCreates a new association between a rubric and a specific course content item in the blackboard learning management system.
Create rubric evaluation for courseCreates or updates a rubric evaluation for a specific course, rubric, and rubric association in the blackboard learn platform.
Add adaptive release rule to course contentCreates a new adaptive release rule for a specific content item within a blackboard course.
Create term with availability and descriptionCreates a new term in the blackboard learn system with the specified attributes.
Create new user profileCreates a new user account in the blackboard learn system with detailed profile information.
Delete user criterion from course content ruleRemoves a specific user from an adaptive release rule criterion for a particular content item within a course.
Delete adaptive release rule criterionDeletes a specific criterion from an adaptive release rule for a content item within a blackboard course.
Delete user course meetingsDeletes all meeting attendance records for a specific user within a particular course in the blackboard system.
Delete user from course meetingsThis endpoint removes a user from a meeting within a specific course in the blackboard learning management system.
Delete course meetingDeletes all meetings associated with a specific course in the blackboard learn platform.
Delete all records in meetingDeletes all attendance records in the course meeting for a given meeting id.
Delete announcement by idDeletes a specific announcement from the blackboard learning management system (lms) using its unique identifier.
Delete gradebook attempt fileDeletes a specific file associated with an attempt in a course's gradebook within the blackboard learn environment.
Delete attendance recordDelete attendance record for meeting.
Delete calendar item by type and idThis endpoint deletes a specific calendar item from the blackboard learn system.
Delete category by type and idThis endpoint deletes a specific category from the blackboard catalog based on the provided category type and id.
Delete course content by idDeletes a specific content item from a course in the blackboard learning management system.
Delete course content group by idThis endpoint deletes a specific group associated with a content item within a blackboard course.
Delete course by idDeletes a specific course from the blackboard learning management system.
Delete course meetingThis endpoint deletes a specific meeting within a course in the blackboard learning management system.
Delete data source by idDeletes a specific data source from the blackboard learn platform.
Delete lti domain by idDeletes a specific lti (learning tools interoperability) domain from the blackboard learning management system.
Delete course content attachmentDeletes a specific attachment from a content item within a course in blackboard learn.
Delete gradebook column by idDeletes a specific gradebook column from a course in the blackboard learn system.
Delete course grade notation by idDeletes a specific grade notation from a course's gradebook in blackboard learn.
Delete gradebook period by course idDeletes a specific gradebook period from a course in the blackboard learning management system.
Delete course group by idsThis endpoint deletes a specific group from a course in the blackboard learning management system.
Delete user from course groupRemoves a specific user from a particular group within a course in the blackboard learning management system.
Delete course content adaptive release ruleRemoves a specific group from a criterion within an adaptive release rule for a particular content item in a blackboard course.
Delete group set in courseThis endpoint deletes a specific group set within a course in the blackboard learning management system.
Delete course from category listRemoves a specific course from a designated category within the blackboard learning management system (lms) catalog.
Delete course message by idThis endpoint deletes a specific message within a course in the blackboard learning management system.
Delete institutional hierarchy node by nodeidDeletes a specific node from the institutional hierarchy in blackboard learn.
Delete institution node adminRemoves an administrator's access from a specific node in the institutional hierarchy of blackboard learn.
Delete specific course nodeRemoves a specific course from a designated node in the institutional hierarchy of blackboard learn.
Delete user from institutional nodeThis endpoint removes a specified user from a particular node within the institutional hierarchy of blackboard learn.
Delete user observerThis endpoint removes a specific observer from a user's list of observers in the blackboard learning management system.
Delete lt i placement by idThis endpoint deletes a specific learning tools interoperability (lti) placement from the blackboard learn platform.
Delete pronoun by idDeletes a specific pronoun setting from the blackboard learning management system.
Delete course assessment questionDeletes a specific question from an assessment within a blackboard course.
Delete course rubricDeletes a specific rubric associated with a given course in the blackboard learn system.
Delete rubric associationDeletes a specific rubric association within a course in the blackboard learn platform.
Delete term by termidThe deleteterm endpoint removes a specific academic term from the blackboard learning management system.
Delete user by idThis endpoint permanently deletes a user account from the blackboard learn platform.
Delete group in courseThis endpoint deletes a specific group within a course in the blackboard learning management system.
Get gradebook column detailsRetrieves detailed information about a specific gradebook column for a particular course in the blackboard learning management system.
Download course content attachmentDownloads a specific attachment from a course's content in the blackboard learning management system.
Update user grade details by courseUpdates a specific user's grade information within a course's gradebook column in the blackboard learning management system.
Enroll Course With PermissionsUpdates a user's enrollment details in a specific blackboard learn course.
Fetch course category by idRetrieves a list of categories for a specific course within the blackboard learning management system.
Retrieve rubric evaluation by associationRetrieves the evaluations associated with a specific rubric for a particular course and rubric association in the blackboard learning management system.
Fetch rubric evaluation for group attempt columnRetrieves the rubric evaluations for a specific group attempt within a gradebook column of a blackboard course.
Retrieve user grades for course columnRetrieves the grades for all users associated with a specific gradebook column in a particular blackboard course.
Get course meeting download urlRetrieves a download url for meeting-related resources within a specific blackboard course.
Fetch learning session dataRetrieves a list of active sessions from the blackboard learn platform.
Get course content adaptive release group criteriaRetrieves the groups associated with a specific criterion of an adaptive release rule for a particular content item within a blackboard course.
Fetch user criteria from course content ruleRetrieves a list of users who meet a specific criterion within an adaptive release rule for a particular content item in a blackboard learn course.
Retrieve course content adaptive release rule criterionRetrieves detailed information about a specific criterion within an adaptive release rule for a particular content item in a blackboard learn course.
Get announcement by idRetrieves a specific announcement from the blackboard learn platform using its unique identifier.
List announcementsRetrieves a list of announcements from the blackboard learn platform.
Retrieve course attempt fileRetrieves a specific file associated with a student's attempt in a course's gradebook within the blackboard learn system.
Fetch gradebook attempt filesRetrieves the files associated with a specific gradebook attempt for a given course in the blackboard learning management system.
Retrieve attempt receipt by idRetrieves detailed information about a specific attempt receipt in the blackboard learning management system.
Get attendance recordReturns a course meeting attendance information for the given meeting and user id.
Get attendance records by meeting idReturns a list of course meeting attendance for a given meeting id.
Retrieve user meetings in courseRetrieves detailed information about a specific user's participation or engagement in meetings for a particular course within the blackboard learning management system.
Fetch calendar item by type and idRetrieves detailed information about a specific calendar item from the blackboard learning management system.
Get calendar itemsRetrieves calendar items from the blackboard learn platform.
Get calendarsGet the list of calendars.
Retrieve category type detailsRetrieves a list of categories from the blackboard catalog based on the specified category type.
Fetch category details by idRetrieves detailed information about a specific category in the blackboard catalog system.
Retrieve course child detailsRetrieves detailed information about a specific child course within a parent course in the blackboard learn platform.
Retrieve catalog category childrenRetrieves the child categories of a specified parent category within the blackboard catalog system.
Retrieve children goals by idRetrieves the child elements (sub-goals, tasks, or related items) of a specified goal in the blackboard learning management system.
Retrieve grade attempt by course and column idRetrieves detailed information about a specific attempt for a gradebook column within a course in the blackboard learn system.
Retrieve gradebook attemptsRetrieves attempt data for a specific gradebook column within a course in the blackboard learn platform.
Retrieve user gradebook columnRetrieves a specific user's grade for a particular gradebook column in a blackboard course.
Get last changed grade column for userRetrieves information about the last changes made to a specific gradebook column for a particular course in blackboard.
List gradebook columns for usersRetrieves user data associated with a specific gradebook column for a given course in blackboard.
Get course gradebook group attemptsRetrieves group attempts data for a specific gradebook column within a course in blackboard learn.
Retrieve course content by idsRetrieves specific content within a blackboard course using the course id and content id.
Retrieve course content childrenRetrieves a list of child content items for a specific content within a blackboard learn course.
Retrieve contentcollection resourceRetrieves a specific resource from a content collection in blackboard learn.
Get course content group detailsRetrieves detailed information about a specific group within a content item of a course in the blackboard learn platform.
Retrieve course content groupsRetrieves the groups associated with a specific content item within a blackboard course.
Retrieve course contentsRetrieves the contents of a specific course in the blackboard learn platform.
Retrieve course detailsRetrieves detailed information about a specific course in the blackboard learn system.
List child courses for a given courseRetrieves a list of child courses or sub-courses associated with a specified parent course in the blackboard learn platform.
Get Course Column LogsRetrieves the log entries for a specific gradebook column within a blackboard course.
Retrieve course alignments by idRetrieves the course goal alignments for a specified course in blackboard.
Get course gradebook logsRetrieves the gradebook logs for a specific course in the blackboard learning management system.
Get course meeting detailsRetrieves detailed information about a specific meeting within a course in the blackboard learning management system.
Get course meetingsRetrieves a list of meetings associated with a specific course in the blackboard learning management system.
Retrieve users from courseRetrieves a list of users enrolled in a specific course within the blackboard learning management system.
Get course resourceRetrieves a specific resource from a particular course within the blackboard learning management system.
Get course resource childrenRetrieves a list of child resources associated with a specific resource within a blackboard course.
Retrieve course role by role idRetrieves detailed information about a specific course role in blackboard learn using its unique identifier.
Fetch course roles informationRetrieves a list of available course roles in the blackboard learn system.
List coursesRetrieves a list of courses from the blackboard learning management system.
Retrieve course content release criteriaRetrieves the criteria associated with a specific adaptive release rule for a particular content item within a blackboard course.
Get cross list set by course idRetrieves the cross-listed course set for a specified course in blackboard learn.
Retrieve user sessions by user idRetrieves the active or historical sessions for a specific user in the blackboard learn platform.
Get data source by idRetrieves detailed information about a specific data source within the blackboard learn platform.
Fetch data source listRetrieves a list of data sources available in the blackboard learning management system.
Retrieve coursediscussion detailsRetrieves detailed information about a specific discussion thread within a course on the blackboard learn platform.
Get discussion messages for courseRetrieves all messages within a specific discussion for a given course in the blackboard learning management system.
Get course discussion threadsRetrieves all discussions associated with a specific course in the blackboard learning management system.
Retrieve lti domain details by domainidRetrieves detailed information about a specific lti (learning tools interoperability) domain within the blackboard learn system.
Retrieve lti domain listingsRetrieves a list of lti (learning tools interoperability) domains registered with the blackboard learn platform.
Get course content attachmentRetrieves detailed information about a specific attachment associated with a particular content item within a blackboard course.
Get course content attachmentRetrieves the attachments associated with a specific content item within a blackboard course.
Retrieve course message foldersRetrieves a list of message folders for a specific course in the blackboard learning management system.
Get goal alignments by goalidRetrieves the alignments associated with a specific educational goal in the blackboard learning management system.
Retrieve goal by idRetrieves detailed information about a specific learning goal within the blackboard learn platform.
Get learning goalsThe getgoals endpoint retrieves a list of educational goals within the blackboard learning management system.
Retrieve goal set by idRetrieves detailed information about a specific goal set within the blackboard learning management system.
Get goal set category by idRetrieves detailed information about a specific goal category within a designated goal set in the blackboard learn platform.
Retrieve goal setsRetrieves a list of goal sets from the blackboard learn platform.
Fetch goal set category goalsThis endpoint retrieves a list of goals associated with a specific category within a goal set in the blackboard learning management system.
Retrieve course gradebook categoriesRetrieves the list of gradebook categories for a specific course in the blackboard learning management system.
Retrieve gradebook category by idRetrieves detailed information about a specific gradebook category within a course in the blackboard learning management system.
Retrieve gradebook column by course and column idsRetrieves detailed information about a specific gradebook column within a particular course in the blackboard learning management system.
List course gradebook columnsRetrieves a list of gradebook columns for a specified course in the blackboard learn environment.
Retrieve course grade notationRetrieves detailed information about a specific grade notation within a course's gradebook in the blackboard learning management system.
List grade notations for courseRetrieves the grade notations for a specific course's gradebook in the blackboard learning management system.
Get gradebook schema for courseRetrieves the gradebook schemas for a specific course in the blackboard learning management system.
Get gradebook periods by course and period idRetrieves detailed information about a specific gradebook period within a course in the blackboard learning management system.
Retrieve course gradebook periodsRetrieves the gradebook periods for a specified course in the blackboard learning management system.
Retrieve course group by idsRetrieves detailed information about a specific group within a particular course in the blackboard learning management system.
Retrieve user from course groupRetrieves detailed information about a specific user's membership or role within a group in a particular course on the blackboard platform.
List course group usersRetrieves a list of users belonging to a specific group within a blackboard learn course.
Fetch course groups by idRetrieves a list of all groups associated with a specific course in the blackboard learning management system.
Retrieve course group informationRetrieves detailed information about a specific group set within a course in the blackboard learning management system.
List course group setsRetrieves a list of groups within a specific group set for a given course in the blackboard learning management system.
Retrieve course group setsRetrieves all group sets associated with a specific course in the blackboard learning management system.
Get system infoRetrieves system information about the blackboard learn platform.
Retrieves institution role by idRetrieves detailed information about a specific institutional role in the blackboard learning management system.
List institution rolesRetrieves a list of all institution roles defined within the blackboard learn environment.
Retrieve loginas sessionsRetrieves active login sessions for users in the blackboard learning management system.
Get user course by idRetrieves detailed information about a specific user within a particular course in the blackboard learning management system.
Get courses for categoryRetrieves a list of courses associated with a specific category in the blackboard catalog.
Retrieve participants of course messageRetrieves a list of participants for a specific message within a blackboard course.
Retrieve discussion message replyRetrieves all replies to a specific message within a discussion thread of a course in the blackboard learning management system.
Fetch messages for course idRetrieves all messages associated with a specific course in the blackboard learning management system.
Get hierarchy node by node idRetrieves detailed information about a specific node within the institutional hierarchy of blackboard.
Retrieve admin info by nodeid and useridRetrieves the administrative status of a specific user for a particular node within the blackboard institutional hierarchy.
Retrieve node adminsRetrieves the list of administrators associated with a specific node in the blackboard institutional hierarchy.
List child nodes by node idRetrieves the immediate child nodes of a specified parent node in the blackboard learn institutional hierarchy.
Retrieve courses for institutional nodeRetrieves a list of courses associated with a specific node in the institutional hierarchy of blackboard.
Fetch institutional hierarchy nodesRetrieves information about the nodes within the institutional hierarchy of a blackboard learning environment.
Retrieve course nodesRetrieves a list of nodes (modules or units) for a specific course in the blackboard learning management system.
Get user nodes for user idRetrieves a list of nodes associated with a specific user in the blackboard learn platform.
Retrieve users in institutional nodeRetrieves a list of users associated with a specific node in the blackboard learn institutional hierarchy.
Retrieve observees of user profileRetrieves a list of observees associated with a specific user in the blackboard learning management system.
Get user observers by idRetrieves the list of observers associated with a specific user in the blackboard learning management system.
Retrieve lti placement by idRetrieves detailed information about a specific lti (learning tools interoperability) placement within the blackboard learn platform.
Fetch lti placementsRetrieves a list of all available lti (learning tools interoperability) placements within the blackboard learn environment.
Fetch privacy policiesRetrieves the current privacy policy for the blackboard system.
Retrieve proctoring service by idRetrieves detailed information about a specific proctoring service integrated with blackboard learn.
Retrieve proctoring servicesRetrieves a list of available proctoring services integrated with the blackboard learn platform.
Retrieve pronouns informationRetrieves the list of available pronouns in the blackboard learning management system.
Retrieve assessment questionRetrieves detailed information about a specific question within an assessment for a particular course in the blackboard learning management system.
Get assessment questions by course and assessment idRetrieves a list of questions for a specific assessment within a blackboard course.
Get content collection resources childrenRetrieves a list of child resources for a specified parent resource within the blackboard content collection.
Fetch content collection resourcesRetrieves a list of resources from a specified content collection within a blackboard learn course.
Get review status of user in course contentRetrieves the review status of a specific content item for a particular user within a blackboard learn course.
Get course performance content review statusRetrieves the content review status for a specific course in the blackboard learning management system.
Retrieve rubric association for courseRetrieves detailed information about a specific rubric association within a blackboard learn course.
Retrieve course rubric associationsRetrieves the associations of a specific rubric within a given course in blackboard learn.
Get rubric associations for gradebook columnsRetrieves the rubric associations for a specific gradebook column within a blackboard course.
Get course rubric by course idRetrieves a specific rubric for a given course in the blackboard learning management system.
Retrieve rubric evaluation detailsRetrieves detailed information about a specific rubric evaluation within a blackboard course.
Retrieve rubric evaluation for attemptRetrieves the rubric evaluations for a specific attempt on a gradebook item within a blackboard course.
Fetch rubric list for courseRetrieves all rubrics associated with a specific course in the blackboard learn platform.
Retrieve course content adaptive release rulesRetrieves the adaptive release rules associated with a specific content item within a blackboard course.
Get upload settingsRetrieves the current upload settings for the blackboard learn platform.
Retrieve sis dataset log by idRetrieves a specific student information system (sis) dataset from the blackboard learn platform using its unique identifier.
Retrieve system role by idRetrieves detailed information about a specific system role in the blackboard learning management system.
List system rolesRetrieves a list of all system roles defined in the blackboard learn platform.
Retrieve task by idRetrieves detailed information about a specific system task in the blackboard learn platform.
Fetch course task detailsRetrieves detailed information about a specific task within a course in the blackboard learn platform.
Retrieve term by idRetrieves detailed information about a specific academic term in the blackboard learn system.
Fetch terms listRetrieves a list of academic terms or information about specific terms in the blackboard learning management system.
Retrieve toc items by course idRetrieves the table of contents (toc) items for a specified course in the blackboard learning management system.
Fetch oauth2 tokeninfoRetrieves detailed information about a specified oauth2 token used for authentication in the blackboard learn api.
Get institutional node tool informationRetrieves detailed information about a specific tool associated with a particular node in the blackboard institutional hierarchy.
Retrieve course resources by idRetrieves a list of resources associated with a specific course in the blackboard learning management system (lms).
Fetch types of goal setsRetrieves a list of available goal set types in the blackboard learn system.
Retrieve user by idRetrieves detailed information about a specific user in the blackboard learn system.
Retrieve user avatar by useridRetrieves the avatar (profile picture) for a specified user in the blackboard learn platform.
Retrieve gradebook entry for user in courseRetrieves detailed gradebook information for a specific user within a particular course in the blackboard learning management system.
Retrieve user courses by idRetrieves a list of courses associated with a specific user in the blackboard learn platform.
Get user pronunciation audioRetrieves the pronunciation audio associated with a specific user's profile in blackboard learn.
Retrieve users listThe getusersendpoint retrieves user information from the blackboard learn system.
Retrieve system version informationRetrieves the current version information of the blackboard learn system.
Retrieve user gradebook columnRetrieves a specific user's grade for a particular gradebook column in a blackboard learn course.
List users in course groupRetrieves a list of users belonging to a specific group within a course in the blackboard learning management system.
Create new course with json inputCreates a new course in the blackboard learn system with specified attributes and settings.
Update user in course groupUpdates a user's information within a specific group of a course in blackboard learn.
Fetch goal set categoriesRetrieves the categories associated with a specific goal set in the blackboard learning management system.
List Gradebook ColumnsRetrieves all gradebook columns for a specified course in the blackboard learning management system.
Get group details from course apiRetrieves detailed information about a specific group within a blackboard course.
Retrieve user in course groupRetrieves detailed information about a specific user within a group in a blackboard learn course.
Retrieve course listRetrieves a list of courses from the blackboard learn environment.
Add course gradebook columnCreates a new grade column in a blackboard course's gradebook.
Patch gradebook columnThis endpoint allows for updating specific properties of an existing grade column within a course's gradebook in the blackboard learn platform.
Modify announcement detailsThis endpoint allows you to update an existing course announcement in the blackboard learn platform.
Patch hierarchy node tool settingsThis endpoint allows you to update the settings of a specific tool within a node of blackboard's institutional hierarchy.
Post discussion message in coursePosts a new message to a specific discussion within a blackboard learn course.
Delete child course associationDeletes a specified child course from a parent course in the blackboard learning management system.
Delete user from course groupThis endpoint removes a specific user from a designated group within a course in blackboard learn.
Delete course announcement by idThis endpoint deletes a specific announcement within a course in the blackboard learn platform.
Delete gradebook column in courseDeletes a specific gradebook column from a course in blackboard learn.
Delete discussion message by idThis endpoint allows for the deletion of a specific message within a discussion thread in a blackboard course.
Obtain oauth2 token via postObtains an oauth2 token for authenticating and authorizing requests to the blackboard api.
Download course gradebook attempt fileThis endpoint allows for downloading a specific file associated with a student's attempt on an assignment within a blackboard course.
Update discussion message statusUpdates a specific message within a course discussion on the blackboard platform.
Retrieve course gradebook column attemptsRetrieves attempt data for a specific gradebook column within a blackboard course.
Get course gradebook attemptRetrieves detailed information about a specific attempt for a gradebook column in a blackboard course.
Update admin node rolesUpdates the roles of an administrative user for a specific node within the institutional hierarchy of blackboard.
Delete course by courseidThe deletecourse endpoint permanently removes a specific course from the blackboard learn platform.
Patch adaptiverelease criterionUpdates a specific criterion within an adaptive release rule for a course content item in blackboard learn.
Modify system announcement detailsThis endpoint allows you to update an existing system announcement in blackboard.
Update attendance recordUpdate the course meeting attendance data for the given course/organization.
Update attendance recordsCreates or updates attendance records for the meeting for all users in the course.
Patch calendar item by type and idThis endpoint allows you to update an existing calendar item in the blackboard system.
Update category details by typeUpdates specific details of a category in the blackboard catalog system.
Update attempt status in gradebookThis endpoint allows for updating specific attributes of a gradebook attempt for a particular course, column, and attempt id.
Patch grade information for userThe updategrade endpoint allows instructors to modify various aspects of a student's grade for a specific course and gradebook column in the blackboard learning management system.
Patch course contentThis endpoint allows you to update existing content within a specific blackboard learn course.
Patch course details by idUpdates an existing course in blackboard learn with the provided information.
Patch course meeting detailsThis endpoint allows you to update the details of a specific meeting within a course in the blackboard learning management system.
Patch data source by external idThis endpoint allows for updating specific attributes of an existing data source in the blackboard system.
Update course discussion detailsUpdates a specific discussion forum within a blackboard learn course.
Update lti domain configurationThis endpoint allows updating an existing lti (learning tools interoperability) domain configuration in the blackboard learn platform.
Update gradebook columnThis endpoint updates a specific grade column in a course's gradebook.
Patch grade notation for courseThis endpoint allows you to update an existing grade notation for a specific course in the blackboard learning management system.
Update grading period infoUpdates a specific grading period within a course's gradebook in the blackboard learn system.
Update course group informationUpdates an existing group within a specified course in the blackboard learn system.
Update course group detailsUpdates the properties of an existing group within a specific course in the blackboard learn platform.
Modify user enrollment in courseUpdates a user's membership details within a specific blackboard course.
Update course message read statusUpdates the read status of a specific message within a blackboard course.
Update institution node by idThis endpoint allows for updating specific properties of a node within the institutional hierarchy of blackboard.
Update course primary node statusUpdates the association between a course and a node in the blackboard learn institutional hierarchy.
Update lti placement detailsThis endpoint allows you to update an existing lti (learning tools interoperability) placement in the blackboard learning management system.
Update pronoun status by idUpdates the information for a specific pronoun in the blackboard system.
Modify assessment questionThis endpoint allows you to update an existing question within a specific assessment in a blackboard course.
Patch course content review statusUpdates the review status of a specific content item for a particular user within a blackboard learn course.
Patch course rubric detailsUpdates a specific rubric within a blackboard learn course.
Update rubric association settingsUpdates the properties of a rubric association within a specific blackboard course.
Update rubric evaluationUpdates a specific rubric evaluation for a course in the blackboard learning management system.
Patch term details by termidUpdates an existing term in the blackboard learn platform.
Update course toc itemUpdates the visibility settings for a specific table of contents (toc) item within a blackboard course.
Update user informationUpdates a user's profile in the blackboard learning management system.
Create new uploadsUploads a file to the blackboard learn platform.
Get course groupsRetrieves a list of all groups associated with a specific course in the blackboard learning management system.

What is the Composio tool router, and how does it fit here?

What is Tool Router?

Composio's Tool Router helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Tool Router

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Tool Router works

The Tool Router follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Prerequisites

Before you begin, make sure you have:
  • Python 3.8/Node 16 or higher installed
  • A Composio account with the API key
  • An OpenAI API key
  • A Blackboard account and project
  • Basic familiarity with async Python/Typescript

Getting API Keys for OpenAI, Composio, and Blackboard

OpenAI API key (OPENAI_API_KEY)
  • Go to the OpenAI dashboard
  • Create an API key if you don't have one
  • Assign it to OPENAI_API_KEY in .env
Composio API key and user ID
  • Log into the Composio dashboard
  • Copy your API key from Settings
    • Use this as COMPOSIO_API_KEY
  • Pick a stable user identifier (email or ID)
    • Use this as COMPOSIO_USER_ID

Installing dependencies

pip install composio-llamaindex llama-index llama-index-llms-openai llama-index-tools-mcp python-dotenv

Create a new Python project and install the necessary dependencies:

  • composio-llamaindex: Composio's LlamaIndex integration
  • llama-index: Core LlamaIndex framework
  • llama-index-llms-openai: OpenAI LLM integration
  • llama-index-tools-mcp: MCP client for LlamaIndex
  • python-dotenv: Environment variable management

Set environment variables

bash
OPENAI_API_KEY=your-openai-api-key
COMPOSIO_API_KEY=your-composio-api-key
COMPOSIO_USER_ID=your-user-id

Create a .env file in your project root:

These credentials will be used to:

  • Authenticate with OpenAI's GPT-5 model
  • Connect to Composio's Tool Router
  • Identify your Composio user session for Blackboard access

Import modules

import asyncio
import os
import dotenv

from composio import Composio
from composio_llamaindex import LlamaIndexProvider
from llama_index.core.agent.workflow import ReActAgent
from llama_index.core.workflow import Context
from llama_index.llms.openai import OpenAI
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec

dotenv.load_dotenv()

Create a new file called blackboard_llamaindex_agent.py and import the required modules:

Key imports:

  • asyncio: For async/await support
  • Composio: Main client for Composio services
  • LlamaIndexProvider: Adapts Composio tools for LlamaIndex
  • ReActAgent: LlamaIndex's reasoning and action agent
  • BasicMCPClient: Connects to MCP endpoints
  • McpToolSpec: Converts MCP tools to LlamaIndex format

Load environment variables and initialize Composio

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not OPENAI_API_KEY:
    raise ValueError("OPENAI_API_KEY is not set in the environment")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment")

What's happening:

This ensures missing credentials cause early, clear errors before the agent attempts to initialise.

Create a Tool Router session and build the agent function

async def build_agent() -> ReActAgent:
    composio_client = Composio(
        api_key=COMPOSIO_API_KEY,
        provider=LlamaIndexProvider(),
    )

    session = composio_client.create(
        user_id=COMPOSIO_USER_ID,
        toolkits=["blackboard"],
    )

    mcp_url = session.mcp.url
    print(f"Composio MCP URL: {mcp_url}")

    mcp_client = BasicMCPClient(mcp_url, headers={"x-api-key": COMPOSIO_API_KEY})
    mcp_tool_spec = McpToolSpec(client=mcp_client)
    tools = await mcp_tool_spec.to_tool_list_async()

    llm = OpenAI(model="gpt-5")

    description = "An agent that uses Composio Tool Router MCP tools to perform Blackboard actions."
    system_prompt = """
    You are a helpful assistant connected to Composio Tool Router.
    Use the available tools to answer user queries and perform Blackboard actions.
    """
    return ReActAgent(tools=tools, llm=llm, description=description, system_prompt=system_prompt, verbose=True)

What's happening here:

  • We create a Composio client using your API key and configure it with the LlamaIndex provider
  • We then create a tool router MCP session for your user, specifying the toolkits we want to use (in this case, blackboard)
  • The session returns an MCP HTTP endpoint URL that acts as a gateway to all your configured tools
  • LlamaIndex will connect to this endpoint to dynamically discover and use the available Blackboard tools.
  • The MCP tools are mapped to LlamaIndex-compatible tools and plug them into the Agent.

Create an interactive chat loop

async def chat_loop(agent: ReActAgent) -> None:
    ctx = Context(agent)
    print("Type 'quit', 'exit', or Ctrl+C to stop.")

    while True:
        try:
            user_input = input("\nYou: ").strip()
        except (KeyboardInterrupt, EOFError):
            print("\nBye!")
            break

        if not user_input or user_input.lower() in {"quit", "exit"}:
            print("Bye!")
            break

        try:
            print("Agent: ", end="", flush=True)
            handler = agent.run(user_input, ctx=ctx)

            async for event in handler.stream_events():
                # Stream token-by-token from LLM responses
                if hasattr(event, "delta") and event.delta:
                    print(event.delta, end="", flush=True)
                # Show tool calls as they happen
                elif hasattr(event, "tool_name"):
                    print(f"\n[Using tool: {event.tool_name}]", flush=True)

            # Get final response
            response = await handler
            print()  # Newline after streaming
        except KeyboardInterrupt:
            print("\n[Interrupted]")
            continue
        except Exception as e:
            print(f"\nError: {e}")

What's happening here:

  • We're creating a direct terminal interface to chat with your Blackboard database
  • The LLM's responses are streamed to the CLI for faster interaction.
  • The agent uses context to maintain conversation history
  • You can type 'quit' or 'exit' to stop the chat loop gracefully
  • Agent responses and any errors are displayed in a clear, readable format

Define the main entry point

async def main() -> None:
    agent = await build_agent()
    await chat_loop(agent)

if __name__ == "__main__":
    # Handle Ctrl+C gracefully
    signal.signal(signal.SIGINT, lambda s, f: (print("\nBye!"), exit(0)))
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nBye!")

What's happening here:

  • We're orchestrating the entire application flow
  • The agent gets built with proper error handling
  • Then we kick off the interactive chat loop so you can start talking to Blackboard

Run the agent

npx ts-node llamaindex-agent.ts

When prompted, authenticate and authorise your agent with Blackboard, then start asking questions.

Complete Code

Here's the complete code to get you started with Blackboard and LlamaIndex:

import asyncio
import os
import signal
import dotenv

from composio import Composio
from composio_llamaindex import LlamaIndexProvider
from llama_index.core.agent.workflow import ReActAgent
from llama_index.core.workflow import Context
from llama_index.llms.openai import OpenAI
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec

dotenv.load_dotenv()

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not OPENAI_API_KEY:
    raise ValueError("OPENAI_API_KEY is not set")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set")

async def build_agent() -> ReActAgent:
    composio_client = Composio(
        api_key=COMPOSIO_API_KEY,
        provider=LlamaIndexProvider(),
    )

    session = composio_client.create(
        user_id=COMPOSIO_USER_ID,
        toolkits=["blackboard"],
    )

    mcp_url = session.mcp.url
    print(f"Composio MCP URL: {mcp_url}")

    mcp_client = BasicMCPClient(mcp_url, headers={"x-api-key": COMPOSIO_API_KEY})
    mcp_tool_spec = McpToolSpec(client=mcp_client)
    tools = await mcp_tool_spec.to_tool_list_async()

    llm = OpenAI(model="gpt-5")
    description = "An agent that uses Composio Tool Router MCP tools to perform Blackboard actions."
    system_prompt = """
    You are a helpful assistant connected to Composio Tool Router.
    Use the available tools to answer user queries and perform Blackboard actions.
    """
    return ReActAgent(
        tools=tools,
        llm=llm,
        description=description,
        system_prompt=system_prompt,
        verbose=True,
    );

async def chat_loop(agent: ReActAgent) -> None:
    ctx = Context(agent)
    print("Type 'quit', 'exit', or Ctrl+C to stop.")

    while True:
        try:
            user_input = input("\nYou: ").strip()
        except (KeyboardInterrupt, EOFError):
            print("\nBye!")
            break

        if not user_input or user_input.lower() in {"quit", "exit"}:
            print("Bye!")
            break

        try:
            print("Agent: ", end="", flush=True)
            handler = agent.run(user_input, ctx=ctx)

            async for event in handler.stream_events():
                # Stream token-by-token from LLM responses
                if hasattr(event, "delta") and event.delta:
                    print(event.delta, end="", flush=True)
                # Show tool calls as they happen
                elif hasattr(event, "tool_name"):
                    print(f"\n[Using tool: {event.tool_name}]", flush=True)

            # Get final response
            response = await handler
            print()  # Newline after streaming
        except KeyboardInterrupt:
            print("\n[Interrupted]")
            continue
        except Exception as e:
            print(f"\nError: {e}")

async def main() -> None:
    agent = await build_agent()
    await chat_loop(agent)

if __name__ == "__main__":
    # Handle Ctrl+C gracefully
    signal.signal(signal.SIGINT, lambda s, f: (print("\nBye!"), exit(0)))
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nBye!")

Conclusion

You've successfully connected Blackboard to LlamaIndex through Composio's Tool Router MCP layer. Key takeaways:
  • Tool Router dynamically exposes Blackboard tools through an MCP endpoint
  • LlamaIndex's ReActAgent handles reasoning and orchestration; Composio handles integrations
  • The agent becomes more capable without increasing prompt size
  • Async Python provides clean, efficient execution of agent workflows
You can easily extend this to other toolkits like Gmail, Notion, Stripe, GitHub, and more by adding them to the toolkits parameter.

How to build Blackboard MCP Agent with another framework

FAQ

What are the differences in Tool Router MCP and Blackboard MCP?

With a standalone Blackboard MCP server, the agents and LLMs can only access a fixed set of Blackboard tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Blackboard and many other apps based on the task at hand, all through a single MCP endpoint.

Can I use Tool Router MCP with LlamaIndex?

Yes, you can. LlamaIndex fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Blackboard tools.

Can I manage the permissions and scopes for Blackboard while using Tool Router?

Yes, absolutely. You can configure which Blackboard scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Blackboard data and credentials are handled as safely as possible.

Used by agents from

Context
ASU
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
ASU
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai
Context
ASU
Letta
glean
HubSpot
Agent.ai
Altera
DataStax
Entelligence
Rolai

Never worry about agent reliability

We handle tool reliability, observability, and security so you never have to second-guess an agent action.