← Back to all apps

DataCamp

Educationby DataCamp
Launched Jul 27, 2026 on ChatGPT

Give your AI assistant direct access to DataCamp's full catalog of courses, tutorials, projects, and exercises. Search by keyword, look up any course or exercise by ID, or retrieve summaries on demand—no sign-in required. Authenticate to unlock team admin: manage groups, members, and assignments. Run live reporting on progress, engagement, and adoption to track how learning is landing across your organization.

101ChatGPT Tools
87Claude Tools
DataCampDeveloper
EducationCategory

Use Cases

education

Available Tools

Add Member To Group Assignment

add_member_to_group_assignment
Full Description

Add one or more existing group members to an existing DataCamp group assignment. Takes the assignmentId and the userIds to add. Permissions are enforced upstream: the caller must have permission to modify the target assignment (e.g. group admins, or managers of the assignment's team). Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
assignmentIdinteger

ID of the existing assignment to add members to. The caller must have permission to modify this assignment.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

userIdsarray

IDs of existing group members to add to the assignment. Must reference users already in the group that owns the assignment.

Add Team Member

add_team_member
Full Description

Add one or more existing group members to one or more teams within a DataCamp group. Requires the group's id, the target team IDs, and the user IDs to add. Permissions are enforced upstream: team managers can only add members to teams they manage, while group admins can manage all teams. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

teamIdsarray

IDs of the target teams.

userIdsarray

IDs of existing group members to add. Must reference users already in the group.

Approve Waitlist Entry

approve_waitlist_entry
Full Description

Approve a single pending waitlist entry so that person joins the DataCamp group with the licenses they originally requested. Requires the entry id and the group's groupId. Permissions are enforced upstream — the caller must be allowed to manage the waitlist for the group. If the group is out of licenses or the entry is gone, the upstream error is surfaced verbatim. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
groupIdinteger

Numeric id of the DataCamp group that owns the waitlist entry.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

idinteger

Numeric id of the waitlist entry to approve.

Archive Custom Track

archive_custom_track
Full Description

Archive a custom track in a DataCamp group, hiding it from learners while preserving the record. Use when a track is no longer relevant but should not be permanently deleted. Requires the group's id and the custom track id. Returns only the track's id and its new state ('archived') — fetch the track separately if the full updated record is needed. The operation is idempotent: calling it on an already-archived track returns the same shape without changing anything. Permissions are enforced upstream — the caller must have permission to manage custom tracks in the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
customTrackIdinteger

Id of the custom track to archive.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Archive Group Assignment

archive_group_assignment
Full Description

Archive a single assignment on a DataCamp group: it stops appearing in active/upcoming lists but remains available for historical reporting (queryable with filters.status: "archived"). Requires the assignment's assignmentId and the group's groupId. Admins and group managers can archive any assignment; team managers can archive assignments scoped to teams they manage. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
assignmentIdinteger

Numeric id of the assignment to archive.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Code-along.get By Id

code-along.get_by_id
Full Description

Get a code-along by its ID.

Parameters (1 required)
Required
codeAlongIdnumber

The ID of the code-along to get.

Content.search

content.search
Full Description

Search the DataCamp content catalog. Returns a list of results.

Parameters (2 required, 2 optional)
Required
levelstring

The level of the content the user is looking for.

Options:beginnerintermediateadvanced
querystring

The learning content query the user is looking for. Ask the user to provide more information if the query is vague. It should contain all keywords related to the content in English.

Optional
contentTypearray

The types of content to search for. Here are the available types: courseChapter, tutorial, webinar, code-along. If not provided, all content types will be searched.

technologystring

The technology of the content the user is looking for. Examples: Python, R, SQL, Git, PowerBI, OpenAI, AWS, etc.

Course.get By Id

course.get_by_id
Full Description

Get course details by its ID or slug.

Parameters (1 required)
Required
courseIdOrSlugnumber/string

The ID or slug of the course to get.

Create Custom Track

create_custom_track
Full Description

Create a new custom track for a DataCamp group from previously discovered courses, projects, assessments, chapters, and resources. The track is created in draft state and must be published separately. Requires the group's id, a title, and a non-empty ordered content array; array order determines learner sequence. Standard content uses type (course, project, assessment, or chapter) with contentId (never type: 'resource'). Native catalog resources use type: 'resource' with the catalog search/detail id as resourceId and the canonical resourceType: code-along → code_along, tutorial → tutorial, cheat sheet → cheatsheet, webinar → webinar, podcast → podcast. URL-based external resources created with create_custom_track_external_resource use its returned resourceId and resourceType: 'custom'. Set requiredForCompletion to true or false for each item according to the author's intent. Optionally accepts a description and completion-badge icon and color. Returns the new track with id and URL. Permissions are enforced upstream; the caller must be allowed to author custom tracks for the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required, 3 optional)
Required
contentarray

Ordered list of content items embedded in the track. The order of the array determines the learner sequence — the first item appears first.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

titlestring

Display title of the new custom track.

Optional
badgeIconNamestring

Icon shown on the track completion badge. Must be one of the supported icon identifiers. `datacamp-brand`, `python-brand`, and `r-brand` are technology marks; the rest are generic glyphs. Defaults to `datacamp-brand`.

Options:datacamp-brandpython-brandr-brandbar-chartbookbriefcasebuildingbulbcameraclockcodecompassdatabaseeducationlabflashmoonpeakphonerocketsun
badgeIconStylestring

Background color of the track completion badge, as a 6-digit hex code (e.g. `#03ef62`). Any hex is accepted, but the preferred DataCamp palette is: `#ff6ea9` (pink), `#06bdfc` (blue), `#7933ff` (purple), `#ff931e` (orange), `#ff5400` (red), `#03ef62` (green), `#fcce0d` (yellow), `#e1e1e8` (grey). Defaults to `#03ef62`.

descriptionstring

Free-text description of the track. Defaults to an empty string when omitted.

Create Custom Track External Resource

create_custom_track_external_resource
Full Description

Create a URL-based external resource for a DataCamp group, such as a link to organization documentation, an article, or a video. Use native catalog resources directly instead of creating external-resource copies: code-alongs use code_along, tutorials use tutorial, and cheat sheets use cheatsheet. Requires the group's id, a non-empty title, and a fully formed url; an optional description is shown alongside the title. Returns the created resource. To embed it with create_custom_track or edit_custom_track, use its returned resourceId with resourceType: 'custom'. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required, 1 optional)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

titlestring

Display title shown to learners (must be non-empty).

urlstring

External URL the resource links to (e.g. an internal doc, article, or video). Must be a fully-formed URL including the scheme.

Optional
descriptionstring

Optional free-text description shown alongside the title.

Create Group Assignment

create_group_assignment
Full Description

Create an assignment in a DataCamp group for one of the supported content types (course, custom_course, chapter, xp, project, track, custom_track, assessment, certification, skill_verification). Deadline selection rule: when the request targets named, filtered, or otherwise specific users (userIds), a fixed calendar due date is the only supported option. Do not ask whether the user wants a fixed or rolling deadline; ask only which fixed due date to use. Offer a rolling deadline only for an assignment to the entire group or entire team. A rolling assignment requires a learner-specific rolling period and has a separate global cutoff for adding new assignees. Omit the global due date unless the user requests a different cutoff; it defaults to one year from now. Any explicit cutoff must be strictly later than the current time plus the rolling period, with sufficient processing time. Permissions are enforced upstream: the caller must be a group admin/manager, or a team manager for the target team. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required, 3 optional)
Required
contentobject

Selection of the content to assign. The `type` discriminator determines which fields are required.

dueobject

Due date configuration. When the request identifies specific users and `userIds` is provided, choose `date` without offering a fixed-versus-rolling choice; ask only which fixed calendar due date to use. Use `rolling` only when `userIds` is omitted for an assignment to the entire group or entire team. For `rolling`, provide `numDays` for each learner's deadline after assignment. Omit `dueDate` unless the user requests a different global cutoff for adding new assignees; it defaults to one year from now. An explicit `dueDate` must be strictly later than the current time plus `numDays`, with sufficient processing time.

groupIdinteger

ID of the DataCamp group to create the assignment in.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Optional
personalizedMessagestring

Optional personalized message attached to the assignment. Maximum 500 characters.

teamIdinteger

Optional team ID to scope the assignment to a single team. When set with `userIds`, the assignment is scoped to those users within the team.

userIdsarray

Optional list of specific user IDs to assign to. When combined with `teamId`, restricts to those users within the team. If this field is provided, `due.type` must be `date`. Do not ask the user to choose between fixed and rolling; ask only for the fixed calendar due date. Omitting both `teamId` and `userIds` assigns to every member of the group — prefer specifying one of them unless a group-wide assignment is intended.

Create Invite Link

create_invite_link
Full Description

Create a shareable invite link for a DataCamp group, scoped to one or more email domains. Anyone whose email matches one of the domains can use the link to join the group with the configured license access and team membership. Use this for the "share a link" path; to invite individual people by email, use the dedicated invite-by-email tool instead. Requires the group's id and a non-empty list of domains (e.g. ["example.com"]). Optional: teamIds (numeric ids only — resolve names/slugs to ids first) and per-product access levels learnLicense and datalabLicense. When a license is omitted, the tool picks the highest access level the group has available (enterprise → teams → classroom → basic), falling back to basic. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 3 optional)
Required
domainsarray

