Skip to content

Connect WorkRamp to Claude: Sync Academy and Certification Data

A complete engineering guide to connecting WorkRamp to Claude via MCP. Automate user provisioning, learning paths, and certification audits with AI agents.

Riya Sethi Riya Sethi · · 10 min read
Connect WorkRamp to Claude: Sync Academy and Certification Data

If you need to connect WorkRamp to Claude to automate user provisioning, audit learning path enrollments, or oversee enterprise certification compliance, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's natural language tool calls and WorkRamp's REST and SCIM APIs. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.

If your team uses ChatGPT, check out our guide on /connect-workramp-to-chatgpt-manage-users-and-learning-paths/ or explore our broader architectural overview on /connect-workramp-to-ai-agents-automate-assignments-and-folders/.

Giving a Large Language Model (LLM) read and write access to an enterprise Learning Management System (LMS) like WorkRamp is an engineering challenge. You are dealing with highly sensitive personnel data, complex hierarchies (Academies, Paths, Certifications, Guides), and distinct provisioning models (SCIM vs. Academy Contacts). Every time you need to expose a new WorkRamp feature to your AI agent, you have to map the JSON schema, write the MCP tool definition, and manage the deployment.

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

The Engineering Reality of the WorkRamp API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against specialized B2B APIs is painful. WorkRamp is built to handle enterprise-scale training, onboarding, and revenue enablement. Its API reflects that exact domain complexity.

If you decide to build a custom WorkRamp MCP server from scratch, here are the specific integration challenges your engineering team will face:

The "Legacy Mode" Pagination Trap WorkRamp's API includes a critical quirk regarding pagination. For several endpoints (like list_all_work_ramp_users_attributes and list_all_work_ramp_guides), a parameter called legacy_mode defaults to true for accounts created before November 11, 2025. When this mode is active, the API bypasses standard pagination and returns the entire dataset in a single, massive response. If you pass a raw response of 5,000 users into an LLM's context window, you will immediately trigger token limits and crash the agent. Your MCP server must enforce strict pagination controls, explicitly disable legacy mode where supported, or handle chunking before passing data back to the LLM.

SCIM Users vs. Academy Contacts WorkRamp separates internal enterprise users from external Academy contacts. Provisioning an internal employee requires interacting with the SCIM endpoints (create_a_work_ramp_scim_user), which involve a heavily nested JSON schema defining name, emails, active status, and manager relationships. Conversely, inviting a customer to an external training portal uses the Academy Contacts endpoints. An LLM has no inherent knowledge of this separation. Your MCP tools must be named and described perfectly so the model knows which provisioning pipeline to use based on the user's domain or role.

Handling Rate Limits and Backoff Like any enterprise platform, WorkRamp enforces strict rate limiting. When connecting AI agents, it is crucial to understand that Truto does not retry, throttle, or apply backoff on rate limit errors. When the WorkRamp API returns an HTTP 429 Too Many Requests error, Truto passes that exact error back to the caller.

However, Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. This means the MCP client (Claude Desktop, or your LangGraph orchestrator) receives predictable headers regardless of how WorkRamp natively formats them. It is strictly the responsibility of the calling agent to read the ratelimit-reset header and implement its own retry logic.

How to Generate a WorkRamp MCP Server

Instead of writing boilerplate TypeScript to handle WorkRamp's SCIM schemas and OAuth lifecycles, you can use Truto to generate a fully managed MCP server. Truto dynamically derives MCP tools directly from WorkRamp's API documentation and your specific configuration.

You can create this server either through the Truto UI or programmatically via the API.

Method 1: Via the Truto UI

