Blackboard for AI agents

Blackboard is a learning management system that colleges and universities use to run online courses, track grades, and manage course content for instructors and students. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

EducationOAuth 2.0MCP + RESTblackboard.com
AUDIT LOG · BLACKBOARDPOLICY: acme-support
09:41:07 · claude · u_8f2read
blackboard.get_info
Get system info✓ allowed · 212ms
09:41:08 · claude · u_8f2read
blackboard.get_node
Get hierarchy node by node id✓ allowed · 164ms
09:41:09 · claude · u_8f2write
blackboard.create_node
Create institutional hierarchy node✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
blackboard.delete_node
Delete institutional hierarchy node by nodeid✕ blocked · policy: deny
EVERY BLACKBOARD CALL, ON THE RECORD
01 · USE CASES

What agents do in Blackboard.

01

Look up a course roster

Pull the enrolled student list and course details for a section before an instructor makes any grading changes.

02

Post grades to the gradebook

Submit a gradebook attempt or upload a file for a student's assignment after the instructor approves the grade.

03

Flag a course deletion for review

Treat a request to delete a course by course ID as destructive, requiring the instructor's explicit approval first.

02 · ACTIONS

314 Blackboard actions, graded by risk.

Every Blackboard action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

149

Look things up. Allowed by default.

  • blackboard.get_info
    Get system info
  • blackboard.get_node
    Get hierarchy node by node id
  • blackboard.get_task
    Fetch course task details
  • blackboard.get_term
    Retrieve term by id
  • blackboard.get_user
    Retrieve user by id
  • blackboard.get_child
    Retrieve course child details
  • blackboard.get_goals
    Get learning goals
  • blackboard.get_group
    Retrieve course group by ids
  • blackboard.get_nodes
    Fetch institutional hierarchy nodes
  • blackboard.get_rules
    Retrieve course content adaptive release rules
  • blackboard.get_terms
    Fetch terms list
  • blackboard.get_tools
    Get institutional node tool information
  • blackboard.get_types
    Fetch types of goal sets
  • blackboard.get_users
    Retrieve users list
  • blackboard.get_course
    Retrieve course details
  • blackboard.get_groups
    Fetch course groups by id
+ 133 MORE

write

120

Create and change things. Allow, or ask the user first.

  • blackboard.create_node
    Create institutional hierarchy node
  • blackboard.create_rule
    Add adaptive release rule to course content
  • blackboard.create_term
    Create term with availability and description
  • blackboard.create_user
    Create new user profile
  • blackboard.update_node
    Update institution node by id
  • blackboard.update_term
    Patch term details by termid
  • blackboard.update_user
    Update user information
  • blackboard.create_child
    Create child content in course
  • blackboard.create_group
    Create course group in course
  • blackboard.update_group
    Update course group information
  • blackboard.create_course
    Create a new course
  • blackboard.create_rubric
    Create course rubric with details
  • blackboard.update_course
    Patch course details by id
  • blackboard.update_rubric
    Patch course rubric details
  • blackboard.create_content
    Create course content in course
  • blackboard.create_message
    Post course message with bbml support
+ 104 MORE

destructive

45

Delete, cancel or archive. Ask first, or deny outright.

  • blackboard.delete_node
    Delete institutional hierarchy node by nodeid
  • blackboard.delete_term
    Delete term by termid
  • blackboard.delete_user
    Delete user by id
  • blackboard.delete_group
    Delete course group by ids
  • blackboard.delete_course
    Delete course by id
  • blackboard.delete_rubric
    Delete course rubric
  • blackboard.delete_content
    Delete course content by id
  • blackboard.delete_message
    Delete course message by id
  • blackboard.delete_pronoun
    Delete pronoun by id
  • blackboard.delete_category
    Delete category by type and id
  • blackboard.delete_observer
    Delete user observer
  • blackboard.delete_question
    Delete course assessment question
  • blackboard.delete_group_set
    Delete group set in course
  • blackboard.delete_placement
    Delete lt i placement by id
  • blackboard.delete_attachment
    Delete gradebook attempt file
  • blackboard.delete_membership
    Delete course from category list
+ 29 MORE
03 · HOW IT WORKS

Blackboard in three steps.

  1. 01Your users connect BlackboardThey sign in to Blackboard on Arc0 Connect, under your brand, and approve the access you ask for.
  2. 02You set the rulesReads run, writes like “create institutional hierarchy node” can wait for the user, and “delete institutional hierarchy node by nodeid” can be denied outright.
  3. 03Any agent can actYour agent calls Blackboard through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('blackboard', {
  read: 'allow',
  write: 'ask',        // create_node
  destructive: 'deny',  // delete_node
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How Blackboard connects.

Users sign in to Blackboard on Arc0 Connect and approve the scopes you request. Build with Arc0’s Blackboard OAuth app, or bring your own so the Blackboard consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

The same Blackboard connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
OAuth 2.0
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use Blackboard from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

Blackboard and Arc0, answered.

Q01

Can I use Blackboard with Claude, ChatGPT or Cursor?

Yes. Connect Blackboard to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the Blackboard actions you allow.

Q02

How do users connect Blackboard?

Users sign in to Blackboard on Arc0 Connect and approve the scopes you request. Build with Arc0’s Blackboard OAuth app, or bring your own so the Blackboard consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

Q03

Which Blackboard actions can my agent take?

314 in total: 149 read, 120 write and 45 destructive, such as “create institutional hierarchy node”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in Blackboard?

Yes. Actions like “delete institutional hierarchy node by nodeid” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call Blackboard too?

Yes. The same Blackboard connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug Blackboard into your agent.

Your users connect Blackboard once, under your brand. Your agent gets 314 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan