headless lms

Tools

Every tool an assistant can use, the scope it needs and the input it takes.

Each tool is one call to a domain service, with the same validation and errors as the REST API. Lists that take page and pageSize are paginated. Ids come from the matching list tool, such as list_courses or list_spaces.

Pick a role and a set of scopes to see exactly which tools that connection gets. Reads never change anything. Changes create, update, reorder or publish. Removes deletes, revokes or takes something down, so your assistant should ask before running one.

Signed in as
Scopes granted

All 87 tools

ReadsChangesRemoves

Courses

  • list_courses

    Search and page through the courses, each with its status and settings. Filter by status or category.

    Readscourses:read
    Show inputs (6)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"draft" | "published"Optional.
    categorystringOptional.
  • list_modules

    The modules of a course, in order.

    Readscourses:read
    Show inputs (1)
    FieldTypeNotes
    courseIdstringRequired.
  • create_course

    Create a draft course. Publish it with update_course.

    Changescourses:write
    Show inputs (3)
    FieldTypeNotes
    titlestringRequired.
    descriptionstringOptional.
    categorystringOptional.
  • update_course

    Change a course title, description, category or cover image, or publish and unpublish it with status. Fields left out stay as they are.

    Changescourses:write
    Show inputs (6)
    FieldTypeNotes
    courseIdstringRequired.
    titlestringOptional.
    descriptionstringOptional.
    categorystringOptional.
    status"draft" | "published"Optional.
    thumbnailAssetIdstring | nullOptional.
  • update_course_settings

    Change course settings such as transcript downloads and comments. Settings left out stay as they are.

    Changescourses:write
    Show inputs (3)
    FieldTypeNotes
    courseIdstringRequired.
    transcriptDownloadsbooleanOptional.
    commentsobjectOptional.
  • create_module

    Add a module at the end of a course. Returns the course modules in order.

    Changescourses:write
    Show inputs (2)
    FieldTypeNotes
    titlestringRequired.
    courseIdstringRequired.
  • rename_module

    Rename a module. Returns the course modules in order.

    Changescourses:write
    Show inputs (3)
    FieldTypeNotes
    titlestringRequired.
    courseIdstringRequired.
    moduleIdstringRequired.
  • reorder_modules

    Set the module order of a course. Pass every module id of the course in the new order.

    Changescourses:write
    Show inputs (2)
    FieldTypeNotes
    orderedIdsstring[]Required. Every id in the collection, in the new order
    courseIdstringRequired.
  • delete_course

    Permanently delete a course with its modules and activities.

    Removescourses:delete
    Show inputs (1)
    FieldTypeNotes
    courseIdstringRequired.
  • delete_module

    Permanently delete a module with its activities. Returns the remaining modules in order.

    Removescourses:delete
    Show inputs (2)
    FieldTypeNotes
    courseIdstringRequired.
    moduleIdstringRequired.

Downloads

  • list_downloads

    Search and page through downloads: file collections a student can be granted. Filter by status or category.

    Readsdownloads:read
    Show inputs (6)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"draft" | "published"Optional.
    categorystringOptional.
  • list_download_files

    The files of a download, in order, with their display names.

    Readsdownloads:read
    Show inputs (1)
    FieldTypeNotes
    downloadIdstringRequired.
  • create_download

    Create a draft download. Add files with add_download_file and publish it with update_download.

    Changesdownloads:write
    Show inputs (3)
    FieldTypeNotes
    titlestringRequired.
    descriptionstringOptional.
    categorystringOptional.
  • update_download

    Change a download title, description, category or cover image, or publish and unpublish it with status. Fields left out stay as they are.

    Changesdownloads:write
    Show inputs (6)
    FieldTypeNotes
    downloadIdstringRequired.
    titlestringOptional.
    descriptionstringOptional.
    categorystringOptional.
    status"draft" | "published"Optional.
    thumbnailAssetIdstring | nullOptional.
  • add_download_file

    Add an uploaded file to the end of a download. Find file ids with list_media.

    Changesdownloads:write
    Show inputs (3)
    FieldTypeNotes
    assetIdstringRequired.
    downloadIdstringRequired.
    displayNamestringOptional.
  • rename_download_file

    Set the name a file shows under in a download. null shows the file name.

    Changesdownloads:write
    Show inputs (3)
    FieldTypeNotes
    displayNamestring | nullRequired.
    downloadIdstringRequired.
    assetIdstringRequired.
  • reorder_download_files

    Set the file order of a download. Pass every file id of the download in the new order.

    Changesdownloads:write
    Show inputs (2)
    FieldTypeNotes
    assetIdsstring[]Required.
    downloadIdstringRequired.
  • remove_download_file

    Take a file out of a download. The uploaded file itself is kept.

    Removesdownloads:write
    Show inputs (2)
    FieldTypeNotes
    downloadIdstringRequired.
    assetIdstringRequired.
  • delete_download

    Permanently delete a download. The uploaded files are kept.

    Removesdownloads:delete
    Show inputs (1)
    FieldTypeNotes
    downloadIdstringRequired.

