Skip to main content
Glama
illlilililiililll

LearnUs local MCP server

LearnUs local MCP server

Yonsei LearnUs의 강의, 과제, 일정, 공지, 알림, 영상 학습 상태와 강의자료를 읽는 TypeScript local stdio MCP 서버입니다. Node.js 22.19 이상과 Playwright Chromium이 필요합니다. 현재 버전은 0.1.0입니다.

설치 및 실행

npm ci
npx playwright install chromium
npm run build
npm run lint
npm test
npm start

Linux CI에서는 npx playwright install --with-deps chromium으로 OS 의존성도 설치합니다. 전역 TypeScript/Playwright 설치는 필요하지 않습니다. production process 테스트를 위해 build를 먼저 실행하세요.

MCP Host에 command node, args ["<path-to-repo>/dist/index.js"]를 설정합니다. Host 프로세스에 LEARNUS_ID, LEARNUS_PASSWORD 환경변수를 안전하게 전달하세요. 실제 값을 Tool 인자, 채팅, 명령줄 또는 커밋되는 설정에 넣지 마세요. 서버는 .env를 자동 로드하지 않습니다. Host 설정을 참고하세요.

조회 Tool은 자동 인증합니다. auth_status는 세션 진단용이며 조회 전 필수 단계가 아닙니다.

Related MCP server: CAU e-class MCP

16개 public Tools

courseId/moduleId/articleId/videoId는 응답에서 얻은 양의 정수 문자열입니다. 과제 상세 cmid는 양의 정수 숫자, fileId는 등록된 UUID입니다.

Tool

필수 입력

선택 입력

결과

learnus_auth_status

없음

없음

authenticated

learnus_list_courses

없음

없음

courses, warnings

learnus_get_course

courseId

없음

name?, activities

learnus_list_activities

courseId

없음

activities

learnus_get_assignment

cmid

없음

과제 상세, extraFields, warnings

learnus_upcoming

from, to

courseId, limit

events, truncated, warnings

learnus_list_announcements

없음

courseId, limit

items, warnings

learnus_get_announcement

moduleId, articleId

없음

item?, warnings

learnus_list_notifications

없음

limit

items, warnings

learnus_list_videos

courseId

refresh

items, currentWeek?, warnings

learnus_get_video_attendance

courseId

videoId, refresh

mode, items, currentWeek?, warnings

learnus_get_learning_overview

없음

courseId, week, status, refresh

courses 및 상태별 목록, warnings

learnus_list_files

courseId

scope, refresh

items, warnings

learnus_download_file

fileId

없음

로컬 path, sizeBytes, mimeType

learnus_get_overview

없음

courseId, from, to, include 옵션, maxItemsPerSection

range 및 선택된 summary sections, warnings

learnus_get_weekly_tasks

없음

courseId, from, to

학습을 포함한 주간 coursework summary

주간 과제·출석·학습 질문은 weekly_tasks, 여러 범주의 조정 가능한 요약은 overview, 특정 항목은 개별 Tool을 사용합니다. 학업 맥락이 없는 일반 개인 할 일 질문에 LearnUs를 자동 우선하지 않습니다.

주간 기본 범위는 Asia/Seoul 월요일~일요일입니다. overview는 기본 upcoming/과제/공지를 각각 최대 10개 조합합니다. includeCourses/includeNotifications/includeLearning은 기본 false이며 weekly_tasks는 learning도 포함합니다. includeUpcoming/includeAssignments/includeAnnouncements로 기본 sections도 제외할 수 있습니다. 부분 실패는 *_UNAVAILABLE warning으로 남깁니다.

공지·알림·새 파일은 기본 informational입니다. 완료된 자료를 확인 의무로 해석하지 않으며 Moodle completion은 다운로드나 실제 독서의 증명이 아닙니다. 영상 completion/progress/attendance target/status를 분리합니다. 대상·마감 근거가 부족하면 unknown을 유지합니다. 상세 정책: 학습 의미, 주간 조회.

환경변수

변수

