Documentation Index
Fetch the complete documentation index at: https://docs.deandesk.com/llms.txt
Use this file to discover all available pages before exploring further.
Institution-level integration - the MCP server is hosted by DeanDesk and authorized per institution. Once connected, the tools exposed to your AI client can read and write data across the institution and any selected school, subject to the scopes and roles you grant.
How authorization works
The MCP server uses OAuth 2.1 with PKCE and supports dynamic client registration. When you add DeanDesk to an MCP client, the client opens a DeanDesk authorization page in your browser. You sign in with an institution Identity, review the requested scopes, choose a school context when school tools are needed, and approve the client. The tools that appear in your AI client depend on four things:- The scopes you approve
- Your institution role
- Your school role, when a selected school is required
- The environment, because some migration tools are sandbox-only
offline_access, so long-running clients can stay connected without asking you to sign in again.
How to set it up
Use the MCP endpoint provided by DeanDesk support or your institution administrator. For hosted DeanDesk environments, the endpoint is usually:Add DeanDesk as a remote MCP server
In your MCP client’s settings, create a new server named
DeanDesk and enter the DeanDesk MCP endpoint. Some clients call this a remote server URL, connector URL, or streamable HTTP endpoint.Authorize the client
The client opens a browser window to DeanDesk. Sign in with your institution Identity, review the requested scopes, and approve only the access the client needs.
Select a school when needed
School-level tools require a selected school context. Choose the school during authorization when you want the client to manage school users, courses, course materials, curricula, rosters, products, assignments, surveys, pages, email drafts, or school settings.
Available scopes
Scopes control which tools the AI client can call.| Scope | What it grants |
|---|---|
institution:read | Read institution profile, subscription, branding, and school list |
institution:write | Reserved for institution-level write operations |
membership:read | Read institution membership plans, memberships, and pending imports |
membership:write | Create, update, import, link, or sync institution memberships |
school:read | Read the selected school’s profile and basic setup |
school.settings:read | Read selected school settings, onboarding policies, metadata fields, and custom pages |
school.settings:write | Update selected school settings, onboarding policies, metadata fields, and custom pages |
students:read | Read selected school users, rosters, and roster candidates |
students:write | Import users and add or remove roster students |
courses:read | Read courses, course materials, curricula, course sidebar visibility, and course bulk-edit data |
courses:write | Import, create, or update courses, course sidebar visibility, course materials, and curricula |
assignments:read | Read assignments, quizzes, surveys, submissions, and analytics |
assignments:write | Create or update assignments, quizzes, and surveys, and draft quizzes for chat review |
communications:write | Draft school emails for review and sending |
products:read | Read products, prices, checkout settings, and product details |
products:write | Create, import, update, or add prices to products |
files:read | List school file-library records, read metadata, and create temporary view links |
files:write | Upload files, update file metadata, or delete file-library records |
migration:read | Read migration workspaces |
migration:write | Create or update sandbox migration workspaces |
memory:read | Browse and read institution or school Shared Drive files |
memory:write | Create, overwrite, organize, or delete Shared Drive files and folders |
offline_access | Issue refresh tokens so the client can stay connected without re-authentication |
Available tools
Your client only sees tools allowed by your approved scopes, role, selected school, and environment.Institution and memberships
| Tool | Scope | What it does |
|---|---|---|
get_institution_info | institution:read | Shows institution context, branding, subscription state, and selected school context. |
list_institution_schools | institution:read | Lists schools in the institution and shows whether the token can act on them. |
list_membership_plans | membership:read | Lists institution membership plans and term settings. |
list_institution_memberships | membership:read | Lists memberships with filters for status, tier type, payment source, and pagination. |
get_institution_membership | membership:read | Reads one membership record with editable details and metadata. |
update_institution_membership | membership:write | Updates membership status, contact details, manual dates, payment source, notes, and metadata. |
create_manual_membership | membership:write | Creates a manual membership or queues it when the identity does not exist yet. |
bulk_import_memberships | membership:write | Imports manual memberships in bulk and queues unknown identities for follow-up. |
list_pending_membership_imports | membership:read | Lists pending membership imports that still need identity linking or sync resolution. |
link_pending_membership_import | membership:write | Links a pending import record to an identity and creates or reuses the membership. |
sync_pending_membership_imports | membership:write | Runs a sync pass over pending membership imports. |
Migration
| Tool | Scope | What it does |
|---|---|---|
list_migration_workspaces | migration:read | Lists migration workspaces for the institution. |
create_migration_workspace | migration:write | Creates a sandbox migration workspace for an institution or selected school. Sandbox only. |
update_migration_workspace | migration:write | Updates migration staging data, mappings, validation summaries, or status. Sandbox only. |
Shared Drive and documentation
| Tool | Scope | What it does |
|---|---|---|
list_shared_drive_directory | memory:read | Browses institution or school Shared Drive folders and files. |
read_shared_drive_file | memory:read | Reads a Shared Drive file by ID and returns text when available plus a signed download URL. |
write_shared_drive_file | memory:write | Creates or overwrites a text file in the Shared Drive. |
create_shared_drive_folder | memory:write | Creates a Shared Drive folder, including intermediate folders when needed. |
delete_shared_drive_entry | memory:write | Deletes a Shared Drive file or folder. Root institution and school folders cannot be deleted. |
list_docs | No scope required | Lists DeanDesk documentation pages from the configured docs repository. |
read_doc | No scope required | Reads one documentation page by slug, such as finance/stripe. |
search_docs | No scope required | Searches documentation titles, slugs, and content. |
School users, courses, materials, curricula, and rosters
| Tool | Scope | What it does |
|---|---|---|
get_school_info | school:read | Reads the selected school’s profile, hostname, timezone, subscription plan, and registration policies. |
list_users | students:read | Lists selected school users, with optional role and search filters. |
import_users | students:write | Bulk-imports regular user accounts or child student accounts with parent linking and welcome email content. |
list_courses | courses:read | Lists all selected school courses with instructor, assistant, and term details. |
import_courses | courses:write | Bulk-imports courses, including instructors, assistants, terms, schedules, capacity, and tags. |
get_course_bulk_edit_data | courses:read | Loads the course spreadsheet dataset and valid edit options. |
bulk_edit_courses | courses:write | Bulk creates or updates courses using the same spreadsheet save flow as the web app. |
update_course_sidebar_visibility | courses:write | Shows or hides course sidebar items such as curriculum, assignments, materials, surveys, students, attendance, and gradebook. |
upload_course_image | courses:write | Uploads or replaces a course image from base64-encoded JPEG, PNG, or WebP bytes. |
get_course_image | courses:read | Returns a temporary signed URL for a course image. |
delete_course_image | courses:write | Deletes a course image. |
list_course_materials | courses:read | Lists course materials grouped by course-wide and section-specific groups. |
get_course_material | courses:read | Reads one course material with content and attached file metadata. |
create_course_material | courses:write | Creates one text material or one file material that uses an existing DeanDesk file. |
upload_course_material_file | courses:write | Uploads a small base64-encoded file and creates a file material for a course. |
create_course_material_with_upload | courses:write | Uploads a file from a URL or enabled server-local path and creates a file material for a course in one call. |
update_course_material | courses:write | Updates a course material title, sections, content, file, order, publication state, or availability date. |
delete_course_material | courses:write | Deletes a course material record. The uploaded file record is not deleted automatically. |
reorder_course_materials | courses:write | Replaces the material order for a course. |
preview_youtube_playlist | courses:read | Resolves a YouTube playlist and shows the public videos that would be imported. |
import_youtube_playlist_materials | courses:write | Imports a YouTube playlist as one text material per public video. |
get_course_curriculum | courses:read | Reads the complete course curriculum with units, modules, material references, and assessment references. |
replace_course_curriculum | courses:write | Replaces the entire course curriculum structure. |
create_curriculum_unit | courses:write | Creates a curriculum unit. |
bulk_create_curriculum_units | courses:write | Creates multiple curriculum units in one tool call. |
update_curriculum_unit | courses:write | Updates a curriculum unit. |
delete_curriculum_unit | courses:write | Deletes a curriculum unit and its nested curriculum content. |
reorder_curriculum_units | courses:write | Reorders curriculum units. |
create_curriculum_module | courses:write | Creates a curriculum module inside a unit. |
bulk_create_curriculum_modules | courses:write | Creates multiple curriculum modules or lessons in one tool call. |
update_curriculum_module | courses:write | Updates a curriculum module. |
delete_curriculum_module | courses:write | Deletes a curriculum module from a unit. |
reorder_curriculum_modules | courses:write | Reorders modules within a unit. |
add_curriculum_material | courses:write | Adds an existing course material reference to a unit or module. |
bulk_add_curriculum_materials | courses:write | Adds multiple existing course material references to units or modules in one tool call. |
update_curriculum_material | courses:write | Updates a curriculum material reference, such as order or required status. |
remove_curriculum_material | courses:write | Removes a material reference from the curriculum without deleting the underlying material. |
reorder_curriculum_materials | courses:write | Reorders material references within a unit or module. |
add_curriculum_assessment | courses:write | Adds an existing assignment as an assessment reference in a unit or module. |
bulk_add_curriculum_assessments | courses:write | Adds multiple existing assignments or quizzes as curriculum assessment references in one tool call. |
update_curriculum_assessment | courses:write | Updates a curriculum assessment reference, such as order or required status. |
remove_curriculum_assessment | courses:write | Removes an assessment reference from the curriculum without deleting the assignment. |
reorder_curriculum_assessments | courses:write | Reorders assessment references within a unit or module. |
move_curriculum_item | courses:write | Moves a module, material reference, or assessment reference to another curriculum parent. |
bulk_move_curriculum_items | courses:write | Moves multiple modules, material references, or assessment references in one tool call. |
duplicate_curriculum_item | courses:write | Duplicates a curriculum unit or module with nested curriculum references. |
list_rosters | students:read | Lists rosters so the client can find roster IDs. |
get_roster | students:read | Reads one roster, including associated courses and current students. |
list_roster_student_candidates | students:read | Finds students that can be added to a roster using roster panel filters. |
bulk_add_roster_students | students:write | Adds existing students to a roster by student ID. |
bulk_remove_roster_students | students:write | Removes students from a roster by student ID. |
File library
| Tool | Scope | What it does |
|---|---|---|
upload_file | files:write | Uploads a base64-encoded file into the selected school’s file library and returns its file ID. |
list_files | files:read | Lists file-library records with optional filename, author, MIME type, tag, category, date, size, and full-text filters. |
get_file_metadata | files:read | Reads metadata for one file-library record. |
get_file_view_link | files:read | Creates a temporary signed URL for viewing a file. |
update_file_metadata | files:write | Updates editable file metadata such as filename, author, tags, and categories. |
delete_file | files:write | Deletes one file-library record and its stored file object. Admin role required. |
School settings and pages
| Tool | Scope | What it does |
|---|---|---|
get_school_config | school.settings:read | Reads branding, display settings, navigation visibility, homepage settings, timezone, and address. |
update_school_config | school.settings:write | Updates selected school configuration fields while leaving omitted fields unchanged. |
get_onboarding_policies | school.settings:read | Reads registration, onboarding, parent-child enrollment, application fee, and admissions workflow settings. |
update_onboarding_policies | school.settings:write | Updates onboarding and registration policies. Fee amounts are provided in cents. |
get_metadata_schema | school.settings:read | Reads custom user metadata field definitions. |
add_metadata_field | school.settings:write | Adds a custom user metadata field. |
remove_metadata_field | school.settings:write | Removes a custom user metadata field definition. Existing profile data is not automatically removed. |
list_pages | school.settings:read | Lists custom school pages with metadata, editor paths, and preview paths. |
read_page | school.settings:read | Reads a custom page with full HTML, CSS, blocks, typography, and attributes. |
update_page | school.settings:write | Updates an existing custom page by page ID. |
draft_page | school.settings:write | Creates or replaces a custom HTML/CSS page draft for review and publishing. |
get_page_manager_settings | school.settings:read | Reads Page Manager state: header links, footer links, home page selection, global page theme, and published page candidates. |
update_header_links | school.settings:write | Replaces public header navigation links, including nested dropdowns. |
update_footer_links | school.settings:write | Replaces public footer links and optionally updates footer copyright text. |
configure_home_page | school.settings:write | Sets the public home page to the default, programs landing page, or a published custom page. |
get_global_page_theme | school.settings:read | Reads the global custom page CSS, uploaded global page fonts, and typography selections. |
update_global_page_theme | school.settings:write | Updates global custom page CSS and typography selections using existing uploaded font IDs. |
upload_global_page_theme_font | school.settings:write | Uploads a base64-encoded WOFF2, WOFF, TTF, or OTF font into the global page theme. |
delete_global_page_theme_font | school.settings:write | Deletes an uploaded global page theme font and clears any typography selection that used it. |
Products, discounts, communications, assignments, and surveys
| Tool | Scope | What it does |
|---|---|---|
list_products | products:read | Lists products with IDs, slugs, public URLs, type, status, prices, tuition settings, and course or program associations. |
get_product_details | products:read | Reads a complete single-product view by database ID or URL slug. |
import_products | products:write | Bulk-imports products and creates Stripe products and prices automatically. Price amounts are provided in cents. |
create_product | products:write | Creates one product with full control over product fields. Add prices separately with add_product_price. |
add_product_price | products:write | Adds a new price to an existing product. Unit amount is provided in dollars. |
update_product | products:write | Updates product fields such as name, description, type, tags, images, metadata, and associations. |
list_product_membership_plans | products:read | Lists active membership plan IDs available for members-only tuition product restrictions. |
bulk_update_products | products:write | Updates product-page bulk edit fields for multiple existing products. |
update_product_price | products:write | Updates editable price details such as nickname, billing start mode, active status, and metadata. |
archive_product_price | products:write | Archives/deactivates an existing product price. |
archive_product | products:write | Archives/deactivates a product and its prices, with optional subscription handling. |
reactivate_product | products:write | Reactivates an archived product and can optionally reactivate its prices. |
list_product_donations | products:read | Lists recent donations for a donation product with pagination. |
list_discounts | products:read | Lists discounts with IDs, active status, application type, amount, code/rule/sibling/bundle summary, subscription duration, and usage counts. |
get_discount | products:read | Reads one discount’s full configuration, including rules, product/price scope, usage constraints, subscription duration, and metadata. |
get_discount_rule_fields | products:read | Lists user, identity, and derived fields available for rule-based discount conditions. |
create_discount | products:write | Creates code, rule-based, sibling, or bundle discounts with product/price scope and usage constraints. |
update_discount | products:write | Updates an existing discount. Product and price arrays replace the existing scope when provided. |
delete_discount | products:write | Permanently deletes a discount after confirmation. |
validate_discount_code | products:read | Validates a manual discount code for a user and optional product or price. |
check_discount_eligibility | products:read | Checks active rule-based discounts a user qualifies for, optionally scoped to a product or price. |
check_user_discount | products:read | Checks whether a user qualifies for one specific discount and returns the reason. |
calculate_discount | products:read | Calculates the discount amount and final price for a specific discount and price. |
draft_email | communications:write | Drafts an email for admin review, including subject, HTML body, and audience selection. |
list_assignments | assignments:read | Lists assignments for a course with type, due date, points, and submission counts. |
create_assignment | assignments:write | Creates a standard non-quiz assignment for a course and notifies enrolled students. |
update_assignment | assignments:write | Updates an existing standard assignment. |
create_quiz_assignment | assignments:write | Creates and saves a quiz assignment directly, including questions, options, correct answers, quiz settings, and optional multiple submissions. |
bulk_create_quiz_assignments | assignments:write | Creates multiple quiz assignments in one tool call and can place each quiz into a curriculum unit or module. |
update_quiz_assignment | assignments:write | Updates an existing quiz assignment directly, including multiple-submission settings, and recalculates total points when questions change. |
draft_quiz | assignments:write | Prepares quiz data for the DeanDesk chat interactive editor; non-chat MCP clients should use the direct quiz tools. |
get_assignment_submissions | assignments:read | Reads staff-facing assignment or quiz submissions with class performance, question analytics, and per-student attempt history. |
list_surveys | assignments:read | Lists course surveys with due dates, question counts, anonymous-response setting, and multiple-submission setting. |
get_survey | assignments:read | Reads one survey and its questions; teachers and admins also receive staff-facing analytics when available. |
create_survey | assignments:write | Creates a course survey with multiple choice, rating, or short-answer questions and no grades or correct answers. |
update_survey | assignments:write | Updates survey metadata, questions, Keep Responses Anonymous, due date, section, or multiple-submission settings. |
get_survey_analytics | assignments:read | Reads survey submissions and analytics, including class aggregates, rating distributions, answer summaries, and per-user timelines. |
Best practices
- Grant the minimum scopes needed for the task.
- Use a dedicated client name for each MCP client so you can revoke clients independently.
- Review write actions in your institution audit history.
- Read existing records before asking the client to update or delete them.