AcademyOcean MCP by usefulapi
List learners, courses, teams, progress, quiz results and certificates in AcademyOcean.
사용해야 할까요
품질 및 안전성
발견 사항 (10)
- LOWacademyocean_get_learner_progress에서
- LOWacademyocean_learners_registered에서
- LOWacademyocean_learners_repeated_logins에서
- LOWacademyocean_learners_completed_course에서
- LOWacademyocean_course_progress_by_learners에서
- LOWacademyocean_learners_churn_at_content에서
- LOWacademyocean_learners_by_country에서
- LOWacademyocean_learner_certificates에서
- LOWacademyocean_learner_quiz_statistics에서
- LOWacademyocean_check_learner_invites에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"academyocean": {
"url": "https://academyocean.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://academyocean.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (17)
🟢academyocean_list_academies
List the academies in the account with their learner counts, publish state and custom domain. Good first call to find an academy id. Action: academies.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_list_courses
List the courses in the academy with their id, slug, description, group flag and SCORM flag. Use the id in the course tools. Action: courses.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_list_teams(include_course_assignments)
List the teams in the academy. Set include_course_assignments to add the courses each team is assigned. Action: getTeams.
입력 스키마
{
"type": "object",
"properties": {
"include_course_assignments": {
"description": "Also return the courses assigned to each team.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_list_learners(email, with_academy, with_teams, limit)
List learners registered in the academy with their score, lesson counts, last login and country. Filter by one email. Action: learners.
입력 스키마
{
"type": "object",
"properties": {
"email": {
"description": "Return only the learner with this email.",
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"with_academy": {
"description": "Include the academy id and name.",
"type": "boolean"
},
"with_teams": {
"description": "Include the team ids and names.",
"type": "boolean"
},
"limit": {
"description": "Maximum number of learners to return.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_get_learner_progress(email, course_type, with_academy, with_teams, only_displayed_courses)
Return one learner's progress in every course or group, with a breakdown of each lesson and quiz (passed, score, times). Action: courseProgress.
입력 스키마
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Learner email address."
},
"course_type": {
"description": "Which courses to include (default all).",
"type": "string",
"enum": [
"all",
"published",
"unpublished"
]
},
"with_academy": {
"description": "Include the academy id and name.",
"type": "boolean"
},
"with_teams": {
"description": "Include the team ids and names.",
"type": "boolean"
},
"only_displayed_courses": {
"description": "Only courses shown to the learner (published and assigned to their team).",
"type": "boolean"
}
},
"required": [
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_registered(date, operator, start, end)
List learners who registered on one date (with an operator such as >=) or within a start and end date range. Dates are UTC. Action: learnersRegisteredAt.
입력 스키마
{
"type": "object",
"properties": {
"date": {
"description": "Date to match, for example '2026-01-25 00:00:00'. Use with operator.",
"type": "string"
},
"operator": {
"description": "Comparison for date (default =).",
"type": "string",
"enum": [
"=",
">",
"<",
">=",
"<=",
"<>"
]
},
"start": {
"description": "Range start (UTC). Use together with end.",
"type": "string"
},
"end": {
"description": "Range end (UTC). Use together with start.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_repeated_logins(start, end)
List learners who logged in more than once, optionally within a date range (UTC). Action: learnersRepeatedLogIns.
입력 스키마
{
"type": "object",
"properties": {
"start": {
"description": "Login range start (UTC). Use together with end.",
"type": "string"
},
"end": {
"description": "Login range end (UTC). Use together with start.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_completed_course(course_id)
List learners who completed one course. Use the course id or URL slug from the course list. Action: learnersCourseComplete.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Encoded course id, or the course URL slug."
}
},
"required": [
"course_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_course_progress_by_learners(course_id, course_slug, page, amount, show_not_started_learners, ...)
Return every learner's progress in one course, page by page. Give course_id or course_slug (course_id wins if both are set). Action: learnersProgressByCourse.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"description": "Course id from the course settings ('API, Course ID').",
"type": "string"
},
"course_slug": {
"description": "Course URL slug.",
"type": "string"
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"amount": {
"description": "Learners per page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"show_not_started_learners": {
"description": "Include learners who have not started the course.",
"type": "boolean"
},
"only_assigned_learners": {
"description": "Only learners whose team has this course assigned.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_by_score(score, operator)
List learners whose score matches a value, for example >= 80. Action: learnersWithScore.
입력 스키마
{
"type": "object",
"properties": {
"score": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Score value to compare."
},
"operator": {
"description": "Comparison (default =).",
"type": "string",
"enum": [
"=",
">",
"<",
">=",
"<=",
"<>"
]
}
},
"required": [
"score"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_passive_learners
List learners who registered but never opened a lesson. Action: passiveLearners.
입력 스키마
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_churn_at_content(course_id, content_id)
List learners who stopped progressing at one content item (lesson or quiz) of a course. Action: learnersChurnAtContent.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Encoded course id, or the course URL slug."
},
"content_id": {
"type": "string",
"minLength": 1,
"description": "Encoded content id."
}
},
"required": [
"course_id",
"content_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learners_by_country(country_iso_code)
List learners from one country by its ISO code, for example NL. Action: learnersFromCountry.
입력 스키마
{
"type": "object",
"properties": {
"country_iso_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "2-letter ISO country code, for example US or NL."
}
},
"required": [
"country_iso_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learner_certificates(email)
List the certificates issued to one learner, with course name, issue date and PDF or image links. Action: certificates.
입력 스키마
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Learner email address."
}
},
"required": [
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learner_variables(records)
Return custom variable values for learners. Pass an object keyed by learner email, each value a list of variable names. System fields are not returned. Action: getLearnerVariable.
입력 스키마
{
"type": "object",
"properties": {
"records": {
"type": "object",
"propertyNames": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"additionalProperties": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"description": "Object keyed by learner email; each value is an array of ids or variable names."
}
},
"required": [
"records"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_learner_quiz_statistics(records)
Return detailed quiz attempts for learners. Pass an object keyed by learner email, each value a list of encoded quiz ids. Includes scores, timing and per-question answers. Action: getLearnersQuizStatistic.
입력 스키마
{
"type": "object",
"properties": {
"records": {
"type": "object",
"propertyNames": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"additionalProperties": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
}
},
"description": "Object keyed by learner email; each value is an array of ids or variable names."
}
},
"required": [
"records"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢academyocean_check_learner_invites(emails)
Check whether invitations exist for some emails, and whether each one has been used. Returns one entry per email. Action: checkLearnerInvite.
입력 스키마
{
"type": "object",
"properties": {
"emails": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Learner email address."
},
"description": "Learner emails to check."
}
},
"required": [
"emails"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거