기본값/용도

LEARNUS_ID / LEARNUS_PASSWORD

로컬 프로세스 인증정보

LEARNUS_MAX_CONCURRENT_REQUESTS

4; 1~32

LEARNUS_CACHE_ENABLED

1; 0은 일반 TTL cache 비활성화, 기능별 cache 유지

LEARNUS_DOWNLOAD_ROOT

미설정 시 ~/Documents/LearnUS

LEARNUS_MAX_DOWNLOAD_BYTES

52428800

LEARNUS_COURSE_CONTEXT_OVERRIDES

선택적 course ID별 audienceTags JSON

LEARNUS_INTEGRATION

0; 실계정 read-only 검증 opt-in

LEARNUS_DOWNLOAD_INTEGRATION

0; 별도 다운로드 integration opt-in

세션은 메모리에 보관합니다. Cache/coalescing 정책. 시간표 cache는 정규화 데이터를 학기별로 저장하지만 실제 endpoint adapter는 연결되지 않았습니다.

파일은 등록된 fileId만 다운로드하며 root 하위에서 기존 파일을 덮어쓰지 않습니다. ubfile/과제 introattachment를 지원하며 증거가 부족한 resource/folder는 FILE_SOURCE_RESEARCH_REQUIRED를 반환할 수 있습니다.

검증

npm run test:browser
npm run test:inspector
npm run evaluate:tokens

Inspector UI는 npm run inspector로 엽니다. smoke는 credential을 제거한 production stdio 프로세스에서 등록/진단/안전한 오류 응답을 검사합니다. benchmark는 synthetic HTTP와 production Tool handlers를 조합하며 정확한 LLM token 수나 Host routing을 검증하지 않습니다.

실계정은 credential과 LEARNUS_INTEGRATION=1을 안전하게 공급한 프로세스에서 npm run test:integration:release로 opt-in 합니다. 한 세션에서 조회하며 과제/공지/영상이 없는 정상 계정도 허용합니다. 다운로드는 test:integration:learning에서 추가 flag가 있을 때만 임시 디렉터리에서 수행하고 정리합니다. 일부 과거 milestone 테스트는 과제/영상 존재를 요구하므로 empty 계정에서는 상세 검증이 불가능할 수 있습니다. 일반 CI에는 실계정 credential을 설정하지 않습니다.

라이선스: MIT.

Available Tools

16 tools
learnus_auth_statusA
Read-onlyIdempotent

Reports whether the current MCP process has an authenticated LearnUs session. Use only when the user explicitly asks whether LearnUs is logged in or whether the session is alive. Do not use it as a prerequisite for a data request; data Tools authenticate automatically and a false status does not imply manual browser login is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds genuinely non-obvious behavioral context beyond them: data tools authenticate automatically, and a false status does not imply that manual login is needed. That is exactly the kind of semantic guidance structured fields cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose and then the usage constraints. Every sentence earns its place, and the counter-intuitive warning is placed last but clearly scoped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status probe with no output schema, the description covers what the tool does, when to invoke it, when not to, and how to interpret a negative result. No important invocation context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document and the baseline is a 4. The description correctly avoids inventing parameter behavior, though it also does not describe what the returned status values look like.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource: reports whether the current MCP process has an authenticated LearnUs session. It also distinguishes itself from the sibling data tools by clarifying that it is a status check, not a data accessor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes usage to the case where the user directly asks about login/session state, and explicitly forbids using it as a prerequisite for data calls. It also preempts a likely misinterpretation (that a false status requires manual browser login).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_download_fileA