Bundles

  • list_bundles

    Search and page through bundles: sets of courses, downloads and communities granted together.

    Readsbundles:read
    Show inputs (4)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
  • list_bundle_items

    The courses, downloads and communities in a bundle.

    Readsbundles:read
    Show inputs (1)
    FieldTypeNotes
    bundleIdstringRequired.
  • create_bundle

    Create a bundle, optionally with the course, download and community ids it starts with.

    Changesbundles:write
    Show inputs (2)
    FieldTypeNotes
    namestringRequired.
    contentIdsstring[]Optional.
  • rename_bundle

    Rename a bundle.

    Changesbundles:write
    Show inputs (2)
    FieldTypeNotes
    bundleIdstringRequired.
    namestringOptional.
  • add_bundle_item

    Add a course, download or community to a bundle. Returns the bundle items.

    Changesbundles:write
    Show inputs (2)
    FieldTypeNotes
    contentIdstringRequired.
    bundleIdstringRequired.
  • remove_bundle_item

    Take a course, download or community out of a bundle. Returns the remaining items.

    Removesbundles:write
    Show inputs (2)
    FieldTypeNotes
    bundleIdstringRequired.
    contentIdstringRequired.
  • delete_bundle

    Permanently delete a bundle. Its courses, downloads and communities are kept.

    Removesbundles:delete
    Show inputs (1)
    FieldTypeNotes
    bundleIdstringRequired.

Media

  • list_media

    Search and page through uploaded files, to use in downloads or as cover images of courses, downloads and communities. Uploading is done in the admin app.

    Readsmedia:read
    Show inputs (6)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    kind"image" | "video" | "audio" | "document"Optional. The media class, derived by the server from the content type.
    source"library" | "member"Optional. Defaults to `library`.

Students

  • list_students

    Search and page through the students with their access count, average progress, status and last activity.

    Readsstudents:read
    Show inputs (4)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
  • invite_student

    Invite someone by email as a student. They exist as an invited student at once. sendEmail false skips the email.

    Changesstudents:invite
    Reaches outside the LMS: sends email or runs workflow actions
    Show inputs (4)
    FieldTypeNotes
    emailstringRequired.
    firstNamestringOptional.
    lastNamestringOptional.
    sendEmailbooleanOptional.
  • resend_student_invite

    Send a pending student's invite email again.

    Changesstudents:invite
    Reaches outside the LMS: sends email or runs workflow actions
    Show inputs (1)
    FieldTypeNotes
    idstringRequired.

Access

  • list_access

    Who has access to what. Filter by student (orgUserId), content, type or status.

    Readsaccess:read
    Show inputs (9)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"active" | "expired" | "revoked"Optional.
    sourcestringOptional.
    orgUserIdstringOptional.
    contentIdstringOptional.
    type"course" | "download"Optional.
  • grant_access

    Give a student access to one course, download or community (contentId) or to a bundle (bundleId), never both. expiresAt is a date-time, or null for no expiry.

    Changesaccess:write
    Show inputs (4)
    FieldTypeNotes
    orgUserIdstringRequired.
    expiresAtdate-time | nullRequired. When access ends; null never expires
    contentIdstring | nullOptional.
    bundleIdstring | nullOptional.
  • set_access_status

    Revoke an access grant, or reinstate a revoked one.

    Removesaccess:write
    Show inputs (2)
    FieldTypeNotes
    status"active" | "revoked"Required.
    idstringRequired.

