Skip to content

Connect WorkRamp to ChatGPT: Manage Users and Learning Paths

Learn how to connect WorkRamp to ChatGPT using a secure MCP server. Automate learning paths, manage users, and orchestrate SCORM assignments with AI agents.

Yuvraj Muley Yuvraj Muley · · 10 min read
Connect WorkRamp to ChatGPT: Manage Users and Learning Paths

If you need to connect WorkRamp to ChatGPT to automate enterprise learning paths, manage SCORM assignments, or audit compliance certifications, you need a Model Context Protocol (MCP) server. This infrastructure layer acts as the translation layer between ChatGPT's JSON-RPC tool calls and WorkRamp's specific REST architecture. You can either spend weeks writing, hosting, and maintaining this integration yourself, or you can use a managed platform like Truto to dynamically generate a secure, authenticated MCP server URL.

If your team uses Claude, check out our guide on connecting WorkRamp to Claude or explore our broader architectural overview on connecting WorkRamp to AI Agents.

Giving a Large Language Model (LLM) read and write access to an enterprise Learning Management System (LMS) is a complex engineering task. You have to handle dynamic user attributes, SCIM provisioning differences, and complex relational assignments where a "path" or "course" consists of nested modules and SCORM packages. Every time an API version deprecates a pagination method or a custom attribute changes, hardcoded integration layers break.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for WorkRamp, connect it natively to ChatGPT, and execute complex LMS operations using natural language.

Stop writing boilerplate API integration code. Let Truto generate secure, managed MCP servers for your AI agents in seconds. :::

The Engineering Reality of the WorkRamp API

Building a custom MCP server means owning the entire lifecycle of the API integration. While the open MCP standard provides a predictable interface for ChatGPT to discover tools, mapping those tools to WorkRamp's backend is exceptionally painful if you do it from scratch.

If you decide to build a custom MCP server for WorkRamp, here are the specific integration realities you must engineer around:

The "Legacy Mode" Pagination Trap

WorkRamp's API includes a critical parameter called legacy_mode on many of its list endpoints (such as /users/attributes or /guides). For accounts created before November 11, 2025, this parameter defaults to true. When true, the API bypasses standard cursor pagination and returns the entire dataset in a single, massive, non-paginated response.

If you feed a non-paginated list of 15,000 enterprise users or SCORM assignments directly into an LLM tool response, you will instantly blow up ChatGPT's context window and crash the session. Your MCP server must dynamically intercept these calls, enforce legacy_mode=false where applicable, or handle the artificial chunking of massive payloads before returning them to the model.

Custom User Attributes as Dynamic Dictionaries

Unlike standard SaaS platforms where custom fields are appended as flat JSON keys, WorkRamp handles custom attributes as a dynamic dictionary of API names mapped to values. Updating a user's custom attributes (update_a_work_ramp_user_attribute_by_id) requires passing a strictly formatted dictionary object. Date-type attributes will silently fail or corrupt if not passed in strict ISO8601 format (e.g., 2024-12-31). Building static schemas for these endpoints means the LLM will hallucinate field names. Your MCP server must dynamically fetch the available custom attributes and pass them to the LLM as part of the JSON Schema.

Complex State Mutations in Assignments

A "Guide Assignment" or "Path Assignment" in WorkRamp is not a static join table record. Assignments have complex internal state machines. When updating an assignment (update_a_work_ramp_guide_assignment_by_id), providing a completedDate or score explicitly mutates the state to "completed", but omitting them might leave the assignment pending. Furthermore, SCORM assignments can be bulk-created, meaning the payload shape changes entirely depending on whether you are targeting specific user_ids, group_ids, or raw user_emails.

Hand-coding tool schemas to account for all these polymorphic payload variations takes weeks of testing.

How to Generate a WorkRamp MCP Server

Instead of building this infrastructure from scratch, Truto dynamically derives MCP tool definitions from WorkRamp's documentation and resource schemas.

Every MCP server is scoped to a single integrated account (a specific WorkRamp tenant). You generate a unique, cryptographically hashed URL that carries routing and authentication in a single string.