Downloads one previously discovered LearnUs fileId into the configured local LearnUS directory. Use only when the user explicitly asks to download that file. Prefer this Tool over browser download for supported fileIds. It reads remote LearnUs data but creates a local file without overwriting; it does not modify LearnUs. Do not pass URLs or guessed IDs. Browser fallback is allowed only when MCP reports the file/capability unsupported or explicit visual interaction is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileIdYesOpaque file ID returned by learnus_list_files, learnus_get_assignment or learnus_get_announcement.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: it explains why readOnlyHint=false (it creates a local file) while clarifying that remote LearnUs data is not modified, and it discloses no-overwrite semantics, which a caller cannot infer from the schema. It stops short of covering auth prerequisites and rate/error behavior, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and scope, then layered guidance (preference, side effects, input constraint, fallback) in discrete sentences. Slightly long at six sentences, but each one carries a distinct rule rather than restating structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers purpose, preconditions, side effects, input constraints and fallback routing. Everything an agent needs to invoke it correctly and to know its limits is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100% and the fileId description names the producing tools, so the baseline is 3. The description goes further by constraining acceptable input ('Do not pass URLs or guessed IDs'), which prevents a common misuse the schema alone does not forbid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (downloads) and resource (a previously discovered LearnUs fileId into the configured local directory), which cleanly distinguishes it from retrieval siblings like learnus_list_files. An agent can tell immediately that this is the local-materialization tool rather than a metadata reader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use only when the user explicitly asks to download that file'), an explicit alternative ('Prefer this Tool over browser download'), and an explicit condition for the fallback ('only when MCP reports the file/capability unsupported or explicit visual interaction is required'). Both the preferred tool and the excluded path are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_announcementA
Read-onlyIdempotent

Gets one normalized LearnUs announcement body and registers its attachments as fileIds. Use when the user asks to read a specific announcement already identified by moduleId and articleId. Do not use it to list or search announcements, or to mark a notice read.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleIdYesExact ubboard Moodle module ID returned by learnus_list_announcements.
articleIdYesExact ubboard article ID returned by learnus_list_announcements.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description still adds value: it discloses that attachments get registered as fileIds, a side effect not captured by any annotation. It doesn't describe error behavior or what 'normalized' entails, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the operation and its side effect, then usage scope, then exclusions. No filler and every clause carries routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool this is complete: purpose, identification source, side effect, and negative scope are all stated. No output schema exists, but the description already indicates what is returned ('normalized announcement body') and the attachment registration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both required params are documented there, including that the IDs come from learnus_list_announcements. The description only restates that the announcement is identified by moduleId and articleId, adding no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Gets'), resource ('one normalized LearnUs announcement body'), and an additional effect ('registers its attachments as fileIds'). It explicitly distinguishes itself from list/search siblings and from mark-read behavior, so an agent can route to it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive condition ('when the user asks to read a specific announcement already identified by moduleId and articleId') and explicit exclusions ('Do not use it to list or search announcements, or to mark a notice read'). Alternatives are named by function, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_assignmentA
Read-onlyIdempotent

Gets one assignment’s instructions, due date, attachments and submission/grading status by canonical activity cmid. Use when the user asks for details or status of a specific known assignment. Do not use it to search for assignments across courses or to submit/edit an assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
cmidYesExact Moodle assignment activity ID (cmid) returned by learnus_list_activities, learnus_get_course or an overview Tool.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds useful context by enumerating the returned content (instructions, due date, attachments, submission/grading status), which is meaningful given there is no output schema; it stops short of noting auth or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with what the tool returns before the usage and anti-usage clauses. Every sentence carries a distinct instruction with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Single required parameter, full schema coverage, rich annotations, and the description compensates for the absent output schema by naming what is returned. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the cmid parameter is fully documented in the schema, including where it comes from. The description only echoes 'canonical activity cmid', adding no syntax or format detail beyond the structured field, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (gets one assignment) plus the scope of returned data (instructions, due date, attachments, submission/grading status) and the lookup key (canonical activity cmid). An agent can distinguish it from list/search siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger (user asks for details or status of a specific known assignment) and explicit exclusions (not for searching across courses, not for submitting/editing). This leaves nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_courseA
Read-onlyIdempotent

Gets one known LearnUs course with its normalized structure and activities. Use when an exact course is known and the user asks for that course’s contents or structure. Do not use it to discover all enrolled courses or to fetch full assignment/announcement details.