Analytics

  • get_dashboard

    Published and draft course counts, active students, and access grants expiring soon.

    Readsanalytics:read
  • get_enrollment_trend

    Daily enrollments across the organization for the last days (default 30, at most 365).

    Readsanalytics:read
    Show inputs (1)
    FieldTypeNotes
    daysintegerOptional.
  • get_course_analytics

    Enrolled, started and completed counts, average progress and per-activity engagement for one course.

    Readsanalytics:read
    Show inputs (1)
    FieldTypeNotes
    courseIdstringRequired.
  • get_course_enrollment_trend

    Daily enrollments in one course for the last days (default 30, at most 365).

    Readsanalytics:read
    Show inputs (2)
    FieldTypeNotes
    courseIdstringRequired.
    daysintegerOptional.
  • get_student_analytics

    One student's enrolled, started and completed counts, average progress and progress in each course.

    Readsanalytics:read
    Show inputs (1)
    FieldTypeNotes
    idstringRequired.
  • get_community_analytics

    Membership, activity and moderation counts for one community.

    Readsanalytics:read
    Show inputs (1)
    FieldTypeNotes
    communityIdstringRequired.

Workflows and webhooks

  • list_automation_triggers

    The events that can start a workflow.

    Readsautomations:read
  • list_automation_actions

    The actions a workflow can run, with the settings each one takes.

    Readsautomations:read
  • list_automations

    Workflows and webhooks with their triggers, ordered actions and enabled state. Filter by kind (workflow or webhook).

    Readsautomations:read
    Show inputs (1)
    FieldTypeNotes
    kind"workflow" | "webhook"Optional.
  • list_automation_runs

    Runs of one workflow or webhook, newest first, with the trigger event as a webhook would receive it and each action result.

    Readsautomations:read
    Show inputs (6)
    FieldTypeNotes
    idstringRequired.
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"running" | "completed" | "failed"Optional.
  • create_automation

    Create a workflow from triggers and ordered actions. Use list_automation_triggers and list_automation_actions for valid values.

    Changesautomations:write
    Show inputs (5)
    FieldTypeNotes
    namestringRequired.
    triggersstring[]Required.
    actionsobject[]Required.
    descriptionstringOptional.
    filterobject | nullOptional.
  • update_automation

    Change a workflow name, description, triggers or actions, or turn it on and off with enabled. Fields left out stay as they are.

    Changesautomations:write
    Show inputs (7)
    FieldTypeNotes
    idstringRequired.
    namestringOptional.
    descriptionstringOptional.
    triggersstring[]Optional.
    actionsobject[]Optional.
    filterobject | nullOptional.
    enabledbooleanOptional.
  • rerun_automation_run

    Run a finished workflow or webhook run again with its original trigger event, using the automation's current actions. Emails and webhook deliveries are sent again. The new outcome replaces the run's previous one. A run still in progress can't be re-run.

    Changesautomations:write
    Reaches outside the LMS: sends email or runs workflow actions
    Show inputs (2)
    FieldTypeNotes
    idstringRequired.
    runIdstringRequired.
  • delete_automation

    Permanently delete a workflow.

    Removesautomations:delete
    Show inputs (1)
    FieldTypeNotes
    idstringRequired.
  • update_webhook

    Change a webhook URL, events or description, or turn it on and off with enabled. Fields left out stay as they are.

    Changesautomations:write
    Show inputs (5)
    FieldTypeNotes
    idstringRequired.
    urlstringOptional.
    eventsstring[]Optional.
    descriptionstringOptional.
    enabledbooleanOptional.
  • delete_webhook

    Permanently delete a webhook and its signing secret. Its delivery history is kept.

    Removesautomations:delete
    Show inputs (1)
    FieldTypeNotes
    idstringRequired.