Email domains the invite link is restricted to. Anyone whose email matches one of these domains can use the link to join the group. Use just the domain (e.g. `example.com`), not full email addresses.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Optional
datalabLicensestring

DataLab access level granted to people who use the link. When omitted, defaults to the highest available access level for the group (enterprise → teams → classroom → basic), falling back to basic if nothing is available.

Options:basicclassroomenterpriseteams
learnLicensestring

Learn access level granted to people who use the link. When omitted, defaults to the highest available access level for the group (enterprise → teams → classroom → basic), falling back to basic if nothing is available.

Options:basicclassroomenterpriseteams
teamIdsarray

Team ids to add joiners to.

Create Team

create_team
Full Description

Create a new team inside a DataCamp group. Requires the caller to have admin or manager permissions on the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 1 optional)
Required
groupIdinteger

The ID of the DataCamp group to create the team in.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

namestring

The display name for the new team. Must be unique within the group.

Optional
hexcodestring

Optional team color as a 6-digit hex code (e.g. `#A8D8EA`). If omitted, a color is picked at random from a preset palette. Guideline (not enforced): prefer softer, pastel-leaning colors (higher lightness, lower saturation) over vivid or neon tones.

Create Team Assignment

create_team_assignment
Full Description

Create an assignment for a single team within a DataCamp group, for one of the supported content types (course, custom_course, chapter, xp, project, track, custom_track, assessment, certification, skill_verification). The assignment is scoped to the given team, so every team member receives it unless userIds narrows it to specific members. Deadline selection rule: when the request targets named, filtered, or otherwise specific users (userIds), a fixed calendar due date is the only supported option. Do not ask whether the user wants a fixed or rolling deadline; ask only which fixed due date to use. Offer a rolling deadline only for an assignment to the entire team. A rolling assignment requires a learner-specific rolling period and has a separate global cutoff for adding new assignees. Omit the global due date unless the user requests a different cutoff; it defaults to one year from now. Any explicit cutoff must be strictly later than the current time plus the rolling period, with sufficient processing time. Permissions are enforced upstream: the caller must be a group admin/manager, or a manager of the target team. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (5 required, 2 optional)
Required
contentobject

Selection of the content to assign. The `type` discriminator determines which fields are required.

dueobject

Due date configuration. When the request identifies specific users and `userIds` is provided, choose `date` without offering a fixed-versus-rolling choice; ask only which fixed calendar due date to use. Use `rolling` only when `userIds` is omitted for an assignment to the entire team. For `rolling`, provide `numDays` for each learner's deadline after assignment. Omit `dueDate` unless the user requests a different global cutoff for adding new assignees; it defaults to one year from now. An explicit `dueDate` must be strictly later than the current time plus `numDays`, with sufficient processing time.

groupIdinteger

ID of the DataCamp group that the team belongs to.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

teamIdinteger

ID of the team to assign the content to. Every member of the team receives the assignment unless `userIds` narrows it to specific members.

Optional
personalizedMessagestring

Optional personalized message attached to the assignment. Maximum 500 characters.

userIdsarray

Optional list of specific user IDs within the team to assign to. If this field is provided, `due.type` must be `date`. Do not ask the user to choose between fixed and rolling; ask only for the fixed calendar due date. Omit to assign to every member of the team.

Delete Group Assignment

delete_group_assignment
Full Description

Permanently delete a single assignment from a DataCamp group. This is destructive and IRREVERSIBLE — the assignment record is removed entirely along with any historical reporting tied to it. Confirm with the user before invoking. Prefer archiving for non-destructive removal: archived assignments stop appearing as active but remain available for historical reporting and can be restored later. Requires the assignment's assignmentId and the group's groupId. Admins and group managers can delete any assignment; team managers can delete assignments scoped to teams they manage. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
assignmentIdinteger

Numeric id of the assignment to permanently delete. **Irreversible** — prefer archiving the assignment for soft-removal.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Delete Team

delete_team
Full Description

Delete a team from a DataCamp group. Requires the team's id. Members of the team are NOT removed from the group — they remain as group members, just no longer assigned to this team. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

teamIdinteger

The ID of the team to delete.

Deny Waitlist Entry

deny_waitlist_entry
Full Description

Deny a single pending waitlist entry on a DataCamp group: the person stays out of the group and their entry is removed from the waitlist. This is NOT how you grant access — denying means rejecting. The user would have to request to join again if they want back on the list. Requires the entry id and the group's groupId. Permissions are enforced upstream — only group admins can manage the waitlist. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
groupIdinteger

Numeric id of the DataCamp group the entry belongs to.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

idinteger

Numeric id of the waitlist entry to deny.

Edit Custom Track

edit_custom_track
Full Description

Edit an existing custom track in a DataCamp group. Supply any subset of title, description, content, badgeIconName, and badgeIconStyle; omitted fields are unchanged, and at least one must be supplied. Passing content fully replaces the list: first call get_custom_track, copy the complete content list, preserve every item that should remain, and edit that copy. For existing resources, use the returned resourceId with resourceType, never contentId. Native catalog mappings are code-along → code_along, tutorial → tutorial, and cheat sheet → cheatsheet; catalog search/detail ids become resourceId. Set requiredForCompletion to true or false according to the author's intent. After every attempted edit, call get_custom_track to verify the final list because a failed edit may have applied only part of the replacement. Editing a published track does not move it back to draft. Returns the updated track. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 5 optional)
Required
customTrackIdinteger

Id of the custom track to edit.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Optional
badgeIconNamestring

Icon shown on the track completion badge. Must be one of the supported icon identifiers. `datacamp-brand`, `python-brand`, and `r-brand` are technology marks; the rest are generic glyphs. Omit to leave the badge icon unchanged.

Options:datacamp-brandpython-brandr-brandbar-chartbookbriefcasebuildingbulbcameraclockcodecompassdatabaseeducationlabflashmoonpeakphonerocketsun
badgeIconStylestring

Background color of the track completion badge, as a 6-digit hex code (e.g. `#03ef62`). Any hex is accepted, but the preferred DataCamp palette is: `#ff6ea9` (pink), `#06bdfc` (blue), `#7933ff` (purple), `#ff931e` (orange), `#ff5400` (red), `#03ef62` (green), `#fcce0d` (yellow), `#e1e1e8` (grey). Omit to leave the badge color unchanged.

contentarray

Full replacement content list for the track. When supplied, this array **fully replaces** the existing content: omitted items are removed, and array order determines learner sequence. Before editing, call `get_custom_track`, copy the complete list, preserve every existing item that should remain, and modify that copy. For existing resources, pass `resourceId` with `resourceType`, never `contentId`. After every attempted edit, call `get_custom_track` again to verify the final list because a failed edit may have applied only part of the replacement. Omit this field to leave content unchanged.

descriptionstring

New free-text description for the track. Pass an empty string to clear the description; omit to leave it unchanged.

titlestring

New display title for the track. Must be non-empty when supplied. Omit to leave the title unchanged.

Exercise.get By Id

exercise.get_by_id
Full Description

Get an exercise by its chapter and course IDs.

Parameters (3 required)
Required
chapterIdnumber

The ID of the chapter to get.

courseIdnumber

The ID of the course to get.

exerciseNumbernumber

The number (1-based) of the exercise to get.

Get Blog

get_blog
Full Description

Get a DataCamp blog post by its slug, including its full text content, authors, category tags, and reading time.

Parameters (1 required)
Required
blogIdstring

The CMS slug of the blog post to get. Legacy numeric CMS IDs are also accepted.

Get Certification

get_certification
Full Description

Get a single DataCamp certification by its slug (e.g. data-scientist-associate) or numeric certificationId. Returns the catalog record — name, link, level, XP, and the caller's userCertification record when they have passed. Scoped upstream to the public catalog plus any restricted certifications the caller's organisations grant them access to. Requires authentication.

Parameters (0 required, 2 optional)
Optional
certificationIdinteger

Numeric id of the certification. Provide either `slug` or `certificationId`.

slugstring

URL-friendly identifier of the certification (e.g. `data-scientist-associate`). Provide either `slug` or `certificationId`.

Get Cheat Sheet

get_cheat_sheet
Full Description

Get a DataCamp cheat sheet by its slug, including its full text content, downloadable reference image, authors, and category tags.

Parameters (1 required)
Required
cheatSheetIdstring

The CMS slug of the cheat sheet to get. Legacy numeric CMS IDs are also accepted.

Get Code Along

get_code_along
Full Description

Get a code-along by its slug.

Parameters (1 required)
Required
codeAlongIdstring

The CMS slug of the code-along to get. Legacy numeric CMS IDs are also accepted.

Get Competition

get_competition
Full Description

Get a single DataCamp competition by its slug (e.g. predicting-credit-card-approvals). Returns the full brief — background, challenge, judging criteria, prizes, rules, get-started steps, hero image, and winners. When the caller is authenticated, the competition additionally carries their submission status under userContext.

Parameters (1 required)
Required
slugstring

Stable identifier of the competition (e.g. `predicting-credit-card-approvals`).

Get Course

get_course
Full Description

Get course details by its ID or slug. When the caller is authenticated, also returns private courses the user has access to (e.g. B2B custom courses); without authentication only public courses are available.

Parameters (1 required)
Required
courseIdOrSluginteger

Numeric course ID or public URL slug. Do not use the course title. Get the slug from the `slug` field returned by other course tools.

Get Custom Track

get_custom_track
Full Description

