Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Axis LMS MCP by usefulapi

REMOTE · AXIS-LMS.USEFULAPI.IO

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

60 Trust /100

Last scanned (4 hours ago)

Scores higher than 46% of remote servers

Reachable. Last reached 25 Oct 2026.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security78
Transport & Reachability0
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 5325 tokens (~121/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage79
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 38% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Oct 26 0
    • Stability: unverified → 0.03 ▲ functional
    • Server version: 1.0.0 → 1.0.3 functional
  • 24 Oct 26 60

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Probed https://axis-lms.usefulapi.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=usefulapi.io CN=WE1,O=Google Trust Services,C=US 13 Sept 2026 12 Dec 2026 ECDSA 256 ECDSA-SHA256 d9be3287b0fde9630e825ba1f79bff3f
SANs: usefulapi.io, *.usefulapi.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of axis-lms.usefulapi.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 38690, 57355 8, 8 Verified
usefulapi.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 302

WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://axis-lms.usefulapi.io/.well-known/oauth-protected-resource/mcp"

Bearer realm="OAuth", resource_metadata="https://axis-lms.usefulapi.io/.well-known/oauth-protected-resource/mcp"

Protected resource metadata

Document https://axis-lms.usefulapi.io/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://axis-lms.usefulapi.io/mcp
Authorisation server https://axis-lms.usefulapi.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://axis-lms.usefulapi.io/mcp Redirected 302 https://usefulapi.io/axis-lms/
http (plaintext) http://axis-lms.usefulapi.io/mcp Inconclusive 302 http://axis-lms.usefulapi.io/mcp
MCP tools · 44 exposed · ~5,052 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
axislms_add_usergroup_member ~71

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}/.

NameTypeReqDescription
user_idintegeryes–
usergroup_idintegeryes–

No output schema declared.

No examples provided.

axislms_certification_report ~387

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}/.

NameTypeReqDescription
certification_numberstring–Contains match.
count_onlyboolean–If true, return only the number of matching records (and pages) instead of the records.
max_expire_datestring–yyyy-mm-dd
max_issue_datestring–yyyy-mm-dd
max_renewed_datestring–yyyy-mm-dd
method_earnedstring–Contains match, e.g. course:1084.
min_expire_datestring–yyyy-mm-dd
min_issue_datestring–yyyy-mm-dd
min_renewed_datestring–yyyy-mm-dd
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
program_idintegeryes–
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_count_courses ~22

Number of active online courses. GET /courses/count/.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

axislms_count_users ~186

Number of users, all or matching a search phrase. GET /users/all/count/ or /users/filtered/count/?user_filter=.

NameTypeReqDescription
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_course_report ~379

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}/.

NameTypeReqDescription
count_onlyboolean–If true, return only the number of matching records (and pages) instead of the records.
course_idintegeryes–
max_completion_datestring–yyyy-mm-dd
max_progressinteger––
max_scoreinteger––
max_start_datestring–yyyy-mm-dd
min_completion_datestring–yyyy-mm-dd
min_progressinteger––
min_scoreinteger––
min_start_datestring–yyyy-mm-dd
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
statusstring––
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_create_user ~360

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/.

NameTypeReqDescription
addressstring––
citystring––
companystring––
custom1string––
custom10string––
custom11string––
custom12string––
custom13string––
custom14string––
custom15string––
custom2string––
custom3string––
custom4string––
custom5string––
custom6string––
custom7string––
custom8string––
custom9string––
date_expirestring–Account expiry date, yyyy-mm-dd.
date_startstring–Account start date, yyyy-mm-dd.
emailstring––
first_namestring––
last_namestring––
localizationstring–A language pack name installed in the LMS.
manager_idinteger–User id of a manager.
middle_initstring––
phonestring––
rolestring––
statestring––
usernamestringyes–
zipstring––

No output schema declared.

No examples provided.

axislms_create_usergroup ~59

WRITE: create a usergroup. The name must be 4-99 characters (letters, numbers, spaces and @ . _ -). Returns its id. POST /usergroups/{name}/.

NameTypeReqDescription
namestringyes–

No output schema declared.

No examples provided.

axislms_enroll_user_in_course ~135

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}/.

NameTypeReqDescription
course_idintegeryes–
endstring–Access end date, yyyy-mm-dd; must be after the start date.
startstring–Access start date, yyyy-mm-dd.
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_enroll_user_in_ilt_session ~88

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}/.

NameTypeReqDescription
program_idintegeryes–
session_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_enroll_user_in_learningpath ~69

WRITE: enroll an active user in a learning path. The user must not already be enrolled. POST /learningpaths/enrollments/{learningpath_id}/users/{user_id}/.

NameTypeReqDescription
learningpath_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_get_certification ~46

One certification program: name, prefix, description, keyword tags, webhook and status. GET /certifications/{program_id}/.

