Canvas for AI agents
Canvas is a learning management system for online courses, assignments, and grading, used by schools and universities to run virtual classrooms. 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.
What agents do in Canvas.
Create a new assignment
Create a new assignment in a course, with its due date and grading rules attached.
Check a student's enrollment
Look up a student's enrollment status in a course before making a grading decision.
Confirm before removing an enrollment
Confirm before concluding or deleting a student's enrollment, since their grade history goes with it.
574 Canvas actions, graded by risk.
Every Canvas action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.
read
317Look things up. Allowed by default.
- canvas.get_fileGet file
- canvas.get_nodeGet node by ID
- canvas.get_groupGet a group
- canvas.get_courseGet course
- canvas.get_folderGet folder
- canvas.get_rubricGet rubric
- canvas.list_filesList Files
- canvas.list_pollsList polls for current user
- canvas.list_rolesList Roles
- canvas.get_bookmarkGet Bookmark
- canvas.list_coursesList courses
- canvas.list_foldersList folders
- canvas.list_modulesList Modules
- canvas.get_all_usersGet all users
- canvas.get_user_fileGet user file
- canvas.list_licensesList Licenses
write
203Create and change things. Allow, or ask the user first.
- canvas.create_quizCreate Quiz
- canvas.update_fileUpdate file
- canvas.create_filesCreate Files
- canvas.create_groupCreate a group
- canvas.create_courseCreate a course
- canvas.create_folderCreate folder
- canvas.create_moduleCreate Module
- canvas.create_rubricCreate Rubric
- canvas.update_courseUpdate course
- canvas.update_folderUpdate Folder
- canvas.create_bookmarkCreate Bookmark
- canvas.update_an_entryUpdate an entry
- canvas.update_bookmarkUpdate Bookmark
- canvas.create_group_setCreate a group set
- canvas.create_assignmentCreate an assignment
- canvas.create_enrollmentCreate enrollment
destructive
54Delete, cancel or archive. Ask first, or deny outright.
- canvas.delete_fileDelete file
- canvas.delete_pollDelete poll
- canvas.delete_quizDelete quiz
- canvas.delete_groupDelete a group
- canvas.delete_folderDelete a folder
- canvas.delete_an_entryDelete a discussion entry
- canvas.delete_bookmarkDelete bookmark
- canvas.delete_a_messageDelete messages from conversation
- canvas.delete_an_entry2Delete a group discussion entry
- canvas.delete_assignmentDelete an assignment
- canvas.delete_custom_dataDelete custom data
- canvas.delete_poll_choiceDelete a poll choice
- canvas.delete_access_tokenDelete an access token
- canvas.delete_planner_noteDelete a planner note
- canvas.delete_poll_sessionDelete a poll session
- canvas.delete_blackout_dateDelete blackout date
Canvas in three steps.
- 01Your users connect CanvasThey sign in to Canvas on Arc0 Connect, under your brand, and approve the access you ask for.
- 02You set the rulesReads run, writes like “create Quiz” can wait for the user, and “delete file” can be denied outright.
- 03Any agent can actYour agent calls Canvas through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
await arc0.policies.set('canvas', { read: 'allow', write: 'ask', // create_quiz destructive: 'deny', // delete_file }) # Claude Code: the same connection, one URL $ claude mcp add --transport http arc0 \ https://mcp.arc0.ai/u/u_8f2
How Canvas connects.
Users sign in to Canvas on Arc0 Connect and approve the scopes you request. Build with Arc0’s Canvas OAuth app, or bring your own so the Canvas consent screen names you. Tokens refresh automatically, and you can export them whenever you want.
The same Canvas 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
- API key · OAuth 2.0
- CREDENTIALS
- Per-tenant encrypted vault
- MODEL SEES
- Results only, never credentials
- AUDIT LOG
- Every call, on every plan
Use Canvas from any agent.
Canvas and Arc0, answered.
Can I use Canvas with Claude, ChatGPT or Cursor?
Yes. Connect Canvas 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 Canvas actions you allow.
How do users connect Canvas?
Users sign in to Canvas on Arc0 Connect and approve the scopes you request. Build with Arc0’s Canvas OAuth app, or bring your own so the Canvas consent screen names you. Tokens refresh automatically, and you can export them whenever you want.
Which Canvas actions can my agent take?
574 in total: 317 read, 203 write and 54 destructive, such as “create Quiz”. Your policies decide which of them each agent may call.
Can I stop my agent from deleting things in Canvas?
Yes. Actions like “delete file” 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.
Can my own backend call Canvas too?
Yes. The same Canvas connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.
Plug Canvas into your agent.
Your users connect Canvas once, under your brand. Your agent gets 574 actions behind your policies, with every call on the record.
Free to build · MCP + REST · Audit log on every plan