Get a single custom track by id within a DataCamp group. Returns the track's metadata and ordered embedded content. Resource items include a track contentId plus the public resourceId and resourceType; when recreating or preserving a resource with create_custom_track or edit_custom_track, use resourceId with resourceType, never contentId. Call this before replacing content so every item that should remain can be preserved, and call it after every attempted edit to verify the final list. Permissions are enforced upstream — the caller must have access to the group and the track. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
customTrackIdinteger

Id of the custom track to fetch.

groupIdinteger

DataCamp group id.

Get Custom Track Enrollees

get_custom_track_enrollees
Full Description

List a cursor-paginated page of learners enrolled in a custom track within a DataCamp group. Requires the group's id and the custom track id. Each enrollee includes their user id, full name, the timestamp they enrolled (startedAt), and the timestamp they completed every item (completedAt, null while still in progress). Pass nextCursor from the response as cursor to retrieve the next page. Feed the user ids into the reporting tools to drill into per-learner activity. Permissions are enforced upstream — the caller must have access to the group and the track. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 2 optional)
Required
customTrackIdinteger

Id of the custom track whose enrollees to list.

groupIdinteger

DataCamp group id.

Optional
cursorstring

Opaque cursor from the previous response. Omit for the first page.

limitinteger

Number of enrollees to return, capped at 100. Defaults to 100.

Get Exercise

get_exercise
Full Description

Get an exercise by its chapter and course IDs. When the caller is authenticated, also returns exercises in private courses the user has access to (e.g. B2B custom courses); without authentication only public courses are available.

Parameters (3 required)
Required
chapterIdnumber

The ID of the chapter to get.

courseIdnumber

The ID of the course to get.

exerciseNumbernumber

The number (1-based) of the exercise to get.

Get Group

get_group
Full Description

Get a single DataCamp group's id, slug, name, and subscription products by group id. Use this when the agent already has a group id and needs to confirm the slug or name (e.g. for display, or to render a link), or to check which subscription products the group holds. Product slugs starting with learn. are Learn products — DataCamp's main product, which gives access to courses. Scoped upstream to groups the authenticated user is permitted to view.

Parameters (1 required)
Required
groupIdinteger

DataCamp group id.

Get Group Assignment Assignees

get_group_assignment_assignees
Full Description

Group admin/manager view: list the assignees of a DataCamp assignment and their progress. This is for admins, managers, and team managers tracking who an assignment was given to — it is NOT the signed-in learner's own assignments or progress. Requires the assignment's ID. Returns each assignee's identity (user id, email, name, avatar) along with their progress (status, completed_at, due_date) and assessment level where applicable. Supports pagination, sorting (by email, full name, or completion date), filtering by status, and free-text search. Results are scoped upstream to the assignees the authenticated caller is permitted to see, based on their role on the assignment's group or team. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
assignmentIdinteger

ID of the assignment whose assignees to list.

Optional
filtersobject

Filter options applied to the assignees page.

paginationobject

Pagination options for the assignees page.

searchTermstring

Free-text filter applied to assignee name and email.

sortobject

Sort options for the assignees page.

Get Licenses Counts

get_licenses_counts
Full Description

Get per-product license counts for a DataCamp group — licenses in use, purchased, and available, broken down across learn and datalab (× access level: basic, classroom, enterprise, teams). Requires the group's id. Results are scoped upstream to groups the authenticated user is permitted to read. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required)
Required
groupIdinteger

DataCamp group id.

Get Members Not Started

get_members_not_started
Full Description

List the members of a DataCamp group who have not earned any XP since registration — i.e. members the Adoption report counts as "not started". Useful when an admin wants to nudge stalled learners with a fresh assignment. This is not live data — it is a periodic snapshot and may lag real-time activity. The response includes snapshot.lastUpdatedAt indicating when the underlying snapshot was last refreshed; surface it to the user so they know how stale the result is (e.g. "as of 2 hours ago"). Requires the group's id. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Returns each member's userId, fullName, and email. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 2 optional)
Required
groupIdinteger

DataCamp group id of the group to list "not started" members for.

Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

Get Podcast

get_podcast
Full Description

Get a DataCamp podcast episode by its slug, including its transcript, hosts and guests, episode number, and links to listen on Spotify, Apple, Google, and YouTube.

Parameters (1 required)
Required
podcastIdstring

The CMS slug of the podcast episode to get. Legacy numeric CMS IDs are also accepted.

Get Project

get_project
Full Description

Get a single DataCamp project variant by its numeric projectId. When the caller is authenticated, the response includes their progress on this variant.

Parameters (1 required)
Required
projectIdinteger

Numeric `projectId` of the variant to fetch.

Get Project Group

get_project_group
Full Description

Get a DataCamp project group by its string groupKey — returns all underlying variants (e.g. Python guided + Python case study + R guided). When the caller is authenticated, each variant in the response includes their progress.

Parameters (1 required)
Required
groupKeystring

Stable string identifier for the project group (the `groupKey` field on each project).

Get Search Facets

get_search_facets
Full Description

List the valid values for the dynamic search_content filters: content types, technologies, and topics. Call this before using the contentTypes, technologies, or topics filters of search_content and pass back exact values from the response — search_content rejects values that are not in this list.

Get Skill Assessment

get_skill_assessment
Full Description

Get a single DataCamp skill assessment by its slug (e.g. python, sql-fundamentals). Returns the assessment's catalog metadata plus, when the caller is authenticated, the full history of their completed attempts. Use the assessmentId (or slug) — not the version-scoped id — when referencing this assessment from other tools.

Parameters (1 required)
Required
slugstring

URL-friendly identifier of the skill assessment (e.g. `python`, `sql-fundamentals`).

Get Skill Verification

get_skill_verification
Full Description

Get a single DataCamp skill verification by its slug (e.g. ai-fundamentals, data-literacy) or numeric skillVerificationId. Returns the catalog record — name, link, type, assessment size, backing course for CPE-style verifications, and the caller's userSkillVerification record. Scoped upstream to the public catalog plus any restricted/specialist verifications the caller's organisations grant them access to. Requires authentication.

Parameters (0 required, 2 optional)
Optional
skillVerificationIdinteger

Numeric id of the skill verification. Provide either `slug` or `skillVerificationId`.

slugstring

URL-friendly identifier of the skill verification (e.g. `ai-fundamentals`, `data-literacy`). Provide either `slug` or `skillVerificationId`.

Get Suggested Content

get_suggested_content
Full Description

Returns personalized 'what to learn next' suggestions for the authenticated user, mirroring the DataCamp home page and dashboard. Includes: the track they're enrolled in, the single best course or project to continue (their most recent unfinished one, or the next course to start in their track), spaced-repetition review items, their most urgent upcoming assignments, and suggested practice, project, and assessment content. Use this when the user asks what to do next, what to study, how to continue learning, or to recommend content. Requires an authenticated user.

Parameters (0 required, 3 optional)
Optional
assignmentsLimitinteger

Maximum number of upcoming assignments to return, soonest-due first. Defaults to 3.

reviewItemsLimitinteger

Maximum number of spaced-repetition review items to return. Defaults to 3.

technologyIdinteger

Optional technology ID (e.g. Python, R, SQL) used to bias the suggested project and assessment toward that technology. Omit for general suggestions.

Get Track

get_track
Full Description

Get a single DataCamp track (career or skill) by its numeric id or slug, including the full content path, prerequisites, instructors, and partnership labels. When the caller is authenticated, the response also includes their enrollment, completion, and progress on this track.

Parameters (1 required)
Required
trackIdOrSluginteger

Track ID (positive integer) or slug.

Get Tutorial

get_tutorial
Full Description

Get a tutorial by its slug.

Parameters (1 required)
Required
tutorialIdstring

The CMS slug of the tutorial to get (e.g. "learn-python"). Legacy numeric CMS IDs are also accepted.

Get Webinar

get_webinar
Full Description

Get a webinar by its slug.

Parameters (1 required)
Required
webinarIdstring

The CMS slug of the webinar to get. Legacy numeric CMS IDs are also accepted.

Group Reporting Get Adoption Score

group_reporting_get_adoption_score
Full Description

The group's adoption score — the percentage of members who have started learning. Returns the raw score (0–100) plus a benchmarkLabel band (caution 0–20, on_track 21–84, excellent 85+). This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the value is (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required)
Required
groupIdinteger

DataCamp group id.

Group Reporting Get Courses Overview

group_reporting_get_courses_overview
Full Description