Comments

  • list_comments

    The comment moderation queue. Filter by status, reported, course, activity or author. Each comment carries its activityId and parentId.

    Readscomments:read
    Show inputs (9)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"pending" | "published" | "removed"Optional.
    reportedstringOptional.
    courseIdstringOptional.
    activityIdstringOptional.
    orgUserIdstringOptional.
  • publish_comment

    Publish a comment: approves one waiting for review, or restores a removed one.

    Changescomments:moderate
    Show inputs (1)
    FieldTypeNotes
    commentIdstringRequired.
  • dismiss_comment_reports

    Mark the reports on a comment as resolved. The comment's status does not change.

    Changescomments:moderate
    Show inputs (1)
    FieldTypeNotes
    commentIdstringRequired.
  • reply_to_comment

    Reply to a published top-level comment as yourself. Pass its activityId and its id. To answer a reply, reply to its parentId.

    Changescomments:moderate
    Show inputs (3)
    FieldTypeNotes
    bodystringRequired.
    commentIdstringRequired.
    activityIdstringRequired.
  • remove_comment

    Take a comment down.

    Removescomments:moderate
    Show inputs (1)
    FieldTypeNotes
    commentIdstringRequired.

Communities

  • list_communities

    Search and page through the communities, drafts included, each with its status and direct-message settings. Filter by status, search by title.

    Readscommunities:read
    Show inputs (5)
    FieldTypeNotes
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
    sortstringOptional.
    status"draft" | "published"Optional.
  • list_spaces

    The spaces of a community, in order, each with its access rule, topics and links.

    Readscommunities:read
    Show inputs (1)
    FieldTypeNotes
    communityIdstringRequired.
  • create_community

    Create a draft community with the default direct-message settings and no spaces. Add spaces with create_space and publish it with update_community.

    Changescommunities:write
    Show inputs (2)
    FieldTypeNotes
    titlestringRequired.
    descriptionstringOptional.
  • update_community

    Change a community title, description or cover image, or publish and unpublish it with status. The cover must be a ready image from list_media; null clears it. Fields left out stay as they are.

    Changescommunities:write
    Show inputs (5)
    FieldTypeNotes
    communityIdstringRequired.
    titlestringOptional.
    descriptionstringOptional.
    status"draft" | "published"Optional.
    thumbnailAssetIdstring | nullOptional.
  • update_community_messaging

    Change the direct-message settings of a community: who may message whom from now on. Settings left out stay as they are.

    Changescommunities:write
    Show inputs (8)
    FieldTypeNotes
    communityIdstringRequired.
    enabledbooleanOptional.
    memberToMemberbooleanOptional.
    memberToStaffbooleanOptional.
    staffToAnyonebooleanOptional.
    firstMessageIsRequestbooleanOptional.
    groupChatsbooleanOptional.
    groupSizeintegerOptional. The most people a group chat may hold, its creator included
  • create_space

    Add a space at the end of a community. Its access rule decides who can open it: all members, by request or by invite. A space open to all members cannot have a capacity.

    Changescommunities:write
    Show inputs (6)
    FieldTypeNotes
    namestringRequired.
    communityIdstringRequired.
    descriptionstringOptional.
    accessRule"all_members" | "by_request" | "by_invite"Optional.
    capacityinteger | nullOptional.
    settingsobjectOptional.
  • update_space

    Change a space name, description, access rule, capacity or settings. settings merges into the current settings. Fields left out stay as they are.

    Changescommunities:write
    Show inputs (7)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
    namestringOptional.
    descriptionstringOptional.
    accessRule"all_members" | "by_request" | "by_invite"Optional.
    capacityinteger | nullOptional.
    settingsobjectOptional.
  • reorder_spaces

    Set the space order of a community. Pass every space id of the community in the new order.

    Changescommunities:write
    Show inputs (2)
    FieldTypeNotes
    idsstring[]Required. Every id in the collection, once each, in the new order
    communityIdstringRequired.
  • set_space_topics

    Replace the topics of a space. An entry with an id keeps and renames that topic, one without adds a topic, and a topic left out is deleted. A topic that posts use cannot be deleted.

    Changescommunities:write
    Show inputs (3)
    FieldTypeNotes
    topicsobject[]Required. The complete list, in order. A topic left out is deleted
    communityIdstringRequired.
    spaceIdstringRequired.
  • delete_space

    Permanently delete a space with its posts, comments and members.

    Removescommunities:delete
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
  • delete_community

    Permanently delete a community with its spaces. Links to it from other spaces are removed.

    Removescommunities:delete
    Show inputs (1)
    FieldTypeNotes
    communityIdstringRequired.