This is the fastest path for administrators configuring a connection for local development or internal use.

  1. Log into your Truto dashboard and navigate to the Integrated Accounts page.
  2. Select your connected WorkRamp integration.
  3. Click the MCP Servers tab.
  4. Click Create MCP Server.
  5. Select your desired configuration (e.g., name the server "WorkRamp Compliance Agent", and filter for read and write methods).
  6. Click Save and copy the generated MCP server URL (it will look like https://api.truto.one/mcp/a1b2c3d4e5f6...).

Method 2: Via the Truto API

For DevOps teams automating the deployment of AI infrastructure, you can generate MCP servers programmatically. This endpoint verifies that the WorkRamp integration has available tools, generates a secure token, and returns a ready-to-use URL.

Make a POST request to /integrated-account/:id/mcp with your desired configuration:

curl -X POST https://api.truto.one/integrated-account/YOUR_WORKRAMP_ACCOUNT_ID/mcp \
  -H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WorkRamp LMS Agent",
    "config": {
      "methods": ["read", "write"],
      "tags": ["users", "certifications", "academy"]
    },
    "expires_at": "2026-12-31T23:59:59Z"
  }'

The API returns a secure, self-contained MCP server URL:

{
  "id": "mcp_8a9b0c1d",
  "name": "WorkRamp LMS Agent",
  "config": {
    "methods": ["read", "write"],
    "tags": ["users", "certifications", "academy"]
  },
  "expires_at": "2026-12-31T23:59:59.000Z",
  "url": "https://api.truto.one/mcp/7f8e9d0c1b2a3f4e5d6c7b8a9f0e1d2c"
}

This URL encodes the specific WorkRamp tenant and the authentication layer. You do not need to pass WorkRamp API keys to Claude - the Truto URL handles the proxying automatically.

How to Connect the MCP Server to Claude

Once you have your Truto MCP URL, you can connect it to Claude in under a minute.

Method A: Via the Claude UI (Desktop/Web)

If you are using Claude's standard interface (or ChatGPT with Developer Mode enabled), adding the connector is purely UI-driven.

  1. Open Claude and navigate to Settings -> Integrations -> Add MCP Server. (Note: For ChatGPT, navigate to Settings -> Apps -> Advanced settings -> Enable Developer mode -> Add custom connector).
  2. Enter a recognizable name (e.g., "WorkRamp (Truto)").
  3. Paste the Truto MCP URL into the connection field.
  4. Click Add.

Claude will immediately perform a handshake with the server, request the tools/list endpoint, and populate the agent's context with all available WorkRamp operations.

Method B: Via Manual Config File (Claude Desktop)

For developers running custom agents or configuring Claude Desktop directly, you can modify the claude_desktop_config.json file. Truto provides an NPM package (@modelcontextprotocol/server-sse) that bridges Truto's Server-Sent Events (SSE) transport to Claude's standard input/output.

Open your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the WorkRamp server definition:

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

Restart Claude Desktop. The application will boot, execute the npx command, and establish a persistent connection to the WorkRamp MCP server.

Hero Tools for WorkRamp Automation

Truto exposes dozens of WorkRamp endpoints as LLM-ready tools. Here are the highest-leverage operations for building LMS automations.

List All Enterprise Users (list_all_work_ramp_users)

This tool retrieves internal WorkRamp enterprise users, returning their core identity, admin status, and certification history. It includes optional filtering by email, name, or custom attributes.

"Find the WorkRamp user record for sarah.connor@example.com and tell me if she has any direct reports listed in the system."

Create a SCIM User (create_a_work_ramp_scim_user)

Provisions a new internal employee in WorkRamp using the standard SCIM protocol schema. This is essential for building automated HR onboarding pipelines.

"Provision a new WorkRamp SCIM user for john.doe@example.com. Set his active status to true and map his manager details to jane.smith@example.com."

List Academy Path Enrollments (work_ramp_academy_path_enrollments_by_contact)

Retrieves all learning path enrollments for a specific external contact in a WorkRamp Academy. It returns the progress percentage, completion status, due dates, and time spent.

"Pull the academy path enrollments for contact ID 8472. Tell me which paths they are currently enrolled in and if any are past their due_at date."