Group-level course overview — the same widget metrics shown at the top of the Group Hub Content Insights > Courses report: total course starts and completions, distinct members who started/completed at least one course, courses skipped, and the overall completion rate. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. Optional technology and topic filters narrow every metric to courses tagged with the matching attribute (case-insensitive, exact match); combine them to require both. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the values are (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

technologystring

Optional case-insensitive exact-match technology filter (e.g. `Python`, `R`, `SQL`). Restricts every metric to courses tagged with this technology. Omit to count every course in the window.

topicstring

Optional case-insensitive exact-match topic filter (e.g. `Programming`, `Machine Learning`). Restricts every metric to courses tagged with this topic. Omit to count every course in the window. Combine with `technology` to narrow to courses matching both.

Group Reporting Get Engagement Overview

group_reporting_get_engagement_overview
Full Description

Group-level engagement overview — the same widget metrics shown at the top of the Group Hub Engagement report: active users, total XP earned, hours spent on the platform, and course completions (including how many were skipped). Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the values are (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 2 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting Get Engagement Score

group_reporting_get_engagement_score
Full Description

The group's engagement score — the percentage of current members who earned XP in the last 30 days. Returns the raw score (0–100) plus a benchmarkLabel band (caution 0–10, on_track 11–49, excellent 50+). This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the value is (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required)
Required
groupIdinteger

DataCamp group id.

Group Reporting Get Projects Overview

group_reporting_get_projects_overview
Full Description

Group-level project overview — the same widget metrics shown at the top of the Group Hub Content Insights > Projects report: total project starts and completions, distinct members who started/completed at least one project, and the overall completion rate. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. Optional technology and topic filters narrow every metric to projects tagged with the matching attribute (case-insensitive, exact match); combine them to require both. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the values are (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

technologystring

Optional case-insensitive exact-match technology filter (e.g. `Python`, `R`, `SQL`). Restricts every metric to projects tagged with this technology. Omit to count every project in the window.

topicstring

Optional case-insensitive exact-match topic filter (e.g. `Programming`, `Machine Learning`). Restricts every metric to projects tagged with this topic. Omit to count every project in the window. Combine with `technology` to narrow to projects matching both.

Group Reporting Get Skill Matrix Dimensions

group_reporting_get_skill_matrix_dimensions
Full Description

List the skills a group tracks in Skill Matrix reporting, with their numeric ids. This is the lookup step for any question that names a skill: skill ids are only unique within a dimension, so resolve names to their numeric ids here before using them elsewhere. Each row also reports how many assessed members count toward that skill, so you can spot skills nobody has been assessed on. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 1 optional)
Required
groupIdinteger

DataCamp group id.

Optional
dimensionstring

Restrict results to one kind of skill. Omit to list both technologies and topics.

Options:technologytopic

Group Reporting Get Skill Matrix Grid

group_reporting_get_skill_matrix_grid
Full Description

Cell-level Skill Matrix detail for a group: average proficiency for every technology-and-topic pair that has at least one assessed member, flattened into rows. Use it to locate where inside a skill the weakness sits, and to find coverage gaps — a pair that is missing from the output means nobody was assessed on it, which is different from a zero score. Requires the group's id and whether rows should be technologies or topics. Pagination covers the requested axis, not the flattened rows, so one page can return many rows; each row also reports how many members were assessed for that pair, and a small count next to a high score is a thin sample. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

viewstring

Whether rows are technologies (cells are topics) or topics (cells are technologies).

Options:technologytopic
Optional
idsarray

Numeric ids of the skills to include as rows on the chosen axis, capped at 128. Omit to get all rows the group has scored on this page.

paginationobject

Pagination over the chosen axis, not over the output rows.

searchstring

Case-insensitive text search on the row skill name.

sortobject

How to order rows. Defaults to the upstream default ordering.

Group Reporting Get Skill Matrix Overview

group_reporting_get_skill_matrix_overview
Full Description

Group-wide skill proficiency summary from Skill Matrix reporting: the average score and assessed-member count for each requested skill, the group-wide strongest and weakest skills, and — when a comparison period is requested — how much each score moved versus that period. Requires the group's id and whether to aggregate by technology or by topic. The strongest/weakest rankings always cover the entire group regardless of which skills were requested; scores are on a 0-200 scale and are not percentages; a null delta means the change cannot be determined, not that there was no change. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 2 optional)
Required
groupIdinteger

DataCamp group id.

viewstring

Whether to aggregate each technology across all topics, or each topic across all technologies.

Options:technologytopic
Optional
comparisonTargetstring

The historical period to compare each current score against. Omit to use the default comparison period (12 months ago).

Options:all_datacampthree_months_agosix_months_agonine_months_agotwelve_months_ago
idsarray

Numeric ids of the skills to include, on the chosen axis, capped at 128. Omit to get the group-wide default selection (the most-assessed skills).

Group Reporting Get Skill Matrix Preferences

group_reporting_get_skill_matrix_preferences
Full Description

List the skills a group has pinned as its Skill Matrix priorities, in priority order, for one dimension. Requires the group's id and the dimension. Each skill is reported exactly as the group recorded it — a skill name or a numeric-id string — so match it against the group's tracked-skill list by name or id. There is no freshness snapshot: this reflects the group's live settings rather than a reporting snapshot. Empty output means nothing is pinned. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
dimensionstring

Which kind of pinned skills to list.

Options:technologytopic
groupIdinteger

DataCamp group id.

Group Reporting Get Time In Learn Overview

group_reporting_get_time_in_learn_overview
Full Description

Where a group's learners are spending their time in DataCamp Learn — the up-to-ten content items with the most engagement (each with its own timeSpentHours), plus a total-hours breakdown split into AI Tutor course variants vs. DataCamp (everything else: DataCamp course variants, projects, practices, assessments). Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. Pass an optional contentType (course, project, practice, or assessment) to restrict the ranking and the hours breakdown to a single type; omit it to rank courses, projects, practices, and assessments together. The top-items list never returns chapters or exercises, even when their durations are included in the overall hours. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and a DataCamp subscription that includes Time in Learn reporting. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
contentTypestring

Optional filter to a single content type: `course`, `project`, `practice`, or `assessment`. Omit to rank all four together (chapters and exercises are never returned as top items).

Options:courseprojectpracticeassessment
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting Get Time In Learn Trend

group_reporting_get_time_in_learn_trend
Full Description

Hours a group spent in DataCamp Learn over time — one row per time bucket (day, week, or month) with totalHours, aiTutorHours, and dataCampHours. Pick this tool when the user is asking how a learning-time metric changes over time ("trend over the last 90 days", "by month", "weekly engagement"). Pass bucket matching the user's wording — daily for short windows, weekly or monthly for longer ones. The series is zero-filled across the requested window so the line chart has no missing buckets; capped at 1,000 rows, so for very long windows pick a wider bucket. Optionally scope to startDate/endDate (both inclusive); both default to "all time" when omitted, but in practice you should always pass an explicit window for trend questions. Never guess a date. Pass an optional contentType (course, project, practice, or assessment) to restrict to a single content type. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and a DataCamp subscription that includes Time in Learn reporting. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

Optional
bucketstring

Time-bucket granularity for the series: `day` (default), `week`, or `month`. Pick the granularity that matches the user's question — for example "by month" or "over the past year" → `month`; "over the last 30 days" → `day`. Wider buckets produce shorter, smoother series; narrower buckets produce longer, noisier series.

Options:dayweekmonth
contentTypestring

Optional filter to a single content type: `course`, `project`, `practice`, or `assessment`. Omit to aggregate all four together.

Options:courseprojectpracticeassessment
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting Get Tracks Overview

group_reporting_get_tracks_overview
Full Description

Group-level track overview — the same widget metrics shown at the top of the Group Hub Content Insights > Tracks report: total track starts and completions, distinct members who started/completed at least one track, and the overall completion rate. A track is a cross-discipline learning path with no topic or technology dimension, so this tool takes no content filters. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. Re-enrolling in the same track within the window contributes a fresh start. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The response includes snapshot.lastUpdatedAt so you can tell the user how stale the values are (e.g. "as of 2 hours ago"). Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 2 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting Get User Progress Detail

group_reporting_get_user_progress_detail
Full Description

Per-learner progress detail for a B2B group — one rows list containing courses, chapters, projects, assessments, and tracks the learner started or completed within the window, plus total XP gained and time spent. For the common completion-detail scenario, set completedOnly to true so rows contains only items completed within the window; this filter does not change the window-wide XP and time totals. Otherwise, each item appears once and can have either or both of startedInWindow and completedInWindow set. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. When meta.isTruncated is true, rows is partial — narrow the request with completedOnly, contentType, or a smaller window to recover the missing rows. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and the learner's user id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

userIdinteger

DataCamp user id of the learner whose progress detail to fetch.

Optional
completedOnlyboolean

Set to true to return only rows completed within the reporting window. Use this for the common completion-detail scenario. Omit or set to false to include rows started or completed within the window. This does not change the window-wide `xpEarned` or `timeSpentHours` totals.

contentTypestring

Optional content-type filter. Restricts rows to one type only. Omit to include every type.

Options:coursechapterprojectassessmenttrack
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Ai Tutor Insights Disclosure Quotes

group_reporting_list_ai_tutor_insights_disclosure_quotes
Full Description

AI Tutor Insights learner disclosures in their own words, balanced across task, challenge, and refinement-need steps. Each quote identifies the learner-profiling prompt it answers and its topic cluster. Use optional page and pageSize to retrieve up to 100 quotes at once. Optionally use interval, or a paired inclusive from/to date range from the past 24 months through today; omit all date arguments for all-time data. This is not live data. Use snapshot.lastUpdatedAt to explain staleness. When meta.isTruncated is true, narrow the date range before relying on the quotes. Only group admins can use this reporting tool. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 5 optional)
Required
groupIdinteger

DataCamp group id.

Optional
fromstring

Optional inclusive custom start date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `to`; do not combine with `interval`.

intervalstring

Optional fixed reporting interval. Omit with `from` and `to` for all-time data.

Options:allTimelast30Dayslast90DayslastYear
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of quotes per page, capped at 100. Defaults to 6.

tostring

Optional inclusive custom end date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `from`; do not combine with `interval`.

Group Reporting List Ai Tutor Insights Tool Stats

group_reporting_list_ai_tutor_insights_tool_stats
Full Description

AI Tutor Insights tool disclosures for a group, ranked by the number of learners who reported each tool. Each group row includes an all-time B2B-wide comparison when available, and benchmarkRows lists all-time B2B-wide rankings. The report is hidden when fewer than eight learners have disclosures. Optionally use interval, or a paired inclusive from/to date range from the past 24 months through today; omit all date arguments for all-time data. This is not live data. Use snapshot.lastUpdatedAt and benchmarkSnapshot.lastUpdatedAt to explain staleness. When meta.isTruncated is true, narrow the date range before relying on the rows. Only group admins can use this reporting tool. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
fromstring

Optional inclusive custom start date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `to`; do not combine with `interval`.

intervalstring

Optional fixed reporting interval. Omit with `from` and `to` for all-time data.

Options:allTimelast30Dayslast90DayslastYear
tostring

Optional inclusive custom end date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `from`; do not combine with `interval`.

Group Reporting List Ai Tutor Insights Topic Stats

group_reporting_list_ai_tutor_insights_topic_stats
Full Description

Top AI Tutor Insights disclosure topics for each learner-profiling step in a group. Returns the top ten group topics per step with all-time B2B-wide comparisons when available, plus all-time B2B-wide ranked benchmarkRows. The report is hidden when fewer than eight learners have disclosures. Optionally use interval, or a paired inclusive from/to date range from the past 24 months through today; omit all date arguments for all-time data. This is not live data. Use snapshot.lastUpdatedAt and benchmarkSnapshot.lastUpdatedAt to explain staleness. When meta.isTruncated is true, narrow the date range before relying on the rows. Only group admins can use this reporting tool. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
fromstring

Optional inclusive custom start date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `to`; do not combine with `interval`.

intervalstring

Optional fixed reporting interval. Omit with `from` and `to` for all-time data.

Options:allTimelast30Dayslast90DayslastYear
tostring

Optional inclusive custom end date in UTC (YYYY-MM-DD). Custom ranges must fall within the past 24 calendar months through today. Supply together with `from`; do not combine with `interval`.

Group Reporting List Courses Activity

group_reporting_list_courses_activity
Full Description

Per-course activity for a group — for each course with activity in the window: starts, completions, skipped (subset of completions where the user clicked through without doing the work), completion rate, and total hours spent. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Pass an optional courseIds array to filter to specific courses. Pagination defaults to 20 rows per page; sort defaults to starts descending. Counts include events from both course variants (DataCamp and AI Tutor) aggregated under a single course row. completionRate is completions / starts, rounded to 2 decimals and capped at 1.0; returns 1.0 when starts is 0. It's a velocity metric (completions and starts may belong to different cohorts), so the cap can mask values that would otherwise exceed 1. Surface meta.isTruncated if set; tighten courseIds or shrink the date window to recover missing rows. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 6 optional)
Required
groupIdinteger

DataCamp group id.

Optional
courseIdsarray

Optional list of DataCamp course ids to filter by. Omit to include every course with activity in the window.

endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options for the courses page. Defaults to `{ field: "starts", order: "desc" }`. Non-`courseId` sorts include a `courseId ASC` tiebreaker so paging across the same sort key is stable.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Courses Activity Detail

group_reporting_list_courses_activity_detail
Full Description

Per-course drill-down for a B2B group — the learners who started or completed a specific course within the window, with their start and completion timestamps. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and the course's id. A user is included when their startedAt or completedAt falls within the window; the returned startedAt may predate the window when the learner started before it but completed within. Results are paginated — pass page and pageSize to navigate; check pagination.hasNextPage to know when to fetch the next page. Order results with sort: { field, order }; valid sort.field values are completedAt, startedAt, email, and fullName (userId is not selectable). Defaults to { field: "completedAt", order: "desc" } so the most recent completions surface first; a stable user-id tiebreaker is always applied for paging. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 5 optional)
Required
courseIdinteger

DataCamp course id to drill down into. Matches the platform's course id, which is the same value across DataCamp and AI Tutor variants.

groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options. Defaults to `{ field: "completedAt", order: "desc" }` so the most recent completions surface first; learners who have not completed appear afterwards. All sorts include a stable user-id tiebreaker for paging.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Projects Activity

group_reporting_list_projects_activity
Full Description

Per-project activity for a group — for each project with activity in the window: starts, completions, completion rate, and total hours spent. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Pass an optional projectIds array to filter to specific projects. Pagination defaults to 20 rows per page; sort defaults to starts descending. completionRate is completions / starts, rounded to 2 decimals and capped at 1.0; returns 1.0 when starts is 0. It's a velocity metric (completions and starts may belong to different cohorts), so the cap can mask values that would otherwise exceed 1. Projects do not have a topic dimension; only technology is surfaced. Surface meta.isTruncated if set; tighten projectIds or shrink the date window to recover missing rows. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 6 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

projectIdsarray

Optional list of DataCamp project ids to filter by. Omit to include every project with activity in the window.

sortobject

Sort options for the projects page. Defaults to `{ field: "starts", order: "desc" }`. Non-`projectId` sorts include a `projectId ASC` tiebreaker so paging across the same sort key is stable.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Projects Activity Detail

group_reporting_list_projects_activity_detail
Full Description

Per-project drill-down for a B2B group — the learners who started or completed a specific project within the window, with their start and completion timestamps. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and the project's id. A user is included when their startedAt or completedAt falls within the window; the returned startedAt may predate the window when the learner started before it but completed within. Results are paginated — pass page and pageSize to navigate; check pagination.hasNextPage to know when to fetch the next page. Order results with sort: { field, order }; defaults to { field: "completedAt", order: "desc" } so the most recent completions surface first. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 5 optional)
Required
groupIdinteger

DataCamp group id.

projectIdinteger

DataCamp project id to drill down into.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options. Defaults to `{ field: "completedAt", order: "desc" }` so the most recent completions surface first; learners who have not completed appear afterwards. All sorts include a stable user-id tiebreaker for paging.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Technologies Activity

group_reporting_list_technologies_activity
Full Description

Per-technology activity for a group — XP earned, course starts/completions, and project starts/completions, broken down by content technology (Python, R, SQL, …). Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Pass an optional technology to filter to a single bucket. Rows are sorted by xpEarned descending. Buckets without a technology label are omitted; buckets with zero xpEarned are kept (they still count starts/completions). XP attribution mirrors the Group Hub Content Insights > XP report — only course_engagement events contribute, so xpEarned matches the values shown in the UI. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

technologystring

Optional case-insensitive exact-match technology filter (e.g. `Python`, `R`, `SQL`). When set, the response contains at most one row. Omit to list every technology with activity in the window.

Group Reporting List Topics Activity

group_reporting_list_topics_activity
Full Description

Per-topic activity for a group — XP earned, course starts/completions, and project starts/completions, broken down by content topic (Programming, Machine Learning, Data Visualization, …). Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Pass an optional topic to filter to a single bucket. Rows are sorted by xpEarned descending. Buckets without a topic label are omitted; buckets with zero xpEarned are kept (they still count starts/completions). XP attribution mirrors the Group Hub Content Insights > XP report — only course_engagement events contribute, so xpEarned matches the values shown in the UI. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

topicstring

Optional case-insensitive exact-match topic filter (e.g. `Programming`, `Machine Learning`). When set, the response contains at most one row. Omit to list every topic with activity in the window.

Group Reporting List Tracks Activity

group_reporting_list_tracks_activity
Full Description

Per-track activity for a group — for each track with a learner enrollment that started or completed in the window: starts, completions, completion rate, and total XP across the matching enrollments. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. Backed by a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Pass an optional trackIds array to filter to specific tracks. Pagination defaults to 20 rows per page; sort defaults to starts descending. completionRate is completions / starts, rounded to 2 decimals and capped at 1.0; returns 1.0 when starts is 0. It's a velocity metric (completions and starts may belong to different cohorts), so the cap can mask values that would otherwise exceed 1. xpEarned caveat: the per-row XP on the underlying snapshot is the lifetime XP a learner has earned on that track, not a within-window slice. The number is useful as an order-of-magnitude signal across tracks but is not directly comparable to window-scoped XP totals from other tools — call this out when summarising. Tracks are cross-discipline learning paths and have no topic or technology dimension. Surface meta.isTruncated if set; tighten trackIds or shrink the date window to recover missing rows. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 6 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options for the tracks page. Defaults to `{ field: "starts", order: "desc" }`. Non-`trackId` sorts include a `trackId ASC` tiebreaker so paging across the same sort key is stable.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

trackIdsarray

Optional list of DataCamp track ids to filter by. Omit to include every track active in the group during the window.

Group Reporting List Tracks Activity Detail

group_reporting_list_tracks_activity_detail
Full Description

Per-track drill-down for a B2B group — the learners who started or completed a specific track within the window, with their start and completion timestamps. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. Use snapshot.lastUpdatedAt on the response to tell the user how stale the data is. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id and the track's id. A user is included when their startedAt or completedAt falls within the window; the returned startedAt may predate the window when the learner started before it but completed within. Results are paginated — pass page and pageSize to navigate; check pagination.hasNextPage to know when to fetch the next page. Order results with sort: { field, order }; defaults to { field: "completedAt", order: "desc" } so the most recent completions surface first. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 5 optional)
Required
groupIdinteger

DataCamp group id.

trackIdinteger

DataCamp track id to drill down into. Constant across track versions.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options. Defaults to `{ field: "completedAt", order: "desc" }` so the most recent completions surface first; learners who have not completed appear afterwards. All sorts include a stable user-id tiebreaker for paging.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

Group Reporting List Users Progress

group_reporting_list_users_progress
Full Description

Aggregated learner-progress report for a B2B group — completions, time spent, XP, started-content counts, and group-membership dates per user. Optionally scoped to a startDate/endDate window (both inclusive). Both bounds are optional and default to "all time" when omitted — omit them entirely unless the user explicitly specified a date range. Never guess a date. This is not live data. It is sourced from a periodic snapshot that refreshes daily; expect data to lag by up to ~24 hours. The platform doesn't currently expose the exact snapshot timestamp through this endpoint. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Filter to specific users with userIds; omit it to include every member of the group. Requires the group's id. Results are paginated — pass page and pageSize to navigate; check pagination.hasNextPage to know when to fetch the next page. Order results with sort: { field, order }; defaults to { field: "userId", order: "asc" } for stable pagination. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 6 optional)
Required
groupIdinteger