NameTypeReqDescription
program_idintegeryes–

No output schema declared.

No examples provided.

axislms_get_course ~73

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}/.

NameTypeReqDescription
course_idintegeryesAxis course id (from axislms_list_courses).

No output schema declared.

No examples provided.

axislms_get_ilt_program ~44

One ILT program: name, catalog id, description and keyword tags. GET /ilt/{program_id}/.

NameTypeReqDescription
program_idintegeryes–

No output schema declared.

No examples provided.

axislms_get_user ~139

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=.

NameTypeReqDescription
fieldsarray–User fields to return (default: id and username). The first field is also the sort key. The sso login link is not available.
user_idintegeryesAxis user id (from axislms_list_users or axislms_search_users).

No output schema declared.

No examples provided.

axislms_get_usergroup ~47

One usergroup: name, member counts (active, inactive, total) and owner. GET /usergroups/{id}/.

NameTypeReqDescription
usergroup_idintegeryes–

No output schema declared.

No examples provided.

axislms_ilt_report ~411

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}/.

NameTypeReqDescription
count_onlyboolean–If true, return only the number of matching records (and pages) instead of the records.
max_end_datestring–yyyy-mm-dd
max_expire_datestring–yyyy-mm-dd
max_meetings_attendedinteger––
max_start_datestring–yyyy-mm-dd
method_earnedstring––
min_end_datestring–yyyy-mm-dd
min_meetings_attendedinteger––
min_start_datestring–yyyy-mm-dd
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
program_idintegeryes–
session_idinteger––
session_namestring–Contains match.
statusstring–Result status as shown in the report, e.g. complete, incomplete, unavailable.
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_learningpath_report ~337

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}/.

NameTypeReqDescription
count_onlyboolean–If true, return only the number of matching records (and pages) instead of the records.
learningpath_idintegeryes–
max_completion_datestring–yyyy-mm-dd
max_start_datestring–yyyy-mm-dd
min_completion_datestring–yyyy-mm-dd
min_start_datestring–yyyy-mm-dd
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
statusstring––
typestring––
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_list_certification_users ~42

Users certified in a certification program (id and username). GET /certifications/{program_id}/users/.

NameTypeReqDescription
program_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_certifications ~44

List certification programs (id and name): active, inactive or all. GET /certifications/list/{status}/.

NameTypeReqDescription
statusstring–Default active.

No output schema declared.

No examples provided.

axislms_list_course_users ~65

Users enrolled in a course with their access start and end dates (YYYYMMDD): active, expired or all enrollments. GET /courses/{id}/users/{status}/.

NameTypeReqDescription
course_idintegeryes–
statusstring–Default active.

No output schema declared.

No examples provided.

axislms_list_courses ~30

List the active online courses (id and name), plus the count. GET /courses/list/.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

axislms_list_ilt_completions ~68

Users who completed an ILT program, or one session of it (id and username). GET /ilt/{program_id}/completions/[{session_id}/].

NameTypeReqDescription
program_idintegeryes–
session_idinteger–Only this session.

No output schema declared.

No examples provided.

axislms_list_ilt_meetings ~67

Meetings of one ILT session: date, time, timezone, duration, GMT start and end, facility. GET /ilt/{program_id}/meetings/{session_id}/.

NameTypeReqDescription
program_idintegeryes–
session_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_ilt_programs ~32

List instructor-led training (ILT) programs (id and name). GET /ilt/list/.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

axislms_list_ilt_sessions ~69

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}/.

NameTypeReqDescription
program_idintegeryes–
scopestring–Default current.

No output schema declared.

No examples provided.

axislms_list_learningpath_users ~82

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}/].

NameTypeReqDescription
learningpath_idintegeryes–
user_idinteger–Only this enrolled user.

No output schema declared.

No examples provided.

axislms_list_learningpaths ~28

List the active learning paths (id and name). GET /learningpaths/list/.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

axislms_list_organization_branches ~42

The branches of an organization (nested branches included). GET /organizations/branches/{organization_id}/.

NameTypeReqDescription
organization_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_organization_users ~59

Users in an organization (id, username, branch id): active, inactive or all. GET /organizations/users/{organization_id}/{status}/.

NameTypeReqDescription
organization_idintegeryes–
statusstring–Default active.

No output schema declared.

No examples provided.

axislms_list_organizations ~70

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}/.

NameTypeReqDescription
owner_idinteger–Only organizations owned by this manager's user id; omit for all.

No output schema declared.

No examples provided.

axislms_list_user_certificates ~55

The certifications a user holds: program, certification number, issue, renew and expire dates (YYYYMMDD). GET /certifications/certificates/{user_id}/.

NameTypeReqDescription
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_user_ceus ~54

Continuing-education credits (CEUs) a user earned: type, name, credits and issue date. GET /certifications/ceus/{user_id}/.