List Awarded Certifications (work_ramp_academy_awarded_certifications_by_contact)

Queries the system to find all certifications successfully awarded to a specific user within a WorkRamp Academy. This is critical for auditing compliance and skill mapping.

"Check the certification history for contact ID 9921 in Academy ID 'partner-enablement'. List the display titles of every certification they have been awarded."

Update Academy Registration (update_a_work_ramp_academy_registration_by_id)

Allows the agent to modify a user's registration for a specific training module. This is typically used to administratively mark a module as complete and push a final score.

"Update academy registration ID 'reg_445' for the compliance training. Mark is_completed as true and set the final score to 95."

Assign Certifications (work_ramp_academy_certifications_assign)

Invites contacts to a WorkRamp certification by passing their emails and an optional due date. This enables automated remediation workflows when an agent detects an expired certificate.

"Assign the 'Q3 Security Awareness' certification to michael.scott@example.com in the internal academy. Set the due date for 14 days from today."

To view the complete inventory of available tools, query parameters, and JSON schemas, visit the WorkRamp integration page.

Workflows in Action

MCP servers transform LLMs from passive chat interfaces into active system administrators. Here is how a Claude agent uses the tools above to execute real-world LMS operations.

Scenario 1: Employee Onboarding & Compliance Sync

When a new employee joins, IT needs them provisioned in the LMS and immediately enrolled in mandatory security compliance paths.

User Prompt: "We just hired a new engineer, David. His email is david.lee@example.com. Provision a WorkRamp SCIM user for him, then check the 'Engineering Bootcamp' academy path and enroll him if he isn't already."

sequenceDiagram
    participant User as User
    participant Claude as Claude
    participant MCP as Truto MCP Server
    participant WorkRamp as WorkRamp API

    User->>Claude: "Provision David and enroll in Engineering Bootcamp"
    Claude->>MCP: Call create_a_work_ramp_scim_user (email: david.lee@example.com)
    MCP->>WorkRamp: POST /scim/v2/Users
    WorkRamp-->>MCP: Returns SCIM User ID
    MCP-->>Claude: Tool result (Success, ID: scim_789)
    
    Claude->>MCP: Call list_all_work_ramp_academy_paths (search: Engineering Bootcamp)
    MCP->>WorkRamp: GET /academies/{id}/paths
    WorkRamp-->>MCP: Returns Path ID
    MCP-->>Claude: Tool result (Path ID: path_101)
    
    Claude->>MCP: Call work_ramp_academy_paths_assign (path_id, emails)
    MCP->>WorkRamp: POST /academies/{id}/paths/{path_id}/assign
    WorkRamp-->>MCP: Returns 200 OK
    MCP-->>Claude: Tool result (Assignment created)
    Claude->>User: "David has been provisioned and assigned the Engineering Bootcamp path."

Execution Steps:

  1. Claude calls create_a_work_ramp_scim_user to provision David, passing his email and establishing the base SCIM record.
  2. The agent calls list_all_work_ramp_academy_paths to search the Academy for the "Engineering Bootcamp" path and retrieve its ID.
  3. Claude calls work_ramp_academy_paths_assign to invite David to the path based on the retrieved IDs.
  4. Claude summarizes the successful provisioning and enrollment for the user.

Scenario 2: Certification Audit and Remediation

Compliance teams need to routinely verify that partners or employees possess active certifications, and enforce remediation if they do not.

User Prompt: "Audit the account for contact ID 5543 in the partner academy. Check if they have the 'Certified Implementer' certification. If they don't have it, or if it has expired, assign the certification to them immediately with a due date of next Friday."