You can create this server in two ways.

Method 1: Via the Truto UI

  1. Log into your Truto dashboard and navigate to Integrated Accounts.
  2. Click on your connected WorkRamp account.
  3. Navigate to the MCP Servers tab.
  4. Click Create MCP Server.
  5. Select your desired configuration (name, allowed methods, tags, and expiry).
  6. Copy the generated MCP server URL (e.g., https://api.truto.one/mcp/a1b2c3d4...).

Method 2: Via the Truto API

For teams dynamically provisioning AI environments, you can generate an MCP server programmatically via a POST request to the Truto API.

curl -X POST https://api.truto.one/integrated-account/$INTEGRATED_ACCOUNT_ID/mcp \
  -H "Authorization: Bearer $TRUTO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WorkRamp ChatGPT MCP",
    "config": {
      "methods": ["read", "write", "custom"],
      "tags": ["users", "assignments", "scorm"]
    }
  }'

The response contains a url field. This URL is the only configuration ChatGPT needs to discover and execute WorkRamp tools.

Connecting the WorkRamp MCP Server to ChatGPT

Once you have your Truto MCP URL, you can connect it to ChatGPT. There are two primary ways to do this, depending on your deployment model.

Method A: Via the ChatGPT UI (Custom Connectors)

If you are on a ChatGPT Pro, Plus, Business, Enterprise, or Education account, you can add remote MCP servers directly via the UI.

  1. In ChatGPT, navigate to Settings -> Apps -> Advanced settings.
  2. Toggle Developer mode on.
  3. Under MCP servers / Custom connectors, click to add a new server.
  4. Name: Enter a recognizable label (e.g., "WorkRamp LMS").
  5. Server URL: Paste the Truto MCP URL.
  6. Click Save.

ChatGPT will immediately connect, perform an initialization handshake, and list the available WorkRamp tools.

Method B: Via Manual Config File (SSE Transport)

If you are running a local agent, Cursor, or a custom ChatGPT deployment that relies on a configuration file, you can connect using the standard Server-Sent Events (SSE) transport adapter.

Add the following to your MCP configuration file (e.g., mcp-servers.json):

{
  "mcpServers": {
    "workramp_mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "--url",
        "https://api.truto.one/mcp/YOUR_TRUTO_TOKEN"
      ]
    }
  }
}

Security and Access Control

Handing an LLM full access to an enterprise LMS is a massive security risk. Truto provides strict, server-side configuration options to restrict what ChatGPT can do.

When creating your MCP server (via UI or API), you can enforce the following constraints:

  • Method Filtering (config.methods): Restrict operations by category. Pass ["read"] to allow only get and list methods, preventing the LLM from creating or deleting users. Pass ["write"] or ["custom"] for advanced workflows.
  • Tag Filtering (config.tags): Group tools by domain. Pass ["certifications"] to restrict the server to certification readouts, hiding all administrative user management tools.
  • Expiration (expires_at): Set an ISO8601 datetime. Once the timestamp passes, Truto automatically schedules a cleanup alarm, purging the server and its tokens from the edge KV storage.
  • Double Authentication (require_api_token_auth): Enable this to require callers to pass a valid Truto API token in the Authorization header. This ensures that even if the MCP URL leaks, it cannot be used without an active API credential.

Rate Limits and Upstream Constraints

When orchestrating AI agents against WorkRamp, you must architect for rate limits. WorkRamp enforces strict concurrency and request limits on their API.

Truto does not retry, throttle, or apply backoff on rate limit errors. When the WorkRamp API returns an HTTP 429 Too Many Requests, Truto passes that error directly back to the caller (ChatGPT).

Truto normalizes the upstream rate limit information into standardized HTTP headers per the IETF specification:

  • ratelimit-limit: The total requests allowed in the current window.
  • ratelimit-remaining: The number of requests left.
  • ratelimit-reset: The time at which the quota resets.