ParametersJSON Schema
NameRequiredDescriptionDefault
courseIdYesExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the output is a 'normalized structure and activities', which hints at the response shape but does not cover pagination, result size, or what 'normalized' means. With annotations carrying the burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose first, then positive usage trigger, then negative exclusions. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Single required parameter, no nested objects, no output schema, and the description signals the return contents ('normalized structure and activities'). Nothing essential is missing for correct invocation, though the absence of an output schema leaves the exact return shape underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema's own description explains courseId must be an exact Moodle course ID from a LearnUs course tool. The description's phrase 'one known LearnUs course' reinforces this but adds no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Gets) and resource (one known LearnUs course) plus the returned scope (normalized structure and activities). It is immediately distinguishable from learnus_list_courses, which is the sibling covering discovery of many courses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition ('when an exact course is known and the user asks for that course's contents or structure') and explicit exclusions ('Do not use it to discover all enrolled courses or to fetch full assignment/announcement details'), routing the agent to learnus_list_courses, learnus_get_assignment, and learnus_get_announcement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_learning_overviewA
Read-onlyIdempotent

Summarizes required incomplete, completed, optional/excluded and unknown VOD learning states. Use when the user asks about course video learning, completion or attendance across a course or week. Do not use it for broad non-video coursework or to treat an unknown target/deadline as a confirmed obligation.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNoCourse week number, current week, or all weeks.
statusNoOptional normalized learning-state filter.
refreshNoWhen true, bypass feature caches and read fresh LearnUs data.
courseIdNoExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this read-only, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real value beyond them by disclosing the epistemic distinction between confirmed required/optional items and 'unknown' states, warning the agent not to overstate certainty. It does not mention caching behavior (left to the refresh param).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place: the first front-loads what is summarized, the second front-loads the trigger and the exclusions. No filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the reported categories (required incomplete, completed, optional/excluded, unknown), which is what an agent needs to interpret results. It stops short of describing aggregation level (per week vs per course) or return shape, a minor gap for a summary tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (week, status enum, refresh, courseId all documented in-schema), so the baseline is 3. The description adds no parameter-level detail such as the week/courseId relationship or when to set refresh, so it does not exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (summarizes) and resource (VOD learning states across a course/week), and enumerates the state categories it reports. However, it never distinguishes itself from the very close sibling learnus_get_video_attendance, which the 'attendance' phrasing overlaps with, so an agent must infer the boundary from the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger ('user asks about course video learning, completion or attendance across a course or week') and two when-not conditions (non-video coursework; treating unknown targets/deadlines as confirmed obligations). The alternative tool is not named, and the second exclusion is phrased cryptically, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_overviewA
Read-onlyIdempotent

Gets a configurable broad LearnUs coursework summary covering assignments, calendar deadlines, announcements, notifications and optional learning/attendance. Use as the default broad LearnUs retrieval Tool when a request spans multiple categories or the exact underlying resource is not yet known, such as what is new, what matters or what is happening across classes. Do not use it solely for generic personal to-do/calendar questions or for a focused request that maps cleanly to a narrower Tool. For weekly actionable coursework specifically, prefer learnus_get_weekly_tasks. Informational, completed and unknown items remain distinct.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive range end as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
fromNoInclusive range start as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
courseIdNoExact Moodle course ID returned by a LearnUs course tool.
includeCoursesNoInclude current course summaries.
includeLearningNoInclude course video learning, completion and attendance classification.
includeUpcomingNoInclude LearnUs calendar events in the requested range.
includeAssignmentsNoInclude normalized assignment summaries and submission states.
maxItemsPerSectionNoMaximum number of items returned in each included overview section.
includeAnnouncementsNoInclude recent announcement summaries without full article bodies.
includeNotificationsNoInclude recent account notifications without marking them read.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds non-obvious semantics: it is configurable/broad by default, and that 'informational, completed and unknown items remain distinct' — a result-shaping trait not implied by annotations or schema. It stops short of describing pagination or section defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences, front-loaded with the core purpose before routing advice. Every sentence carries routing or behavioral information; the closing sentence on item-state distinction is terse but purposeful. Slightly dense but no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, zero-required aggregator with no output schema and full annotation coverage, the description supplies the missing decision layer — when to pick it over siblings and what conceptual sections exist. Range defaults and section limits are left to the schema, which is reasonable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters including the date formats, courseId provenance and include* defaults. The description only implicitly maps its category list to the include flags, adding little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Gets a configurable broad LearnUs coursework summary' with an explicit enumeration of what it spans (assignments, calendar deadlines, announcements, notifications, optional learning/attendance). An agent can tell this apart from narrower siblings like learnus_upcoming or learnus_get_weekly_tasks without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('default broad LearnUs retrieval Tool when a request spans multiple categories or the exact underlying resource is not yet known'), explicit when-not-to-use ('generic personal to-do/calendar questions', 'focused request that maps cleanly to a narrower Tool'), and names the concrete alternative for weekly tasks (learnus_get_weekly_tasks). Full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_video_attendanceA
Read-onlyIdempotent

Gets canonical completion, viewing progress, attendance target and attendance status for a course or one known video. Use when the user asks whether a specific course video was watched, completed or counted for attendance. Do not use it to play a video or infer attendance from its title.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoWhen true, bypass the feature cache and read fresh LearnUs data.
videoIdNoOptional exact VOD activity ID (cmid). Omit to return the course report.
courseIdYesExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the useful nuance that returned attendance is 'canonical' rather than inferred from titles, but says nothing about freshness/caching behavior (despite the refresh param) or failure modes for unknown IDs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what is returned, then when to use it, then what it is not for. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description usefully enumerates the returned concepts (completion, viewing progress, attendance target, attendance status) and covers all three parameters indirectly. It could say a bit more about error behavior for an unknown videoId, but it is adequate for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so courseId, videoId and refresh are already fully documented in the schema, including the 'omit to return the course report' behavior. The description's phrase 'for a course or one known video' merely restates what the schema already conveys, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Gets canonical completion, viewing progress, attendance target and attendance status') with a precise scope ('for a course or one known video'). It is easily distinguishable from siblings like learnus_list_videos, which enumerates videos rather than reporting attendance for one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition ('Use when the user asks whether a specific course video was watched, completed or counted for attendance') plus two explicit exclusions (not for playing a video, not for inferring attendance from a title). It stops short of naming an alternative sibling tool to route to, so it falls just under the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_get_weekly_tasksA
Read-onlyIdempotent