DataCamp group id.

Optional
endDatestring

Optional end of the date range (YYYY-MM-DD), inclusive. Omit to include all activity from `startDate` onward through the latest snapshot (no upper bound). **Never guess a date.** Omit it unless the user has explicitly specified an end date.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

sortobject

Sort options for the users page. Defaults to `{ field: "userId", order: "asc" }` for stable pagination.

startDatestring

Optional start of the date range (YYYY-MM-DD), inclusive. Omit to include all activity up to `endDate` (no lower bound). **Never guess a date.** Omit it unless the user has explicitly specified a start date.

userIdsarray

Optional list of user ids to filter by. Omit to include every member of the group.

Invite Member To Group

invite_member_to_group
Full Description

Invite one or more people to a DataCamp group by email. Requires the group's id. Optional: teamIds (numeric ids only — if the user refers to teams by name, slug, or any other identifier, resolve them to ids first), role (admin / manager / team_manager) for administrative invites, and per-product access levels learnLicense and datalabLicense. When a license is omitted, the tool picks the highest access level the group has available (enterprise → teams → classroom → basic), falling back to basic. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 4 optional)
Required
emailsarray

Emails to invite to the group.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Optional
datalabLicensestring

DataLab access level for the invitees. When omitted, defaults to the highest available access level for the group (enterprise → teams → classroom → basic), falling back to basic if nothing is available.