NameTypeReqDescription
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_user_ilt_sessions ~53

ILT sessions a user is part of: program, session, start and end dates and percent attended. GET /ilt/users/{user_id}/sessions/.

NameTypeReqDescription
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_usergroup_members ~59

Members of a usergroup (id and username): active, inactive or all. GET /usergroups/{id}/members/{status}/.

NameTypeReqDescription
statusstring–Default active.
usergroup_idintegeryes–

No output schema declared.

No examples provided.

axislms_list_usergroups ~26

List usergroups (id and name). GET /usergroups/list/.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

axislms_list_users ~68

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}/.

NameTypeReqDescription
statusstring–Default active.

No output schema declared.

No examples provided.

axislms_mark_ilt_attendance ~108

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}/.

NameTypeReqDescription
attendancestringyes–
meeting_idintegeryes–
program_idintegeryes–
session_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_remove_usergroup_member ~60

WRITE: remove a user from a usergroup they are a member of. DELETE /usergroups/members/{usergroup_id}/{user_id}/.

NameTypeReqDescription
user_idintegeryes–
usergroup_idintegeryes–

No output schema declared.

No examples provided.

axislms_search_users ~276

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}).

NameTypeReqDescription
fieldsarray–User fields to return (default: id and username). The first field is also the sort key. The sso login link is not available.
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
user_filterstring–Axis user search phrase: field-name + operator + value, several joined by commas (all must match). Operators: = equals, != not equal, ~ contains, !~ does not contain; for usergroup, ~ means 'is in' a…

No output schema declared.

No examples provided.

axislms_unenroll_user_from_course ~63

WRITE: remove a user from an online course. The user loses access to the course. DELETE /courses/enrollments/{course_id}/{user_id}/.

NameTypeReqDescription
course_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_unenroll_user_from_ilt_session ~72

WRITE: remove a user from a session of an ILT program. DELETE /ilt/enrollments/{program_id}/{session_id}/{user_id}/.

NameTypeReqDescription
program_idintegeryes–
session_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_unenroll_user_from_learningpath ~65

WRITE: remove a user from a learning path they are enrolled in. DELETE /learningpaths/enrollments/{learningpath_id}/users/{user_id}/.

NameTypeReqDescription
learningpath_idintegeryes–
user_idintegeryes–

No output schema declared.

No examples provided.

axislms_update_user ~332

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}/.

NameTypeReqDescription
addressstring––
citystring––
companystring––
custom1string––
custom10string––
custom11string––
custom12string––
custom13string––
custom14string––
custom15string––
custom2string––
custom3string––
custom4string––
custom5string––
custom6string––
custom7string––
custom8string––
custom9string––
date_expirestring–Account expiry date, yyyy-mm-dd.
date_startstring–Account start date, yyyy-mm-dd.
emailstring––
first_namestring––
last_namestring––
localizationstring–A language pack name installed in the LMS.
manager_idinteger–User id of a manager.
middle_initstring––
phonestring––
rolestring––
statestring––
user_idintegeryes–
zipstring––

No output schema declared.

No examples provided.

axislms_user_report ~210

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}/.

NameTypeReqDescription
count_onlyboolean–If true, return only the number of matching records (and pages) instead of the records.
kindstringyes–
pageinteger–Page number, from 1 (default 1); 100 records per page. Pass the previous reply's next_page.
scopestringyesuser = needs user_id; all = every user; filtered = needs user_filter.
user_filterstring–Required for scope 'filtered' (syntax as described).
user_idinteger–One user (scope 'user').

No output schema declared.

No examples provided.

Install

How do I install the Axis LMS MCP by usefulapi server?

Axis LMS MCP by usefulapi is a hosted endpoint at https://axis-lms.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · axis-lms.usefulapi.io

# add to Claude Code
claude mcp add --transport http io-usefulapi-axis-lms 'https://axis-lms.usefulapi.io/mcp'
Common questions

What is the Axis LMS MCP by usefulapi server?

Axis LMS MCP by usefulapi is listed in the public MCP registry as io.usefulapi/axis-lms. Read Axis LMS users, courses, learning paths, certifications and reports; manage enrollments. This page covers its hosted endpoint (https://axis-lms.usefulapi.io/mcp).

Is the Axis LMS MCP by usefulapi server safe to use?

Axis LMS MCP by usefulapi scores 60 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Axis LMS MCP by usefulapi server expose?

Axis LMS MCP by usefulapi exposes 44 tools: axislms_list_users, axislms_get_user, axislms_search_users, axislms_count_users, axislms_list_courses, and 39 more. Their descriptions and schemas cost roughly 5,052 tokens of context every time the server is loaded.

Does the Axis LMS MCP by usefulapi server require authentication?

Yes. Axis LMS MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Axis LMS MCP by usefulapi server still maintained?

Axis LMS MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.