---
title: "LearnUpon MCP server for AI agents - actionlake"
description: "Give Claude 150 LearnUpon actions through one MCP server: live learning, courses, users. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/learnupon
updated: 2026-10-23
---

Connectors · Learning & education

# LearnUpon MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to LearnUpon and the rest of your systems. It gives your agent 150 LearnUpon actions (70 reads, 58 writes and 22 that wait for a confirmation) and holds the LearnUpon credential itself, so the agent never does. It paces LearnUpon's limits and records every call.

[Connect LearnUpon free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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/mcp`

the first call

```
do {
  action: "learnupon.users.list",
  intent: "check which LearnUpon account is connected"
}
# List users · read · 1 upstream call
```

- 150 actions in one signed file
- 70 read look, never change
- 58 write create and update
- 22 wait for a yes destructive, confirmed first

Set up

## Connect LearnUpon in three steps.

1. 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`
2. 02
   ### Connect LearnUpon.
   Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `username` LearnUpon API username (Settings > Integrations > API Keys > Generate New Keys; these are not your login)
   - `password` LearnUpon API password (key) generated with the API username
   - `host` Where your LearnUpon lives: your host
   ```
   account { op: "connections.requirements", service: "learnupon" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "learnupon.users.list" }
   # list users · read · 1 upstream call
   check { action: "learnupon.orders.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

LearnUpon at a glance

**Sign-in**

Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`username` `password`

**Setup fields**

`host`

**Limits we pace to**

5 calls a second, per connection

**API covered**

LearnUpon REST API v1, at your LearnUpon instance's API base URL, which you enter when connecting

**Built from**

LearnUpon's documentation, read 23 October 2026[docs.learnupon.com](https://docs.learnupon.com/api/)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

70 of 70 reads, for up to 1 minute; a write clears what it affects

**Shared entities**

4, so ask can line LearnUpon up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in LearnUpon.

150 actions in 42 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **70** read look, never change
- **58** write create and update
- **22** destructive wait for a confirmation

1. ### Live learning
   22
   9 read · 10 write · 3 destructive
   List custom session data definitions · Create a Live Learning event · List a learner's sessions · Create a Live Learning session series
2. ### Courses
   10
   1 read · 7 write · 2 destructive
   Clone a course · Create a course · List courses · Publish a course
3. ### Users
   7
   4 read · 2 write · 1 destructive
   List users · Create a user · Get a user · Update a user
4. ### Enrollments
   6
   3 read · 2 write · 1 destructive
   Enroll a user on a course · Search enrollments · List an enrollment's modules · Get an enrollment
5. ### Payments
   6
   2 read · 2 write · 2 destructive
   Create a payment · List an order's payments · Capture a payment · Get a payment
6. ### Portals
   6
   2 read · 3 write · 1 destructive
   Create a sub-portal · Generate sub-portal API keys · List sub-portals · List association membership types
7. ### Adjustments
   5
   2 read · 2 write · 1 destructive
   Create an order adjustment · List order adjustments · Get an order adjustment · Update an order adjustment
8. ### Licenses
   5
   2 read · 2 write · 1 destructive
   Create course licenses · List course licenses · Get a course license · Update a course license

**34 more areas · 83 actions**

- Line items **5**
- Orders **5**
- Product prices **5**
- Exams **4**
- Group invite course enrollments **4**
- Group invites **4**
- Groups **4**
- Bulk operations **3**
- Course instructors **3**
- Group courses **3**
- Group managers **3**
- Group memberships **3**
- Learning path enrollments **3**
- Modules **3**
- Products **3**
- Resources **3**
- Subscriptions **3**
- Assignments **2**
- Batch **2**
- Learning paths **2**
- Markcompletes **2**
- Subscription plans **2**
- Audit trails **1**
- Badges **1**
- Certifications **1**
- Customers **1**
- Gift cards **1**
- Leaderboard **1**
- Locations **1**
- Portal invites **1**
- Store credits **1**
- Timezones **1**
- Webinar connections **1**
- Webinars **1**

Top actions

## The LearnUpon API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 26 of LearnUpon's 26 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `learnupon.users.list` List users | List users. | read | `identity.user.list` 474 connectors |
| `learnupon.products.list` List products | List products. | read | `commerce.product.list` 112 connectors |
| `learnupon.orders.list` List orders | List orders. | read | `commerce.order.list` 82 connectors |
| `learnupon.groups.list` List groups | List groups. | read | `identity.group.list` 262 connectors |
| `learnupon.orders.create` Create an order | Create an order. | write | `commerce.order.create` 67 connectors |
| `learnupon.users.create` Create a user | Create a user. | write | `identity.user.create` 262 connectors |
| `learnupon.groups.create` Create a group | Create a group. | write | `identity.group.create` 205 connectors |
| `learnupon.products.get` Get a product | Get a product. | read | `commerce.product.get` 112 connectors |
| `learnupon.users.delete` Delete a user | Delete a user. | destructive | `identity.user.delete` 253 connectors |
| `learnupon.group_memberships.list` List group memberships | List group memberships. | read | `identity.group_member.list` 103 connectors |
| `learnupon.customers.get` Get a customer | Get a customer. | read | `commerce.customer.get` 45 connectors |
| `learnupon.line_items.create` Create an order line item | Create an order line item. | write | `commerce.order_line.create` 9 connectors |

Try it

## Prompts to paste into Claude.

Each one names the LearnUpon actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which LearnUpon orders from the last seven days are still unfulfilled?
   calls `learnupon.orders.list`
2. Write write
   Create an order in LearnUpon. Show me exactly what you will send before you save it.
   calls `learnupon.orders.create`

Governance for LearnUpon

## Destructive actions wait for a yes.

22 LearnUpon actions are destructive. These are all of them:

- Delete a user `learnupon.users.delete`
- Delete a group `learnupon.groups.delete`
- Remove a user from a group `learnupon.group_memberships.delete`
- Delete an order line item `learnupon.line_items.delete`
- Capture a payment `learnupon.payments.capture`
- Void a payment `learnupon.payments.void`
- Delete a course `learnupon.courses.delete`
- Delete a sub-portal `learnupon.portals.delete`
- Delete a course license `learnupon.licenses.delete`
- Unlink a resource from a sub-portal `learnupon.resources.unlink`
- Delete an order adjustment `learnupon.adjustments.delete`
- Delete an enrollment `learnupon.enrollments.delete`
- Remove a course from a group `learnupon.group_courses.delete`
- Delete a group invite `learnupon.group_invites.delete`
- Remove a group manager `learnupon.group_managers.delete`
- Delete a product base price `learnupon.product_prices.delete`
- Remove a course instructor `learnupon.course_instructors.delete`
- Delete a group invite course enrollment `learnupon.group_invite_course_enrollments.delete`
- Remove a module from a course `learnupon.courses.modules.remove`
- Cancel a Live Learning session `learnupon.live_learning.sessions.cancel`
- Cancel a session series `learnupon.live_learning.session_series.cancel`
- Cancel a learner's session registration `learnupon.live_learning.sessions.cancel_registration`

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.

do learnupon.users.delete confirm_policy: **human**

Delete a user?

**intent:** the user asked me to delete a user

run suspended · waiting for a named person · key _learnupon-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "learnupon-agent",
  allowed_actions: ["learnupon.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "learnupon.users.delete", approver: "lead@example.com" },
    { match: "learnupon.groups.delete", approver: "lead@example.com" },
    { match: "learnupon.group_memberships.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to LearnUpon only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What LearnUpon costs on actionlake.

Every LearnUpon action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call LearnUpon 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.

- 1 upstream call per action all 150 LearnUpon actions
- 150 actions page each page of a long list is one call
- 70 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every LearnUpon action.

150 actions by area: the id your agent calls, what it does, and its effect.

**Live learning 22**

- `learnupon.live_learning.custom_session_data_definitions.list` List custom session data definitions read
- `learnupon.live_learning.events.create` Create a Live Learning event write
- `learnupon.live_learning.events.get` Get a Live Learning event read
- `learnupon.live_learning.events.update` Update a Live Learning event write
- `learnupon.live_learning.learner_sessions.list` List a learner's sessions read
- `learnupon.live_learning.session_series.cancel` Cancel a session series destructive
- `learnupon.live_learning.session_series.create` Create a Live Learning session series write
- `learnupon.live_learning.session_series.get` Get a Live Learning session series read
- `learnupon.live_learning.session_series.mark_attendance` Mark session series attendance write
- `learnupon.live_learning.session_series.parts.update` Update parts of a session series write
- `learnupon.live_learning.session_series.search` Search Live Learning session series read
- `learnupon.live_learning.session_series.update` Update a Live Learning session series write
- `learnupon.live_learning.sessions.add_learner` Add a learner to a session write
- `learnupon.live_learning.sessions.attendance.list` List session attendance read
- `learnupon.live_learning.sessions.cancel` Cancel a Live Learning session destructive
- `learnupon.live_learning.sessions.cancel_registration` Cancel a learner's session registration destructive
- `learnupon.live_learning.sessions.create` Create a Live Learning session write
- `learnupon.live_learning.sessions.get` Get a Live Learning session read
- `learnupon.live_learning.sessions.list` List Live Learning sessions read
- `learnupon.live_learning.sessions.mark_attendance` Mark session attendance write
- `learnupon.live_learning.sessions.search` Search Live Learning sessions read
- `learnupon.live_learning.sessions.update` Update a Live Learning session write

**Courses 10**

- `learnupon.courses.certificate.assign` Add a certificate to a course write
- `learnupon.courses.clone` Clone a course write
- `learnupon.courses.create` Create a course write
- `learnupon.courses.delete` Delete a course destructive
- `learnupon.courses.list` List courses read
- `learnupon.courses.membership_prices.set` Set course membership prices write
- `learnupon.courses.modules.add` Add a module to a course write
- `learnupon.courses.modules.remove` Remove a module from a course destructive
- `learnupon.courses.publish` Publish a course write
- `learnupon.courses.update` Update a course write

**Users 7**

- `learnupon.users.create` Create a user write
- `learnupon.users.custom_data_fields.list` List custom user data fields read
- `learnupon.users.delete` Delete a user destructive
- `learnupon.users.get` Get a user read
- `learnupon.users.list` List users read
- `learnupon.users.search` Search users by email or username read
- `learnupon.users.update` Update a user write

**Enrollments 6**

- `learnupon.enrollments.create` Enroll a user on a course write
- `learnupon.enrollments.delete` Delete an enrollment destructive
- `learnupon.enrollments.get` Get an enrollment read
- `learnupon.enrollments.modules.list` List an enrollment's modules read
- `learnupon.enrollments.search` Search enrollments read
- `learnupon.enrollments.update` Update an enrollment write

**Payments 6**

- `learnupon.payments.capture` Capture a payment destructive
- `learnupon.payments.create` Create a payment write
- `learnupon.payments.get` Get a payment read
- `learnupon.payments.list` List an order's payments read
- `learnupon.payments.update` Update a payment write
- `learnupon.payments.void` Void a payment destructive

**Portals 6**

- `learnupon.portals.create` Create a sub-portal write
- `learnupon.portals.delete` Delete a sub-portal destructive
- `learnupon.portals.generate_keys` Generate sub-portal API keys write
- `learnupon.portals.list` List sub-portals read
- `learnupon.portals.membership_types.list` List association membership types read
- `learnupon.portals.update` Update a sub-portal write

**Adjustments 5**

- `learnupon.adjustments.create` Create an order adjustment write
- `learnupon.adjustments.delete` Delete an order adjustment destructive
- `learnupon.adjustments.get` Get an order adjustment read
- `learnupon.adjustments.list` List order adjustments read
- `learnupon.adjustments.update` Update an order adjustment write

**Licenses 5**

- `learnupon.licenses.create` Create course licenses write
- `learnupon.licenses.delete` Delete a course license destructive
- `learnupon.licenses.get` Get a course license read
- `learnupon.licenses.list` List course licenses read
- `learnupon.licenses.update` Update a course license write

**Line items 5**

- `learnupon.line_items.create` Create an order line item write
- `learnupon.line_items.delete` Delete an order line item destructive
- `learnupon.line_items.get` Get an order line item read
- `learnupon.line_items.list` List order line items read
- `learnupon.line_items.update` Update an order line item write

**Orders 5**

- `learnupon.orders.advance` Advance an order write
- `learnupon.orders.create` Create an order write
- `learnupon.orders.get` Get an order read
- `learnupon.orders.list` List orders read
- `learnupon.orders.update` Update an order write

**Product prices 5**

- `learnupon.product_prices.create` Create a product base price write
- `learnupon.product_prices.delete` Delete a product base price destructive
- `learnupon.product_prices.get` Get a product price read
- `learnupon.product_prices.list` List product prices read
- `learnupon.product_prices.update` Update a product price write

**Exams 4**

- `learnupon.exams.answers.get` Get a learner's exam answers read
- `learnupon.exams.enrollments.list` List exam enrollments read
- `learnupon.exams.get` Get exam settings read
- `learnupon.exams.questions.list` List exam questions read

**Group invite course enrollments 4**

- `learnupon.group_invite_course_enrollments.create` Create a group invite course enrollment write
- `learnupon.group_invite_course_enrollments.delete` Delete a group invite course enrollment destructive
- `learnupon.group_invite_course_enrollments.get` Get a group invite course enrollment read
- `learnupon.group_invite_course_enrollments.list` List group invite course enrollments read

**Group invites 4**

- `learnupon.group_invites.create` Invite users to a group write
- `learnupon.group_invites.delete` Delete a group invite destructive
- `learnupon.group_invites.get` Get a group invite read
- `learnupon.group_invites.list` List group invites read

**Groups 4**

- `learnupon.groups.create` Create a group write
- `learnupon.groups.delete` Delete a group destructive
- `learnupon.groups.list` List groups read
- `learnupon.groups.update` Update a group write

**Bulk operations 3**

- `learnupon.bulk_operations.jobs.get` Get a bulk job read
- `learnupon.bulk_operations.jobs.list` List bulk jobs read
- `learnupon.bulk_operations.submit` Submit a bulk enrollment job write

**Course instructors 3**

- `learnupon.course_instructors.create` Add a course instructor write
- `learnupon.course_instructors.delete` Remove a course instructor destructive
- `learnupon.course_instructors.list` List course instructors read

**Group courses 3**

- `learnupon.group_courses.create` Assign a course to a group write
- `learnupon.group_courses.delete` Remove a course from a group destructive
- `learnupon.group_courses.list` List group courses read

**Group managers 3**

- `learnupon.group_managers.create` Make a user a group manager write
- `learnupon.group_managers.delete` Remove a group manager destructive
- `learnupon.group_managers.list` List group managers read

**Group memberships 3**

- `learnupon.group_memberships.create` Add a user to a group write
- `learnupon.group_memberships.delete` Remove a user from a group destructive
- `learnupon.group_memberships.list` List group memberships read

**Learning path enrollments 3**

- `learnupon.learning_path_enrollments.create` Enroll a user on a learning path write
- `learnupon.learning_path_enrollments.get` Get a learning path enrollment read
- `learnupon.learning_path_enrollments.search` Search learning path enrollments read

**Modules 3**

- `learnupon.modules.clone` Clone a module into a course write
- `learnupon.modules.create` Create a video or audio module write
- `learnupon.modules.list` List modules read

**Products 3**

- `learnupon.products.get` Get a product read
- `learnupon.products.list` List products read
- `learnupon.products.update` Update a product write

**Resources 3**

- `learnupon.resources.link` Link a resource to a sub-portal write
- `learnupon.resources.list` List resources read
- `learnupon.resources.unlink` Unlink a resource from a sub-portal destructive

**Subscriptions 3**

- `learnupon.subscriptions.create` Create a manual subscription write
- `learnupon.subscriptions.list` List a customer's subscriptions read
- `learnupon.subscriptions.update` Update a subscription write

**Assignments 2**

- `learnupon.assignments.answers.get` Get an assignment answer read
- `learnupon.assignments.answers.list` List assignment answers read

**Batch 2**

- `learnupon.batch.upload` Batch upload users from SFTP write
- `learnupon.batch.upload_and_sync` Batch upload and sync users from SFTP write

**Learning paths 2**

- `learnupon.learning_paths.certificate.assign` Add a certificate to a learning path write
- `learnupon.learning_paths.list` List learning paths read

**Markcompletes 2**

- `learnupon.markcompletes.create` Mark an enrollment complete write
- `learnupon.markcompletes.list` List MarkCompletes read

**Subscription plans 2**

- `learnupon.subscription_plans.get` Get a subscription plan read
- `learnupon.subscription_plans.list` List subscription plans read

**Audit trails 1**

- `learnupon.audit_trails.list` List audit trails read

**Badges 1**

- `learnupon.badges.list` List badges read

**Certifications 1**

- `learnupon.certifications.list` List certificates read

**Customers 1**

- `learnupon.customers.get` Get a customer read

**Gift cards 1**

- `learnupon.gift_cards.get` Get a gift card read

**Leaderboard 1**

- `learnupon.leaderboard.list` List leaderboard read

**Locations 1**

- `learnupon.locations.list` List locations read

**Portal invites 1**

- `learnupon.portal_invites.create` Invite a user to the portal write

**Store credits 1**

- `learnupon.store_credits.get` Get a store credit read

**Timezones 1**

- `learnupon.timezones.list` List timezones read

**Webinar connections 1**

- `learnupon.webinar_connections.list` List webinar connections read

**Webinars 1**

- `learnupon.webinars.list` List webinars read

Questions

## The LearnUpon MCP server, answered.

**Is there a LearnUpon MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 150 LearnUpon actions across live learning, courses, users and enrollments, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by LearnUpon.

**What do I need to connect LearnUpon?**

LearnUpon API username (Settings > Integrations > API Keys > Generate New Keys; these are not your login) and LearnUpon API password (key) generated with the API username. Plus your host. The free call account { op: "connections.requirements", service: "learnupon" } lists exactly what to paste.

**Can an AI agent delete or change things in LearnUpon?**

Only if its key allows it, and only with an explicit confirmation. 22 LearnUpon actions are destructive, including delete a user, delete a group and remove a user from a 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 LearnUpon API limit?**

actionlake paces every call to the limits in the LearnUpon service file: 5 calls a second per connection. Repeated reads are answered from cache (70 LearnUpon actions can be), which never reaches LearnUpon.

**What does a LearnUpon action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (150 LearnUpon actions page). Cache hits, searches, dry runs and calls LearnUpon 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 LearnUpon API does it cover?**

The LearnUpon REST API v1 at your LearnUpon instance's API base URL, which you enter when connecting. It is built from LearnUpon's documentation as read on 23 October 2026. 150 actions in 42 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my LearnUpon data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 1 minute, 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 LearnUpon 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.

## More connectors like LearnUpon

Shares the most action names with

- [WorkRamp 9](https://actionlake.com/connectors/workramp)
- [Canvas LMS 9](https://actionlake.com/connectors/canvas-lms)
- [D2L Brightspace 5](https://actionlake.com/connectors/d2l-brightspace)
- [Anthology Blackboard Learn 5](https://actionlake.com/connectors/anthology-blackboard-learn)
- [Docebo 5](https://actionlake.com/connectors/docebo)

Joins with, on shared entities

- [HaloPSA 4](https://actionlake.com/connectors/halopsa)
- [Odoo 4](https://actionlake.com/connectors/odoo)
- [Microsoft Dynamics 365 4](https://actionlake.com/connectors/microsoft-dynamics-365)
- [Lightspeed Restaurant (K-Series) 4](https://actionlake.com/connectors/lightspeed-restaurant-k-series)
- [Salesforce Sales Cloud 3](https://actionlake.com/connectors/salesforce-sales-cloud)
- [ERPNext (Frappe) 3](https://actionlake.com/connectors/erpnext-frappe)

Browse

- [All Learning & education connectors](https://actionlake.com/connectors/category/learning-and-education)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by LearnUpon; the name is the vendor's own. Counts are from the LearnUpon service file, version 1.0.0.

## Give your agent LearnUpon today.

[Connect LearnUpon free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/learnupon
More: https://actionlake.com/llms.txt