Your AI application or framework is entirely responsible for reading these headers, implementing backoff logic, and retrying the tool execution.

WorkRamp Hero Tools for ChatGPT

Truto exposes dozens of WorkRamp tools. Below are 6 of the most powerful "hero tools" to expose to ChatGPT for LMS orchestration.

list_all_work_ramp_users

This tool retrieves enterprise users with optional filtering by email, name, or custom attributes. It returns core data including id, admin status, and certifications.

Usage Note: This is the critical prerequisite tool for almost all assignment operations, as you must resolve an employee's email or name to their WorkRamp user_id before assigning courses.

"Find the WorkRamp user ID for jane.doe@company.com and check if she is listed as an admin."

update_a_work_ramp_user_attribute_by_id

Allows the LLM to set or update custom user attributes for a WorkRamp user.

Usage Note: The payload must be a dictionary mapping the attribute API names to their new values. Ensure the LLM knows the exact API name of the attribute. Date-type attributes must use ISO8601 format (e.g., 2024-12-31).

"Update the custom attribute 'Location' to 'EMEA' and 'Start Date' to '2024-12-01' for user ID 12345."

work_ramp_academy_registrations_by_contact

Lists all training registrations for a specific contact in a WorkRamp academy. It returns completion percentages, scores, grading status, and due dates.

Usage Note: Extremely useful for auditing workflows where the LLM needs to verify if a user has completed mandatory compliance training before granting access to internal systems.

"Pull all academy registrations for contact ID 9876 and tell me which ones are currently overdue or incomplete."

list_all_work_ramp_academy_awarded_certifications

Lists awarded certifications in a WorkRamp academy, supporting filters by start and end datetime (using 10-digit epoch seconds).

Usage Note: Use this tool to generate compliance reports or verify that a user holds the necessary certification before triggering a downstream Slack notification.

"List all certifications awarded in the academy over the last 30 days and extract the user emails who received them."

create_a_work_ramp_path_assignment

Creates a new path assignment by attaching a learning path to a user. Returns the assignment ID, due date, and completion metrics.

Usage Note: Requires the path_id and userId. This is the core action tool for automated onboarding workflows.

"Assign the 'Q4 Security Compliance' path (ID 4455) to user ID 12345 and set the due date for next Friday."

work_ramp_scorm_assignments_bulk_create

Bulk creates SCORM assignments by assigning a SCORM package to multiple groups, users, or emails in a single operation.

Usage Note: At least one array of group_ids, user_ids, or user_emails must be provided along with the scorm_id. This is highly efficient for LLMs executing batch operations.

"Bulk assign the 'Anti-Bribery SCORM' module (ID 9988) to the Engineering Group (ID 55) and the Sales Group (ID 56)."

For the complete tool inventory and granular JSON schema details, view the WorkRamp integration page.

Workflows in Action

Connecting tools is just the first step. Here is how ChatGPT utilizes these tools in sequence to execute complex WorkRamp automation.

Workflow 1: Automated New Hire LMS Provisioning

When HR signals a new hire in Slack, an IT admin can ask ChatGPT to provision the user in WorkRamp and assign their onboarding paths.

"We just hired Alex Chen (alex.chen@company.com). Create a WorkRamp user for him, set his 'Department' attribute to 'Engineering', and assign him the 'Engineering Onboarding' path (ID 302)."

Execution Steps:

  1. create_a_work_ramp_user: ChatGPT calls this tool, passing email: alex.chen@company.com and name: Alex Chen. The tool returns the newly created user_id.
  2. update_a_work_ramp_user_attribute_by_id: ChatGPT takes the new user_id and passes a dictionary payload {"Department": "Engineering"} to update the custom attribute.
  3. create_a_work_ramp_path_assignment: Finally, ChatGPT uses the user_id and path_id: 302 to assign the onboarding path.

Result: The user is created, categorized, and enrolled in seconds, and ChatGPT responds with the assignment confirmation ID.

