Connect 360learning to Claude: Manage users, groups, and skills
Learn how to build and deploy a managed MCP server to connect 360learning to Claude. Automate LMS user onboarding, group management, and skill tracking.
If your team needs to connect 360learning to Claude to automate employee onboarding, manage learning paths, track skill acquisitions, or orchestrate group permissions, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's LLM function calls and 360learning's REST 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 connecting 360learning to ChatGPT or explore our broader architectural overview on connecting 360learning to AI Agents.
Giving a Large Language Model (LLM) read and write access to an enterprise Learning Management System (LMS) like 360learning requires handling intricate domain hierarchies. You have to navigate the relationship between users, groups, skills, and path sessions while managing strict API rate limits and asynchronous bulk processing jobs. Every time 360learning deprecates a V1 resource or introduces a new external ID mapping schema, you have to update your custom integration code.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for 360learning, connect it natively to Claude Desktop, and execute complex LMS management workflows using natural language.
The Engineering Reality of the 360learning API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover and execute tools, the reality of implementing it against specialized B2B APIs is painful. 360learning is built to manage massive distributed teams, external training catalogs, and complex skill matrices. Its API architecture reflects this scale.
If you decide to build a custom MCP server for 360learning, here are the specific integration challenges you will face:
Asynchronous Bulk Operations and Polling
360learning handles massive data updates - like importing 10,000 user jobs or syncing thousands of group catalogs - using asynchronous bulk endpoints. When you call an endpoint like POST /skills/jobs/bulk, the API does not return a synchronous success. It returns an HTTP 202 Accepted response containing a Location header URL. To know if the operation succeeded, your integration must parse that header, extract the bulk operation ID, and continuously poll the /bulk-operations/{id} endpoint. A standard LLM does not inherently understand this pattern. Your MCP server must expose specific tools to initiate the job and distinct tools to check the job status, while instructing the agent on how to chain them together.
Hierarchical Group Roles and Visibility
In 360learning, permissions are intrinsically tied to Group hierarchies. Adding a user to a group is not a simple boolean flag. You must assign them a specific role (e.g., admin, analyst, coach, learner). Furthermore, removing the learner role from a user in a parent group automatically triggers a cascading deletion down to all public subgroups until it hits a private excluded group. If your AI agent arbitrarily adds or removes roles without understanding this cascade, it can accidentally revoke access to hundreds of courses across an entire organizational tree.
Rate Limits and 429 Handling
360learning enforces specific rate limits depending on the resource. For example, updating native courses might have higher throughput allowances, while updating eLearning standards (SCORM, AICC) is strictly limited to 1 request per second. Factual note on rate limits: Truto does not retry, throttle, or apply backoff on rate limit errors. When 360learning returns an HTTP 429, Truto passes that error directly to the caller. Truto normalizes upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. The AI agent or calling framework is strictly responsible for implementing its own retry and backoff logic when these headers are encountered.
Creating the 360learning MCP Server
Instead of writing custom JSON-RPC middleware, building authentication state machines, and manually mapping 360learning's API documentation into JSON Schema for Claude, you can use Truto to generate a hosted MCP server URL.
Truto derives MCP tools dynamically from the 360learning integration's API resources and documentation records. A tool only appears in the MCP server if it has a corresponding documentation entry, ensuring the LLM receives high-quality descriptions and accurate property schemas. You can generate the server in two ways.
Method 1: Via the Truto UI
- Navigate to the Integrated Accounts page in your Truto dashboard.
- Select your connected 360learning account.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select the desired configuration. For example, you can restrict the server to only
readmethods if you want Claude to function strictly as a reporting assistant. - Copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4...).
Method 2: Via the Truto API
For platform teams looking to automate infrastructure provisioning, you can generate MCP servers programmatically using the Truto REST API.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "360learning Claude Server",
"config": {
"methods": ["read", "write", "custom"]
}
}'The Truto API will validate that the 360learning connection is active, generate a cryptographically secure token, hash it for storage, and return a payload containing your server URL:
{
"id": "abc-123",
"name": "360learning Claude Server",
"config": { "methods": ["read", "write", "custom"] },
"expires_at": null,
"url": "https://api.truto.one/mcp/a1b2c3d4e5f67890"
}Connecting the MCP Server to Claude
Once you have your Truto MCP URL, you can connect it to Claude. Because Truto handles the OAuth token lifecycle and normalizes the 360learning API schema, the URL is entirely self-contained.
Method 1: Via the Claude UI
If you are using Claude's enterprise or team web interfaces, you can add the server directly through the UI settings.
- Open Claude and navigate to Settings.
- Select Integrations (or Connectors depending on your plan tier).
- Click Add MCP Server.
- Provide a descriptive name (e.g., "360learning LMS").
- Paste the Truto MCP URL into the connection field.
- Click Add.
Claude will immediately ping the server's initialize endpoint, verify protocol compatibility, and fetch the available 360learning tools via the tools/list RPC method.
Method 2: Via Manual Config File
If you are using Claude Desktop for local AI agent development, you can register the MCP server by modifying the application's JSON configuration file. Truto provides an NPM package (@modelcontextprotocol/server-sse) that acts as a proxy transport to handle Server-Sent Events (SSE) connections to remote MCP URLs.
Open your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the Truto server configuration under the mcpServers object:
{
"mcpServers": {
"360learning": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/a1b2c3d4e5f67890"
]
}
}
}Restart Claude Desktop. The application will execute the proxy, connect to Truto, and load the 360learning tools.
Hero Tools for 360learning
Truto exposes over 100 specific endpoints from the 360learning API as MCP tools. Below are 7 high-leverage hero tools that transform how AI agents interact with your LMS.
list_all_360_learning_users
Retrieves a paginated list of users in the platform. You can filter this list by email, username, or status to locate specific employees before taking administrative action on their accounts.
"Find the user record for jane.doe@company.com and tell me her current status and primary group ID."
create_a_360_learning_user
Provisions a new invited user in 360learning. If an employee with the provided email previously existed but was deleted, this tool restores their account back to an invited state.
"Onboard john.smith@company.com into the engineering team group as a new user."
360_learning_groups_add_user_role
Assigns a specific RBAC role to a user within a target group. Acceptable roles include admin, analyst, coach, contributor, editor, learner, and user-admin.
"Grant the 'coach' role to Jane Doe in the Sales Enablement group (group ID: 5f9b3b...)."
create_a_360_learning_path_session
Creates a new session for a learning path, defining start and end dates. This is a prerequisite before you can enroll users (via create_a_360_learning_classroom_slot_registration) into structured curriculum delivery.
"Create a new path session for the 'Q3 Compliance Training' path starting next Monday and ending in 30 days."
list_all_360_learning_skills
Retrieves all defined skills in your 360learning platform. This tool allows the AI agent to audit your taxonomy, searching for specific tags or competencies before associating them with jobs or users.
"List the available skills in the platform. Are there any existing skills tagged for 'Cybersecurity' or 'Data Privacy'?"
create_a_360_learning_courses_generate_from_prompt
Triggers 360learning's internal asynchronous course generation engine. You pass a text prompt outlining the course topic, and the API begins building an LMS course in the background, sending an email when complete.
"Generate a new 360learning course from the following prompt: 'A comprehensive guide to handling customer escalations in B2B SaaS support environments.' Assign it to my user ID."
get_single_360_learning_bulk_operation_by_id
Checks the status of a queued bulk operation (e.g., bulk skill updates, bulk enrollment). Because 360learning processes large payloads asynchronously, agents use this tool to poll the API until the job resolves to a success or error state.
"Check the status of bulk operation ID 60a1f2b3... Let me know if the job is still processing or if it encountered errors."
For a complete list of available resources, property schemas, and required parameters, review the Truto 360learning Integration Page.
Workflows in Action
When Claude has direct access to 360learning through Truto, you can orchestrate complex, multi-step administrative workflows using natural language. Here are two examples of how this architecture behaves in production.
Scenario 1: Automated Employee Onboarding & Path Assignment
IT and HR administrators spend hours provisioning new hires in the LMS and ensuring they are assigned the correct compliance training based on their department.
"We just hired Alex Chen as a new software engineer. Create a 360learning user for alex.chen@example.com, add him to the 'Engineering' group as a learner, and enroll him in the mandatory 'Information Security V2' path session."
How the agent executes this:
list_all_360_learning_groups: The agent searches the group directory to find the ID for the "Engineering" group.list_all_360_learning_paths_sessions: The agent searches for the active session ID associated with the "Information Security V2" path.create_a_360_learning_user: The agent provisions Alex's account and retrieves his newly generateduserId.360_learning_groups_add_user_role: The agent assigns Alex'suserIdto the Engineering group with thelearnerrole.create_a_360_learning_classroom_slot_registration: The agent registers Alex into the required path session.
What the user gets back: Claude responds confirming the user was created, listing the specific Group ID and Session ID used, and confirming that the enrollment was successful.
Scenario 2: Async Bulk Operations & Polling
When organizations update their internal job matrices, they often need to bulk-update hundreds of users' job roles and associated skills. This requires navigating 360learning's asynchronous bulk endpoints.
"We need to update the job mappings for our sales team. Push this list of 50 external job IDs to the 360learning bulk jobs update endpoint, and wait to confirm the operation succeeds before proceeding."
sequenceDiagram participant Claude as Claude Desktop participant Truto as Truto MCP Router participant Upstream as 360learning API Claude->>Truto: Call 360_learning_users_jobs_bulk_update Truto->>Upstream: POST /users/jobs/bulk Upstream-->>Truto: HTTP 202 Accepted (Location Header) Truto-->>Claude: Bulk Operation Queued (ID: 8a7b6c) Claude->>Truto: Call get_single_360_learning_bulk_operation_by_id Truto->>Upstream: GET /bulk-operations/8a7b6c Upstream-->>Truto: HTTP 200 (Status: Processing) Truto-->>Claude: Status: Processing Note over Claude, Truto: Agent waits and retries... Claude->>Truto: Call get_single_360_learning_bulk_operation_by_id Truto->>Upstream: GET /bulk-operations/8a7b6c Upstream-->>Truto: HTTP 200 (Status: Completed) Truto-->>Claude: Status: Completed
How the agent executes this:
360_learning_users_jobs_bulk_update: The agent sends the payload. Truto proxies this to 360learning, receives a 202 response, extracts the operation ID from the Location header, and returns it to Claude.get_single_360_learning_bulk_operation_by_id: Claude calls this tool to poll the status. If it returns "processing", the agent autonomously waits.get_single_360_learning_bulk_operation_by_id: Claude polls again until it receives a success confirmation.
What the user gets back: Claude confirms that the bulk job was successfully submitted, tracked, and completed, providing a summary of the operation execution time.
Security and Access Control
Giving AI models access to corporate LMS environments requires strict governance. Truto's MCP architecture enforces security at the infrastructure layer, preventing prompt injection attacks from exfiltrating or destroying learning data.
- Zero Data Retention: Truto's proxy layer never stores the payload data from 360learning. Data flows directly from the integrated account to the MCP client (e.g., Claude) in memory. No LMS training records or user PII touch a database.
- Method Filtering: When generating the MCP server URL, administrators can define a
config.methodsarray (e.g.,["read"]). This filters out write operations at the source. If Claude attempts to delete a course, the MCP router rejects the call before it ever reaches 360learning. - Tag Filtering: Integrations in Truto support conceptual tagging. You can configure an MCP server with
config.tagsset to["users"]or["skills"], restricting the available tools to specific domain areas and ignoring administrative routing resources. - Token Expiration: You can provision temporary server URLs by passing an
expires_attimestamp. Once the expiration is hit, Truto's durable objects automatically purge the server routing logic, rendering the URL inert. - Additional API Authentication: For enterprise environments, administrators can set
require_api_token_auth: true. This forces the MCP client to pass a valid Truto API token in the Authorization header. Without it, possessing the URL alone is insufficient to execute tool calls.
Next Steps for LMS Automation
Integrating AI agents with 360learning unlocks powerful capabilities for HR, L&D, and IT teams. Instead of manually traversing complex LMS interfaces to assign roles, enroll users, or audit skill gaps, your team can orchestrate the entire platform conversationally.
Truto handles the heavy lifting of the MCP architecture. We manage the OAuth lifecycle, map the dynamic schemas, normalize the 360learning bulk polling mechanics, and expose everything as clean, AI-ready tools over a secure JSON-RPC interface.
If you need to connect Claude, ChatGPT, or custom AI agents to 360learning alongside other critical B2B systems like Salesforce, Workday, or ServiceNow, you need a managed integration strategy.
FAQ
- Does Truto automatically retry failed 360learning API requests?
- No. Truto does not retry, throttle, or apply backoff on rate limit errors. If 360learning returns an HTTP 429, Truto passes that error directly to the caller and normalizes upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. Your AI agent or client is responsible for handling retries and backoff.
- Can I restrict Claude to only read data from 360learning?
- Yes. When creating the MCP server via the Truto UI or API, you can pass a configuration object with a methods array set to ['read']. This filters the generated tools so Claude can only execute GET and LIST operations, blocking any destructive actions.
- How do I handle 360learning's asynchronous bulk operations via MCP?
- Many bulk endpoints in 360learning return an HTTP 202 Accepted response with a Location header for polling. The MCP tool will execute the bulk request and return the operation ID. You must prompt Claude to use the get_single_360_learning_bulk_operation_by_id tool to poll the status until the operation completes.
- Do I need to manage 360learning OAuth tokens manually?
- No. Truto acts as the integration platform, handling the OAuth lifecycle, token refreshes, and API authentication. The MCP server URL generated by Truto uses its own secure token to execute API calls against the underlying authenticated integrated account.