
List all courses in Reach 360 with optional filtering by content type (rise, storyline, microlearning, imported). Supports pagination.
Get details of a specific course in Reach 360 by its ID including title, description, content type, and enrollment URLs.
Enroll a single user in a course in Reach 360. Optionally set a due date. Use listcourses and listusers to find IDs.
Unenroll a user from a course in Reach 360. Use listcourses and listusers to find IDs.
Enroll a group in a course in Reach 360. Use 'everyone' as group_id to enroll all users. Optionally set a due date.
Unenroll a group from a course in Reach 360. Use 'everyone' as group_id to unenroll all users.
Import completion data for a course/user pair into Reach 360. Use to record historical completions with timestamps and optional score.
List a user's favorite courses and learning paths in Reach 360. Use list_users to find user IDs.
List all groups in Reach 360 with optional filtering by name. Returns group details including member URLs.
Get details of a specific group in Reach 360 by its ID including name, description, and member URLs.
Create a new group in Reach 360 with a name and optional description.
Update an existing group in Reach 360. Can update name and/or description. Use list_groups to find group IDs.
Delete a group from Reach 360 by its ID. Use list_groups to find group IDs.
List all members of a specific group in Reach 360. Returns user details for each member.
List all groups that a specific user belongs to in Reach 360.
Add a user to a group in Reach 360. Use listusers and listgroups to find valid IDs.
Remove a user from a group in Reach 360. Use listgroupmembers to find users in a group.
List all pending invitations in Reach 360. Returns invitation details including email, role, and expiration.
Get details of a specific pending invitation in Reach 360 by its ID.
Send an invitation to a user to join your Reach 360 team. Specify email, optional name, role, and groups to assign.
Delete a pending invitation in Reach 360 by its ID. Use list_invitations to find invitation IDs.
List all learning paths in Reach 360. Returns learning path details including title, description, and course count.
Get details of a specific learning path in Reach 360 by its ID including title, description, and courses URL.
List all courses in a specific learning path in Reach 360. Returns course details with position in the path.
Enroll a user in a learning path in Reach 360. Optionally set a due date. Use listlearningpaths and list_users to find IDs.
Unenroll a user from a learning path in Reach 360. Use listlearningpaths and list_users to find IDs.
Enroll a group in a learning path in Reach 360. Use 'everyone' as group_id to enroll all users. Optionally set a due date.
Unenroll a group from a learning path in Reach 360. Use 'everyone' as group_id to unenroll all users.
Get learning report for a specific user in Reach 360. Returns course completion data including status, score, and duration.
Get learner completion report for a specific course in Reach 360. Returns completion status, scores, and duration for all enrolled learners.
Get courses report for a specific group in Reach 360. Returns enrollment and completion statistics for each course.
Get courses report for a learning path in Reach 360. Returns enrollment and completion statistics for each course in the path.
Get learners report for a learning path in Reach 360. Returns completion status and due dates for all enrolled learners.
List all users in Reach 360 with optional filtering by email. Returns user details including role, groups URL, and learner report URL.
Get details of a specific user in Reach 360 by their ID including email, name, role, and associated URLs.
Delete a user from Reach 360. Only learners without SSO or Articulate ID can be deleted. Use list_users to find valid user IDs.
Validate Articulate credentials. Verifies credentials during setup.
List all webhooks in Reach 360. Returns webhook details including target URL, subscribed events, and API version.
Get details of a specific webhook in Reach 360 by its ID including target URL and subscribed events.
Create a webhook in Reach 360 to receive notifications for events like course completion, user creation, or enrollments.
Delete a webhook from Reach 360 by its ID. Use list_webhooks to find webhook IDs.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that gives your agents access to learning data and course management in Articulate Reach 360 via tools. Your agents can invoke these tools to enroll learners in courses, check completion status, retrieve course libraries, pull registration records, and more.
Articulate doesn't offer an MCP server purpose built for Reach 360, but you can use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
list_courses: retrieves the catalog of courses available in Reach 360, including title, duration, and status. Good for agents that need to identify which courses to enroll a learner in or include in a compliance reportget_course: fetches details for a single course by ID, including modules, estimated duration, and completion requirements. Use this when an agent needs to verify course attributes before enrolling a learner or surfacing course info to a usercreate_enrollment: enrolls a learner in a specified course and triggers access and tracking. Call this when an agent detects a qualifying condition in another system, like a new hire event or a certification triggerlist_enrollments: retrieves enrollment records filtered by learner, course, or status. Helpful when an agent needs to check whether a learner is already enrolled before attempting to create a duplicate recordget_registration: fetches the completion status, score, and progress for a specific learner-course pair. Use this when an agent needs to confirm that a learner has met a course requirement before triggering a downstream actionlist_registrations: retrieves all registration records across a course or learner group. Good for workflows that generate compliance summaries or flag learners who haven't completed required training by a deadlineHere's what sets Merge Agent Handler's Reach 360 MCP server apart from a custom build or community alternative:
You can take the following steps:
1. Create or log into your Merge Agent Handler account.
2. Install the Merge CLI by running pipx install merge-api, then run merge configure to link the CLI to your Merge account and merge login to authenticate your session.
3. Register the Agent Handler MCP server with Claude Code by running claude mcp add --transport http agent-handler https://ah-api.merge.dev/mcp, then open Claude Code and run /mcp to confirm agent-handler appears with a connected status.
4. Select agent-handler from the MCP list. This opens a browser window where you select which integrations to authenticate. Choose Articulate Reach 360 and complete the auth flow. Merge stores and manages the credentials going forward.
5. Open a Claude Code session and start querying Reach 360 data directly. The first time you use a Reach 360 tool, a Magic Link may appear to complete connector authentication.
If you want to connect Merge Agent Handler's Articulate Reach 360 MCP with internal or customer-facing agentic products, you can follow the steps in our docs.
Yes, Agent Handler for Employees lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, and other MCP-compatible AI tools to Articulate Reach 360 without bypassing IT governance.
Instead of setting up direct connections with personal credentials that IT can't monitor or revoke, each employee authenticates through Agent Handler and gets individual credentials tied to their identity.
IT also provisions access by role or group via SCIM. An L&D manager, for example, gets Articulate to track course completions and enrollment, Workday to cross-reference employee records, and Google Sheets to report on training progress; while an HR business partner gets Articulate to monitor compliance training status, BambooHR to pull employee and org data, and Slack to notify managers of overdue completions.
Every tool call an employee's AI makes to Articulate Reach 360 is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now