Gets actionable Yonsei LearnUs coursework for the current or requested week: assignments, deadlines, required incomplete learning and attendance items. Use as the default LearnUs Tool when a request clearly concerns Yonsei coursework, classes, assignments, academic deadlines, required lecture videos, incomplete learning or attendance obligations, even without the words LearnUs/런어스. Do not use it for unrelated personal to-do/calendar questions or to treat informational/completed/optional/unknown items as required tasks. Typical requests ask what coursework remains this week, which assignments are due, or whether required videos are incomplete. Calendar entries alone do not prove an unfinished task.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoInclusive range end as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
fromNoInclusive range start as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
courseIdNoExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it filters out informational/completed/optional/unknown items and warns that calendar entries alone do not prove an unfinished task, which shapes how results should be interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose before the guidance, and each sentence carries usable information. It runs long (five sentences) with some repetition across the trigger/exclusion clauses, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, idempotent query tool with 100% schema coverage, no output schema, and no required parameters, the description covers purpose, invocation triggers, exclusions, and result-interpretation caveats. Nothing an agent needs to select or call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'from', 'to', and 'courseId' fully documented including Asia/Seoul date semantics and Moodle course ID lookup. The description adds nothing about parameter syntax or defaults, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('gets actionable Yonsei LearnUs coursework') with clear scope (current or requested week) and enumerates the item types returned (assignments, deadlines, incomplete learning, attendance). No sibling is named explicitly, so differentiation from overlapping tools like learnus_upcoming or learnus_get_learning_overview is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly designates itself as the default LearnUs tool, gives a positive trigger condition (coursework/classes/assignments/deadlines even without the keyword LearnUs), and states a negative exclusion (unrelated personal to-do/calendar questions, or treating informational/completed/optional/unknown items as required). This is near-ideal when-to-use/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_activitiesA
Read-onlyIdempotent