Options:basicclassroomenterpriseteams
learnLicensestring

Learn access level for the invitees. When omitted, defaults to the highest available access level for the group (enterprise → teams → classroom → basic), falling back to basic if nothing is available.

Options:basicclassroomenterpriseteams
rolestring

Administrative role to grant the invitees. Omit to create a regular member (a standard learner with no administrative access). `admin` has full control of the group, including billing and settings. `manager` handles org-wide learning operations (teams, assignments, reporting) but cannot access billing or invite users. `team_manager` is scoped to specific teams — they manage assignments and reporting for their own team(s) only; specify the teams via `teamIds`.

Options:adminmanagerteam_manager
teamIdsarray

Team ids to add the invitees to.

List Certifications

list_certifications
Full Description

List DataCamp certifications — multi-component credentials (skill assessment + practical exam ± case study) that establish a learner's professional readiness for a role. Each entry exposes a slug and certificationId, a public link, the certification's level, and the caller's userCertification record (external id for sharing, pass timestamps, allocation expiries) when they have passed. Scoped upstream to the public catalog plus any restricted certifications the caller's organisations grant them access to. Requires authentication.

Parameters (0 required, 3 optional)
Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

searchstring

Free-text search over name and short description (case-insensitive substring match).

List Competitions

list_competitions
Full Description

List DataCamp competitions — timed, dataset-driven challenges where learners explore a dataset and publish a workbook. Supports filters (status, tags, programming language, free-text search), and — when authenticated — filtering to competitions the caller has entered. Returns a page of competitions plus a nextCursor for pagination. When the caller is authenticated, each competition additionally carries their submission status under userContext.

Parameters (0 required, 7 optional)
Optional
cursorstring

Cursor returned in the previous response as `nextCursor`. Omit to start at the first page.

enteredByUserboolean

When true, return only competitions the caller has entered. Requires authentication — calling this filter without being logged in returns an error.

limitinteger

Maximum number of competitions to return per page. Defaults to 12. Capped at 50.

programmingLanguagestring

Filter to competitions that offer a starter template in this language.

Options:pythonr
searchstring

Free-text search applied to competition title and description (case-insensitive).

statusarray

Filter by competition lifecycle stage. Multiple values are combined with OR.

tagsarray

Filter by tag (e.g. `beginner`, `oneHour`). Multiple values are combined with OR.

List Courses

list_courses
Full Description

List DataCamp courses with optional filters (technologies, topics, AI-native, prerequisites met, status), sort, and free-text search. When the caller is unauthenticated, only public courses are returned. When authenticated, the caller also sees private/custom courses available through their organisation. Returns a page of courses plus a nextCursor for pagination.

Parameters (0 required, 11 optional)
Optional
aiNativeboolean

When true, return only courses that have an AI-native variant available.

caseStudiesboolean

When true, return only case-study courses (project-style courses working through a real-world scenario).

cursorstring

Cursor returned in the previous response as `nextCursor`. Omit to start at the first page.

industriesarray

Filter by industry ids. Multiple ids are combined with OR.

limitinteger

Maximum number of courses to return per page. Defaults to 12. Capped at 50.

prerequisitesMetboolean

When true, return only courses for which the user has completed all prerequisites. Requires authentication — calling this filter without being logged in returns an error.

searchstring

Free-text search applied to course title and description (case-insensitive).

sortstring

Sort order. 'most-relevant' (default) ranks by popularity (and is personalised when authenticated). 'newest' sorts by course creation date, newest first.

Options:most-relevantnewest
statusarray

Filter by the user's progress on the course. Values: 'not-started', 'in-progress', 'completed'. Multiple values are combined with OR. Requires authentication — calling this filter without being logged in returns an error.

technologiesarray

Filter by technology ids. Multiple ids are combined with OR.

topicsarray

Filter by topic ids. Multiple ids are combined with OR.

List Custom Tracks

list_custom_tracks
Full Description

List the custom tracks belonging to a DataCamp group, with an optional state filter. Requires the group's id. Pass states to narrow results to specific lifecycle states (draft, published, archived) — omit it to return tracks in all states. Each entry includes the track's id, title, description, and state. Permissions are enforced upstream; results are scoped to what the caller is allowed to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

statesarray

Optional filter: only return custom tracks in any of the given states (`draft`, `published`, `archived`). Omit to return tracks in all states.

List Group Ai Credits

list_group_ai_credits
Full Description

List a DataCamp group's AI credit limits and usage. Returns the group credit limit, default member limit, and a paginated member list with custom limits, effective limits, usage, and status. Limits are live configuration; usage is periodically reported and may be delayed. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 6 optional)
Required
groupIdinteger

DataCamp group id.

Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of members per page. Defaults to 20; maximum 100.

searchTermsarray

One or more member names or email addresses. Members matching any value are returned.

sortBystring

Member field to sort by. Defaults to name.

Options:namecustomLimit
sortOrderstring

Sort direction. Defaults to ascending.

Options:ascdesc
teamIdinteger

Optional team id to restrict the member list to one team.

List Group Assignments

list_group_assignments
Full Description

Group admin/manager view: list all assignments within a DataCamp group, or look up a single assignment by ID. This is for admins, managers, and team managers inspecting the assignments they manage across a group — it is NOT the signed-in learner's own assignments. Requires the group's id. To look up a specific assignment, pass assignmentId — the response is the same shape, with at most one item. Otherwise, use scope to choose which teams to list across: everyone (default) covers every accessible team, not_in_team covers members outside any team, and team scopes to a single team (requires teamSlug). Optionally accepts filters (type, status, creation time, and due time) and pagination. Results are scoped upstream to the assignments the authenticated user is permitted to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 5 optional)
Required
groupIdinteger

DataCamp group id.

Optional
assignmentIdinteger

Look up a single assignment by its ID within the group. When provided, returns at most one assignment and ignores `scope`, `teamSlug`, `filters`, and `pagination`. Use this when the user asks for a specific assignment by ID.

filtersobject

Optional filters applied to the assignments list.

paginationobject

Pagination controls for the assignments list.

scopestring

Which subset of teams to list assignments for. `everyone` (default) lists assignments across every accessible team. `not_in_team` lists assignments targeting members outside any team. `team` scopes to a single team (requires `teamSlug`). Ignored when `assignmentId` is set.

Options:everyonenot_in_teamteam
teamSlugstring

Slug of the team to scope the listing to. Required when `scope` is `team`. Only team `slug` is accepted — team `id` is not supported. Ignored when `assignmentId` is set.

List Group Members

list_group_members
Full Description

List members of a DataCamp group, optionally scoped to a single team. Requires the group's id. Returns member details (role, Learn/DataLab access, team membership) with pagination metadata. Results are scoped to what the user is permitted to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 9 optional)
Required
groupIdinteger

The ID of the DataCamp group to list members of.

Optional
learnLicensesarray

Filter members by one or more Learn license tiers. Omit to include every tier.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

rolesarray

Filter members by one or more roles. Omit to include every role.

scopestring

Which subset of the group to list. `everyone` (default) lists all visible members; `not_in_team` lists members with no team; `team` lists members of one team (requires `teamSlug`).

