Connectors · Work & projects
Absorb LMS MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Absorb LMS and the rest of your systems. It gives your agent 155 Absorb LMS actions (116 reads, 37 writes and 2 that wait for a confirmation) and holds the Absorb LMS credential itself, so the agent never does. It paces Absorb LMS's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "absorb_lms.users.list", intent: "check which Absorb LMS account is connected"}# List users · read · 1 upstream call- 155actionsin one signed file
- 116readlook, never change
- 37writecreate and update
- 2wait for a yesdestructive, confirmed first
Set up
Connect Absorb LMS in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Absorb LMS.
Session login. actionlake opens the session and renews it when it expires. actionlake stores what you paste write-only, sealed under your tenant's key.
api_keyAbsorb Integration API keyclient_idOAuth Client IDclient_secretOAuth Client SecrethostWhere your Absorb LMS lives: your host
account { op: "connections.requirements", service: "absorb_lms" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "absorb_lms.users.list" }# list users · read · 1 upstream callcheck { action: "absorb_lms.groups.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Absorb LMS at a glance
- Sign-in
- Session login. actionlake opens the session and renews it when it expires.
- You provide
api_keyclient_idclient_secret- Setup fields
host- Limits we pace to
- 200 calls a second, per connection
- API covered
- Absorb Integration API v2 (x-api-version: 2)
rest.myabsorb.com - Built from
- Absorb LMS's documentation, read 23 October 2026docs.myabsorb.comdocs.myabsorb.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 116 of 116 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 4, so ask can line Absorb LMS up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Absorb LMS.
155 actions in 71 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 116readlook, never change
- 37writecreate and update
- 2destructivewait for a confirmation
Users
62 read · 4 write · 0 destructive
List users · Get User · Update user · Upsert user if the username or external ID matches
Custom field definitions
42 read · 2 write · 0 destructive
Create a custom field definition and its possible values (if any) · List custom fields and their definitions · Get a specific custom field and it's definition · Update a custom field definition and its possible values (if any)
Departments
42 read · 2 write · 0 destructive
Lists all selected LMS Departments that are available to the current, authenticated administrator · Get Department · Create or update department · Create or update department
Enrollment keys
42 read · 2 write · 0 destructive
Create enrollment key · Get enrollment key · Get enrollment key by external ID · Update enrollment key
External training submissions
42 read · 2 write · 0 destructive
Create a new submission · List submissions · Get submission by ID · Update an existing submission
Groups
42 read · 2 write · 0 destructive
Get groups · Create group · Get group · Update a group
Question bank questions
42 read · 2 write · 0 destructive
Create question bank question · List question bank questions · Get question bank question · Updates a question bank question
Question banks
42 read · 2 write · 0 destructive
Create question bank · List question banks · Get question bank · Update question bank
63 more areas · 121 actions
- Resource categories 4
- Tags 4
- User enrollments 4
- Venues 4
- Attendances 3
- Course bundles 3
- Courses 3
- Curricula 3
- Ecommerce transactions 3
- Enrollments 3
- Lesson attempts 3
- User messages 3
- User session enrollments 3
- Categories 2
- Chapters 2
- Countries 2
- Course certificates 2
- Course chapters 2
- Course lessons 2
- Course resources 2
- Course sessions 2
- Course versions 2
- Curriculum groups 2
- Direct reports 2
- External training templates 2
- Group users 2
- Instructor led courses 2
- Languages 2
- Lessons 2
- Online courses 2
- Provinces 2
- Resources 2
- Roles 2
- Session schedules 2
- Sessions 2
- User certificates 2
- User chapter enrollments 2
- User chapter lesson enrollments 2
- User lesson enrollments 2
- User management settings 2
- User manager roles 2
- Attempts 1
- Certificates 1
- Competency definitions 1
- Coupons 1
- Course chapter lessons 1
- Course enrollments 1
- Credit types 1
- Enrollment credits 1
- Learning paths 1
- Lesson enrollments 1
- Manager roles 1
- Messages 1
- Self assessment ratings 1
- Session details 1
- Session enrollments 1
- User catalog 1
- User competencies 1
- User courses 1
- User enrollment resources 1
- User grades 1
- User resources 1
- User session details 1
Top actions
The Absorb LMS API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 22 of Absorb LMS's 23 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
absorb_lms.users.listList users | List users. | read | identity.user.list474 connectors |
absorb_lms.groups.listGet groups | Get groups. | read | identity.group.list262 connectors |
absorb_lms.roles.listList all available roles | List all available roles. | read | identity.role.list184 connectors |
absorb_lms.groups.createCreate group | Create group. | write | identity.group.create205 connectors |
absorb_lms.users.getGet User | Get User. | read | identity.user.get399 connectors |
absorb_lms.users.updateUpdate user | Update user. | write | identity.user.update280 connectors |
absorb_lms.departments.listLists all selected LMS Departments that are available to the current, authenticated administrator | Lists all selected LMS Departments that are available to the current, authenticated administrator. | read | hr.department.list40 connectors |
absorb_lms.roles.getGet an individual role by ID | Get an individual role by ID. | read | identity.role.get127 connectors |
absorb_lms.departments.getGet Department | Get Department. | read | hr.department.get33 connectors |
absorb_lms.courses.listLists courses | Lists courses. | read | hr.training_course.list11 connectors |
absorb_lms.user_enrollments.createCreate or update course enrollment | Create or update course enrollment. | write | hr.training_record.create5 connectors |
absorb_lms.enrollments.unenrollUn-enroll users from courses | Un-enroll users from courses. | destructive | this connector |
Try it
Prompts to paste into Claude.
Each one names the Absorb LMS actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Who has access in Absorb LMS? List every user and their role.
calls
absorb_lms.users.list - Writewrite
Create group in Absorb LMS. Show me exactly what you will send before you save it.
calls
absorb_lms.groups.create
Governance for Absorb LMS
Destructive actions wait for a yes.
2 Absorb LMS actions are destructive. These are all of them:
- Un-enroll users from courses
absorb_lms.enrollments.unenroll - Unassign users from group
absorb_lms.group_users.unassign
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Un-enroll users from courses?
intent: the user asked me to un-enroll users from courses
account { op: "keys.create", name: "absorb-lms-agent", allowed_actions: ["absorb_lms.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "absorb_lms.enrollments.unenroll", approver: "[email protected]" }, { match: "absorb_lms.group_users.unassign", approver: "[email protected]" } ]}Cost
What Absorb LMS costs on actionlake.
Every Absorb LMS action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Absorb LMS refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 155 Absorb LMS actions
- 155actions pageeach page of a long list is one call
- 116reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Absorb LMS action.
155 actions by area: the id your agent calls, what it does, and its effect.
Users6
absorb_lms.users.getGet Userreadabsorb_lms.users.listList usersreadabsorb_lms.users.updateUpdate userwriteabsorb_lms.users.uploadCreates and/or updates Users from a List of Userswriteabsorb_lms.users.upsertUpsert user if the username or external ID matcheswriteabsorb_lms.users.upsert_via_create_accountUpsert user if the username or external ID matcheswrite
Custom field definitions4
absorb_lms.custom_field_definitions.createCreate a custom field definition and its possible values (if any)writeabsorb_lms.custom_field_definitions.getGet a specific custom field and it's definitionreadabsorb_lms.custom_field_definitions.listList custom fields and their definitionsreadabsorb_lms.custom_field_definitions.updateUpdate a custom field definition and its possible values (if any)write
Departments4
absorb_lms.departments.getGet Departmentreadabsorb_lms.departments.listLists all selected LMS Departments that are available to the current, authenticated administratorreadabsorb_lms.departments.upsertCreate or update departmentwriteabsorb_lms.departments.upsert_via_create_departmentCreate or update departmentwrite
Enrollment keys4
absorb_lms.enrollment_keys.createCreate enrollment keywriteabsorb_lms.enrollment_keys.getGet enrollment keyreadabsorb_lms.enrollment_keys.get_by_external_idGet enrollment key by external IDreadabsorb_lms.enrollment_keys.updateUpdate enrollment keywrite
External training submissions4
absorb_lms.external_training_submissions.createCreate a new submissionwriteabsorb_lms.external_training_submissions.getGet submission by IDreadabsorb_lms.external_training_submissions.listList submissionsreadabsorb_lms.external_training_submissions.updateUpdate an existing submissionwrite
Groups4
absorb_lms.groups.createCreate groupwriteabsorb_lms.groups.getGet groupreadabsorb_lms.groups.listGet groupsreadabsorb_lms.groups.updateUpdate a groupwrite
Question bank questions4
absorb_lms.question_bank_questions.createCreate question bank questionwriteabsorb_lms.question_bank_questions.getGet question bank questionreadabsorb_lms.question_bank_questions.listList question bank questionsreadabsorb_lms.question_bank_questions.updateUpdates a question bank questionwrite
Question banks4
absorb_lms.question_banks.createCreate question bankwriteabsorb_lms.question_banks.getGet question bankreadabsorb_lms.question_banks.listList question banksreadabsorb_lms.question_banks.updateUpdate question bankwrite
Resource categories4
absorb_lms.resource_categories.createCreate resource categorywriteabsorb_lms.resource_categories.getGet resource categoryreadabsorb_lms.resource_categories.listLists resource categoriesreadabsorb_lms.resource_categories.updateUpdate resource categorywrite
Tags4
absorb_lms.tags.createCreate tagwriteabsorb_lms.tags.getGet tagreadabsorb_lms.tags.listList tagsreadabsorb_lms.tags.updateUpdate tagwrite
User enrollments4
absorb_lms.user_enrollments.createCreate or update course enrollmentwriteabsorb_lms.user_enrollments.create_for_courseCreate enrollment for user and coursewriteabsorb_lms.user_enrollments.getGet user's enrollment for specific coursereadabsorb_lms.user_enrollments.listList course enrollments for specific userread
Venues4
absorb_lms.venues.createCreate venuewriteabsorb_lms.venues.getGet venuereadabsorb_lms.venues.listList venuesreadabsorb_lms.venues.updateUpdate venuewrite
Attendances3
absorb_lms.attendances.createCreate attendance recordwriteabsorb_lms.attendances.listList attendance recordsreadabsorb_lms.attendances.updateUpdate attendance recordwrite
Course bundles3
absorb_lms.course_bundles.getGet course bundlereadabsorb_lms.course_bundles.listList available course bundlesreadabsorb_lms.course_bundles.list_for_saleList course bundles for saleread
Courses3
absorb_lms.courses.getGet coursereadabsorb_lms.courses.listLists coursesreadabsorb_lms.courses.list_for_saleList courses for saleread
Curricula3
absorb_lms.curricula.getGet an individual curriculum by IDreadabsorb_lms.curricula.listGet all available curriculareadabsorb_lms.curricula.list_for_saleGet all available curricula for saleread
Ecommerce transactions3
absorb_lms.ecommerce_transactions.getGet e-commerce transactionreadabsorb_lms.ecommerce_transactions.listList e-commerce transactionsreadabsorb_lms.ecommerce_transactions.set_statusApproves or denies an e-commerce transactionwrite
Enrollments3
absorb_lms.enrollments.getGet course enrollmentreadabsorb_lms.enrollments.list_bulkList course enrollments for bulk user listreadabsorb_lms.enrollments.unenrollUn-enroll users from coursesdestructive
Lesson attempts3
absorb_lms.lesson_attempts.finishFinish attemptwriteabsorb_lms.lesson_attempts.listList user's attempts for specific lessonreadabsorb_lms.lesson_attempts.startStart attempt for active lesson enrollmentwrite
User messages3
absorb_lms.user_messages.listList user messagesreadabsorb_lms.user_messages.list_receivedList user received messagesreadabsorb_lms.user_messages.list_sentList user sent messagesread
User session enrollments3
absorb_lms.user_session_enrollments.createCreate ILC enrollment for userwriteabsorb_lms.user_session_enrollments.getGet user's session enrollment for specific coursereadabsorb_lms.user_session_enrollments.listList user's session enrollments for specific courseread
Categories2
absorb_lms.categories.getGet categoryreadabsorb_lms.categories.listList categoriesread
Chapters2
absorb_lms.chapters.getGet chapterreadabsorb_lms.chapters.listLists chaptersread
Countries2
absorb_lms.countries.getGet countryreadabsorb_lms.countries.listList countriesread
Course certificates2
absorb_lms.course_certificates.getGet certificate for a coursereadabsorb_lms.course_certificates.listLists certificates for a courseread
Course chapters2
absorb_lms.course_chapters.getGet chapter from a coursereadabsorb_lms.course_chapters.listLists chapters of a courseread
Course lessons2
absorb_lms.course_lessons.getGet lesson from a specific coursereadabsorb_lms.course_lessons.listList lessons from a specific online courseread
Course resources2
absorb_lms.course_resources.getGet resource from a specific coursereadabsorb_lms.course_resources.listList resources from a specific courseread
Course sessions2
absorb_lms.course_sessions.getGet session from a specific ILCreadabsorb_lms.course_sessions.listList sessions from a specific ILCread
Course versions2
absorb_lms.course_versions.getGet course versionreadabsorb_lms.course_versions.listList course versionsread
Curriculum groups2
absorb_lms.curriculum_groups.getGet curriculum groupreadabsorb_lms.curriculum_groups.queryGets multiple curriculum groupsread
Direct reports2
absorb_lms.direct_reports.listRetrieves a list of direct reports for a managerreadabsorb_lms.direct_reports.updateUpdates a list of direct reports for a managerwrite
External training templates2
absorb_lms.external_training_templates.getGet template by IDreadabsorb_lms.external_training_templates.listList templatesread
Group users2
absorb_lms.group_users.assignAssign users to groupwriteabsorb_lms.group_users.unassignUnassign users from groupdestructive
Instructor led courses2
absorb_lms.instructor_led_courses.getGet ILCreadabsorb_lms.instructor_led_courses.listList ILCsread
Languages2
absorb_lms.languages.getGet languagereadabsorb_lms.languages.listList available languagesread
Lessons2
absorb_lms.lessons.getGet lessonreadabsorb_lms.lessons.listList lessonsread
Online courses2
absorb_lms.online_courses.getGet online coursereadabsorb_lms.online_courses.listList online coursesread
Provinces2
absorb_lms.provinces.getGet provincereadabsorb_lms.provinces.listList provinces in countryread
Resources2
absorb_lms.resources.getGet resourcereadabsorb_lms.resources.listList resourcesread
Roles2
absorb_lms.roles.getGet an individual role by IDreadabsorb_lms.roles.listList all available rolesread
Session schedules2
absorb_lms.session_schedules.getGet session schedulereadabsorb_lms.session_schedules.listList session schedulesread
Sessions2
absorb_lms.sessions.getGet sessionreadabsorb_lms.sessions.listList sessionsread
User certificates2
absorb_lms.user_certificates.getGet certificate for the userreadabsorb_lms.user_certificates.listLists certificates for the userread
User chapter enrollments2
absorb_lms.user_chapter_enrollments.getGet chapter enrollment for a specified coursereadabsorb_lms.user_chapter_enrollments.listList chapter enrollments for a specified courseread
User chapter lesson enrollments2
absorb_lms.user_chapter_lesson_enrollments.getGet lesson enrollmentreadabsorb_lms.user_chapter_lesson_enrollments.listList user's lesson enrollments from specific chapterread
User lesson enrollments2
absorb_lms.user_lesson_enrollments.getGet user's lesson enrollmentreadabsorb_lms.user_lesson_enrollments.listList user's lesson enrollments from specific courseread
User management settings2
absorb_lms.user_management_settings.getGet a user's management settingsreadabsorb_lms.user_management_settings.updateUpdate user management settingswrite
User manager roles2
absorb_lms.user_manager_roles.listList a specified manager's manager rolesreadabsorb_lms.user_manager_roles.updateUpdate a specified manager's manager roleswrite
Attempts1
absorb_lms.attempts.finishFinish attemptwrite
Certificates1
absorb_lms.certificates.getGet certificateread
Competency definitions1
absorb_lms.competency_definitions.getGets a single competency definition by IDread
Coupons1
absorb_lms.coupons.getGet an individual coupon by IDread
Course chapter lessons1
absorb_lms.course_chapter_lessons.getGet lesson from a specific course and chapterread
Course enrollments1
absorb_lms.course_enrollments.listList enrollments for specific courseread
Credit types1
absorb_lms.credit_types.listList credit types available for enrollmentsread
Enrollment credits1
absorb_lms.enrollment_credits.listList credits from a specific user's course enrollmentread
Learning paths1
absorb_lms.learning_paths.getGets a user's current learning pathread
Lesson enrollments1
absorb_lms.lesson_enrollments.listLists enrollments for a lessonread
Manager roles1
absorb_lms.manager_roles.listRetrieves a list of manager rolesread
Messages1
absorb_lms.messages.getGet messageread
Self assessment ratings1
absorb_lms.self_assessment_ratings.getReturns user's self assessment ratingsread
Session details1
absorb_lms.session_details.queryList available session details from specific ILCsread
Session enrollments1
absorb_lms.session_enrollments.listList an ILC's session enrollmentsread
User catalog1
absorb_lms.user_catalog.listList user's available coursesread
User competencies1
absorb_lms.user_competencies.listLists the competencies for a userread
User courses1
absorb_lms.user_courses.listList user's available coursesread
User enrollment resources1
absorb_lms.user_enrollment_resources.listList resources associated with a specified enrollment for a specific userread
User grades1
absorb_lms.user_grades.getGet user's enrollment for specific courseread
User resources1
absorb_lms.user_resources.listList resources available to a specific userread
User session details1
absorb_lms.user_session_details.listList sessions from a specific user's ILC enrollmentsread
Questions
The Absorb LMS MCP server, answered.
Is there an Absorb LMS MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 155 Absorb LMS actions across users, custom field definitions, departments and enrollment keys, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Absorb LMS.
What do I need to connect Absorb LMS?
Absorb Integration API key, OAuth Client ID and OAuth Client Secret. Plus your host. The free call account { op: "connections.requirements", service: "absorb_lms" } lists exactly what to paste.
Can an AI agent delete or change things in Absorb LMS?
Only if its key allows it, and only with an explicit confirmation. 2 Absorb LMS actions are destructive, including un-enroll users from courses and unassign users from group. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Absorb LMS API limit?
actionlake paces every call to the limits in the Absorb LMS service file: 200 calls a second per connection. Repeated reads are answered from cache (116 Absorb LMS actions can be), which never reaches Absorb LMS.
What does an Absorb LMS action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (155 Absorb LMS actions page). Cache hits, searches, dry runs and calls Absorb LMS refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Absorb LMS API does it cover?
The Absorb Integration API v2 (x-api-version: 2) at rest.myabsorb.com by default, or the base URL set when you connect. It is built from Absorb LMS's documentation as read on 23 October 2026. 155 actions in 71 areas, each one in the signed service file (version 1.0.0).
Does actionlake keep my Absorb LMS data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Absorb LMS credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Absorb LMS today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.