Lists assignments, VODs, resources, folders, boards and unknown activity types in one course. Use when the user asks what activities or learning materials exist in a known course, or when a cmid must be discovered. Do not use it for full activity details or cross-course coursework summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
courseIdYesExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is low. The description still adds two behavioral traits beyond them: the listing surfaces 'unknown activity types' (so results may include unclassified entries) and it can reveal cmids, which explains why it is a lookup entry point. It omits pagination or result-size behavior, so it is not perfect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the capability, followed by use conditions and exclusions. Every sentence carries distinct information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-parameter listing tool with no output schema, the description covers what is returned (the activity type set), when to call it, and what it is not for; annotations cover the safety profile. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single courseId parameter, whose description already specifies it is an exact Moodle course ID from a LearnUs course tool. The description only implies scoping to 'one course' and adds no syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Lists) and enumerates the exact resource set (assignments, VODs, resources, folders, boards, unknown activity types) scoped to one course. It is clearly distinguishable from siblings like learnus_get_assignment (details) and learnus_get_learning_overview (cross-course summaries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggering conditions (user asks what activities/materials exist in a known course; a cmid must be discovered) and explicit exclusions (full activity details, cross-course summaries), naming the class of alternatives to prefer instead. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_announcementsA
Read-onlyIdempotent

Lists normalized LearnUs ubboard announcement summaries, newest dated items first. Use when the user asks for recent course notices or announcements, optionally in one known course. Do not use it for a full announcement body; use learnus_get_announcement with known module/article IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of newest announcement summaries to return.
courseIdNoExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds behavioral value beyond the annotations: results are normalized summaries, returned newest-first, and are intentionally not full bodies. It stops short of any pagination or rate-limit detail, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, and the ordering/scope constraint is front-loaded before the usage and exclusion guidance. Every sentence carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list tool with no output schema, the description covers scope, ordering, return granularity (summaries, not bodies) and the routing alternative. It could say slightly more about what fields a summary contains, but nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (limit default 10/max 50, courseId pattern) are already documented. The description only restates the optional single-course filter ('optionally in one known course') and implies newest-first ordering from limit, adding little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists), resource (normalized LearnUs ubboard announcement summaries), and scope/ordering (newest dated items first). The sibling it must not be confused with, learnus_get_announcement, is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a positive trigger ('recent course notices or announcements, optionally in one known course') and an explicit exclusion ('Do not use it for a full announcement body') with the correct alternative tool and the condition (known module/article IDs) that selects it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_coursesA
Read-onlyIdempotent

Lists the user’s current LearnUs courses and canonical Moodle course IDs. Use when the user asks which courses/classes they are taking or when another LearnUs Tool needs an exact course ID. Do not use it for activity, assignment or file details inside a known course.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower. The description still adds behavioral value by disclosing what the call yields (current courses plus canonical Moodle IDs that other tools consume), though it omits pagination, auth, and result ordering details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the capability front-loaded, followed by usage and exclusion; every clause carries information and nothing is repeated from annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers what is returned (courses and canonical IDs), when to call it, and when not to, which is everything an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; the description correctly implies the call is unfiltered and scoped to 'the user's current' courses, so no parameter gaps exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Lists the user's current LearnUs courses') and adds a distinguishing scope detail ('canonical Moodle course IDs') that separates it from the several other list_* siblings. An agent can identify what this returns without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions (user asks which courses they take, or another LearnUs tool needs an exact course ID) and an explicit when-not ('Do not use it for activity, assignment or file details inside a known course'), effectively routing to list_activities, get_assignment and list_files.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_filesA
Read-onlyIdempotent