Options:everyonenot_in_teamteam
searchTermstring

Free-text search across member name and email.

sortBystring

Field to sort by. Defaults to `email`.

Options:emailfirstNamelastNamefullName
sortOrderstring

Sort direction. Defaults to `asc`.

Options:ascdesc
teamSlugstring

The slug of the team to scope the listing to. Required when `scope` is `team`. Only team `slug` is accepted — team `id` is not supported.

List Groups

list_groups
Full Description

List the DataCamp groups the authenticated user belongs to. Returns each group's id, slug, and name. Call this as a discovery step to get a group's id before calling other group-related tools that require one. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

List Industries

list_industries
Full Description

List all industries in the DataCamp catalog (e.g. Finance, Health Care, Marketing & Sales). Returns each industry with its id and name.

List Invite Links

list_invite_links
Full Description

List the existing shareable invite links for a DataCamp group, supporting the "share a link" path. Requires the group's id. Each entry includes the link's id and URL, the email domains it is restricted to, the teams joiners are added to, the Learn and DataLab access levels granted to joiners, and when the link was created. Permissions are enforced upstream — results are scoped to what the caller is allowed to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 2 optional)
Required
groupIdinteger

DataCamp group id.

Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

List My Assignments

list_my_assignments
Full Description

List the assignments assigned to YOU, the signed-in learner — the courses, tracks, projects, assessments, and certifications your group/organization admins have assigned to you, with your own due dates and progress. Use this whenever someone asks about 'my assignments', 'what's assigned to me', 'what I need to do', or their own deadlines. Optionally pass groupSlug to scope to one group, and sort to order the results. This is the learner's own view, not the group-admin view of every assignment in a group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (0 required, 4 optional)
Optional
groupSlugstring

Restrict to assignments from a single group/organization, by group slug (discoverable via `list_groups`). Omit to return your assignments across every group you belong to.

pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

sortobject

Optional sort order. Defaults to the upstream ordering (by due date) when omitted.

List Pending Invites

list_pending_invites
Full Description

List pending (unclaimed) email invites for a DataCamp group. Requires the group's id. Returns invitee email, intended role, Learn/DataLab license, target teams, who sent the invite, and timestamps, with pagination metadata. Results are scoped to what the caller is permitted to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
groupIdinteger

The ID of the DataCamp group to list pending invites for.

Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Page size, capped at 100. Defaults to 20.

searchTermstring

Free-text search across the invitee email.

sortobject

Sort options for the pending-invites page. Defaults to `{ field: "createdAt", order: "desc" }` when omitted.

List Projects

list_projects
Full Description

List DataCamp projects (hands-on assignments) grouped by their underlying scenario. Each group exposes its variants (e.g. Python guided, Python case study, R guided); each variant has its own projectId.

Parameters (0 required, 2 optional)
Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

List Skill Assessments

list_skill_assessments
Full Description

List DataCamp skill assessments — short adaptive diagnostics (~15 minutes) that estimate a learner's level on a specific skill (Python, R, SQL, ...). Each entry exposes its slug, a public link, and — when the caller is authenticated — the result of their most recent completed attempt plus whether they have one in progress. Anonymous callers see only public assessments; authenticated learners also see the custom assessments their enterprise groups grant access to. Use the assessmentId (or slug) — not the version-scoped id — when referencing an assessment from other tools.

Parameters (0 required, 2 optional)
Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

List Skill Verifications

list_skill_verifications
Full Description

List DataCamp skill verifications — single-component assessments that certify proficiency in a specific skill or technology (e.g. AI Fundamentals, Data Literacy). Each entry exposes a slug and skillVerificationId, a public link, the type (public / restricted / specialist / cpe — cpe entries are course-backed and carry a cpeCourse sub-object), assessment size, and the caller's userSkillVerification record (latest attempt status, attempts remaining, cooldown). Scoped upstream to the public catalog plus any restricted/specialist verifications the caller's organisations grant them access to. Requires authentication.

Parameters (0 required, 3 optional)
Optional
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

searchstring

Free-text search over name and description (case-insensitive substring match).

List Teams

list_teams
Full Description

List the teams within a DataCamp group. Requires the group's id. Returns each team's id, slug, and name, along with pagination metadata. Results are scoped upstream to the teams the authenticated user is permitted to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 4 optional)
Required
groupIdinteger

DataCamp group id.

Optional
currentPageinteger

1-based page number. Defaults to the first page.

pageSizeinteger

Number of teams per page. Defaults to the server default.

searchTermstring

Free-text filter applied to team names.

sortobject

Sort options for the teams page.

List Technologies

list_technologies
Full Description

List all technologies in the DataCamp catalog (e.g. Python, R, SQL). Returns each technology with its id and name. Use the ids to filter the catalog.

List Topics

list_topics
Full Description

List all topics in the DataCamp catalog (e.g. Programming, Data Visualization, Machine Learning). Returns each topic with its id and name. Use the ids to filter the catalog.

List Tracks

list_tracks
Full Description

List a page of DataCamp tracks — career tracks (multi-month learning paths to a job role) and skill tracks (focused on a single skill or tool). When the caller is unauthenticated, only public tracks are returned. When authenticated, the caller also sees custom/enterprise tracks available through their organisation. The response preserves the selected upstream order and includes navigation metadata.

Parameters (0 required, 7 optional)
Optional
categorystring

Filter by track category. Values: 'career' (career tracks — multi-month learning paths to a job role) or 'skills' (skill tracks — focused on a single skill or tool).

Options:careerskills
inProgressboolean

When true, return only tracks the authenticated learner has started. Requires authentication — calling this filter without being logged in returns an error.

orderstring

Sort order. 'most-popular' ranks by popularity (and is personalised when authenticated). 'newest' sorts by creation date, newest first. Omit to use the default ordering.

Options:most-popularnewest
pageinteger

1-based page number. Defaults to 1.

pageSizeinteger

Number of results per page, capped at 100. Defaults to 20.

technologyIdsarray

Filter by technology ids. Multiple ids are combined with OR.

topicIdsarray

Filter by topic ids. Multiple ids are combined with OR.

List Waitlist Entries

list_waitlist_entries
Full Description

List people waiting to join a DataCamp group because the group was out of licenses when they tried to join. Requires the group's id. Returns each requester's id, email, and name, with cursor-based pagination metadata and a total count. Results are scoped to what the caller is permitted to see. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required, 2 optional)
Required
groupIdinteger

Numeric id of the DataCamp group to list waitlist entries for.

Optional
afterstring

Cursor returned from a previous call (the `pageInfo.endCursor` value). Pass this to fetch the next page.

firstinteger

Number of waitlist entries to return per page, capped at 100. Defaults to 20.

Load Group Reporting Prompt

load_group_reporting_prompt
Full Description

Fallback for clients that cannot attach MCP resources. Returns the same content as the mcp://group-reporting/schema resource — the schema and business context needed to write SQL for group reporting. Prefer attaching the resource if your client supports it; only call this tool when it does not, or when the resource is not already in context. Requires the group's id and a DataCamp subscription that includes Data Connector. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (1 required)
Required
groupIdinteger

DataCamp group id.

My Activity

my_activity
Full Description

Returns the signed-in learner's own recent learning activity — the courses or tracks they have started, completed, or skipped — ordered most-recent-first. Use this to answer questions like "which course did I last progress in?", "what am I currently working on?", or "what have I completed recently?". Lists one content type per call (courses by default; pass contentType: 'track' for tracks). This is the learner's personal progress, not group/team reporting.

Parameters (0 required, 5 optional)
Optional
contentTypestring

Which content to list: `course` for individual courses, `track` for career/skill/custom tracks. Defaults to `course`.

Options:coursetrack
Default: course
pageinteger

1-indexed page number to fetch. Defaults to 1.

Default: 1
pageSizeinteger

Number of items per page (1-100). Defaults to 20.

Default: 20
searchstring

Optional free-text query to narrow the list by title.

statusstring

Filter by progress status: `in_progress` (started but not finished — what the learner is currently working on), `completed`, `skipped` (courses only), or `all` (every status). Defaults to `in_progress`.

Options:in_progresscompletedskippedall
Default: in_progress

Publish Custom Track

publish_custom_track
Full Description

Publish a draft custom track in a DataCamp group, making it available to learners. Requires the group's id and the custom track id (a track in state: 'draft'). Returns only the track id and its new lifecycle state (published on success) — fetch the track separately for the full detail. The operation is idempotent: calling it on an already-published track returns the track's current state without changing anything. Permissions are enforced upstream — the caller must have permission to edit custom tracks in the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
customTrackIdinteger

Id of the custom track to publish.

groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Query Group Reporting

query_group_reporting
Full Description

Run an Athena SQL query against the authenticated user's DataCamp group reporting dataset and return the results. Before invoking this tool, load the schema and business context — preferably by attaching the mcp://group-reporting/schema resource, or as a fallback by loading it via the dedicated prompt-loading tool. Results contain at most 100 rows. When meta.isTruncated is true, explicitly tell the user the result is partial, then narrow the request or add filters before rerunning it. Only group admins are authorized; managers and team managers will be rejected. This is org-wide admin reporting, not the assignments or progress of the signed-in learner. Requires the group's id. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
groupIdinteger

DataCamp group id.

querystring

The Athena SQL query to run against the group Data Connector v2 dataset.

Remove Invite Link

remove_invite_link
Full Description

