Skip to main content
Glama

비공식 학생 도구: 전북대학교가 운영하거나 보증하는 공식 서비스가 아닙니다. 학교 명칭과 UI 자산의 권리는 전북대학교에 있으며, 공개 배포 전에는 공식 UI 사용 지침을 확인해야 합니다.

전북대학교 LMS(JBNU LXP, https://lms.jbnu.ac.kr)에 로그인한 학생이 Claude Desktop·Codex 같은 AI 클라이언트에서 "오늘 해야 할 일 알려줘", "이번 주 과제와 마감일 정리해줘", "새로 올라온 공지 알려줘" 처럼 물어볼 수 있게 해 주는 로컬 STDIO MCP 서버입니다. 모든 LMS 기능은 조회 전용이며, 로그인은 사용자가 브라우저에서 직접(패스키·2차 인증 포함) 완료합니다.

한눈에 보는 경험

묻는 말

먼저 받는 답

오늘 뭐 해야 해?

놓치면 안 되는 일 최대 3개와 근거

이번 주 일정 짜줘

제출 상태·남은 시간 기준 학습 계획

뭐가 새로 올라왔어?

마지막 확인 이후 공지·과제·자료 변경점

이 과제 뭐 내야 해?

요구사항·제출물·주의사항과 원문 링크

놓친 것 있나?

마감·공지·과제 변경을 합친 학생 확인함과 상위 행동 3개

이거 최종 제출됐어?

과제 상세 화면을 다시 읽은 제출 판정·근거·주의사항

  • 비밀번호·패스키·인증 코드를 절대 입력받지 않습니다.

  • LMS 세션은 Windows DPAPI 로 암호화해 내 PC 에만 보관합니다.

  • LMS 데이터와 인증정보는 lms.jbnu.ac.kr 이외로 전송하지 않습니다. 문제 신고·기능 제안은 사용자가 전송 내용을 확인하고 승인한 경우에만 로컬 보관함 또는 설정된 HTTPS 수집기로 접수합니다.

Related MCP server: mcpUPB

1. 설치 (Windows, 3분)

필요한 것: Node.js 22 이상(LTS 권장), Google Chrome 또는 Microsoft Edge, Claude Desktop 또는 Codex.

PowerShell 을 열고:

cd "$HOME\Documents\jbnu-lms-mcp"
.\scripts\install.ps1 -RegisterClaude

이 명령이 하는 일: 의존성 설치 → 빌드 → 테스트 → 환경 점검(doctor) → Claude Desktop 설정 파일에 jbnu-lms 서버 등록(기존 파일은 백업).

  • Codex 도 함께 등록: .\scripts\install.ps1 -RegisterClaude -RegisterCodex

  • 테스트 생략: -SkipTests

  • 설치 직후 바로 로그인: -Login

  • 실행 정책 오류가 나면: powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -RegisterClaude

설치가 끝나면 Claude Desktop 을 완전히 종료 후 다시 실행하세요(트레이 아이콘까지 종료).

수동 설정이 필요하면 examples/claude_desktop_config.json 또는 examples/codex-config.toml 을 참고해 경로만 바꿔 넣으면 됩니다.

2. 첫 사용

Claude 에서 이렇게 물어보세요.

오늘 해야 할 일 알려줘

처음이면 도구가 자동 제어가 없는 로그인용 일반 브라우저 창을 LMS /my/에서 엽니다. LMS 로그인 페이지가 만든 공식 리다이렉트로 통합로그인에 들어간 뒤, 세 번째 아이디 로그인 탭을 선택해 아이디·비밀번호로 1차 인증한 뒤, 다음 2차 인증 화면에서 패스키를 선택하세요. 실제 수강 과목이 보이는 LMS 화면에 도착하면 창을 닫지 않고 잠시 기다립니다. 도구가 전용 Chrome을 세션 보존 종료한 뒤 LMS 쿠키만 읽어 HTTP로 검증하고, 원래 질문을 이어서 처리합니다. 두 번째 패스키 인증 로그인 탭의 비밀번호 없는 단독 로그인과는 다른 경로입니다. 인증이 끝나면 LMS 세션은 DPAPI로 저장하고, 전용 브라우저에는 LMS 쿠키만 남겨 원문 보기에 재사용합니다. 비밀번호·자동완성·방문 기록·SSO 쿠키·사이트 저장소·캐시는 자동 정리합니다. 패스키 인증에 필요한 팝업은 이 전용 창에서만 허용됩니다.

명령행에서 미리 로그인해 둘 수도 있습니다.

node dist\cli.js login

3. 이런 질문에 답합니다

질문

사용하는 도구

오늘 해야 할 일 알려줘

get_daily_briefing

놓친 것 있나? 중요한 것만 보여줘

get_attention_inbox

이번 주 과제와 마감일 정리해줘

get_weekly_study_plan, get_upcoming_deadlines

새로 올라온 공지사항 알려줘

get_announcements(only_new), get_recent_changes

이 공지/과제 원문 열어줘

open_lms_source

이 과제 요구사항과 제출물을 분석해줘

get_assignment_detail

이 과제가 최종 제출됐는지 다시 확인해줘

check_assignment_submission

캘린더에 넣을 확정 일정만 찾아줘

get_calendar_sync_candidates

이번 주차 수업자료를 찾아줘

get_course_materials(week)

지난번 확인 이후 변경된 내용만 보여줘

get_recent_changes

그 파일 내려받아 줘

download_course_material

이 오류를 개발자에게 신고해줘

get_feedback_status, report_lms_problem

이런 기능을 추가해달라고 제안해줘

get_feedback_status, suggest_lms_feature

전송 못 한 신고를 다시 보내줘

retry_feedback_delivery

내 로컬 신고 기록을 지워줘

discard_local_feedback

전체 도구 24개의 입력·출력은 docs/05-tool-spec.md 에 있습니다.

응답에는 항상 기준 시각(Asia/Seoul), 로그인 상태, 마지막 동기화 시각, 데이터 출처(Moodle API / 웹 AJAX / LMS 화면 해석 / AI 추정)와 원문 URL 이 붙습니다. 실패하면 영향 범위·자동 복구·바로 실행할 다음 행동·비식별 진단 ID를 함께 안내하며, 일부 강좌만 실패한 결과는 완전한 빈 결과와 구분합니다. 과제는 마감·남은 시간·제출 상태·지각 허용 여부를, 공지는 📌 고정(중요)·🆕 새 글·📎 첨부 여부를 표시합니다. 자료를 다시 내려받으면 SHA-256으로 같은 파일인지 확인해 중복 복사본을 만들지 않습니다.

4. 인증 방식 요약

전북대 LMS 는 통합인증(SSO) 전용입니다. 모바일 웹서비스 자체는 켜져 있지만 로그인 유형이 앱 내 자격 증명 방식(typeoflogin=1)이고, 브라우저 SSO 토큰 발급 경로(launch.php)는 활성화되지 않았습니다. 2차 인증을 우회하거나 비밀번호를 도구에 전달하지 않기 위해 브라우저 세션 방식을 사용합니다(조사 근거: docs/03-auth-decision-record.md). 그래서 이 도구는 다음처럼 동작합니다.

  1. 앱 전용 브라우저 프로필로 Chrome/Edge 창을 열어 사용자가 직접 SSO·패스키를 완료

  2. 로그인된 프로필에서 LMS 세션 쿠키와 sesskey 만 추출해 DPAPI 로 암호화 저장

  3. 성공하면 LMS 이외 쿠키와 비밀번호·자동완성·방문 기록·사이트 저장소·캐시를 지우고, Chrome이 사용자 계정으로 암호화한 LMS 쿠키만 원문 보기용으로 유지

  4. 이후 조회는 브라우저 없이 Moodle 웹 AJAX API + LMS 화면 해석으로 수행

  5. 공식 토큰이 확보되면(학교 정책 변경 시) 자동으로 공식 REST API 를 우선 사용

로그인 창 방식은 두 가지입니다.

모드

설명

설정

plain (기본)

자동화가 전혀 없는 일반 브라우저. LMS 홈을 감지하면 전용 Chrome만 종료해 DPAPI 세션 저장 후 원문 보기용 최소 프로필로 정리

JBNU_LMS_LOGIN_MODE=plain

assisted (실험적)

Playwright로 완료를 감지. SSO가 개발자도구로 판단할 수 있어 권장하지 않음

JBNU_LMS_LOGIN_MODE=assisted

편의를 위해 서버가 켜져 있는 동안 20분마다 세션을 연장(keep-alive)합니다. 끄려면 JBNU_LMS_KEEPALIVE=0.

5. 명령행 도구

node dist\cli.js login              # 브라우저 로그인 (--plain, --wait 300)
node dist\cli.js status --verify    # 연결 상태
node dist\cli.js logout             # 세션 삭제 (--delete-profile 로 브라우저 프로필까지)
node dist\cli.js doctor             # 환경 점검
node dist\cli.js config --client claude --write   # Claude Desktop 등록
node dist\cli.js config --client codex --write    # Codex 등록

6. 환경 변수

변수

기본값

설명

JBNU_LMS_BASE_URL

https://lms.jbnu.ac.kr

LMS 주소

JBNU_LMS_DATA_DIR

%LOCALAPPDATA%\jbnu-lms-mcp

세션·프로필·스냅샷 폴더

JBNU_LMS_BROWSER

자동(Chrome→Edge)

chrome, msedge, 또는 실행 파일 경로

JBNU_LMS_RETAIN_BROWSER_PROFILE

1

원문 보기용 LMS 전용 프로필 유지. 0이면 로그인 성공 후 즉시 폐기

JBNU_LMS_LOGIN_MODE

plain

plain 권장, assisted는 실험적

JBNU_LMS_AUTO_LOGIN

1

세션 만료 시 자동으로 로그인 창 열기

JBNU_LMS_AUTO_LOGIN_WAIT_SEC

90

자동 로그인 대기 시간

JBNU_LMS_KEEPALIVE / JBNU_LMS_KEEPALIVE_MIN

1 / 20

세션 연장 사용 여부 / 간격(분)

JBNU_LMS_DOWNLOAD_DIR

~/Downloads/jbnu-lms

자료 저장 폴더

JBNU_LMS_TIMEOUT_MS

20000

요청 제한 시간

JBNU_LMS_MIN_INTERVAL_MS / JBNU_LMS_MAX_CONCURRENCY

250 / 3

요청 속도 제한

JBNU_LMS_LOG_LEVEL

warn

silent error warn info debug (stderr)

JBNU_LMS_FEEDBACK_URL

없음

문제 신고·기능 제안을 즉시 보낼 HTTPS webhook. 미설정 시 로컬 접수

JBNU_LMS_FEEDBACK_TOKEN

없음

선택적 webhook Bearer 토큰. 응답·로그·보고서에 저장하지 않음

JBNU_LMS_FEEDBACK_TIMEOUT_MS

8000

피드백 원격 전송 제한 시간

7. 개발

npm install
npm run build
npm test                 # 단위·통합·보안 테스트 (mock LMS)
npm run test:security    # 보안 테스트만
npm run check:secrets    # 저장소에 토큰·쿠키가 없는지 검사
JBNU_LIVE=1 npm run test:live           # 실제 LMS 스모크 (로그인 필요)

문서: 요구사항 · 위협 모델 · 인증 결정 기록 · 구조와 데이터 흐름 · 도구 명세 · 설치 안내 · 장애 해결 · 배포 체크리스트 · 실제 LMS 검증 · 확장 로드맵 · 오류·복구 UX 계약 · 파서 호환성 · 멀티플랫폼 배포 · 피드백 수집 계약 · 브랜드·표시 정책 · 캘린더 동기화 UX · 학생 신뢰성 워크플로

8. 보안상 알아 둘 것

  • 이 PC 에 로그인할 수 있는 사람은 저장된 LMS 세션을 사용할 수 있습니다. 공용 PC 에서는 사용 후 disconnect_lms 를 실행하세요.

  • 세션 파일(session.dpapi)과 원문 보기용 프로필은 .gitignore 로 제외되어 있으며 절대 공유하지 마세요. 전용 프로필에는 LMS 쿠키만 남기고 방문 기록·SSO 쿠키·자격 증명 데이터는 자동 정리합니다.

  • 로그(stderr)에는 토큰·쿠키·비밀번호·과제 본문이 기록되지 않도록 마스킹합니다.

  • 문제 신고·기능 제안은 자동 전송하지 않습니다. 제출 내용과 수집 위치를 확인한 뒤 승인해야 하며, 원격 전송본의 삭제·보존 정책은 수집 서버 운영자에게 적용됩니다.

  • 상태를 바꾸는 기능(과제 제출, 글쓰기, 메시지)은 구현되어 있지 않습니다. 확장 계획은 docs/10-roadmap-extensions.md 를 보세요.

라이선스: MIT. 전북대학교·유비온과 무관한 비공식 도구이며 LMS 이용약관과 학교 정책을 준수해 사용하세요.

Available Tools

25 tools
check_assignment_submission과제 제출 안심 확인A
Read-onlyIdempotent

과제 상세 화면을 다시 읽어 최종 제출·초안·미제출 상태, 제출 파일, 마감 위험을 근거와 함께 확인합니다. LMS를 변경하지 않으며 학교가 발급한 공식 제출 영수증은 아닙니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo과제 URL (/mod/assign/view.php?id=..)
cm_idNo과제 모듈 ID (URL 의 id=)

TDQS

A4.3/5.0
Behavior5/5

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

The annotations already indicate read-only and non-destructive behavior. The description adds that it does not change the LMS and is not an official receipt, which reinforces the safety profile and sets expectations.

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?

The description is concise, two sentences, and front-loads the primary purpose. It avoids unnecessary details.

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?

The description covers the key outputs (statuses, files, deadline risk, evidence) and limitations (not official receipt). Without an output schema, this is sufficient for an agent to understand what the tool returns.

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?

The input schema covers both parameters with descriptions, and the description does not add additional parameter semantics beyond the schema. Since schema coverage is 100%, the baseline of 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?

The description clearly states the tool's function: re-reading the assignment detail screen to verify submission status, files, and deadline risk. It explicitly notes it does not modify the LMS and is not an official receipt, providing a clear scope.

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

Usage Guidelines3/5

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

The description implies a confirmation use case but does not explicitly compare with sibling tools like get_assignment_detail or specify when to prefer this tool. It lacks explicit guidance on when to use it versus alternatives.

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

connect_lmsLMS 연결(로그인)A

전북대 LMS 로그인용 일반 브라우저(자동화 없음)를 LMS /my/에서 엽니다. 사용자는 통합로그인의 세 번째 "아이디 로그인" 탭에서 1차 로그인한 뒤 2차 인증으로 패스키를 선택합니다. LMS 홈을 감지하면 전용 Chrome만 세션 보존 종료하고, LMS 세션을 DPAPI로 저장한 뒤 LMS 쿠키만 남긴 원문 보기용 프로필로 정리합니다. 사용자가 창을 직접 닫으면 안 됩니다. 아이디·비밀번호·패스키를 이 도구에 넣지 마세요. wait_seconds 동안 완료를 기다리며, 0 이면 창만 열고 바로 돌아옵니다(이후 get_auth_status 를 호출하면 자동으로 마무리).

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_secondsNoLMS 화면 감지와 세션 저장을 기다리는 시간(초). 기본 120

TDQS

A4.8/5.0
Behavior5/5

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

The tool discloses significant side effects: it opens a non-automated browser, saves the LMS session via DPAPI, preserves a dedicated Chrome profile with only LMS cookies, and terminates the dedicated Chrome after detecting the LMS home. It also warns the user not to close the window directly, which is consistent with the openWorldHint and idempotentHint annotations.

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?

The description is detailed and mostly efficient, but some phrasing is repetitive and awkward, such as '원문 보기용 프로필로 정리합니다' and the repeated warnings about not closing the window and not passing credentials. Still, every sentence contributes necessary operational or safety 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?

The description covers the full workflow, side effects, user actions, and the follow-up step via get_auth_status when wait_seconds is 0. It does not explicitly state the tool's return value or output, but since no output schema is provided and the expected follow-up is clear, the behavior is sufficiently complete for an agent.

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

Parameters5/5

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

The single parameter wait_seconds is fully described in the schema, including its default value of 120, the allowed range, and the special meaning of 0 (open and return immediately). The description adds useful behavioral context about waiting for LMS detection and session saving.

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 clearly states that the tool opens a normal browser at LMS /my/ for user-initiated login, and it distinguishes this from sibling tools like open_lms_source and get_auth_status by describing manual authentication and session preservation. The action, resource, and intended login workflow are specific and unambiguous.

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?

The description gives explicit usage instructions: the user must perform integrated login via the third 'ID login' tab and select a passkey for second-factor authentication. It also warns not to pass credentials and explains the wait_seconds=0 case, directing the agent to call get_auth_status afterward.

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

discard_local_feedback로컬 피드백 삭제A
DestructiveIdempotent

접수 번호에 해당하는 이 PC의 피드백 사본을 삭제합니다. 이미 원격 전송된 사본은 삭제되지 않습니다. 실행 전 사용자에게 이 차이를 알리고 명시적으로 확인받아야 합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYesget_feedback_status의 접수 번호
confirm_discardYes로컬 사본 삭제를 사용자가 명시적으로 확인했을 때만 true

TDQS

A4.8/5.0
Behavior5/5

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

Although the annotations already indicate destructive=true and readOnly=false, the description adds crucial behavioral context: it deletes only the local copy, not the remote one, and requires explicit user confirmation. This goes beyond the annotations and informs the agent of the exact side effects and prerequisite.

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?

The description is concise, with no redundant words or unstructured extras. It conveys the core action, the scope, and the confirmation requirement in two clear sentences.

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?

The description provides sufficient context for an agent to decide when to call the tool: it knows what will be deleted, what will not, and the mandatory confirmation step. No output schema is needed for a delete operation, and the given information is adequate for correct invocation.

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

Parameters5/5

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

Schema coverage is 100% and both parameters are well described. report_id is clearly tied to get_feedback_status receipts, and confirm_discard is explained as requiring explicit user confirmation. These descriptions add meaning beyond just the parameter types and patterns.

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 clearly states the tool deletes a local feedback copy identified by a receipt number, explicitly distinguishing it from remote copies. The verb 'delete' is specific and the resource is well-defined, making it distinct from sibling tools like retry_feedback_delivery or get_feedback_status.

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?

The description explains that only the local copy is deleted and that remote copies are not affected, and it mandates that the user must be informed and explicitly confirm before execution. This provides clear guidance on when and how to use the tool, though it does not explicitly contrast with sibling tools.

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

disconnect_lmsLMS 연결 해제A
DestructiveIdempotent

저장된 LMS 세션(쿠키·토큰)을 삭제합니다. delete_browser_profile=true 면 원문 보기용 전용 브라우저 로그인도 함께 삭제합니다. delete_snapshot=true 면 변경 감지용 로컬 스냅샷도 지웁니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
delete_snapshotNo변경 감지 스냅샷 삭제 (기본 false)
delete_browser_profileNo브라우저 프로필까지 삭제 (기본 false)

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark destructive and idempotent behavior, and the description adds specific destructive scope: cookies/tokens, the optional browser profile for original-text viewing, and the optional local snapshot for change detection. This is meaningful context beyond the annotations.

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 with the main action front-loaded and conditional behaviors described efficiently. There is no filler or redundant restating of the 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 destructive tool with two optional booleans and no output schema, the description covers the deletion scope and flag behavior completely. It does not need to explain return values, and the annotations already cover safety semantics.

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 schema already describes both booleans with 100% coverage, so the baseline is 3. The description adds value by explaining the real-world effect of each flag, which helps the agent decide whether to set delete_browser_profile or delete_snapshot.

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 states a specific verb and resource: 'Deletes saved LMS session (cookies/tokens).' It also differentiates itself from sibling tools like connect_lms and get_auth_status by making clear it is the teardown operation.

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

Usage Guidelines3/5

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

The intended use is implied by the main action, and the flag conditions are explained. However, it does not explicitly contrast this tool with connect_lms or get_auth_status, nor does it state when not to use it or mention prerequisites.

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

download_course_material수업자료 다운로드A
Idempotent

수업자료 파일을 내 PC 의 다운로드 폴더(기본 ~/Downloads/jbnu-lms/<강좌명>/)에 저장하고 경로를 알려 줍니다. cm_id(모듈) 또는 file_url(pluginfile 링크) 중 하나가 필요합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
cm_idNo모듈 ID
file_urlNo파일 URL (lms.jbnu.ac.kr 의 pluginfile.php 링크)
course_idNo강좌 ID (폴더 이름과 모듈 종류 판별에 사용)
target_dirNo저장 하위 폴더 (기본 다운로드 폴더 하위로만 허용, 폴더 밖 경로는 거부)

TDQS

A3.9/5.0
Behavior4/5

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

Beyond annotations, the description discloses the default save location, that the path is reported back, and that target_dir is restricted to subfolders of the default download folder with outside paths rejected. This is useful behavioral context, though it does not mention overwrite behavior or what happens if both cm_id and file_url are provided.

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?

The description is compact and front-loaded: it states the destination and result first, then the required input condition. Every sentence adds useful information without 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?

For a tool with no output schema, the description adequately explains the outcome (saved locally and path returned). It covers the key input constraint and directory restrictions. It could be slightly more complete by noting how to obtain cm_id or file_url (e.g., via get_course_materials), but this is not essential for correct invocation.

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 100%, so the baseline is 3. The description adds meaningful context beyond the schema by explaining the default folder pattern (~/Downloads/jbnu-lms/<course name>/), that cm_id or file_url are alternatives, and that target_dir cannot escape the default folder. This helps the agent understand parameter relationships.

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?

Description clearly states the action (saving course material files locally), the destination folder, and the result (returning the path). It identifies the resource as course material, but does not explicitly distinguish itself from sibling get_course_materials beyond the download/save focus.

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

Usage Guidelines3/5

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

The description implies usage for saving files to the local Downloads folder and explains that either cm_id or file_url is required. However, it does not explicitly state when to prefer this over sibling tools like get_course_materials, nor does it mention exclusions such as only being useful for local storage needs.

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

get_activity_completion활동 이수(완료) 현황A
Read-onlyIdempotent

강좌에서 완료(이수) 추적이 켜진 활동의 이수 여부를 보여 줍니다. 미시청 온라인 강의·미완료 활동을 찾을 때 사용하세요. 기본은 미완료만 보여 주며(only_incomplete=false 면 전체), 완료 추적이 설정되지 않은 활동은 제외합니다(미완료로 단정하지 않음). 조회 전용이며 추가 요청 없이 강좌 상태를 재사용합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes강좌 ID (get_course_overview·list_courses 로 확인)
only_incompleteNo미완료만 보기 (기본 true). false 면 완료 항목도 포함

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds meaningful behavior beyond that: non-tracked activities are excluded and not assumed incomplete, only_incomplete defaults to true, and course state is reused without extra requests. Return shape is not described, but annotations carry the safety burden.

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 with no filler: purpose, use case, default behavior, exclusion rule, and read-only note are all packed efficiently. Information is front-loaded and easy to scan.

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 tool with full schema coverage and strong annotations, the description covers purpose, use case, defaults, exclusions, and state reuse. The only gap is the lack of detail about the return value shape, but that is inferable and no output schema exists.

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 100%, so the baseline is 3. The description adds value by explaining the default behavior of only_incomplete and that false includes completed items, which the schema alone does not convey as clearly.

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?

The description clearly states the tool shows completion status for activities with completion tracking enabled in a course, using specific verbs and resource scope. It does not explicitly name or contrast a sibling tool, so it falls just short of full differentiation credit.

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?

It gives an explicit use case: find unwatched online lectures and incomplete activities. It does not state when not to use the tool or name alternatives, but the context is clear enough for an agent to decide.

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

get_announcement_detail공지 본문A
Read-onlyIdempotent

공지 게시글 본문과 첨부파일 목록을 보여 줍니다. get_announcements 결과의 board_cm_id 와 bwid, 또는 게시글 URL 을 넣으세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo게시글 URL (/mod/ubboard/article.php?id=..&bwid=..)
bwidNo게시글 ID (URL 의 bwid=)
max_charsNo본문 최대 길이 (기본 6000)
board_cm_idNo게시판 모듈 ID (URL 의 id=)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already mark the operation read-only, idempotent, and non-destructive, and the description's 'shows' is consistent with those hints. It adds that attachments are part of the output, but it does not disclose behaviors like max_chars truncation effects or URL-versus-field precedence.

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 short sentences with no filler: the first states the tool's function, the second gives the input routing. The most important usage constraint is front-loaded.

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 read-only detail tool with no required schema parameters, the description covers the identifier alternatives (list-result fields or URL), and the schema covers max_chars. With no output schema, the description states the return scope (body plus attachment list), so the only notable gap is detailed response formatting.

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 schema already describes all four parameters, so the baseline is 3. The description adds practical meaning by connecting board_cm_id and bwid to get_announcements results and by offering the URL as an alternative, which the schema alone does not convey.

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?

Description opens with a specific verb ('보여 줍니다' / shows) and a clear resource: the announcement post body and attachment file list. It distinguishes itself from the sibling get_announcements list tool by framing this as the detail view and naming the identifier inputs.

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?

It explicitly tells the agent to use board_cm_id and bwid from get_announcements results, or a post URL. This gives clear context for when to invoke the tool, though it does not spell out exclusions versus other detail tools such as get_assignment_detail.

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

get_announcements공지사항 목록A
Read-onlyIdempotent

강좌 공지사항(전북대 ubboard 게시판)을 최신순으로 보여 줍니다. 📌 는 상단 고정(중요) 공지, 🆕 는 새 글, 📎 는 첨부 있음입니다. only_new=true 면 지난 확인 이후 새로 올라온 공지만 보여 줍니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo최대 개수 (기본 20)
pagesNo강좌당 읽을 게시판 페이지 수 (기본 1)
only_newNo새 글만 (기본 false)
course_idNo특정 강좌만 조회. 생략하면 수강 중인 모든 강좌

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, and idempotent, so the safety profile is covered. The description adds meaningful behavioral context: the external board source, latest-first ordering, marker meanings (📌/🆕/📎), and the 'since last check' semantics of only_new. No contradiction with annotations.

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 compact sentences front-load the core function, then efficiently pack marker semantics and the only_new flag behavior. There is no redundancy or filler.

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 low-complexity read-only list tool with all parameters documented in the schema, the description is largely complete and even interprets output markers. It does not describe the exact return shape, but the marker legend and clear scope make the tool callable without further information.

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 100%, so the baseline is 3. The description adds extra meaning for only_new by explaining it as announcements posted since the last check, which is richer than the schema's '새 글만'. Other parameters are adequately covered by the schema.

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 uses a specific verb ('보여 줍니다'), identifies the resource (강좌 공지사항 / 전북대 ubboard), states the ordering (최신순), and clearly implies this is the list counterpart to get_announcement_detail. An agent can distinguish it from 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 Guidelines3/5

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

It provides clear context for listing announcements and explains the only_new filtering condition. However, it never names alternatives or states when not to use this tool, leaving routing to inference among many siblings like get_attention_inbox and get_daily_briefing.

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

get_assignment_detail과제 상세·요구사항 분석A
Read-onlyIdempotent

과제 설명 원문, 마감/최종 마감, 제출 상태, 첨부파일, 제출한 파일을 보여 주고 요구사항·제출물 단서를 AI 추정으로 정리합니다(추정 부분은 별도 표시).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo과제 URL (/mod/assign/view.php?id=..)
cm_idNo과제 모듈 ID (URL 의 id=)

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds genuinely new behavioral context: it performs AI estimation of requirements and submission clues, and it explicitly marks estimated content separately. This goes beyond what annotations provide, though it does not mention estimation reliability or failure 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?

A single dense sentence that front-loads the output categories and adds the AI-estimation caveat with no filler. Every clause contributes a distinct piece of information, and the parenthetical about marking estimates is placed at the end without cluttering the main purpose.

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 read-only detail tool with no output schema, the description enumerates the returned content well: original text, deadlines, submission status, attachments, submitted files, and AI-estimated requirements. The schema covers parameter meanings. It does not specify behavior when both url and cm_id are supplied or when the assignment cannot be found, but those are minor for this complexity.

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?

Both parameters are fully documented in the schema: url has format uri and the expected /mod/assign/view.php?id= shape, and cm_id is described as the module ID from the URL. With 100% schema description coverage, the baseline of 3 applies; the tool description adds no parameter-level detail.

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 action ('보여 주고' / show) and a precise resource: assignment detail, including original description, deadlines, submission status, attachments, and submitted files. The '상세·요구사항 분석' framing clearly distinguishes this from list-level siblings like get_assignments and from status-only check_assignment_submission.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance, and no sibling alternatives are named. The intended use is implied by the title and by the rich output list, but the description does not tell an agent to prefer this over check_assignment_submission for a quick status check or to call get_assignments first.

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

get_assignments과제 목록A
Read-onlyIdempotent

과제 목록을 마감 순으로 보여 줍니다. 마감일, 남은 시간, 제출 상태, 지각 허용 여부, 원문 URL 을 포함합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idNo특정 강좌만. 생략하면 수강 중인 모든 강좌
include_submittedNo제출 완료 과제 포함 (기본 true)

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context about sorting order and included fields, which supplements the annotation without contradicting it.

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?

The description is brief, directly states the main behavior, and lists key output fields in one sentence. No unnecessary words 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?

With no output schema present, the description enumerates the expected fields (deadline, remaining time, submission status, late allowance, URL). It could mention sorting direction explicitly in the same phrase, but the stated 'deadline order' is clear enough.

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?

The schema provides descriptions for both parameters (course_id and include_submitted), achieving full parameter coverage. The description adds no further parameter-level detail, so it stays at the baseline.

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 clearly states the tool shows an assignment list sorted by deadline, and lists the included fields. This makes the purpose specific and distinguishable from sibling tools like get_upcoming_deadlines or get_assignment_detail.

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

Usage Guidelines2/5

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

The description does not explicitly indicate when to prefer this tool over related siblings, such as get_upcoming_deadlines or check_assignment_submission. There is no mention of alternatives or conditions that would guide selection.

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

get_attention_inbox놓치면 안 되는 것 확인A

마감, 새·수정 공지, 과제 변경, 새 자료와 LMS 변경 기록을 하나의 학생 확인함으로 합쳐 가장 중요한 행동 3개를 먼저 보여 줍니다. 조회 후 로컬 비교 기준만 갱신하며 LMS는 변경하지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo마감을 볼 기간 (기본 14일)
course_idNo특정 강좌만
update_snapshotNo조회 후 로컬 비교 기준 갱신 (기본 true)

TDQS

A4.4/5.0
Behavior5/5

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

The description explicitly discloses side effects: it updates only the local comparison baseline and does not modify the LMS. This aligns with the annotations and gives the agent an accurate model of state changes.

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?

The description is concise, front-loads the core value, and includes the most important behavior (top 3 actions and local-only update) without unnecessary detail.

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?

The description gives enough context for successful use: what data is aggregated, what is prioritized, and what state changes occur. It does not specify the output shape, but no output schema is provided and it is not required for basic invocation.

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?

All three parameters are documented with reasonable descriptions in the schema, so schema coverage is complete. The description itself does not add additional parameter-level detail, which is acceptable because the schema already covers them.

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 clearly states the tool's purpose: it aggregates deadlines, announcements, assignment changes, new materials, and LMS change logs into a single student attention inbox, and prioritizes the top 3 actions. This is specific and effectively distinguishes it from sibling tools like get_announcements or get_upcoming_deadlines.

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?

The title and description convey clear usage context: use this when a student needs a consolidated, prioritized view of things not to miss. It does not explicitly name alternatives or state when not to use it, but the purpose is clear enough for an agent to choose it appropriately.

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

get_auth_status연결 상태 확인A
Read-onlyIdempotent

로그인 상태, 인증 방식, 마지막 동기화 시각, 저장 방식을 보여 줍니다. 로그인 브라우저를 닫은 직후 호출하면 연결을 자동으로 마무리합니다. verify=true 면 LMS 에 실제로 요청해 세션 유효성을 확인합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
verifyNoLMS 서버에 세션 유효성을 실제로 확인할지 (기본 true)

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, and non-destructive. The description adds meaningful transparency about auto-finalizing the connection after browser close and making an actual LMS request when verify=true, without contradicting the annotations.

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 compact sentences cover what the tool shows, a specific edge-case behavior, and the optional verification mode. No redundant or vague wording.

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?

No output schema exists, but the description lists the displayed fields (login status, auth method, last sync, storage method), which is sufficient for a status check. Missing error conditions are not critical for this simple read-only tool.

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

Parameters5/5

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

The only parameter verify is fully described in the schema with a clear meaning and default value. The description reinforces when verify=true changes behavior, providing complete parameter understanding.

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?

Description clearly states what the tool does: shows login status, authentication method, last sync time, and storage method, plus optional session verification. The verb 'shows' and 'checks' are specific, and the resource (auth status) is distinct from sibling connection management tools.

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

Usage Guidelines3/5

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

Provides one usage scenario (calling after closing the login browser) and explains the verify parameter, but does not explicitly contrast with sibling tools like connect_lms or disconnect_lms. Guidance is useful but implicit rather than explicit.

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

get_calendar_sync_candidates캘린더 동기화 후보A
Read-onlyIdempotent

LMS의 구조화된 과제·퀴즈 마감을 캘린더 후보로 정규화합니다. 캘린더에는 아무것도 쓰지 않으며, 연결된 캘린더에서 fingerprint와 제목·시각·원문 URL로 중복을 먼저 확인해야 합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo앞으로 며칠까지 후보를 만들지 (기본 30)
course_idNo특정 강좌만
include_overdueNo지난 마감을 검토 후보로 포함 (기본 false)

TDQS

A3.7/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond annotations: it explicitly states the tool writes nothing to the calendar and requires a duplicate check using fingerprint and title/time/URL. This goes beyond the readOnlyHint and idempotentHint already provided.

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?

The description is two concise sentences covering purpose, side-effect-free behavior, and the required duplicate-check step. Every sentence carries essential information with no redundancy.

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

Completeness3/5

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

The description explains what the tool does and its side effects, but it does not specify the structure or content of the returned calendar candidates. Since there is no output schema, an agent is left to infer the return format, which is a notable gap for a tool that produces a list.

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?

All three parameters (days, course_id, include_overdue) have descriptive schema text covering their meaning and defaults. The tool description does not add further parameter-specific guidance, but the schema coverage is complete, so a baseline score is appropriate.

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?

The description clearly states it normalizes LMS assignments/quizzes into calendar candidates and explicitly notes it writes nothing to the calendar. This distinguishes it from listing tools like get_upcoming_deadlines, though it does not name a specific sibling alternative.

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

Usage Guidelines3/5

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

The instruction to check for duplicates before use is a practical behavioral guideline, but there is no explicit statement about when to choose this tool over similar deadline-related siblings. The 'writes nothing' note hints at a preview use case but is not framed as a selection criterion.

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

get_course_materials수업자료 목록A
Read-onlyIdempotent

강좌의 주차별 수업자료(파일·폴더·링크·동영상·페이지)를 보여 줍니다. week 로 특정 주차만, query 로 이름 검색을 할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNo주차 번호
kindsNo자료 종류 필터
queryNo자료 이름·섹션 검색어
course_idYes강좌 ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful filter behavior and material-type scope, but does not disclose output shape, ordering, pagination, or 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?

Two concise sentences, front-loaded with the primary purpose and followed by the key filtering capabilities. No filler or redundant repetition.

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 read-only list tool with full schema documentation and safety annotations, the description is adequate for correct invocation. It could mention output format or pagination, but these are not critical for an agent deciding whether and how to call it.

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 four parameters. The description mentions week and query, which adds little beyond the schema, and does not clarify kinds or course_id further.

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?

The description clearly states that the tool shows course materials by week, enumerating concrete types (files, folders, links, videos, pages). This makes it distinguishable from sibling tools like announcements or assignments, though it does not explicitly name a differentiating sibling.

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?

The intended use is clear: retrieve a course's weekly materials, with optional filtering by week and query. There are no explicit exclusions or alternative tool recommendations, but the context is sufficient for an agent to decide when to invoke it.

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

get_course_overview강좌 개요A
Read-onlyIdempotent

강좌의 주차(섹션)별 모듈 목록과 공지 게시판 위치를 보여 줍니다. 각 모듈의 cm_id 는 다른 도구(자료 다운로드, 과제 상세)에 그대로 사용할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYeslist_courses 의 강좌 ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, and non-destructive behavior, and the description adds that cm_id values can be passed to other tools, which is useful behavioral context. It does not describe error handling or empty results, but the safety-related aspects are well covered by annotations.

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?

The description is a single, clear sentence that conveys the main content and the reusable cm_id without unnecessary detail. It is well structured and front-loaded with the primary action.

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?

The description explains what the tool returns (weekly module list, notice board location, cm_id) despite lacking an output schema. It is sufficient for basic usage, though more detail about the response format might be helpful given no output schema exists.

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

Parameters5/5

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

The single parameter course_id is described as 'list_courses 의 강좌 ID', directly telling the user where to obtain the value. Schema coverage is 100% and the description adds practical source guidance.

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 clearly states that the tool shows the module list by week and the notice board location, using the specific verb '보여 줍니다' (shows). It also explains that cm_id values can be reused by other tools, which distinguishes its purpose from related tools like get_course_materials.

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

Usage Guidelines3/5

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

The description implies usage for retrieving the course structure and cm_id values, but it does not explicitly state when to choose this tool over siblings such as get_course_materials or get_assignments. The mention of cm_id reuse gives some guidance, but explicit alternative comparisons are absent.

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

get_daily_briefing오늘 해야 할 일 브리핑A
Read-onlyIdempotent

"오늘 해야 할 일 알려줘"에 대한 한 번의 답: 기한 초과·오늘·내일·이번 주 마감, 새 공지, 지난 확인 이후 변경, AI 제안(별도 표시)을 정리합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo마감을 볼 기간(일, 기본 7)

TDQS

A4/5.0
Behavior3/5

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

The annotations already provide read-only, idempotent, and non-destructive hints; the description adds no further behavioral context beyond what the annotations cover.

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?

The description is extremely concise and directly conveys the tool's purpose with no redundant or filler content.

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?

It covers the key components of the briefing (deadlines, announcements, changes, AI suggestions) sufficiently for a simple aggregation tool; no output schema exists, so no additional return value details are required.

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 single 'days' parameter is clearly explained as the lookahead period for deadlines, complementing the schema description and leaving no ambiguity about its purpose.

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 clearly states the tool returns a compiled daily briefing covering overdue tasks, today's and weekly deadlines, announcements, and changes since last check—making it distinct from the more specific sibling tools.

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

Usage Guidelines3/5

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

It describes the intended scenario ('a single answer to tell me what to do today') but does not explicitly contrast when to use this aggregator versus the more granular tools like get_upcoming_deadlines or get_announcements.

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

get_feedback_status피드백 접수 상태A
Read-onlyIdempotent

이 PC에 접수된 문제 신고·기능 제안의 접수 번호와 전송 상태만 보여 줍니다. 신고 본문은 응답에 다시 노출하지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 and non-destructive behavior. The description adds meaningful detail by stating the response will not re-expose the report body, reinforcing the read-only nature and clarifying output privacy.

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?

The description is two concise sentences, front-loaded with the tool's primary purpose and scope. It avoids unnecessary detail and clearly communicates what is included and excluded.

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?

Given the tool has no parameters and no output schema, the description is complete enough. It specifies that returns are receipt numbers and transmission status, and explicitly states that the feedback body is not included, covering key expectations.

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?

There are no parameters in the schema, so the baseline is 4. The description does not need to add parameter-specific meaning because none 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?

The description clearly states the tool shows only receipt numbers and transmission status for feedback submitted on this PC. It distinguishes the tool from related feedback actions by explicitly limiting its scope.

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

Usage Guidelines3/5

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

The description implies the tool is for checking local feedback status but does not explicitly name when to use it versus sibling tools like retry_feedback_delivery or discard_local_feedback. It provides some boundary by noting it only shows receipt numbers and status, but lacks direct usage guidance.

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

get_recent_changes지난 확인 이후 변경 사항A

지난번 확인(로컬 스냅샷) 이후 새 공지, 새 과제, 마감·제출 상태가 바뀐 과제, 새 수업자료를 보여 줍니다. 처음 실행하면 기준 스냅샷만 만듭니다. since 로 기준 시각을 직접 줄 수도 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo기준 시각 ISO 8601 (예: 2026-09-01T00:00:00+09:00). 생략하면 스냅샷 시각
course_idNo특정 강좌만
update_snapshotNo조회 후 스냅샷 갱신 (기본 true)

TDQS

A4.8/5.0
Behavior5/5

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

The description transparently explains the snapshot mechanism, including that the first run only creates a baseline and that 'update_snapshot' controls whether the snapshot is refreshed. This complements the readOnlyHint=false annotation and gives the agent a clear picture of state changes.

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?

The description is concise and front-loaded, stating the main purpose first and then explaining the snapshot behavior and optional parameter. No redundant or vague language is used.

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?

Given there is no output schema, the description provides sufficient context for an agent to decide when and how to invoke the tool. It covers the scope of changes, snapshot mechanics, and the key 'since' parameter, making it complete for practical use.

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

Parameters5/5

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

All three parameters are described in the schema, and the description adds meaningful context: 'since' is the baseline time (defaulting to snapshot), 'course_id' filters to a specific course, and 'update_snapshot' controls snapshot refresh. The coverage is complete and the semantics are clear.

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 clearly states the tool shows new announcements, new assignments, assignments with changed deadlines/submission status, and new course materials since the last check. It also explains the snapshot behavior and the optional 'since' parameter, distinguishing it from single-entity retrieval tools.

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?

The description gives clear context on when to use the tool (after a previous check, first run creates a snapshot, 'since' can override the baseline). However, it does not explicitly name alternative tools or state when not to use it, so it falls slightly short of explicit alternative guidance.

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

get_upcoming_deadlines다가오는 마감A
Read-onlyIdempotent

오늘·내일·이번 주·기한 초과로 구분한 마감 목록(과제·퀴즈 등)을 보여 줍니다. 기본은 아직 제출하지 않은 항목만 포함합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo앞으로 며칠까지 (기본 7)
course_idNo특정 강좌만
include_overdueNo기한 초과 포함 (기본 true, 최근 14일)
include_submittedNo제출 완료 항목 포함 (기본 false)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral details about default filtering and grouping, which are not present in the annotations.

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?

The description is concise, front-loaded with the main purpose, and does not contain redundant or irrelevant details.

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?

The description is sufficient for a simple read-only tool with four optional parameters, all documented in the schema. It explains the purpose, grouping, and default filter, though it does not elaborate on output format or sorting.

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 parameters are already described in the schema. The description does not add parameter-specific detail beyond the existing schema, so the baseline score of 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?

The description clearly states a specific action ('shows'), a specific resource (deadlines), and a distinguishing grouping (today/tomorrow/this week/overdue), making it distinct from sibling tools like get_assignments or get_announcements.

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

Usage Guidelines3/5

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

The description implies use for viewing upcoming deadlines, especially with the default filter excluding submitted items, but it does not explicitly state when to prefer this tool over alternatives such as get_assignments or get_attention_inbox.

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

get_weekly_study_plan이번 주 학습 계획A
Read-onlyIdempotent

이번 주(월~일) 요일별 마감과 AI 제안(초안·최종 점검 일정)을 정리합니다. 다음 주 미리보기와 기한 초과 항목도 포함합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, and non-destructive behavior. The description adds details about the content (AI suggestions, overdue items) but does not introduce any behavioral caveats, which is consistent with the read-only nature.

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?

The description is a single, focused sentence that states the core function without redundancy.

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?

The description fully covers what the tool does and what it includes (deadlines, AI suggestions, next week preview, overdue). No output schema exists, so no return format needs explanation; the description is sufficient.

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?

The tool has no parameters, and the schema coverage is 100%. The description does not need to add parameter information, so baseline score 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 clearly states the tool's purpose: organizing this week's daily deadlines and AI suggestions, plus next week's preview and overdue items. It distinguishes from siblings like get_upcoming_deadlines and get_daily_briefing by focusing on a weekly plan.

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?

The description provides context for when to use (this week's plan) but does not explicitly contrast with alternative tools. However, the clear scope of 'weekly' vs. 'upcoming' or 'daily' makes usage inferable.

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

list_courses수강 강좌 목록A
Read-onlyIdempotent

현재 수강 중인 강좌 목록(ID, 이름, 진행률, URL)을 보여 줍니다. include_all=true 면 종료된 강좌도 포함합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_allNo종료/예정 강좌 포함 여부 (기본 false)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so no additional safety context is needed. The description usefully specifies the returned fields (ID, name, progress, URL), which helps set expectations for a read-only list operation.

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?

The description is two concise sentences, with the main purpose stated first and the optional behavior explained second. There is no redundancy or unnecessary detail.

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?

The description mentions the output fields (ID, name, progress, URL), which is essential given the lack of an output schema. It does not cover potential edge cases like pagination or errors, but for a simple list tool this is adequate.

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

Parameters5/5

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

The single parameter include_all is fully described in the schema (100% coverage) and also explained in the main description. Its boolean meaning and default behavior are clear, requiring no extra inference.

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?

The description clearly states the tool lists enrolled courses with ID, name, progress, and URL, and explains the include_all option for completed courses. It is distinct from siblings like get_course_overview, but does not explicitly name them as alternatives.

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

Usage Guidelines2/5

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

The description explains the include_all parameter but gives no guidance on when to use this tool over sibling tools such as get_course_overview or open_lms_source. Users are left to infer the appropriate context from the tool name.

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

open_lms_source로그인된 브라우저로 LMS 원문 열기A
Idempotent

공지·과제·강좌·자료·달력의 LMS 원문을 자동화 없는 전용 Chrome/Edge에서 엽니다. 채팅 링크가 로그인되지 않은 내부 브라우저로 열릴 때 사용하세요. 같은 LMS의 읽기 화면만 허용하고 민감한 URL 매개변수는 차단합니다. 쿠키·토큰은 URL이나 명령행에 넣지 않으며, 첫 이용 또는 세션 만료 때만 공식 로그인 화면에서 사용자가 직접 인증합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes목록·상세 도구가 반환한 lms.jbnu.ac.kr 원문 URL

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses key behaviors beyond the annotations: it opens a dedicated browser, does not automate, avoids putting cookies/tokens in URLs or command lines, and requires the user to authenticate on the official login screen. It also notes restrictions on allowed URLs/parameters.

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?

The description is compact and front-loaded with the main purpose, followed by usage trigger and security constraints. Each sentence adds relevant information with minimal 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?

For a simple navigation tool, the description covers what it does, when to use it, and important security behavior. It does not describe return values or failure modes, but no output schema is present and those details are less critical for this action.

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 URL parameter is explained as the LMS original URL returned by list/detail tools, which adds useful context beyond the URI format. It could be slightly more explicit about requiring a full valid URL, but the current description is sufficient.

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 clearly states the tool's purpose: opening the original LMS page in a dedicated Chrome/Edge browser without automation. It distinguishes this from sibling tools by emphasizing the external browser and non-automated nature.

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?

It explicitly gives a trigger condition: use when a chat link opens in an internal browser that is not logged in. It does not explicitly name an alternative sibling tool, but the condition is specific enough to guide selection.

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

report_lms_problemLMS MCP 문제 신고A

이 MCP의 오류나 잘못된 결과를 접수합니다. 호출 전 사용자에게 전송할 요약·상세·진단 ID·기술 정보를 보여 주고 명시적 승인을 받아야 합니다. LMS 로그인정보, 학번, 강좌명, 공지·과제 본문은 보내지 않습니다. 원격 수집 주소가 설정되면 즉시 전송하고 실패하면 로컬에 재시도 대기 상태로 보관합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailsYes사용자가 확인한 상세 설명 (10~4000자). 개인정보와 LMS 본문은 넣지 않음
summaryYes사용자가 확인한 한 줄 요약 (5~160자)
affected_toolNo문제가 발생했거나 개선할 MCP 도구 이름
diagnostic_idNo오류 응답의 진단 ID
confirm_submitYes사용자가 위 내용을 확인하고 접수·전송을 명시적으로 승인했을 때만 true
expected_behaviorNo기대한 동작 또는 원하는 개선 결과
steps_to_reproduceNo재현 단계. 강좌명·과제명·공지 본문은 익명화
include_technical_contextNo앱 버전, OS 종류, CPU 아키텍처, Node 주버전 포함. 기본 true

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses important side effects: it sends data immediately if a remote collection address is configured, stores locally for retry on failure, and explicitly excludes sensitive LMS login info, student IDs, course names, and notice/assignment content. It also requires explicit user approval before sending.

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?

The description is concise and well-structured: it states the purpose, then the consent requirement, then privacy exclusions, then transmission/retry behavior. Every sentence adds meaningful information without unnecessary fluff.

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?

The description covers purpose, consent, privacy, and retry behavior, which is adequate for this tool. Minor ambiguity remains about what happens when no remote collection address is configured, but this is not critical given the schema and overall clarity.

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?

The schema already has 100% parameter description coverage with detailed field descriptions. The tool description adds general behavioral context about consent and privacy but does not materially clarify individual parameters beyond what the schema already provides, so the baseline of 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?

The description clearly states the tool's purpose: '이 MCP의 오류나 잘못된 결과를 접수합니다' (accepts reports of errors or incorrect results from this MCP). This distinguishes it from sibling tools like suggestion or feedback tools.

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?

It gives clear usage context: use for errors or incorrect results, and mandates showing a summary, details, diagnostic ID, and technical info and obtaining explicit consent before calling. It does not explicitly mention alternatives or when not to use it, but the purpose is clear enough.

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

retry_feedback_delivery피드백 전송 재시도A

수집 서버 장애로 로컬 대기 중인 문제 신고·기능 제안을 다시 전송합니다. 새 내용을 만들지 않으며 이미 전송된 보고서는 중복 전송하지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo이번에 재시도할 최대 건수. 기본 20

TDQS

A4.8/5.0
Behavior4/5

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

The description goes beyond the annotations by specifying that no new content is created and already sent reports are not duplicated. It does not mention whether the local queue is cleared after sending, but the main side effects are reasonably transparent given the annotations.

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?

The description is concise and front-loaded, stating the action immediately and then adding relevant clarifications in a compact second sentence. No unnecessary detail or redundancy.

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?

The description fully explains what the tool does, when it is applicable, and the parameter's meaning. Although there is no output schema, the action-oriented nature of the tool makes the description sufficient for an agent to use it correctly.

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

Parameters5/5

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

The only parameter 'limit' has a clear description stating the maximum number of items to retry and its default value of 20. This fully covers the parameter's meaning beyond the basic schema type.

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?

Description clearly states the tool resends locally queued feedback (problem reports/feature suggestions) caused by server failures, and explicitly distinguishes it from creating new content or duplicating already sent reports. This makes the core purpose unambiguous and differentiates it from related feedback tools.

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?

The description implicitly tells when to use the tool: when there is locally queued feedback due to collection server failure. It also clarifies what it does not do (no new content, no duplicates), which helps rule out alternative tools like report_lms_problem or get_feedback_status.

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

suggest_lms_featureLMS MCP 기능 제안A

새 기능이나 UX 개선 의견을 접수합니다. 호출 전 사용자에게 전송할 내용을 보여 주고 명시적 승인을 받아야 합니다. 개인정보와 LMS 학업 내용은 수집하지 않습니다. 원격 수집 주소가 설정되면 즉시 전송하고 실패하면 로컬에 재시도 대기 상태로 보관합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailsYes사용자가 확인한 상세 설명 (10~4000자). 개인정보와 LMS 본문은 넣지 않음
summaryYes사용자가 확인한 한 줄 요약 (5~160자)
affected_toolNo문제가 발생했거나 개선할 MCP 도구 이름
diagnostic_idNo오류 응답의 진단 ID
confirm_submitYes사용자가 위 내용을 확인하고 접수·전송을 명시적으로 승인했을 때만 true
expected_behaviorNo기대한 동작 또는 원하는 개선 결과
steps_to_reproduceNo재현 단계. 강좌명·과제명·공지 본문은 익명화
include_technical_contextNo앱 버전, OS 종류, CPU 아키텍처, Node 주버전 포함. 기본 true

TDQS

A4.3/5.0
Behavior5/5

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

The description discloses meaningful behavioral details beyond the annotations: it sends submitted content to a remote address if configured, requires explicit user consent before calling, avoids collecting personal and LMS academic content, and stores locally in a retry-pending state on failure. No contradiction with annotations exists.

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?

The description is concise and well-structured, consisting of two focused sentences that convey purpose, consent requirement, privacy scope, and failure behavior without unnecessary detail.

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?

Given the rich schema and the absence of an output schema, the description is complete enough for an agent to understand when and how to invoke the tool, what side effects may occur, and what safeguards are required.

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?

The JSON schema already provides 100% coverage of all 8 parameters with clear descriptions and constraints. The tool description adds overall context about privacy and consent but does not significantly enrich per-parameter semantics beyond what the schema already states.

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 clearly states the tool's purpose: receiving new feature or UX improvement suggestions. It uses a specific verb ('접수합니다') and a specific resource ('새 기능이나 UX 개선 의견'), which distinguishes it from problem-reporting siblings like report_lms_problem.

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

Usage Guidelines3/5

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

The description implies when to use the tool (for feature/UX suggestions) and includes important procedural guidance about showing content and obtaining explicit consent. However, it does not explicitly contrast this tool with alternatives such as report_lms_problem or explain when not to use it.

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. Dates show when Glama detected each change.

  1. 25 tool updatesv0.7.0
    • First observedcheck_assignment_submission
    • First observedconnect_lms
    • First observeddiscard_local_feedback
    • First observeddisconnect_lms
    • First observeddownload_course_material
    • First observedget_activity_completion
    • First observedget_announcement_detail
    • First observedget_announcements
    • First observedget_assignment_detail
    • First observedget_assignments
    • First observedget_attention_inbox
    • First observedget_auth_status
    • First observedget_calendar_sync_candidates
    • First observedget_course_materials
    • First observedget_course_overview
    • First observedget_daily_briefing
    • First observedget_feedback_status
    • First observedget_recent_changes
    • First observedget_upcoming_deadlines
    • First observedget_weekly_study_plan
    • First observedlist_courses
    • First observedopen_lms_source
    • First observedreport_lms_problem
    • First observedretry_feedback_delivery
    • First observedsuggest_lms_feature

TDQS

A3.6/5.0
Disambiguation2/5

Several tools share overlapping purposes: get_recent_changes, get_attention_inbox, get_daily_briefing, and get_weekly_study_plan all summarize deadlines and changes, while get_upcoming_deadlines and get_attention_inbox both list deadlines. connect_lms and open_lms_source also appear to serve similar authentication/browser-launch functions.

Naming Consistency2/5

The naming pattern is inconsistent: most tools use get_*, but list_courses, connect_lms, open_lms_source, disconnect_lms, download_course_material, report_lms_problem, suggest_lms_feature, retry_feedback_delivery, discard_local_feedback, and check_assignment_submission break the pattern. Even within get_*, some pairs like get_announcements/get_announcement_detail are consistent, but the overall mix is not.

Tool Count2/5

With 25 tools, the set is at the high end and feels heavy. While an LMS integration could justify many operations, the presence of multiple near-duplicate summary tools (e.g., get_daily_briefing, get_attention_inbox, get_weekly_study_plan) suggests the count could be trimmed without losing functionality.

Completeness4/5

The tool set covers the core LMS workflows well: authentication, course listings, announcements, assignments, materials, completion tracking, downloads, change summaries, and user feedback. Minor gaps exist (e.g., no direct quiz/submission detail beyond assignment focus), but the surface is largely complete for a read-oriented LMS assistant.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that turns UPB Virtual (Moodle) into a structured knowledge source, enabling AI assistants to query courses, assignments, deadlines, announcements, and sync materials via REST API.
    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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/moon0825/jbnu-lms-student'

If you have feedback or need assistance with the MCP directory API, please join our Discord server