Skip to content

Axis LMS MCP by usefulapi

io.usefulapi/axis-lmsusefulapi.iostreamable-httpv1.0.0Scanned

Read Axis LMS users, courses, learning paths, certifications and reports; manage enrollments.

44 tools: 7 can delete or cancel things, 10 change things and 27 only read.

Tools: 7 delete, 0 irreversible, 10 write, 27 read.
  • Reads private data · 6
  • Reads text others write · 44
  • Can send data out · 1
  • No findings

Anlyon alternative

17 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

44 tools

Deletes or cancels 7Claude Code: deny
  • axislms_enroll_user_in_courseWRITE: enroll a user in an online course (optionally with access start and end dates).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: enroll a user in an online course (optionally with access start and end dates). The user and the course must be active. If the user is already enrolled, send start or end to change the enrollment dates. Depending on the LMS settings the user may be notified. POST /courses/enrollments/{course_id}/{user_id}/.

    Annotations the server declares

    • title: Enroll a user in a course
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • axislms_mark_ilt_attendanceWRITE: mark a user attended or absent for one ILT meeting.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_mark_ilt_attendance" says "mark": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: mark a user attended or absent for one ILT meeting. The user must already be enrolled in the meeting. Attendance can count toward completion. PUT /ilt/attendance/{program_id}/{session_id}/{meeting_id}/{user_id}/{attended|absent}/.

    Annotations the server declares

    • title: Mark ILT attendance
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • axislms_remove_usergroup_memberWRITE: remove a user from a usergroup they are a member of.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_remove_usergroup_member" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: remove a user from a usergroup they are a member of. DELETE /usergroups/members/{usergroup_id}/{user_id}/.

    Annotations the server declares

    • title: Remove a user from a usergroup
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • axislms_unenroll_user_from_courseWRITE: remove a user from an online course.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: remove a user from an online course. The user loses access to the course. DELETE /courses/enrollments/{course_id}/{user_id}/.

    Annotations the server declares

    • title: Remove a user from a course
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • axislms_unenroll_user_from_ilt_sessionWRITE: remove a user from a session of an ILT program.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: remove a user from a session of an ILT program. DELETE /ilt/enrollments/{program_id}/{session_id}/{user_id}/.

    Annotations the server declares

    • title: Remove a user from an ILT session
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • axislms_unenroll_user_from_learningpathWRITE: remove a user from a learning path they are enrolled in.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: remove a user from a learning path they are enrolled in. DELETE /learningpaths/enrollments/{learningpath_id}/users/{user_id}/.

    Annotations the server declares

    • title: Remove a user from a learning path
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • axislms_update_userWRITE: change profile fields of an existing user (only the fields you send are changed; an empty value is not sent, so a field cannot be cleared here).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_update_user" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: change profile fields of an existing user (only the fields you send are changed; an empty value is not sent, so a field cannot be cleared here). This edits personal data and can change the user's role or manager. PUT /users/{user_id}/.

    Annotations the server declares

    • title: Update a user
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 10Claude Code: ask
  • axislms_add_usergroup_memberWRITE: add a user to a usergroup (they must not already be a member).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_add_usergroup_member" says "add": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: add a user to a usergroup (they must not already be a member). Groups can drive course or path assignments. POST /usergroups/members/{usergroup_id}/{user_id}/.

    Annotations the server declares

    • title: Add a user to a usergroup
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • axislms_certification_reportCertifications issued in one certification program: user, certification number, how it was earned, issue, renewed and expire date (YYYYMMDD).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Certifications issued in one certification program: user, certification number, how it was earned, issue, renewed and expire date (YYYYMMDD). Filter by users, number, method and dates. Paged (100 per page). GET /reports/certifications/{program_id}/.

    Annotations the server declares

    • title: Certification report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_course_reportWho is doing what in one online course: user, status, progress %, score, start and completion date (YYYYMMDD).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Who is doing what in one online course: user, status, progress %, score, start and completion date (YYYYMMDD). Filter by users, status, progress, score and dates. Limited to users currently enrolled who accessed the course or have score data. Paged (100 per page). GET /reports/courses/{course_id}/.

    Annotations the server declares

    • title: Course report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_create_userWRITE: create a new LMS user.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "axislms_create_user" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    WRITE: create a new LMS user. The username must be 4-40 characters (letters, numbers, @ . _ -) and not in use. Returns the new user id. The temporary password the LMS generates is never shown here: give the person access through the LMS itself (its password reset, invitation or single sign-on). Depending on the LMS settings the user may be notified. POST /users/.

    Annotations the server declares

    • title: Create a user
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • axislms_create_usergroupWRITE: create a usergroup.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_create_usergroup" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: create a usergroup. The name must be 4-99 characters (letters, numbers, spaces and @ . _ -). Returns its id. POST /usergroups/{name}/.

    Annotations the server declares

    • title: Create a usergroup
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • axislms_enroll_user_in_ilt_sessionWRITE: enroll a user in a session of an ILT program (takes a seat; check seats_remaining with axislms_list_ilt_sessions first).Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: enroll a user in a session of an ILT program (takes a seat; check seats_remaining with axislms_list_ilt_sessions first). POST /ilt/enrollments/{program_id}/{session_id}/{user_id}/.

    Annotations the server declares

    • title: Enroll a user in an ILT session
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • axislms_enroll_user_in_learningpathWRITE: enroll an active user in a learning path.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    WRITE: enroll an active user in a learning path. The user must not already be enrolled. POST /learningpaths/enrollments/{learningpath_id}/users/{user_id}/.

    Annotations the server declares

    • title: Enroll a user in a learning path
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • axislms_ilt_reportAttendance and results of one ILT program: user, session, start and end date, meetings and meetings attended, status.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Attendance and results of one ILT program: user, session, start and end date, meetings and meetings attended, status. Filter by users, status, session and dates. Paged (100 per page). GET /reports/ilt/{program_id}/.

    Annotations the server declares

    • title: ILT report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_learningpath_reportLearning path enrollments and results for one path: user, status (complete or incomplete), active or archived, start and completion date (YYYYMMDD).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Learning path enrollments and results for one path: user, status (complete or incomplete), active or archived, start and completion date (YYYYMMDD). Paged (100 per page). GET /reports/learningpaths/{learningpath_id}/.

    Annotations the server declares

    • title: Learning path report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_user_reportA learner's records across the LMS, for one user, for all users, or for users matching a search phrase.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    A learner's records across the LMS, for one user, for all users, or for users matching a search phrase. kind: courses (status, progress, score, dates), archived (archived and imported course results), certifications, ilt, or learningpaths. Contains personal data; paged (100 per page). GET /reports/users/{user_id|all|filtered}/{kind}/.

    Annotations the server declares

    • title: User transcript report
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 27Show 27 read-only tools
  • axislms_count_coursesNumber of active online courses.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_count_courses" says "count": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Number of active online courses. GET /courses/count/.

    Annotations the server declares

    • title: Count courses
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_count_usersNumber of users, all or matching a search phrase.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_count_users" says "count": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Number of users, all or matching a search phrase. GET /users/all/count/ or /users/filtered/count/?user_filter=.

    Annotations the server declares

    • title: Count users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_get_certificationOne certification program: name, prefix, description, keyword tags, webhook and status.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_get_certification" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One certification program: name, prefix, description, keyword tags, webhook and status. GET /certifications/{program_id}/.

    Annotations the server declares

    • title: Get certification program
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_get_courseOne online course: name, catalog id, description, active flag, created/updated dates, keyword tags, passing score, price and whether it is for sale, thumbnail, webhook.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_get_course" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One online course: name, catalog id, description, active flag, created/updated dates, keyword tags, passing score, price and whether it is for sale, thumbnail, webhook. GET /courses/{id}/.

    Annotations the server declares

    • title: Get course
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_get_ilt_programOne ILT program: name, catalog id, description and keyword tags.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_get_ilt_program" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One ILT program: name, catalog id, description and keyword tags. GET /ilt/{program_id}/.

    Annotations the server declares

    • title: Get ILT program
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_get_userOne user by id with the fields you ask for: profile (name, email, address, phone, custom1-15, role, manager_id, dates), usergroups, enrolled courses, ILT classes, certifications, l…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_get_user" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    One user by id with the fields you ask for: profile (name, email, address, phone, custom1-15, role, manager_id, dates), usergroups, enrolled courses, ILT classes, certifications, learning paths, badges, organizations and system variables. Contains personal data. GET /users/{id}/?fields=.

    Annotations the server declares

    • title: Get user
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_get_usergroupOne usergroup: name, member counts (active, inactive, total) and owner.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_get_usergroup" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    One usergroup: name, member counts (active, inactive, total) and owner. GET /usergroups/{id}/.

    Annotations the server declares

    • title: Get usergroup
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_certification_usersUsers certified in a certification program (id and username).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_certification_users" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Users certified in a certification program (id and username). GET /certifications/{program_id}/users/.

    Annotations the server declares

    • title: List certified users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_certificationsList certification programs (id and name): active, inactive or all.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_certifications" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List certification programs (id and name): active, inactive or all. GET /certifications/list/{status}/.

    Annotations the server declares

    • title: List certification programs
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_course_usersUsers enrolled in a course with their access start and end dates (YYYYMMDD): active, expired or all enrollments.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_course_users" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Users enrolled in a course with their access start and end dates (YYYYMMDD): active, expired or all enrollments. GET /courses/{id}/users/{status}/.

    Annotations the server declares

    • title: List users in a course
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_coursesList the active online courses (id and name), plus the count.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_courses" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the active online courses (id and name), plus the count. GET /courses/list/.

    Annotations the server declares

    • title: List courses
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_ilt_completionsUsers who completed an ILT program, or one session of it (id and username).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_ilt_completions" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Users who completed an ILT program, or one session of it (id and username). GET /ilt/{program_id}/completions/[{session_id}/].

    Annotations the server declares

    • title: List ILT completions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_ilt_meetingsMeetings of one ILT session: date, time, timezone, duration, GMT start and end, facility.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_ilt_meetings" says "list": a word for reading.

    What it can reach

    • private-dataThe name "axislms_list_ilt_meetings" says "list" and "meeting": it reads calendars.
    • private-dataThe description's first sentence says "meeting": it reads calendars.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Meetings of one ILT session: date, time, timezone, duration, GMT start and end, facility. GET /ilt/{program_id}/meetings/{session_id}/.

    Annotations the server declares

    • title: List ILT meetings
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_ilt_programsList instructor-led training (ILT) programs (id and name).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_ilt_programs" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List instructor-led training (ILT) programs (id and name). GET /ilt/list/.

    Annotations the server declares

    • title: List ILT programs
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_ilt_sessionsSessions of an ILT program with start and end dates and seats (total, reserved, remaining): current ones or all.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_ilt_sessions" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Sessions of an ILT program with start and end dates and seats (total, reserved, remaining): current ones or all. GET /ilt/{program_id}/sessions/{current|all}/.

    Annotations the server declares

    • title: List ILT sessions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_learningpath_usersActive enrolled users of a learning path (or one user), with status, start and completion time, completion method, path version, current branch and step, and progress.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_learningpath_users" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "branch": it reads repositories.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Active enrolled users of a learning path (or one user), with status, start and completion time, completion method, path version, current branch and step, and progress. GET /learningpaths/{id}/users/[{user_id}/].

    Annotations the server declares

    • title: List users in a learning path
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_learningpathsList the active learning paths (id and name).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_learningpaths" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the active learning paths (id and name). GET /learningpaths/list/.

    Annotations the server declares

    • title: List learning paths
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_organization_branchesThe branches of an organization (nested branches included).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_organization_branches" says "list": a word for reading.

    What it can reach

    • private-dataThe name "axislms_list_organization_branches" says "list" and "branch": it reads repositories.
    • private-dataThe description's first sentence says "branch": it reads repositories.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    The branches of an organization (nested branches included). GET /organizations/branches/{organization_id}/.

    Annotations the server declares

    • title: List organization branches
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_organization_usersUsers in an organization (id, username, branch id): active, inactive or all.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_organization_users" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "branch": it reads repositories.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Users in an organization (id, username, branch id): active, inactive or all. GET /organizations/users/{organization_id}/{status}/.

    Annotations the server declares

    • title: List organization users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_organizationsList organizations with owner id and user count, all or those owned by one manager (owner id 0 = the partition admin).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_organizations" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List organizations with owner id and user count, all or those owned by one manager (owner id 0 = the partition admin). GET /organizations/list/{all|owner_id}/.

    Annotations the server declares

    • title: List organizations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_user_certificatesThe certifications a user holds: program, certification number, issue, renew and expire dates (YYYYMMDD).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_user_certificates" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "issue": it reads issues, which other people can write.
    Description, as the server wrote it
    The certifications a user holds: program, certification number, issue, renew and expire dates (YYYYMMDD). GET /certifications/certificates/{user_id}/.

    Annotations the server declares

    • title: List a user's certifications
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_user_ceusContinuing-education credits (CEUs) a user earned: type, name, credits and issue date.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_user_ceus" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "issue": it reads issues, which other people can write.
    Description, as the server wrote it
    Continuing-education credits (CEUs) a user earned: type, name, credits and issue date. GET /certifications/ceus/{user_id}/.

    Annotations the server declares

    • title: List a user's CEU credits
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_user_ilt_sessionsILT sessions a user is part of: program, session, start and end dates and percent attended.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_user_ilt_sessions" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    ILT sessions a user is part of: program, session, start and end dates and percent attended. GET /ilt/users/{user_id}/sessions/.

    Annotations the server declares

    • title: List a user's ILT sessions
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_usergroup_membersMembers of a usergroup (id and username): active, inactive or all.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_usergroup_members" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Members of a usergroup (id and username): active, inactive or all. GET /usergroups/{id}/members/{status}/.

    Annotations the server declares

    • title: List usergroup members
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_usergroupsList usergroups (id and name).Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_usergroups" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List usergroups (id and name). GET /usergroups/list/.

    Annotations the server declares

    • title: List usergroups
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_list_usersList the LMS users (id and username only), active, inactive or all.Reads text others writeNo findings

    Why it is in this group

    • The name "axislms_list_users" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the LMS users (id and username only), active, inactive or all. Not paged: a large LMS returns every user. For names, emails or filters use axislms_search_users. GET /users/list/{status}/.

    Annotations the server declares

    • title: List users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • axislms_search_usersPage through all users, or only those matching a search phrase (for example email~example.com,role=manager), returning the fields you ask for.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "axislms_search_users" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "email": it reads mail.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Page through all users, or only those matching a search phrase (for example email~example.com,role=manager), returning the fields you ask for. Contains personal data. GET /users/all/ or /users/filtered/ (page{n}).

    Annotations the server declares

    • title: Search users
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