Community members

  • list_community_members

    Page through everyone with active access to a community, granted directly or through a bundle. Search by name or email.

    Readscommunity_members:read
    Show inputs (4)
    FieldTypeNotes
    communityIdstringRequired.
    pageintegerOptional.
    pageSizeintegerOptional.
    searchstringOptional.
  • list_space_members

    Page through a space's members, its open requests to join and its open invitations.

    Readscommunity_members:read
    Show inputs (4)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
    pageintegerOptional.
    pageSizeintegerOptional.
  • add_space_member

    Place a member of the community straight into a space, with no request or invitation. Not for a space open to all members, or one that is full.

    Changescommunity_members:write
    Show inputs (3)
    FieldTypeNotes
    orgUserIdstringRequired.
    communityIdstringRequired.
    spaceIdstringRequired.
  • invite_space_member

    Invite a member of the community into an invite-only space. They are notified and join when they accept.

    Changescommunity_members:write
    Reaches outside the LMS: sends email or runs workflow actions
    Show inputs (3)
    FieldTypeNotes
    orgUserIdstringRequired.
    communityIdstringRequired.
    spaceIdstringRequired.
  • approve_space_request

    Approve a person's request to join a space. Not when the space is full.

    Changescommunity_members:write
    Show inputs (3)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
    orgUserIdstringRequired.
  • decline_space_request

    Decline a person's request to join a space.

    Changescommunity_members:write
    Show inputs (3)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
    orgUserIdstringRequired.
  • remove_space_member

    Remove a person from a space, whether they are a member, asked to join or were invited. Their access to the community stays. Not for a space open to all members.

    Removescommunity_members:write
    Show inputs (3)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
    orgUserIdstringRequired.

Community moderation

  • get_space_moderation_queue

    The posts awaiting review in a space and the open flags on its posts and comments. Each list holds at most the 100 oldest; working the queue brings in the next ones.

    Readscommunity_moderation:read
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    spaceIdstringRequired.
  • get_message_moderation_queue

    The messages in a community's chats with open flags, with the flags and the chat each is in. Holds at most the 100 oldest open flags.

    Readscommunity_moderation:read
    Show inputs (1)
    FieldTypeNotes
    communityIdstringRequired.
  • approve_post

    Publish a post that is awaiting review.

    Changescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    postIdstringRequired.
  • dismiss_post_flags

    Close every open flag on a post and leave it up.

    Changescommunity_moderation:write
    Show inputs (3)
    FieldTypeNotes
    resolution"dismissed"Required. `dismissed` closes the open flags and leaves the post up. Removing the post resolves its flags as `removed` instead.
    communityIdstringRequired.
    postIdstringRequired.
  • remove_post

    Take a published or pending post down and resolve its open flags as removed. restore_post brings it back.

    Removescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    postIdstringRequired.
  • restore_post

    Put a removed post back up.

    Changescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    postIdstringRequired.
  • dismiss_post_comment_flags

    Close every open flag on a comment on a post and leave it up.

    Changescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    commentIdstringRequired.
  • remove_post_comment

    Hide a comment on a post and resolve its open flags as removed. restore_post_comment brings it back.

    Removescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    commentIdstringRequired.
  • restore_post_comment

    Publish a removed comment on a post again.

    Changescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    commentIdstringRequired.
  • dismiss_message_flags

    Close every open flag on a chat message and leave it up.

    Changescommunity_moderation:write
    Show inputs (3)
    FieldTypeNotes
    resolution"dismissed"Required. `dismissed` closes the open flags and leaves the message up. Deleting the message or locking the chat resolves its flags as `deleted` or `locked` instead.
    communityIdstringRequired.
    messageIdstringRequired.
  • lock_chat

    Stop everyone sending or editing messages in a chat until it is unlocked. Its open message flags are resolved as locked.

    Removescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    chatIdstringRequired.
  • unlock_chat

    Let the participants of a locked chat send messages again.

    Changescommunity_moderation:write
    Show inputs (2)
    FieldTypeNotes
    communityIdstringRequired.
    chatIdstringRequired.

A tool that answers "Not found" means the id isn't in this organization. Any other refusal carries the same message the REST API returns, such as a space being full or a topic still in use.