Discovers safe downloadable course materials, PDFs and attachments and returns opaque fileIds plus Moodle completion state. Use when the user explicitly asks for course files, lecture materials, PDFs, attachments or downloads. Do not use it to download arbitrary URLs or to assume an existing/new file still needs review.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoWhere to discover files: course activities, assignment pages, announcement pages, or all supported sources.
refreshNoWhen true, bypass the feature cache and read fresh LearnUs data.
courseIdYesExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld behavior. The description adds useful context beyond them: results are pre-filtered to 'safe downloadable' items, and the identifiers returned are opaque fileIds suitable for a later download call. It does not describe cache scope or any cap on results, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then usage triggers, then exclusions. No filler sentences, though the second sentence packs three triggers and two prohibitions densely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly volunteers what comes back (fileIds plus completion state). Combined with full schema coverage and rich annotations, an agent has enough to call it correctly; only result limits and the exact definition of 'safe' remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (scope, refresh, courseId are all documented, including the enum meaning), so the schema carries parameter meaning. The description adds no syntax or format detail beyond it; per the baseline rule, 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Discovers) and resource (course materials, PDFs, attachments) and clarifies the return shape (opaque fileIds plus Moodle completion state). This cleanly separates it from learnus_download_file, which retrieves content rather than enumerating it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the trigger (user asks for course files, lecture materials, PDFs, attachments, downloads) and two exclusions (downloading arbitrary URLs; assuming a file still needs review). Both when-to-use and when-not-to-use are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_notificationsA
Read-onlyIdempotent

Lists normalized LearnUs account notifications without marking them read. Use when the user asks about recent LearnUs alerts or notifications. Do not use it to infer a required task merely from a new-file notice; notifications are informational without explicit action evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of newest LearnUs notifications to return.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description still adds real value beyond them: it guarantees the read does not mark notifications as read (a side-effect that readOnlyHint alone would not clarify) and warns that notifications are informational, not implicit task assignments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the core action and its side-effect guarantee are front-loaded before the usage and exclusion clauses. Every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema list tool with full annotation coverage, the description covers purpose, trigger, exclusion and side effects adequately. The only gap is that 'normalized' notifications are not characterized (what fields come back), which matters slightly given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single 'limit' parameter already documents its meaning, default and bounds. The description adds no additional semantics about ordering or the meaning of the limit, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists normalized LearnUs account notifications') plus a key side-effect constraint ('without marking them read'). The resource is distinct from the sibling announcement tools, though the description never explicitly contrasts itself with learnus_list_announcements, so the sibling differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when the user asks about recent LearnUs alerts or notifications') and an explicit exclusion ('Do not use it to infer a required task merely from a new-file notice'). No alternative sibling tool is named for the excluded case, so it stops short of full when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_list_videosA
Read-onlyIdempotent

Lists VOD activities in one course with canonical IDs, audience applicability and separate availability/instructional deadlines. Use when the user asks what course videos exist or for video metadata in a known course. Do not use it to determine actual attendance/progress status; use learnus_get_video_attendance or learnus_get_learning_overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoWhen true, bypass the feature cache and read fresh LearnUs data.
courseIdYesExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral value beyond them: it names the returned fields (canonical IDs, audience applicability, dual deadlines) and explicitly disclaims attendance/progress semantics, though it says nothing about the refresh cache behavior or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core purpose front-loaded and the exclusion last. Every clause carries either scope, trigger, or routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned content, and it covers trigger, scope, and the nearest confusable sibling. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (courseId, refresh) are already documented in the schema. The description's 'in one course' reinforces courseId scoping but adds no format, ID-source, or refresh guidance beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (VOD activities in one course) and enumerates the distinguishing payload (canonical IDs, audience applicability, separate availability/instructional deadlines). An agent can separate it from learnus_list_activities and learnus_list_files without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('user asks what course videos exist or for video metadata in a known course') plus a when-not with two named alternatives (learnus_get_video_attendance, learnus_get_learning_overview). Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learnus_upcomingA
Read-onlyIdempotent