sequenceDiagram
    participant Admin as IT Admin
    participant Chat as ChatGPT
    participant Truto as Truto MCP
    participant API as WorkRamp API

    Admin->>Chat: "Create user Alex Chen and assign onboarding..."
    Chat->>Truto: call create_a_work_ramp_user
    Truto->>API: POST /users
    API-->>Truto: user_id: 8871
    Truto-->>Chat: user_id: 8871
    
    Chat->>Truto: call update_a_work_ramp_user_attribute_by_id
    Truto->>API: PUT /users/8871/attributes
    API-->>Truto: success
    Truto-->>Chat: success
    
    Chat->>Truto: call create_a_work_ramp_path_assignment
    Truto->>API: POST /path_assignments (userId: 8871, path_id: 302)
    API-->>Truto: assignment_id: 9912
    Truto-->>Chat: assignment_id: 9912
    Chat-->>Admin: "Alex Chen created and enrolled. Assignment ID: 9912."

Workflow 2: Auditing Expired Certifications

Compliance officers can use ChatGPT to instantly query certification statuses and trigger re-enrollments for expired personnel.

"Audit the 'Annual Data Privacy' academy (ID 40). Find any users whose certifications have expired in the last 60 days and bulk assign them the 'Data Privacy Refresher SCORM' (ID 80)."

Execution Steps:

  1. list_all_work_ramp_academy_awarded_certifications: ChatGPT calculates the epoch timestamps for the last 60 days, calls the tool for Academy ID 40, and retrieves the list of users.
  2. Logic Execution: ChatGPT parses the JSON response, filtering for objects where the certification status indicates expiration, and extracts the user_emails.
  3. work_ramp_scorm_assignments_bulk_create: ChatGPT takes the array of extracted emails and calls the bulk SCORM assignment tool with scorm_id: 80.

Result: ChatGPT provides a summary response listing exactly which employees were identified as expired and confirms their re-enrollment in the refresher course.

flowchart TD
    A["ChatGPT receives audit prompt"] --> B["Call list_all_work_ramp_academy_awarded_certifications<br>(Academy ID 40)"]
    B --> C["Parse JSON array for expired records"]
    C --> D["Extract user_emails from expired objects"]
    D --> E["Call work_ramp_scorm_assignments_bulk_create<br>(SCORM ID 80, user_emails)"]
    E --> F["Return summary to user"]

Moving from Prototypes to Production

Connecting ChatGPT to WorkRamp natively using MCP eliminates the need to build intermediate orchestration layers, message queues, or custom REST proxies. By relying on Truto's auto-generated, documentation-driven tools, your AI agents always have access to the most up-to-date WorkRamp schemas.

If you build it yourself, you own the schema drift, the custom attribute mapping, and the pagination logic. If you use Truto, you deploy a secure, filtered MCP server via a single API call and focus purely on agent logic.

Stop managing LMS integration boilerplate. Let Truto handle the infrastructure.

Ready to give your AI agents secure access to WorkRamp? Talk to us today. :::

FAQ

How do I connect WorkRamp to ChatGPT?
You can connect WorkRamp to ChatGPT by generating an MCP (Model Context Protocol) server URL using an integration platform like Truto. Paste this URL into ChatGPT's Developer settings under 'Custom connectors' to instantly grant the AI access to WorkRamp tools.
Does Truto automatically handle WorkRamp API rate limits?
No, Truto passes upstream HTTP 429 rate limit errors directly to the caller. Truto normalizes the rate limit information into standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset), and your LLM framework is responsible for implementing retry and backoff logic.
Can I restrict ChatGPT from deleting WorkRamp users?
Yes. When configuring your WorkRamp MCP server in Truto, you can use method filtering (e.g., config.methods: ['read']) to ensure ChatGPT only has access to safe 'get' and 'list' operations, blocking 'delete' and 'create' operations.
How does the MCP server handle WorkRamp's custom user attributes?
Truto dynamically parses WorkRamp's documentation to generate the JSON schemas for custom attributes. ChatGPT receives these as a required dictionary object, ensuring it maps values correctly to the specific API names of the custom fields.

More from our Blog