sequenceDiagram
    participant User as User
    participant Claude as Claude
    participant MCP as Truto MCP Server
    participant WorkRamp as WorkRamp API

    User->>Claude: "Audit contact 5543 for 'Certified Implementer'"
    Claude->>MCP: Call work_ramp_academy_awarded_certifications_by_contact (contact_id: 5543)
    MCP->>WorkRamp: GET /academies/{id}/contacts/5543/awarded_certifications
    WorkRamp-->>MCP: Returns [] (Empty/Missing)
    MCP-->>Claude: Tool result (No matching certifications)
    
    Claude->>MCP: Call list_all_work_ramp_academy_certifications
    MCP->>WorkRamp: GET /academies/{id}/certifications
    WorkRamp-->>MCP: Returns Certification ID
    MCP-->>Claude: Tool result (Cert ID: cert_999)
    
    Claude->>MCP: Call work_ramp_academy_certifications_assign (cert_id, contact_id, due_date)
    MCP->>WorkRamp: POST /academies/{id}/certifications/{cert_id}/assign
    WorkRamp-->>MCP: Returns Assignment Status
    MCP-->>Claude: Tool result (Assigned successfully)
    Claude->>User: "The contact was missing the certification. I have assigned it to them due next Friday."

Execution Steps:

  1. Claude invokes work_ramp_academy_awarded_certifications_by_contact to pull the user's historical compliance record.
  2. Upon seeing the certification is missing, Claude queries list_all_work_ramp_academy_certifications to find the system ID for "Certified Implementer".
  3. The agent calculates next Friday's date in ISO8601 format.
  4. Claude executes work_ramp_academy_certifications_assign to mandate the training for the user.

Security and Access Control

Giving an LLM access to your enterprise LMS requires strict governance. By default, an MCP server exposes every documented WorkRamp API endpoint. Truto allows you to clamp down this access at the server generation phase using several configuration flags:

  • Method Filtering (config.methods): Restrict the MCP server by operation type. Passing ["read"] limits the agent strictly to get and list operations, ensuring Claude can audit training records without accidentally deleting a user or altering a score.
  • Tag Filtering (config.tags): Scope access to specific WorkRamp functional areas. Passing ["academy", "certifications"] ensures the LLM can manage external training but cannot interact with internal SCIM provisioning.
  • Double Authentication (require_api_token_auth): By default, the Truto MCP URL acts as a bearer token. For high-security enterprise environments, setting this flag to true forces the MCP client to also pass a valid Truto API token in the Authorization header, preventing unauthorized network access even if the URL leaks.
  • Time-to-Live (expires_at): Generate ephemeral MCP servers for temporary workflows. Once the ISO datetime is reached, Truto automatically destroys the token and schedules a cleanup alarm, completely revoking the LLM's access to WorkRamp.

Unlocking Enterprise LMS Automation

Integrating WorkRamp with Claude transforms how compliance, HR, and enablement teams operate. Instead of clicking through complex LMS interfaces to verify enrollments or provision users, your teams can command the infrastructure using natural language.

By leveraging a managed MCP architecture, you bypass the friction of raw API development. You don't have to write custom JSON schema mappers for SCIM objects, deal with legacy mode pagination issues, or build OAuth token refresh loops. Truto handles the protocol translation, allowing you to focus entirely on designing the AI workflows that keep your workforce trained and compliant.

FAQ

How do I give Claude access to WorkRamp data?
You give Claude access to WorkRamp by deploying a Model Context Protocol (MCP) server that translates Claude's function calls into WorkRamp API requests. Truto auto-generates this MCP server for you, providing a single URL that you can paste into Claude Desktop.
How does Truto handle WorkRamp API rate limits?
Truto does not absorb or automatically retry rate-limited requests. When the WorkRamp API returns an HTTP 429 Too Many Requests error, Truto passes the error back to the MCP client (Claude) and normalizes the rate limit information into standard IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller or orchestrator is responsible for implementing retry and backoff logic.
Can I restrict which WorkRamp data the AI agent can modify?
Yes. When generating the WorkRamp MCP server via Truto, you can pass configuration filters to restrict the server to specific methods (like 'read' only) or specific resource tags, ensuring the LLM cannot perform destructive actions like deleting user records.

More from our Blog