Lists canonical LearnUs calendar events and deadlines in a date range, optionally for one course. Use when the user asks for calendar events, schedules or deadlines between specific dates. Do not use it to infer task completion or required attendance; use learnus_get_weekly_tasks for actionable weekly coursework. Date-only values use Asia/Seoul; timestamps require a timezone.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesInclusive range end as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
fromYesInclusive range start as YYYY-MM-DD in Asia/Seoul or an ISO 8601 timestamp with timezone.
limitNoMaximum number of calendar events to return after date and course filtering.
courseIdNoExact Moodle course ID returned by a LearnUs course tool.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: 'canonical' events (implying deduplicated/authoritative source), the date-only Asia/Seoul default, and that timestamps require a timezone. It doesn't disclose return shape or the limit/pagination behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose then trigger then exclusion then timezone caveat. Slightly redundant since the timezone rule is also encoded in the schema, but every sentence is otherwise doing work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 fully documented params, no nested objects and no output schema, the description covers what an agent needs to select and call the tool: scope, filtering by course, timezone handling, and the sibling to prefer for tasks. Return format is not specified, but with no output schema that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each of the four params is documented in-schema, so the baseline is 3. The description's timezone sentence largely restates what the from/to schema descriptions already say, adding little parameter-level meaning of its own.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists), resource (canonical LearnUs calendar events and deadlines), scope (date range, optionally one course). It names the sibling it is not (learnus_get_weekly_tasks), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('user asks for calendar events, schedules or deadlines between specific dates'), an explicit exclusion ('do not use it to infer task completion or required attendance'), and names the correct alternative for that case. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.0
    • First observedlearnus_auth_status
    • First observedlearnus_download_file
    • First observedlearnus_get_announcement
    • First observedlearnus_get_assignment
    • First observedlearnus_get_course
    • First observedlearnus_get_learning_overview
    • First observedlearnus_get_overview
    • First observedlearnus_get_video_attendance
    • First observedlearnus_get_weekly_tasks
    • First observedlearnus_list_activities
    • First observedlearnus_list_announcements
    • First observedlearnus_list_courses
    • First observedlearnus_list_files
    • First observedlearnus_list_notifications
    • First observedlearnus_list_videos
    • First observedlearnus_upcoming

TDQS

A4.1/5.0

Scored across 16 tools

Disambiguation4/5

Tools mostly target distinct resource+action pairs (list courses, get assignment, list videos), and descriptions explicitly state when not to use them. However, several summary tools (learnus_get_overview, learnus_get_weekly_tasks, learnus_upcoming) and announcement/notification tools overlap in purpose, requiring careful reading to avoid misselection.

Naming Consistency4/5

All tools use the learnus_ prefix and snake_case, with most following a verb_noun pattern (list_, get_, download_). Exceptions like learnus_upcoming and learnus_auth_status are minor deviations from the verb_noun convention. Consistent enough for predictability.

Tool Count4/5

16 tools is slightly above the typical 3–15 range but justified by the breadth of LMS resources (courses, activities, assignments, videos, files, notifications, summaries). Each tool appears to serve a specific retrieval granularity, though the set is on the heavy side.

Completeness4/5

The surface covers course discovery, activity/assignment details, calendar, announcements, notifications, videos, files with download, and aggregated overviews. Missing grade retrieval or assignment submission, but those may be outside the stated retrieval scope; minor gaps only.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables Korea University students to query their KUPID portal and Canvas LMS using natural language for notices, library seats, timetable, grades, courses, and assignments.
    31
    12
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that provides tools to interact with SNU eTL (Canvas LMS), including viewing courses, assignments, announcements, grades, downloading and organizing course files, with persistent local storage and automatic sync.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables local, read-only access to SMU's D2L Brightspace eLearn, allowing users to list courses, browse weekly modules and documents, search content, retrieve metadata, and download files after authenticating through Chrome.
    11
    -