Remove a shareable invite link for a DataCamp group, so it can no longer be used to join. Part of the "share a link" path. Requires the group's id and the invite link's id. People who already joined the group via this link are not affected. Permissions are enforced upstream — the caller must be allowed to manage invites for the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

inviteLinkIdinteger

Id of the invite link to remove.

Remove Team Member

remove_team_member
Full Description

Remove one or more members from one or more teams within a DataCamp group. Requires the group's id, the target team IDs, and the user IDs to remove. Permissions are enforced upstream: team managers can only remove members from teams they manage, while group admins can manage all teams. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

teamIdsarray

IDs of the target teams.

userIdsarray

IDs of team members to remove. Must reference users already in the target teams.

Search Content

search_content
Full Description

Search the DataCamp content catalog — courses, tracks, projects, tutorials, code-alongs, cheat sheets, and more — by short, broad free-text query. Prefer concise queries like "Claude Code" over long specific phrases. Optional filters: content type, technology, topic, skill level, minimum rating, duration range, launch date, and AI-native availability. Returns a ranked list of results with the same shape for every content type.

Parameters (1 required, 10 optional)
Required
querystring

Free-text keyword search query. Use short, broad English *keywords* describing the content the user is looking for, e.g. "Claude Code". Avoid long phrases, try to stay within 3 or 4 keywords max.

Optional
aiNativeboolean

When true, return only content that has an AI-native variant available.

contentTypesarray

Restrict results to specific content types, e.g. "course", "track", "code_along". Values must exactly match the catalog's content types — call `get_search_facets` first to get the valid values. Unknown values are rejected. Multiple values are combined with OR. If omitted, searchable catalog content is searched.

dateLaunchedstring

Restrict results by how recently the content was launched. Values: "Past 6 months", "Past year", "Past 2 years", "Any time".

Options:Past 6 monthsPast yearPast 2 yearsAny time
limitinteger

Maximum number of results to return. Defaults to 10. Capped at 50.

maxDurationMinutesnumber

Return only content that takes at most this many minutes.

minDurationMinutesnumber

Return only content that takes at least this many minutes.

minRatingnumber

Return only content with an average rating greater than or equal to this value, on a 0–5 scale.

skillLevelsarray

Filter by difficulty level. Values: "Beginner", "Intermediate", "Advanced". Multiple values are combined with OR.

technologiesarray

Filter by technology names, e.g. "Python", "R", "SQL". Values must exactly match the catalog's technologies — call `get_search_facets` first to get the valid values. Unknown values are rejected. Multiple values are combined with OR.

topicsarray

Filter by topic names, e.g. "Machine Learning", "Data Visualization". Values must exactly match the catalog's topics — call `get_search_facets` first to get the valid values. Unknown values are rejected. Multiple values are combined with OR.

Tutorial.get By Id

tutorial.get_by_id
Full Description

Get a tutorial by its ID.

Parameters (1 required)
Required
tutorialIdnumber

The ID of the tutorial to get.

Unarchive Group Assignment

unarchive_group_assignment
Full Description

Restore a previously-archived assignment in a DataCamp group back to its active state. Archived assignments can be found by listing with filters.status: "archived". Requires the assignment's assignmentId and the group's groupId. Admins and group managers can unarchive any assignment; team managers can unarchive assignments scoped to teams they manage. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required)
Required
assignmentIdinteger

Numeric id of the assignment to restore.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Update Custom Track External Resource

update_custom_track_external_resource
Full Description

Update an existing URL-based external resource for a DataCamp group by changing its title, URL, and/or description. Requires the group's id and the external resource id returned as id by create_custom_track_external_resource; it is also visible as the track contentId for that external resource. Supply any subset of title, url, and description; omitted fields are unchanged, and at least one must be supplied. This tool does not update native catalog resources such as code-alongs, tutorials, or cheat sheets. Returns the updated resource. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 3 optional)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

resourceIdinteger

Id of the external resource to update. This is the id assigned when the external resource was created, also visible as the `contentId` of a resource-type item in the custom track detail.

Optional
descriptionstring

New free-text description. Omit to leave the description unchanged.

titlestring

New display title. Omit to leave the title unchanged. Must be non-empty when supplied.

urlstring

New external URL. Omit to leave the URL unchanged. Must be a fully-formed URL including the scheme when supplied.

Update Group Ai Credit Custom Limits

update_group_ai_credit_custom_limits
Full Description

Set or remove the same per-member custom AI credit limit for one or more members of a DataCamp group. Provide an explicit action: use set with a non-negative customLimit to create or replace the override, or remove to clear every selected member's override so each uses the group default limit. This changes member access to AI credits. Confirm the group, selected members, action, and limit with the user before invoking. Only group admins are authorized; member eligibility and authorization are enforced upstream. Returns the resulting custom-limit state for every member whose override changed. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required, 1 optional)
Required
actionstring
Options:setremove
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

userIdsarray

IDs of one or more existing members of the DataCamp group.

Optional
customLimitinteger

Custom AI credit limit to apply to every selected member.

Update Group Ai Credit Default Limit

update_group_ai_credit_default_limit
Full Description

Set or remove a DataCamp group's default per-user AI credit limit. Use action: 'set' with defaultUserLimit to set a manual limit, or action: 'remove' to remove the limit and make AI credits unlimited for group members. This changes the group setting immediately. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required, 1 optional)
Required
actionstring
Options:setremove
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Optional
defaultUserLimitinteger

Default number of AI credits available to each group member.

Update Group Assignment

update_group_assignment
Full Description

Update an existing assignment in a DataCamp group. A rolling assignment requires a learner-specific rolling period and has a separate global cutoff for adding new assignees. Omit the global due date unless the user requests a different cutoff; it defaults to one year from now. Any explicit cutoff must be strictly later than the current time plus the rolling period, with sufficient processing time. Permissions are enforced upstream: admins and group managers can update any assignment in the group; team managers can update assignments scoped to teams they manage. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
assignmentIdinteger

ID of the assignment to update.

dueobject

New due date configuration. Use `date` for a fixed calendar due date shared by all assignees. For `rolling`, provide `numDays` for each learner's deadline after assignment. Omit `dueDate` unless the user requests a different global cutoff for adding new assignees; it defaults to one year from now. An explicit `dueDate` must be strictly later than the current time plus `numDays`, with sufficient processing time.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

Update Group Member License

update_group_member_license
Full Description

Update the license tier (Learn or DataLab) for a single existing member of a DataCamp group. Requires the group's id, the member's user id, the product to update (learn or datalab), and the target access tier. Only upgrades are supported — basic is the free-tier baseline (no paid seat); valid upgrade targets are higher paid tiers (teams, enterprise, classroom). Downgrades are rejected upstream. Confirm the destination tier has available licenses first, otherwise the call will fail. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (5 required)
Required
accessstring

Target license tier for the member. Only upgrades are supported — `basic` is the free-tier baseline (no paid seat); valid upgrade targets are the higher paid tiers (`teams`, `enterprise`, `classroom`). Downgrades are rejected upstream. Confirm the destination tier has available licenses first, otherwise the call will fail.

Options:basicclassroomenterpriseteams
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

productstring

Which DataCamp product to update the license for: `learn` for the Learn platform or `datalab` for DataLab.

Options:learndatalab
userIdinteger

ID of an existing group member to update.

Update Group Member Role

update_group_member_role
Full Description

Update the role of a single existing member of a DataCamp group. Requires the group's id, the target user's id, and the new role. Permissions are enforced upstream — the caller must have permission to change this member's role. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (4 required)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

rolestring

The new role to assign to the member. Permissions are enforced upstream.

Options:adminmanagerteam_managermember
userIdinteger

ID of the existing group member whose role to update.

Update Team

update_team
Full Description

Update an existing team's metadata inside a DataCamp group. Requires the team's id. At least one of name, slug, or hexcode must be supplied — only the fields you set are changed. Membership is not updated here; use the dedicated team-membership tools for that. Permissions are enforced upstream. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (2 required, 3 optional)
Required
groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

teamIdinteger

The ID of the team to update.

Optional
hexcodestring

New team color as a 6-digit hex code (e.g. `#A8D8EA`). Guideline (not enforced): prefer softer, pastel-leaning colors over vivid or neon tones.

namestring

New display name for the team. Must be unique within the group.

slugstring

New URL slug for the team. Must be unique within the group. Renaming a team typically updates the slug automatically; only set this when you specifically want a different slug than the auto-generated one.

Webinar.get By Id

webinar.get_by_id
Full Description

Get a webinar by its ID.

Parameters (1 required)
Required
webinarIdnumber

The ID of the webinar to get.

Whoami

whoami
Full Description

Returns the authenticated user's identity and profile.

Withdraw Pending Invite

withdraw_pending_invite
Full Description

Withdraw (revoke) one or more pending email invites from a DataCamp group. Use to clean up invites that haven't been claimed yet. Requires the group's id and an array of invite ids. Permissions are enforced upstream — the caller must be allowed to manage invites for the group. Before using this tool, clearly state the name of the group you are accessing. Never mix data from different groups in the same task/session. If the user wants to access another group, ask them to start a new task/session or explicitly confirm the switch.

Parameters (3 required)
Required
groupIdinteger

DataCamp group id.

groupNamestring

The exact human-readable name of the target DataCamp group. It must match the actual group name exactly. If unknown, resolve it first by getting the group details; never infer or invent it.

inviteIdsarray

Ids of the pending invites to withdraw.