264 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__axis-lms__axislms_create_user"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http axis-lms https://axis-lms.usefulapi.io/mcp
claude mcp add --transport http axis-lms https://axis-lms.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__axis-lms__axislms_list_users",
      "mcp__axis-lms__axislms_get_user",
      "mcp__axis-lms__axislms_search_users",
      "mcp__axis-lms__axislms_count_users",
      "mcp__axis-lms__axislms_list_courses",
      "mcp__axis-lms__axislms_count_courses",
      "mcp__axis-lms__axislms_get_course",
      "mcp__axis-lms__axislms_list_course_users",
      "mcp__axis-lms__axislms_list_usergroups",
      "mcp__axis-lms__axislms_get_usergroup",
      "mcp__axis-lms__axislms_list_usergroup_members",
      "mcp__axis-lms__axislms_list_learningpaths",
      "mcp__axis-lms__axislms_list_learningpath_users",
      "mcp__axis-lms__axislms_list_certifications",
      "mcp__axis-lms__axislms_get_certification",
      "mcp__axis-lms__axislms_list_certification_users",
      "mcp__axis-lms__axislms_list_user_certificates",
      "mcp__axis-lms__axislms_list_user_ceus",
      "mcp__axis-lms__axislms_list_ilt_programs",
      "mcp__axis-lms__axislms_get_ilt_program",
      "mcp__axis-lms__axislms_list_ilt_sessions",
      "mcp__axis-lms__axislms_list_ilt_meetings",
      "mcp__axis-lms__axislms_list_ilt_completions",
      "mcp__axis-lms__axislms_list_user_ilt_sessions",
      "mcp__axis-lms__axislms_list_organizations",
      "mcp__axis-lms__axislms_list_organization_branches",
      "mcp__axis-lms__axislms_list_organization_users"
    ],
    "ask": [
      "mcp__axis-lms__axislms_course_report",
      "mcp__axis-lms__axislms_certification_report",
      "mcp__axis-lms__axislms_learningpath_report",
      "mcp__axis-lms__axislms_ilt_report",
      "mcp__axis-lms__axislms_user_report",
      "mcp__axis-lms__axislms_enroll_user_in_learningpath",
      "mcp__axis-lms__axislms_enroll_user_in_ilt_session",
      "mcp__axis-lms__axislms_create_user",
      "mcp__axis-lms__axislms_create_usergroup",
      "mcp__axis-lms__axislms_add_usergroup_member"
    ],
    "deny": [
      "mcp__axis-lms__axislms_enroll_user_in_course",
      "mcp__axis-lms__axislms_unenroll_user_from_course",
      "mcp__axis-lms__axislms_unenroll_user_from_learningpath",
      "mcp__axis-lms__axislms_unenroll_user_from_ilt_session",
      "mcp__axis-lms__axislms_mark_ilt_attendance",
      "mcp__axis-lms__axislms_update_user",
      "mcp__axis-lms__axislms_remove_usergroup_member"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as axis-lms. Review it before you use it.

Capability tags behind 44 rules
  • mcp__axis-lms__axislms_list_users untrusted-input
  • mcp__axis-lms__axislms_get_user private-data, untrusted-input
  • mcp__axis-lms__axislms_search_users private-data, untrusted-input
  • mcp__axis-lms__axislms_count_users untrusted-input
  • mcp__axis-lms__axislms_list_courses untrusted-input
  • mcp__axis-lms__axislms_count_courses untrusted-input
  • mcp__axis-lms__axislms_get_course untrusted-input
  • mcp__axis-lms__axislms_list_course_users untrusted-input
  • mcp__axis-lms__axislms_list_usergroups untrusted-input
  • mcp__axis-lms__axislms_get_usergroup untrusted-input
  • mcp__axis-lms__axislms_list_usergroup_members untrusted-input
  • mcp__axis-lms__axislms_list_learningpaths untrusted-input
  • mcp__axis-lms__axislms_list_learningpath_users private-data, untrusted-input
  • mcp__axis-lms__axislms_list_certifications untrusted-input
  • mcp__axis-lms__axislms_get_certification untrusted-input
  • mcp__axis-lms__axislms_list_certification_users untrusted-input
  • mcp__axis-lms__axislms_list_user_certificates untrusted-input
  • mcp__axis-lms__axislms_list_user_ceus untrusted-input
  • mcp__axis-lms__axislms_list_ilt_programs untrusted-input
  • mcp__axis-lms__axislms_get_ilt_program untrusted-input
  • mcp__axis-lms__axislms_list_ilt_sessions untrusted-input
  • mcp__axis-lms__axislms_list_ilt_meetings private-data, untrusted-input
  • mcp__axis-lms__axislms_list_ilt_completions untrusted-input
  • mcp__axis-lms__axislms_list_user_ilt_sessions untrusted-input
  • mcp__axis-lms__axislms_list_organizations untrusted-input
  • mcp__axis-lms__axislms_list_organization_branches private-data, untrusted-input
  • mcp__axis-lms__axislms_list_organization_users private-data, untrusted-input
  • mcp__axis-lms__axislms_course_report untrusted-input
  • mcp__axis-lms__axislms_certification_report untrusted-input
  • mcp__axis-lms__axislms_learningpath_report untrusted-input
  • mcp__axis-lms__axislms_ilt_report untrusted-input
  • mcp__axis-lms__axislms_user_report untrusted-input
  • mcp__axis-lms__axislms_enroll_user_in_course untrusted-input
  • mcp__axis-lms__axislms_unenroll_user_from_course untrusted-input
  • mcp__axis-lms__axislms_enroll_user_in_learningpath untrusted-input
  • mcp__axis-lms__axislms_unenroll_user_from_learningpath untrusted-input
  • mcp__axis-lms__axislms_enroll_user_in_ilt_session untrusted-input
  • mcp__axis-lms__axislms_unenroll_user_from_ilt_session untrusted-input
  • mcp__axis-lms__axislms_mark_ilt_attendance untrusted-input
  • mcp__axis-lms__axislms_create_user untrusted-input, outbound
  • mcp__axis-lms__axislms_update_user untrusted-input
  • mcp__axis-lms__axislms_create_usergroup untrusted-input
  • mcp__axis-lms__axislms_add_usergroup_member untrusted-input
  • mcp__axis-lms__axislms_remove_usergroup_member untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/axis-lms/verify?hash=bf19de55b3beae14fd003e067ec893ca1a95c18742655b5d132bccc74c1d0c85" | jq -e '.changed == false'

Pinned hash bf19de55b3be, from Oct 24, 2026, 22:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/axis-lms/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/axis-lms
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/axis-lms.svg)](https://anlyon.dev/servers/io.usefulapi/axis-lms)

Source: MCP Registry · repository. Synced Oct 24, 2026, 22:18 UTC.