Skip to main content
Glama

ku-portal-mcp

PyPI version Python License: MIT

고려대학교 KUPID 포털 MCP 서버 — Claude Code에서 대학 생활에 필요한 정보를 바로 조회

"공지사항 보여줘", "도서관 빈자리 있어?", "이번 주 과제 뭐 있어?" 같은 자연어로 포털과 LMS를 사용할 수 있습니다.

2026 차세대 포털 전환 대응 (v0.13.0 → v0.17.0)

고려대학교가 2026년 포털·학사·LMS를 차세대 시스템으로 교체하면서 기존 tool 31개 중 28개가 동작을 멈췄습니다. v0.13.0~v0.17.0에 걸쳐 전부 복구했습니다.

무엇이 바뀌었나

영역

이전

이후

포털

*.kpd 경로

index.jsp + SSO (레거시 경로는 301 폐지)

통합 로그인

ksso.korea.ac.kr (*.do)

sso.korea.ac.kr (*.eps) — 비밀번호 AES 암호화 전송

공지·장학

grw.korea.ac.kr HTML 스크래핑

포털 공개 JSON API (/ctt/svc/bulletin)

학사

infodepot.korea.ac.kr

ams.korea.ac.kr + 2차 보안인증 필수

LMS 진입

/exsignon/

/exsignon_new/

학사일정

포털 게시판

교무처 학사일정표

infodepot · grw · ksso 세 도메인은 서비스가 종료되어 TLS 협상조차 되지 않습니다.

무엇이 좋아졌나

  • 공지·학사일정·장학·검색이 로그인 없이 동작합니다. 스크래핑 대신 포털이 쓰는 공개 JSON API로 옮겨, 더 빠르고 조회수·부서·첨부 수 같은 정보도 함께 옵니다.

  • 공지/장학 상세가 본문 전문과 첨부파일(파일명·크기·다운로드 링크)을 반환합니다.

  • LMS 14개 전부 복구. Canvas API는 멀쩡했고 로그인 경로만 바뀐 것이었습니다.

  • 학사 조회는 2차 인증 한 번으로 50분간 유지됩니다. 매 호출마다 인증하지 않습니다.

무엇이 달라져 주의가 필요한가

  • kupid_get_schedules — 파라미터가 page/countyear/semester/month (학사일정이 게시판에서 표 형태로 바뀌었습니다)

  • kupid_get_notice_detail / kupid_get_scholarship_detail — 식별자가 post_seq 하나로

  • kupid_search_courses / kupid_room_schedule교과목명 키워드로 검색 (학사 시스템이 단과대/학과 단위 목록 조회를 더 이상 제공하지 않습니다)

  • kupid_get_schedule_detail 제거 — 학사일정에 상세 개념이 사라졌습니다

  • kupid_get_syllabus 제거 → v0.19.0에서 kupid_syllabus로 부활했습니다. 메뉴가 사라진 게 아니라 학사 시스템(AMS)으로 옮겨가 로그인 없이 열려 있었습니다. 수강신청 전 과목이나 남의 과목도 조회됩니다 (kupid_lms_syllabus는 내가 수강 중인 과목만, 개강 이후에만 보입니다)

  • 무인증 게시판 조회는 최신 500건까지입니다 (포털이 그 이후 페이징을 로그인 세션에 묶어두었습니다)

자세한 변경 이력은 CHANGELOG.md를 참고하세요.

Related MCP server: Canvas Academic Assistant

이런 걸 할 수 있어요

1. 공지사항 / 학사일정 / 장학공지 (로그인 불필요)

KUPID 포털 게시판과 교무처 학사일정을 로그인 없이 조회하고 검색할 수 있습니다.

> 최근 공지사항 보여줘
> "수강신청" 관련 공지 검색해줘
> 이번 학기 학사일정 알려줘
> 9월 학사일정만 보여줘
> 장학금 관련 공지 있어?
  • 공지사항(b=6), 장학공지(b=10) 목록 조회 — 작성자·부서·조회수·첨부 수·요약 포함

  • 학사일정 — 교무처 학사일정표에서 학기별 조회, 월 단위 필터 지원

  • 제목·요약 기준 키워드 통합 검색

  • 게시글 본문 전문과 첨부파일은 포털 로그인 시 제공됩니다 (로그인 없으면 요약 약 200자 + 원문 링크)

  • 무인증 목록 조회는 최신 500건까지 지원합니다 (포털이 그 이후 페이징을 로그인 세션에 묶어둠)

2. 도서관 좌석 현황 (로그인 불필요)

6개 도서관, 53개 열람실의 실시간 좌석 현황을 확인합니다. 로그인 없이 바로 조회 가능합니다.

> 중앙도서관 빈자리 몇 개야?
> 과학도서관 좌석 현황 보여줘
> 전체 도서관 좌석 현황 알려줘
> 노트북 사용 가능한 열람실 어디야?
  • 대상 도서관: 중앙도서관, 중앙광장, 백주년기념 학술정보관, 과학도서관, 하나스퀘어, 법학도서관

  • 열람실별 총 좌석 / 사용 중 / 잔여 좌석 실시간 표시

  • 노트북 허용 여부, 운영시간 정보 포함

  • 전체 도서관 합산 이용률(%) 제공

3. 학사 정보 조회 — 2차 보안인증 한 번이면 됩니다

수강신청내역·시간표·성적·개설과목·강의실은 학사 시스템(AMS) 에 있고, 학교 정책상 2차 보안인증을 거쳐야 합니다. 처음 한 번만 인증하면 약 50분간 세션이 유지되어 그동안은 그냥 물어보면 됩니다.

> 학사 인증 시작해줘          ← 포털에 등록된 메일로 6자리 코드가 옵니다
> 코드 123456                ← 인증 완료, 이후 50분간 자유롭게 조회

추가 설치나 브라우저는 필요 없습니다. 코드는 KUPID 포털에 등록된 이메일로 오며, 따로 등록할 것은 없습니다 (자세한 내용은 설치 > 학사 조회를 쓰려면 참고). 공지·LMS·도서관 등 나머지 기능은 이 인증과 무관합니다.

4. 수업시간표 + ICS 내보내기

> 이번 주 시간표 보여줘
> 월요일 수업 뭐 있어?
> 시간표를 ICS 파일로 만들어줘
  • 월~토 요일별 조회 또는 전체 주간 시간표

  • 교시 → 실제 시간 자동 변환 (1교시=09:00~10:15 … 야간 11교시까지)

  • ICS 캘린더 파일 생성 → 구글/Apple 캘린더에 바로 추가

  • 과목명, 강의실, 교시 포함

5. 내 수강신청 내역

> 내 수강과목 보여줘
> 이번 학기 뭐 듣고 있어?
> 총 몇 학점 신청했어?
  • 학수번호·분반·이수구분·교과목명·담당교수·학점

  • 강의시간/강의실 (예: 월(7-8) 애기능생활관 301호)

  • 신청 상태와 등록금 수납 상태

  • 총 신청 학점 합산

  • 학기를 지정하지 않으면 현재 학기, 지정하면 해당 학기 (year, semester)

6. 전체 성적 / 누적 GPA / 취득학점

> 전체 성적 보여줘
> 누적 GPA 얼마야?
> 2026학년도 1학기 성적만 보여줘
  • 과목별 등급(A+/B+…)과 평점, 이수구분, 학점

  • 누적 GPA · 취득학점 · 총평점 · 환산점수 · 전공학점

  • year_term(예: 20261R)으로 학기 필터링

7. 개설과목 검색 · 강의실 조회

> "자연어처리" 개설과목 검색해줘
> 딥러닝 수업 어느 강의실이야?
> 정보통신관에서 하는 딥러닝 수업 있어?
  • 교과목명 키워드로 검색 → 학수번호·분반·강의실·건물·캠퍼스

  • 건물명·캠퍼스로 결과 필터링

  • ℹ️ 학사 시스템이 제공하는 검색 조건이 교과목명뿐이라, 예전처럼 단과대/학과 단위로 목록을 훑는 방식은 더 이상 지원하지 않습니다.

> BDC108 강의계획서 보여줘
> 이 과목 중간 기말 과제 비중이 어떻게 돼?
> AAI117 주차별 계획 알려줘
  • 강의계획서(kupid_syllabus)는 로그인 없이 조회됩니다 — 평가 비중(중간·기말·과제 %), 주차별 계획, 교재·참고문헌, 절대/상대평가 여부, 담당교수 연락처·면담시간

  • 수강신청 전에, 아직 듣지 않는 과목도 볼 수 있습니다 (kupid_lms_syllabus는 내가 수강 중인 과목만, 개강 이후에만 보입니다)

  • 교수가 아직 계획서를 작성하지 않았으면 note로 알려 줍니다

8. Canvas LMS — 수강과목 / 과제 / 강의자료

고려대학교 Canvas LMS(mylms.korea.ac.kr)에 접속하여 수강 정보를 조회합니다.

> LMS에 어떤 과목 듣고 있어?
> 딥러닝 과제 목록 보여줘
> 아직 안 낸 과제 있어?
> 자연어처리 강의자료 보여줘
> 텍스트마이닝 1주차 PDF 다운로드해줘
> 이번 주 제출할 과제 뭐야?
> LMS 대시보드 보여줘
> 딥러닝 성적 어때?
> 과제 제출 현황 보여줘
> 퀴즈 일정 있어?
  • 수강과목 목록: 현재 학기 수강 중인 과목과 학기 정보

  • 과제 목록: 과목별 과제, 제출 기한, 배점, 제출 방식 확인

  • 강의자료(모듈): 주차별 강의 모듈과 포함된 자료(강의 영상, PDF, 퀴즈 등)

  • 파일 다운로드: 강의자료 PDF 등을 지정한 로컬 디렉토리에 직접 저장

  • 게시판 조회: Q&A 게시판 / 강의자료실 등 교수님이 직접 올리는 자료까지 탐색

  • 할 일 목록: 마감이 다가오는 과제와 이벤트를 한눈에

  • 대시보드: 수강 과목 카드 + 과목별 공지사항 모아보기

  • 성적/점수 조회: 과목별 현재 점수, 최종 점수, 학점 확인

  • 과제 제출 현황: 제출 여부, 채점 점수, 지각/미제출 상태 확인

  • 퀴즈/시험 목록: 퀴즈 일정, 시간제한, 문항 수 확인

더 많은 사용 예시는 EXAMPLES.md를 참고하세요.


전체 Tool 목록

#

Tool

설명

인증

1

kupid_login

포털 로그인 / 세션 확인

SSO

2

kupid_get_notices

공지사항 목록

불필요

3

kupid_get_notice_detail

공지사항 상세 (로그인 시 본문 전문 + 첨부)

선택

4

kupid_get_schedules

학사일정 (학기별, 월 필터)

불필요

5

kupid_get_scholarships

장학공지 목록

불필요

6

kupid_get_scholarship_detail

장학공지 상세 (로그인 시 본문 전문 + 첨부)

선택

7

kupid_search

공지/장학 통합 검색

불필요

8

kupid_get_library_seats

도서관 열람실 좌석 현황

불필요

9

kupid_ams_auth_start

학사(AMS) 2차 인증 시작 — 메일로 코드 발송

SSO

10

kupid_ams_auth_verify

학사(AMS) 2차 인증 완료 (6자리 코드)

SSO

11

kupid_my_courses

내 수강신청 내역 (학수번호/시간/강의실)

AMS 2차

12

kupid_get_timetable

개인 수업시간표 + ICS 내보내기

AMS 2차

13

kupid_get_all_grades

전체 성적 / 누적 GPA / 취득학점

AMS 2차

14

kupid_search_courses

개설과목 검색 (교과목명)

AMS 2차

15

kupid_room_schedule

교과목의 강의실·건물 조회

AMS 2차

16

kupid_lms_courses

LMS 수강과목 목록

SSO

17

kupid_lms_assignments

LMS 과제 목록 (과목별)

SSO

18

kupid_lms_modules

LMS 강의자료 (주차별 모듈)

SSO

19

kupid_lms_todo

LMS 할 일 / 다가오는 이벤트

SSO

20

kupid_lms_dashboard

LMS 대시보드 + 공지사항

SSO

21

kupid_lms_grades

LMS 성적/점수 조회

SSO

22

kupid_lms_submissions

LMS 과제 제출 현황

SSO

23

kupid_lms_quizzes

LMS 퀴즈/시험 목록

SSO

24

kupid_lms_download_file

LMS 강의자료 파일 다운로드 (PDF 등)

SSO

25

kupid_lms_list_boards

LMS 과목 게시판 목록 (Q&A, 강의자료실 등)

SSO

26

kupid_lms_list_board_posts

게시판 게시글 목록

SSO

27

kupid_lms_get_board_post

게시글 상세 + 첨부파일 + 댓글(첨부 포함)

SSO

28

kupid_lms_announcements

LMS 공지 전문 조회 (과목별 또는 전체, 본문 비절단)

SSO

29

kupid_lms_syllabus

LMS 강의계획서 조회

SSO

30

kupid_dept_notices

학과/대학원 홈페이지 공지 목록

불필요

31

kupid_dept_notice_detail

학과/대학원 공지 상세

불필요

32

kupid_syllabus

강의계획서 — 평가 비중·주차별 계획·교재·교수 연락처

불필요

인증 안내: SSO = 고려대 통합 로그인(sso.korea.ac.kr). 포털과 LMS 모두 같은 ID/PW를 사용하며, 환경변수만 설정하면 자동으로 로그인됩니다.

선택 = 로그인 없이도 동작하지만, 로그인하면 더 많은 정보를 반환합니다.

AMS 2차 = 학사 시스템은 학교 정책상 2차 보안인증이 필수입니다. kupid_ams_auth_start()포털에 등록된 메일로 온 6자리 코드로 kupid_ams_auth_verify(code) 하면 약 50분간 세션이 유지되며, 그동안은 재인증 없이 조회됩니다. v0.18.0부터 별도 설치 없이 동작합니다.

설치

방법 1: uvx (권장)

설치 없이 항상 최신 버전을 실행합니다. Claude Code와의 호환성이 가장 좋습니다.

uvx ku-portal-mcp

방법 2: pip

pip install ku-portal-mcp

방법 3: 소스에서 설치

git clone https://github.com/SonAIengine/ku-portal-mcp.git
cd ku-portal-mcp
pip install -e .

학사 조회를 쓰려면

수강신청내역·시간표·성적·개설과목·강의실은 학사 시스템의 2차 보안인증을 통과해야 합니다. 추가 설치는 필요 없습니다. 위 설치만으로 32개 tool 전부가 동작합니다.

> 학사 인증 시작해줘          ← 메일로 6자리 코드가 옵니다
> 코드 123456                ← 인증 완료, 이후 50분간 자유롭게 조회

v0.17.x까지는 이 인증에 playwright와 Chromium(수백 MB) 설치가 필요했지만, v0.18.0에서 순수 HTTP로 재구현해 의존성을 없앴습니다.

인증 코드는 어디로 오나요

KUPID 포털에 등록된 이메일 주소로 옵니다. 따로 등록할 것은 없습니다 — 포털 가입 때 넣은 주소가 그대로 쓰입니다.

궁금한 것

주소를 바꾸려면

포털 > My Page > 개인정보 수정

MCP에 이메일을 등록하나요

아니요. 환경변수는 KU_PORTAL_ID / KU_PORTAL_PW 둘뿐입니다

메일이 안 와요

스팸함을 확인하세요. 학교 안내에도 명시된 흔한 경우입니다

코드 유효시간

5분. 지나면 인증을 다시 시작하면 됩니다

이 MCP는 메일을 보내지 않습니다. 학교 SSO 서버에 "발송해 달라"고 요청할 뿐이고(요청 바디에 주소를 싣지 않습니다), 서버가 세션으로 사용자를 식별해 등록된 주소로 직접 보냅니다. 응답으로는 마스킹된 형태(son****@gmail.com)만 돌아옵니다. 따라서 이 도구가 임의의 주소로 코드를 보내는 것은 구조적으로 불가능하며, 코드는 언제나 계정 주인의 메일함으로만 갑니다.

업데이트

학교가 시스템을 바꾸면 tool이 동작을 멈출 수 있습니다. 그럴 때 최신 버전으로 올리세요.

uvx로 쓰는 경우

uvx는 캐시된 버전을 재사용하기 때문에 그냥 재시작해도 옛 버전이 뜹니다. 캐시를 지우고 다시 받아야 합니다.

uv cache clean ku-portal-mcp

이후 Claude Code를 재시작하면 최신 버전이 설치됩니다. 특정 버전을 고정하려면 MCP 설정의 argsku-portal-mcp@0.17.0 처럼 적으면 됩니다.

pip으로 쓰는 경우

pip install --upgrade ku-portal-mcp

소스로 쓰는 경우

cd ku-portal-mcp
git pull
pip install -e .

업데이트 후 확인

Claude Code를 반드시 재시작해야 새 버전이 적용됩니다 (MCP 서버는 시작 시 한 번 로드됩니다).

claude mcp list          # 연결 상태 확인
uvx ku-portal-mcp --version

Claude Code 안에서는 이렇게 확인할 수 있습니다.

> 공지사항 3개만 보여줘        ← 무인증 기능이 되는지
> 학사 인증 시작해줘           ← 학사 기능이 되는지

환경변수를 바꿨을 때도 재시작이 필요합니다. MCP 서버는 시작 시점의 환경변수를 읽습니다. ~/.zshrc에서 비밀번호를 설정한다면 작은따옴표를 쓰세요 — 큰따옴표 안의 \! 같은 이스케이프는 백슬래시가 값에 그대로 남아 로그인이 실패합니다.

export KU_PORTAL_PW='p@ssw0rd!'   # O
export KU_PORTAL_PW="p@ssw0rd\!"  # X — 값이 `p@ssw0rd\!` 가 됩니다

Claude Code에서 사용하기

1. MCP 서버 등록

claude mcp add CLI 명령으로 등록합니다:

uvx 사용 (권장):

claude mcp add -s user \
  -e KU_PORTAL_ID=your-kupid-id \
  -e KU_PORTAL_PW=your-kupid-password \
  ku-portal \
  uvx ku-portal-mcp@latest

pip으로 설치한 경우:

claude mcp add -s user \
  -e KU_PORTAL_ID=your-kupid-id \
  -e KU_PORTAL_PW=your-kupid-password \
  ku-portal \
  ku-portal-mcp
  • KU_PORTAL_IDKU_PORTAL_PW는 KUPID 포털 로그인에 사용하는 학번과 비밀번호입니다.

  • -s user는 글로벌(모든 프로젝트) 등록입니다. 특정 프로젝트에서만 사용하려면 -s project로 변경하세요.

2. 설정 적용

MCP 서버 설정은 Claude Code 시작 시점에 1회 로드됩니다.

  • 방법 A: Claude Code를 재시작

  • 방법 B: 세션 내에서 /mcp 명령어 실행 → MCP 서버 추가/재시작을 재시작 없이 바로 적용

3. 동작 확인

Claude Code에서 아래와 같이 자연어로 물어보세요:

> 도서관 좌석 현황 보여줘

로그인 없이 바로 결과가 나오면 정상적으로 설치된 것입니다.

> 최근 공지사항 보여줘
> 이번 주 과제 뭐 있어?
> 내 시간표 보여줘

4. /ku 슬래시 커맨드 활용

examples/commands/ku.md를 Claude Code의 커스텀 슬래시 커맨드로 등록하면, /ku 한 줄로 포털 조회를 더 빠르게 할 수 있습니다.

설치: examples/commands/ku.md 파일을 프로젝트의 .claude/commands/ 또는 ~/.claude/commands/에 복사합니다.

# 글로벌 커맨드로 등록 (모든 프로젝트에서 사용)
mkdir -p ~/.claude/commands
cp examples/commands/ku.md ~/.claude/commands/ku.md

사용 예시:

> /ku 도서관
> /ku 공지 수강신청
> /ku 과제
> /ku 시간표
> /ku 성적
> /ku 검색 장학금

슬래시 커맨드는 필요한 MCP tool만 자동으로 허용하므로, 자연어 질의보다 빠르고 정확하게 동작합니다. 자세한 키워드 목록은 examples/commands/ku.md를 참고하세요.

프로젝트 구조

ku_portal_mcp/
├── server.py       # MCP 서버 + 32개 tool 등록
├── sso.py          # 고려대 통합 로그인 (sso.korea.ac.kr) — 비밀번호 AES 암호화
├── auth.py         # 포털 세션 확립, 세션 캐싱 (30분 TTL)
├── portal_api.py   # 포털 게시판 JSON API + 교무처 학사일정 (무인증)
├── ams.py          # 학사 시스템 (ams.korea.ac.kr) 조회 API
├── _ams_auth.py    # 학사 2차 보안인증 헬퍼 (브라우저 자동화, 선택 의존성)
├── _storage.py     # 세션 캐시 보안 저장 (0600, atomic write)
├── library.py      # 도서관 좌석 현황 (librsv.korea.ac.kr)
├── timetable.py    # 교시↔시간 변환 + ICS export
├── dept_notices.py # 학과/대학원 홈페이지 공지
└── lms.py          # Canvas LMS 연동 (mylms.korea.ac.kr)

기술 스택

영역

기술

설명

MCP

FastMCP (mcp[cli])

Claude Code 연동 프로토콜

HTTP

httpx (async)

비동기 HTTP 클라이언트

파싱

BeautifulSoup4 + lxml

HTML 스크래핑

통합 인증

sso.korea.ac.kr

AES-128-CBC 비밀번호 암호화 + 자동 제출 폼 체인 추적

학사 인증

IOP 2차 보안인증

이메일 OTP, 브라우저 컨텍스트 검증

LMS 인증

Canvas 인계

RSA 복호화한 임시 비밀번호 + Rails CSRF

암호화

cryptography

AES(로그인) / RSA(Canvas)

공지·장학

포털 JSON API

/ctt/svc/bulletin (인증 불필요)

학사 조회

AMS DataSet API

넥사크로 규약 (@d1#<필드>)

도서관

HODI REST API

librsv.korea.ac.kr (인증 불필요)

LMS API

Canvas REST API

mylms.korea.ac.kr 세션 쿠키 인증

브라우저

Playwright (선택)

학사 2차 인증 전용

트러블슈팅

MCP 서버가 연결되지 않을 때

  1. 서버가 정상 동작하는지 확인:

    ku-portal-mcp --version
  2. 서버가 등록되어 있는지 확인:

    claude mcp list

    목록에 ku-portal이 없으면 설치 > 1. MCP 서버 등록을 참고하세요.

  3. Claude Code 재시작 후 /mcp 명령으로 서버 상태 확인

MCP 서버가 목록에 보이지 않을 때

Claude Code는 MCP 서버 설정을 ~/.claude.json에서 읽습니다. ~/.claude/settings.jsonmcpServers에 넣으면 인식되지 않습니다.

반드시 claude mcp add 명령으로 등록하세요:

claude mcp add -s user \
  -e KU_PORTAL_ID=your-id \
  -e KU_PORTAL_PW=your-pw \
  ku-portal \
  uvx ku-portal-mcp@latest

서버 시작 시 타임아웃이 발생할 때

서버 초기화에 수 초가 걸릴 수 있습니다. 기본 타임아웃이 짧아 연결 실패가 발생하면, ~/.claude/settings.jsonenv에 타임아웃을 늘려주세요:

{
  "env": {
    "MCP_TIMEOUT": "30000"
  }
}

환경변수 관련

  • claude mcp add-e 옵션으로 환경변수를 설정합니다

  • 이미 등록된 서버의 환경변수를 변경하려면 claude mcp remove ku-portal 후 다시 추가하세요

라이선스

MIT

Available Tools

31 tools
kupid_dept_notice_detailA

학과/대학원 공지사항의 상세 내용을 조회합니다 (인증 불필요).

kupid_dept_notices로 조회한 공지의 상세 내용을 가져옵니다.

Args: site_name: 사이트 이름 또는 키 (kupid_dept_notices에서 사용한 값) article_no: 게시글 번호 (kupid_dept_notices 결과의 article_no 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
site_nameYes
article_noYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions authentication is not needed, which is helpful. However, it does not explicitly state that the tool is read-only or idempotent, nor does it disclose any other behavioral aspects like rate limits or side effects. Given the simple read operation, this is adequate but not highly transparent.

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 a brief purpose statement followed by a note about usage and a clear Args section. It front-loads the purpose and is free of unnecessary words or 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 simple detail retrieval tool with an output schema, the description is sufficient. It explains the relationship with kupid_dept_notices and the parameters. It could mention that the output contains detailed content, but since an output schema exists, this omission is acceptable.

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 description coverage is 0%, so the description must explain parameters. It clearly explains that site_name is the key from kupid_dept_notices and article_no is the field from its results. This adds meaningful context beyond the schema's type-only definitions.

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 retrieves detailed content of department/graduate school notices, with the verb '조회' (retrieve). It distinguishes from siblings like kupid_get_notice_detail by specifying the scope (학과/대학원) and the prerequisite use of kupid_dept_notices.

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 explicitly instructs to first use kupid_dept_notices and provides the parameters from that tool. It also notes authentication is not needed. While it doesn't explicitly state when not to use, the context is clear for a detail retrieval tool.

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

kupid_dept_noticesA

학과/대학원 홈페이지 공지사항을 조회합니다 (인증 불필요).

고려대학교 학과 홈페이지의 공지사항 게시판을 스크래핑합니다. site_name을 지정하지 않으면 사용 가능한 사이트 목록을 반환합니다.

환경변수 KU_DEPT_URLS로 소속 학과를 설정할 수 있습니다. 형식: "라벨|URL,라벨|URL,..." 예: "SW·AI융합대학원|https://gscit.korea.ac.kr/gscit/board/notice_master.do"

Args: site_name: 사이트 이름 또는 키 (빈 문자열이면 사이트 목록 반환) page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
site_nameNo
pageNo
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior beyond what's obvious. It states scraping (read-only) and no authentication needed. However, it does not mention rate limits, error handling, or what happens if a site is unavailable. Adequate but not thorough.

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 well-organized with a clear purpose statement, then behavior, configuration, and parameter list. It includes an example. Slightly lengthy but essential content is present. Could trim some repetition but overall good.

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?

Given the tool involves scraping, dynamic site list, and environment configuration, the description covers key aspects. Output schema exists so return format is likely documented elsewhere. Could mention what the returned list contains (e.g., titles, dates), but still fairly complete.

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 0%, so the description must compensate. It explains each parameter: site_name (empty -> site list), page (default 1), count (default 20). It also describes the environment variable format. Adds significant meaning beyond 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 clearly states the tool queries department/graduate school homepage notices and scrapes the notice board. It distinguishes from the sibling tool kupid_dept_notice_detail by focusing on listing notices rather than details. Mentions returning site list when site_name is empty, adding specificity.

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 notes no authentication required and explains behavior when site_name is empty. It also describes environment variable configuration. However, it does not explicitly state when to use this tool over other notice-fetching siblings like kupid_get_notices, lacking direct alternatives guidance.

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

kupid_get_all_gradesA

전체 성적, 누적 GPA, 취득학점을 조회합니다 (SSO 로그인 필요).

KUPID 학적/졸업 > 성적사항 > 전체성적조회 화면의 최종 확정 성적을 가져옵니다.

Args: year_term: 조회할 학년도/학기 코드 (예: "20242R"). 비우면 전체 조회

ParametersJSON Schema
NameRequiredDescriptionDefault
year_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the authentication requirement and that it fetches finalized grades from a specific screen. It does not mention rate limits or data freshness, but for a read-only operation this is acceptable.

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 two short paragraphs. It front-loads the purpose, then provides context and parameter details. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the presence of an output schema, the description adequately covers the tool's function, preconditions (SSO login), and parameter usage. It misses potential details like whether the data is cached or if there are pagination limits, but these are not critical for a simple list tool.

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 description coverage is 0%, but the description includes an Args section explaining the parameter: 'year_term: 조회할 학년도/학기 코드 (예: "20242R"). 비우면 전체 조회'. This adds semantic meaning beyond the schema, clarifying the format and default behavior.

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 it retrieves all grades, cumulative GPA, and earned credits. It specifies the source ('KUPID 학적/졸업 > 성적사항 > 전체성적조회 화면') and distinguishes from sibling tools by focusing on overall grades versus course-specific grades (e.g., kupid_lms_grades).

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 mentions 'SSO 로그인 필요' indicating a prerequisite. It provides an example for the parameter and implies when to use (for overall grades) but does not explicitly state when not to use or compare to alternatives.

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

kupid_get_library_seatsA

고려대학교 도서관 열람실 좌석 현황을 조회합니다.

인증 없이 실시간 좌석 현황을 확인할 수 있습니다.

Args: library_name: 도서관 이름 필터 (빈 문자열이면 전체 도서관 조회) - 중앙도서관, 중앙광장, 백주년기념 학술정보관, 과학도서관, 하나스퀘어, 법학도서관

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, but the description indicates a safe read operation without authentication. It adds transparency about real-time behavior and lack of auth requirements, though it doesn't mention rate limits or data staleness.

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 with two sentences plus a parameter list. Every part is informative with no wasted words.

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?

Given no annotations and a single optional parameter, the description covers the core functionality. It mentions an output schema exists, so return values are assumed documented. Minor gap: no mention of pagination or error states.

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 0%, but the description explains the library_name parameter: filter by name, empty for all libraries, and lists possible values. This adds significant meaning beyond 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 clearly states the verb '조회하다' (query) and the resource '도서관 열람실 좌석 현황' (library reading room seat status). It distinctly differs from sibling tools, which cover LMS, courses, schedules, etc.

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 explicitly states that it works without authentication and provides real-time status. While it doesn't list when not to use it, the context is clear and no direct alternative exists among siblings.

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

kupid_get_notice_detailA

KUPID 공지사항의 상세 내용을 조회합니다.

Args: notice_id: 공지사항 index (kupid_get_notices 결과의 index 필드) message_id: 공지사항 message_id (kupid_get_notices 결과의 message_id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
notice_idYes
message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose that the tool is read-only, nor does it mention any authentication or side effects. While the name implies retrieval, explicit behavioral context is missing.

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: a single Korean sentence stating purpose, then an args list. It is front-loaded with the core purpose, and every sentence is useful. No wasted words.

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?

Given the low complexity (one required param) and presence of an output schema, the description is mostly complete. It explains parameter sourcing and tool purpose. However, it lacks guidance on when to choose this over department-specific alternatives and omits error handling or prerequisites.

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 has 0% description coverage, but the description compensates by explaining the provenance of each parameter (from 'kupid_get_notices' results). This adds significant meaning beyond the type/name in 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 explicitly states the tool retrieves details of KUPID announcements, distinguishing it from 'kupid_get_notices' (listing) and 'kupid_dept_notice_detail' (department-specific). The verb '조회하다' (retrieve) and resource '상세 내용' (details) are clear.

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 notice_id and message_id come from 'kupid_get_notices', providing clear context for use. However, it does not explicitly state when to use this versus sibling tools like 'kupid_dept_notice_detail', nor does it mention exclusions.

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

kupid_get_noticesC

KUPID 포털의 공지사항 목록을 조회합니다.

Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it retrieves a list, but does not mention safety (e.g., read-only, idempotent), authentication requirements, rate limits, or any side effects. This is insufficient for a tool with no 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 concise, with a single sentence explaining the purpose followed by the parameters. It avoids unnecessary details and is well-structured. However, the parameter list is redundant with the schema, slightly reducing efficiency.

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?

Given that an output schema exists, the description need not explain return values. However, it lacks usage context, such as when to use this list tool versus the detail tool, and does not mention pagination behavior despite having page/count parameters. It is marginally adequate but leaves gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists the two parameters with defaults (page and count), but does not explain their meaning beyond their names. The defaults are already in the schema, so the description adds minimal value. It fails to provide semantic context like usage examples or accepted value ranges.

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 retrieves a list of notices from KUPID portal (verb: retrieve, resource: list of notices). However, it does not differentiate from sibling tools like `kupid_get_notice_detail`, which likely retrieves a single notice. A score of 4 reflects clarity but lack of differentiation.

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?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or comparisons to sibling tools like `kupid_get_notice_detail`. The description only explains what the tool does, not when to choose it.

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

kupid_get_schedule_detailB

KUPID 학사일정의 상세 내용을 조회합니다.

Args: schedule_id: 학사일정 index (kupid_get_schedules 결과의 index 필드) message_id: 학사일정 message_id (kupid_get_schedules 결과의 message_id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_idYes
message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only states that it retrieves details, with no mention of side effects, authentication requirements, or other notable behaviors. This is insufficient for an agent to understand the tool's impact.

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

Conciseness3/5

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

The description is brief and front-loaded, but the structure is minimal. It consists of a single sentence and an 'Args' list, which is adequate but could be better organized for clarity.

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?

Given that an output schema exists, the description does not need to detail return values. However, it lacks information about usage flow (e.g., dependence on kupid_get_schedules) and potential constraints, making it partially complete for a simple detail look-up tool.

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 description coverage is 0%, so the description's parameter explanations are critical. It adds value by specifying that schedule_id is the index from kupid_get_schedules results and message_id comes from the same source, providing essential context not in the schema.

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 retrieves details of a KUPID academic schedule, with a specific verb and resource. It implicitly differentiates from sibling tool 'kupid_get_schedules' by its need for a schedule_id, but does not explicitly contrast them.

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?

No guidance is given on when to use this tool versus alternatives (e.g., kupid_get_schedules). It does not mention prerequisites or context, such as that it should be used after obtaining a schedule_id from kupid_get_schedules.

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

kupid_get_schedulesA

KUPID 포털의 학사일정 목록을 조회합니다.

Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as whether the operation is read-only, requires authentication, or any side effects. Only a basic list operation is implied.

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: one sentence stating the purpose in Korean, followed by a clear bulleted list of arguments. Every part is useful, no wasted words, and the main action 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?

Given the tool's simplicity (list schedules with pagination) and the existence of an output schema, the description is sufficient. It covers the basic functionality, though it could mention the output structure or whether results are paged automatically.

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 input schema has no descriptions for its two parameters (0% coverage), but the tool description explicitly explains both parameters: page (page number, default 1) and count (items per page, default 20). This adds meaning beyond 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 clearly states that the tool retrieves a list of academic schedules from the KUPID portal. The presence of a sibling tool, kupid_get_schedule_detail, indicates this tool is for listing while the sibling handles details, distinguishing their purposes.

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 provide any guidance on when to use this tool versus alternatives. It only states what it does, without explaining the context or conditions for using it, nor does it mention 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.

kupid_get_scholarship_detailA

KUPID 장학공지의 상세 내용을 조회합니다.

Args: scholarship_id: 장학공지 index (kupid_get_scholarships 결과의 index 필드) message_id: 장학공지 message_id (kupid_get_scholarships 결과의 message_id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
scholarship_idYes
message_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, error handling, or permissions. It only explains the parameters, leaving the agent without important behavioral context.

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 concise, consisting of a one-sentence purpose and a parameter list. It is front-loaded with the verb. Slight improvement could be made with clearer separation, but it's efficient.

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?

Given the existence of an output schema, the description need not explain return values. However, with no annotations and low behavioral transparency, the description is incomplete. It adequately covers parameter semantics but lacks broader context.

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?

With 0% schema description coverage, the description fully compensates by explaining that scholarship_id and message_id come from the output of kupid_get_scholarships. This adds essential meaning beyond the schema's titles and types.

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 action ('조회합니다' - retrieves) and the resource ('KUPID 장학공지의 상세 내용' - scholarship notice detail). It references sibling tool kupid_get_scholarships for parameter context, but does not explicitly differentiate from other detail tools like kupid_get_notice_detail.

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 implicitly guides usage by linking parameters to the output of kupid_get_scholarships. It provides clear context but lacks explicit when-not-to-use or alternative tools.

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

kupid_get_scholarshipsC

KUPID 포털의 장학공지 목록을 조회합니다.

Args: page: 페이지 번호 (기본값: 1) count: 한 페이지당 항목 수 (기본값: 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states '조회합니다' (retrieves) without detailing behavior like pagination, empty results, or side effects. Output schema exists but is unmentioned.

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?

Description is short and front-loaded with the main purpose. The parameter documentation is structured clearly in a docstring format. No extraneous information.

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?

Given that an output schema exists, return values are handled. However, missing context about authentication, idempotency, and pagination behavior beyond defaults makes it adequate but not complete.

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 0%, so description must add meaning. It explains page and count with defaults, which adds value but lacks additional semantics like max page size or indexing (1-based). Minimum viable compensation.

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 verb '조회합니다' (retrieve/list) and resource '장학공지 목록' (scholarship notice list). It is distinct from sibling tool kupid_get_scholarship_detail which is for details. However, it doesn't explicitly mention it's a list tool or contrast with siblings.

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?

No guidance on when to use this tool vs alternatives. No mention of prerequisites, required authentication, or 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.

kupid_get_syllabusA

강의계획서를 조회합니다 (SSO 로그인 필요).

Args: course_code: 학수번호 (예: "COSE101") section: 분반 (예: "02") year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_codeYes
sectionNo00
yearNo
semesterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, description carries full burden. It mentions SSO login dependency but does not disclose other behaviors like idempotency, error responses, or rate limits. Adequate but not comprehensive.

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?

Very concise—single sentence for purpose followed by clear parameter list. No redundant information. Front-loaded with the key action and authentication requirement.

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?

Provides enough context for a simple fetch tool: input parameters explained, authentication noted, and output schema exists (handling return values). Could mention that course_code is required, but that's in schema. Overall sufficient.

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?

Input schema has 0% description coverage; the description manually defines each parameter with examples and values (e.g., semester options). This adds significant meaning beyond the raw schema, compensating for the lack of schema descriptions.

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 specific verb (retrieve) and resource (syllabus), and includes authentication requirement (SSO login). It effectively distinguishes this tool from siblings like kupid_lms_syllabus by implying it is a different system context.

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?

Mentions SSO login requirement, which hints at prerequisite, but does not explicitly state when to use this tool over alternatives (e.g., kupid_lms_syllabus) or provide scenarios. Usage context is implied but not fully clarified.

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

kupid_get_timetableA

개인 수업시간표를 조회합니다 (SSO 로그인 필요).

포털 메인 페이지의 시간표 위젯 데이터를 파싱합니다.

Args: day: 요일 ("all"=전체, "mon"/"tue"/"wed"/"thu"/"fri") ics_export: True이면 ICS 캘린더 파일 내용도 포함

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoall
ics_exportNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses an authentication requirement (SSO login) and the data source (portal widget), implying a read operation. However, it does not mention potential rate limits, caching behavior, or whether it modifies any state.

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 two short sentences for purpose and two bullet points for parameters. It front-loads the core action and then provides details, with no unnecessary words.

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?

Given the tool's simplicity (optional parameters, output schema exists), the description adequately covers the authentication requirement, parameter options, and data source. It could optionally mention default behavior of day or whether ics_export is file content or URL, but overall it is sufficient.

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 description coverage is 0%, but the description fully compensates by explaining the day parameter values ('all', 'mon', etc.) and the effect of ics_export (returns ICS file content if True). This adds significant meaning beyond the bare schema.

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 '개인 수업시간표를 조회합니다' (retrieve personal class timetable), which is specific verb+resource. However, it does not explicitly differentiate from the many sibling tools, though it's distinguishable by the 'timetable' resource.

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 mentions SSO login is required and that it parses data from the portal main page timetable widget, but does not provide explicit guidance on when to use this tool versus alternatives or 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.

kupid_lms_announcementsA

Canvas LMS 공지(announcement)를 조회합니다.

course_id를 지정하면 해당 과목, 생략하면 현재 활성 과목 전체의 공지를 가져옵니다. kupid_lms_dashboard와 달리 message 본문을 절단하지 않고 전문(HTML)으로 반환합니다.

Args: course_id: 과목 ID (생략 시 활성 과목 전체, kupid_lms_courses 참조)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the return format (full HTML without truncation) and the conditional querying behavior based on course_id, providing transparency beyond the schema.

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 concise, starting with the purpose, then explaining parameter behavior, and ending with an Args section. While efficient, the Args section partly repeats information already stated.

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 tool with one optional parameter, the description covers essential aspects: return format, filtering behavior, and differentiation from a sibling. The output schema likely handles return structure details, so the description is adequately complete.

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 description coverage is 0%, so the description must explain the parameter. It clearly states course_id is optional, what happens when omitted (all active courses), and references kupid_lms_courses for obtaining course IDs, fully compensating for the schema gap.

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 explicitly states the tool retrieves Canvas LMS announcements (Canvas LMS 공지(announcement)를 조회합니다). It contrasts with kupid_lms_dashboard by noting it returns full HTML without truncation, distinguishing it from a sibling tool.

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 the effect of providing or omitting the course_id parameter (specific course vs. all active courses) and references kupid_lms_courses for finding course IDs. However, it does not explicitly state when to choose this tool over other related siblings beyond the dashboard comparison.

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

kupid_lms_assignmentsA

Canvas LMS 과제 목록을 조회합니다.

특정 과목의 전체 과제(assignments) 목록을 가져옵니다. 기본적으로 완료/마감 과제 포함 전체를 반환합니다. kupid_lms_courses로 course_id를 먼저 확인하세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드) upcoming_only: True이면 마감 전 과제만 표시 (기본값: False, 전체 과제 반환)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
upcoming_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It implies a read operation ('조회합니다' means inquiry) but does not explicitly state it is non-destructive or mention other behaviors like pagination, rate limits, or authentication requirements. This is adequate but minimal.

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 very concise with no fluff. It front-loads the main purpose in a single sentence, followed by a brief body and clearly formatted parameter descriptions. Every sentence adds value.

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?

Given the presence of an output schema (return values are covered), the description provides sufficient context for an agent: purpose, prerequisite, parameter semantics, and default behavior. It lacks details on error handling or ordering, but these are minor for a list tool.

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?

With 0% schema coverage, the description adds meaningful explanations for both parameters: course_id is the ID from kupid_lms_courses, and upcoming_only filters with a default value. This goes beyond the schema's bare titles and types, providing clear 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?

Description clearly states the tool retrieves Canvas LMS assignments for a specific course, using specific verbs and distinguishing from sibling tools like kupid_lms_quizzes and kupid_lms_grades. It also explains default behavior (returns all assignments).

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?

Description explicitly instructs users to first check course_id using kupid_lms_courses (a prerequisite) and explains the effect of the upcoming_only parameter. However, it does not mention when not to use this tool versus alternatives like kupid_lms_submissions.

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

kupid_lms_coursesB

Canvas LMS 수강과목 목록을 조회합니다.

mylms.korea.ac.kr의 Canvas LMS에서 수강 중인 과목 목록을 가져옵니다. SSO 로그인이 필요합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states that SSO login is required, which is a prerequisite, but does not mention whether the operation is read-only, any side effects, or data returned beyond 'list of courses'. The output schema exists but is not described.

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 short with three sentences, front-loading the purpose. However, the second sentence ('It brings the list...') is somewhat redundant with the first. Overall clear and efficient.

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?

Given zero parameters and an existing output schema, the description is adequate but lacks details on what fields the returned list contains, any ordering, or pagination. It does not distinguish from similar sibling tools like kupid_my_courses, making it less complete for an agent.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is 100%. The description adds no parameter-specific information, which is acceptable as no parameters exist. Baseline score of 4 applies.

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

Purpose4/5

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

The description clearly states it retrieves a list of enrolled courses from Canvas LMS, specifying the source URL. The purpose is clear, but it does not explicitly differentiate from sibling tools like kupid_my_courses or kupid_search_courses.

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 mentions the need for SSO login but provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The 'kupid' prefix suggests integration with a specific portal, but usage context is lacking.

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

kupid_lms_dashboardA

Canvas LMS 대시보드를 조회합니다.

현재 수강 중인 과목 카드와 과제/이벤트 현황을 보여줍니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description carries the burden of behavioral disclosure. It explains what data is returned (course cards and assignment/event status) but does not mention side effects, authentication needs, or data freshness. This is acceptable for a simple read-only dashboard.

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 sentences long, directly stating the purpose and content. No unnecessary words; every sentence earns its place.

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 a straightforward purpose, the description is complete. The output schema exists to explain return values, so the description does not need to elaborate further.

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

Parameters4/5

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

The tool has no parameters, so the description naturally does not need to add parameter meaning. The context signals indicate 100% schema description coverage, and the description provides all necessary context for a parameterless tool.

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 it views the Canvas LMS dashboard and specifies the content: course cards and assignment/event status. This distinguishes it from sibling tools that focus on specific elements like announcements or assignments.

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 obtaining an overview of current courses and tasks, but it does not explicitly state when to use this tool versus alternatives like kupid_lms_courses or kupid_lms_assignments.

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

kupid_lms_download_fileA

Canvas LMS 파일을 지정한 디렉토리에 다운로드합니다.

file_id는 kupid_lms_modules 결과의 items에서 type이 'File'인 항목의 content_id 필드에서 얻을 수 있습니다.

Args: file_id: Canvas 파일 ID (items[*].content_id) save_dir: 저장할 디렉토리 절대경로 (예: /Users/me/Documents/lecture) filename: 저장 파일명 (생략 시 Canvas 원본 파일명 사용)

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
save_dirYes
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided. Description covers basic download behavior and parameter roles but omits details like overwrite behavior, permissions, or network requirements. Adequate but could be more transparent.

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?

Description is concise with a clear goal, a note on file_id source, and a structured Args section. No wasted words.

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?

Covers purpose and parameters sufficiently. With an output schema present, return value explanation may be unnecessary. Could mention potential errors or prerequisites, but complete enough for a simple 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?

Description adds significant meaning beyond the input schema: explains that file_id comes from modules' content_id, save_dir is an absolute path, and filename defaults to original. Schema only provides types and titles.

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 it downloads a Canvas LMS file to a specified directory. Verb 'download' and resource 'Canvas LMS file' are explicit. Distinguishes from sibling tools that handle other LMS operations.

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?

Tells when to use (to download a file) and how to obtain file_id from modules results. Lacks explicit when-not-to-use or alternatives, but guidance is clear and helpful.

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

kupid_lms_get_board_postA

게시글 상세와 첨부파일, 댓글(첨부 포함)을 조회합니다.

attachments의 canvas_file_id를 kupid_lms_download_file의 file_id로 넘기면 파일을 다운로드할 수 있습니다. attachments[].url은 직접 다운로드 링크입니다(시간제한 verifier 토큰 포함).

comments에는 각 댓글의 본문과 첨부파일(동영상/PDF 등)이 포함됩니다. 예: 텀프로젝트 게시판에서 팀별 발표 동영상은 댓글 첨부로 제출됩니다.

Args: course_id: 과목 ID board_id: 게시판 ID post_id: 게시글 ID (kupid_lms_list_board_posts의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
board_idYes
post_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description discloses that attachments have time-limited URLs and explains how to download files via file_id. It covers the main behaviors beyond the schema, though no annotations exist.

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?

Description is concise, well-structured with paragraphs and clear Args list. Every sentence adds value 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?

Tool has 3 required params and an output schema. The description covers the result contents and file download process sufficiently. Could mention that the tool is read-only for completeness.

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 description explains each parameter in Args, but only provides minimal context (e.g., post_id is from list endpoint). Schema coverage is 0%, so the description does not add much beyond naming.

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 retrieves post details, attachments, and comments, distinguishing it from sibling tools like kupid_lms_list_board_posts which lists posts.

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 alternatives are given, but it's implied from the context that this tool is for getting a single post's full details. Lacks guidance on 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.

kupid_lms_gradesA

Canvas LMS 성적/점수를 조회합니다.

과목별 현재 점수, 최종 점수, 학점(grade)을 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It indicates a read-only lookup ('조회') but does not disclose details about side effects, permissions, rate limits, or output format. The presence of an output schema mitigates some need, but the description could add more behavioral context.

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 without any wasted words, presented in both Korean and English with clear structure. Essential information is front-loaded, and every sentence contributes to understanding.

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?

Given the simple single-parameter input and the existence of an output schema, the description adequately covers purpose, prerequisite, and outputs. It does not discuss error handling or edge cases, but for a lookup tool, this is sufficient.

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 description coverage is 0%, so the description must compensate. It explains the course_id parameter meaning and directs to kupid_lms_courses.id for obtaining it, adding significant value beyond the schema's minimal 'Course Id' title.

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 retrieves grades/scores from Canvas LMS for a specific course, listing specific outputs (current score, final score, grade). It references the prerequisite tool kupid_lms_courses, distinguishing it from siblings like kupid_get_all_grades.

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 explicitly instructs to first check the course_id using kupid_lms_courses, providing clear context for when to use this tool. However, it does not mention when not to use it or alternative tools such as kupid_get_all_grades.

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

kupid_lms_list_board_postsB

게시판의 게시글 목록을 조회합니다.

Args: course_id: 과목 ID board_id: 게시판 ID (kupid_lms_list_boards의 id 필드) page: 페이지 번호 (기본 1) keyword: 제목 검색어 (기본 전체)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
board_idYes
pageNo
keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states the tool retrieves a list but does not mention pagination behavior, ordering, or whether it is read-only. The 'page' parameter implies pagination, but no limits or defaults beyond the default value are discussed.

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 concise, with a clear main sentence followed by parameter explanations. It is front-loaded with the purpose. However, it could be more structured (e.g., separate the parameter descriptions into a table or bullet list for easier parsing).

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 covers all four parameters with clear meanings and relates board_id to another tool. It also explains keyword is for title search. However, it lacks information on result ordering, maximum results per page, or any filtering options beyond keyword. Given the presence of an output schema, return values are not needed, but behavioral context is missing.

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

Parameters4/5

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

The description adds meaningful semantics beyond the input schema: it explains that board_id comes from kupid_lms_list_boards, page defaults to 1, keyword defaults to empty. This compensates for the 0% schema description coverage. However, it could provide more detail on acceptable values or formats.

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 retrieves a list of posts from a board (게시판의 게시글 목록을 조회합니다). It specifies the resource (board posts) and action (list). Among siblings, 'kupid_lms_get_board_post' retrieves a single post, so this tool is distinct.

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 provides parameter descriptions but no explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or any prerequisites. For example, it doesn't reference that this is for listing all posts in a board, while 'kupid_lms_get_board_post' is for a single post.

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

kupid_lms_list_boardsA

Canvas LMS 과목의 게시판 목록을 조회합니다.

Q&A 게시판, 강의자료실 등 교수님이 자료를 올리는 게시판들을 반환합니다. Canvas 네이티브 모듈(kupid_lms_modules)에 자료가 없으면 여기서 찾아보세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It describes a read-only operation (list) without disclosing side effects, authentication needs, or return format. While the output schema exists, the description lacks explicit behavioral notes such as 'read-only' or 'no destructive actions'. The score is 3 because it minimally conveys the operation but misses additional transparency.

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 concise, consisting of two short paragraphs. The first defines purpose and lists examples; the second provides usage guidance and parameter documentation. Every sentence earns its place, though the second paragraph could be integrated more smoothly. No unnecessary wording, so score 4.

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?

Given the tool's simplicity (one parameter, output schema exists), the description is nearly complete. It explains the resource, usage context, and parameter. It does not mention pagination or whether all boards are returned, but the output schema likely covers return structure. Slightly lacking in edge-case behavior, so 4.

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 0%, but the description compensates by documenting the only parameter: 'course_id: 과목 ID (kupid_lms_courses의 id 필드)'. This adds meaning beyond the schema (integer) by linking to another tool's field. The description fully covers what the parameter represents and its source, earning a 4.

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 lists boards in a Canvas course, with specific examples like 'Q&A 게시판, 강의자료실'. It distinguishes from sibling tools like kupid_lms_modules and kupid_lms_get_board_post by specifying its purpose of returning board lists, which is a unique resource among siblings.

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 explicit guidance: 'Canvas 네이티브 모듈(kupid_lms_modules)에 자료가 없으면 여기서 찾아보세요.' This tells the agent when to use this tool as an alternative to modules. No exclusion criteria are given, but the context is clear enough for selection.

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

kupid_lms_modulesA

Canvas LMS 강의자료(모듈)를 조회합니다.

주차별 강의 모듈과 포함된 자료를 가져옵니다. kupid_lms_courses로 course_id를 먼저 확인하세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It uses '조회' implying a read operation, but does not explicitly state it's read-only, nor mention side effects, permissions, or error handling. More detail would improve transparency.

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 two sentences plus parameter details. Every sentence serves a purpose: stating the tool's function, describing what it retrieves, and providing usage guidance. No redundancy.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, output schema exists), the description covers purpose, prerequisite, and parameter meaning. It doesn't describe return values, but the output schema fills that gap. It is complete enough for an agent to use correctly.

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

Parameters4/5

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

The only parameter, course_id, is explained in the description as '과목 ID (kupid_lms_courses의 id 필드)', adding meaning beyond the schema's type and requirement. Schema coverage is 0%, so the description compensates well by linking to another tool's output.

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 retrieves Canvas LMS modules (강의자료/모듈), specifying it includes weekly modules and materials. The verb '조회' (retrieve) and resource 'modules' are specific. It distinguishes from sibling tools like kupid_lms_assignments, though it could explicitly mention it returns a list of modules.

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 explicitly instructs to first obtain course_id via kupid_lms_courses, providing a clear prerequisite and usage context. It does not explicitly state when not to use this tool, but the prerequisite is sufficient for guidance.

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

kupid_lms_quizzesA

Canvas LMS 퀴즈/시험 목록을 조회합니다.

과목의 퀴즈, 시험, 설문 목록과 마감일, 시간제한 등을 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It implies a read-only operation ('조회') but does not explicitly state read-only behavior, auth requirements, or rate limits. It adds basic behavioral context (listing quizzes) but lacks detail on side effects or permissions.

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 wasted words. It front-loads the purpose, follows with the prerequisite, and then defines the parameter. At only three short sentences, every sentence adds value.

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?

Given the tool's simplicity (one required parameter, output schema exists), the description adequately covers what the tool does and how to use it. However, it does not mention pagination, sorting, or behavior when no quizzes exist, but the output schema likely fills that gap.

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 description coverage is 0%, so the description compensates. It explains that 'course_id' is the ID from 'kupid_lms_courses', adding meaningful context beyond the schema's basic type. However, it could mention other possible parameters (none) or format constraints.

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 lists quizzes, exams, and surveys with due dates and time limits for a course. It uses specific verbs ('조회합니다' meaning retrieves) and resource ('퀴즈/시험 목록'). Although not explicitly distinguishing from siblings, the context of sibling tools (assignments, grades, etc.) makes its purpose distinct.

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 explicitly instructs to first obtain the course_id from 'kupid_lms_courses', providing a clear prerequisite. It does not specify when not to use the tool or alternatives, but for a simple list tool, this guidance is adequate.

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

kupid_lms_submissionsA

Canvas LMS 과제 제출 현황을 조회합니다.

과목의 전체 과제에 대한 제출 여부, 점수, 채점 상태를 확인합니다. kupid_lms_courses로 course_id를 먼저 확인하세요.

Args: course_id: 과목 ID (kupid_lms_courses의 id 필드)

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only query (조회) but does not explicitly state that no data is modified, nor does it mention authentication needs or performance constraints. The description is adequate but lacks explicit behavioral disclosure.

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, with a front-loaded main sentence in Korean followed by a clarification and a prerequisite note. Every sentence adds value, and there is no wasted text.

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?

Given the tool has an output schema, the description appropriately does not detail return values but mentions what it checks (submission, score, grading status). The prerequisite and parameter explanation are sufficient for a simple one-parameter tool.

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 input schema has no description for course_id (0% coverage), but the description compensates by explaining that course_id is the id field from kupid_lms_courses. This adds meaningful context beyond the schema title, though no constraints like range are provided.

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 inspects Canvas LMS assignment submission status, including submission presence, scores, and grading status. It identifies the specific resource (submissions) and action (조회/inspect), but does not explicitly differentiate from sibling tools like kupid_lms_grades that may also show scores.

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 a clear prerequisite: first check course_id using kupid_lms_courses. However, it does not specify when to use this tool versus alternatives or when not to use it, which would improve guidance.

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

kupid_lms_syllabusA

Canvas LMS 수업 계획서(syllabus)를 조회합니다.

과목의 수업 계획서 내용을 가져옵니다. course_code(예: BDC115) 또는 course_id 중 하나를 입력하세요. course_code를 입력하면 수강과목 목록에서 자동으로 course_id를 찾습니다.

Args: course_code: 과목코드 (예: BDC115). course_id 대신 사용 가능 course_id: 과목 ID (kupid_lms_courses의 id 필드). course_code 대신 사용 가능

ParametersJSON Schema
NameRequiredDescriptionDefault
course_codeNo
course_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The description discloses that the tool automatically resolves course_code to course_id using the course list, which is a helpful behavioral trait. However, with no annotations provided, it does not mention error handling, authentication requirements, rate limits, or any side effects beyond a pure read operation.

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 concise and well-structured with an 'Args' section, though it includes both Korean and English which may be slightly redundant. It uses bullet-like formatting for parameters, making it easy to parse.

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?

Given the existence of an output schema (not shown), the description adequately covers the tool's functionality. It could be improved by addressing the similarity to 'kupid_get_syllabus' or clarifying the priority when both parameters are provided.

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 description adds significant meaning beyond the schema: it explains that course_code is a course code like 'BDC115', that course_id comes from 'kupid_lms_courses', and that either parameter can be used. This compensates for the 0% schema description coverage well.

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 retrieves the syllabus for a course, using the verb '조회합니다' (retrieve). However, there is a sibling 'kupid_get_syllabus' with a similar purpose, and the description does not differentiate itself from that tool, which could confuse an AI agent.

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 provides usage instructions for the two parameters (course_code and course_id) and explains how they relate, but it does not specify when to use this tool over alternatives like 'kupid_get_syllabus' or if there are any prerequisites (e.g., needing to call 'kupid_lms_courses' first to get course_id).

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

kupid_lms_todoA

Canvas LMS 할 일(Todo) 목록을 조회합니다.

마감이 다가오는 과제, 퀴즈 등을 보여줍니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states 'retrieve' (read operation). It does not disclose authentication requirements, data scope, pagination, or result ordering. Key behavioral traits are missing.

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, front-loaded with purpose and a clarifying detail. No extraneous words; efficient for a simple tool.

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?

For a parameterless tool with an output schema, the description is moderately complete. It gives the purpose and typical content but lacks details on authentication, current user scope, or output format. Could be more informative.

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?

No parameters exist, so baseline is 4. Description adds context about the returned data (deadline items) but no parameter details are needed.

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 retrieves the Canvas LMS todo list, specifying it shows assignments and quizzes with approaching deadlines. This distinguishes it from sibling tools like kupid_lms_assignments and kupid_lms_quizzes which likely list all items.

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 deadline-related items but does not explicitly state when to use this tool over siblings like kupid_lms_assignments or kupid_lms_dashboard. No exclusion criteria or alternative hints are provided.

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

kupid_loginA

KUPID 포털에 로그인하고 세션을 확인합니다.

환경변수 KU_PORTAL_ID, KU_PORTAL_PW가 설정되어 있어야 합니다. 세션이 유효하면 캐시된 세션을 재사용합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that it logs in, checks session, and reuses cached sessions. However, it does not detail behavior on invalid credentials, error handling, or whether the tool is idempotent. Moderate transparency.

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

Conciseness5/5

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

Three sentences, no filler. The purpose is stated first, followed by requirements and behavior. Extremely concise and well-structured.

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?

Given there are no parameters and an output schema exists, the description is mostly complete. It could mention what the output provides (e.g., session token), but this is covered by the output schema. Sibling context makes it clear this is a prerequisite tool.

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, so the schema coverage is complete (100%). The description does not need to add parameter semantics, and it does not. Baseline score of 4 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: logging in to KUPID portal and checking session. It uses a specific verb ('로그인하고') and resource ('KUPID 포털'), and effectively distinguishes itself from sibling tools, which are all specific data retrieval or action 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?

The description mentions prerequisite environment variables and session caching, but does not explicitly state when to use this tool versus its siblings. It is implied that it should be called before other kupid tools, but this guidance is not direct.

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

kupid_my_coursesA

내 수강신청 내역을 조회합니다 (SSO 로그인 필요).

학수번호, 강의시간, 강의실, 교수, 학점, 이수구분 등 상세 정보를 반환합니다. 대학원 과목도 포함됩니다.

Args: year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기)

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
semesterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that SSO login is required, which is a behavioral constraint. However, it does not discuss error handling, side effects, rate limits, or what happens if no courses are found. The read-only nature is implied but not explicitly stated.

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 concise and front-loaded with the core purpose. The Args section is clear and well-structured. A minor improvement would be integrating the Args into a more natural paragraph, but overall it is efficient with no unnecessary text.

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?

Given the presence of an output schema (not shown, but indicated), the description appropriately focuses on parameters and usage context. It covers login requirement, parameter details, and returned fields. Missing elements include no result handling or edge cases, but for a simple retrieval tool, it is largely complete.

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 description coverage is 0%, so the description adds significant value. It explains that year defaults to the current semester and semester accepts specific values ('1', '2', 'summer', 'winter'). This goes well beyond the schema which only has string type with empty defaults.

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 retrieves the user's course registration details, specifies that SSO login is required, and lists the returned information (course number, time, classroom, professor, credits, etc.). This distinguishes it from sibling tools like kupid_search_courses (which searches courses) or kupid_get_timetable (which shows schedule).

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 provides a prerequisite (SSO login) and default values for parameters, but does not explicitly compare to sibling tools or state when to use this tool vs alternatives. The context is clear but lacks exclusions or explicit guidance.

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

kupid_room_scheduleA

건물/강의실의 정규 수업 시간표를 조회합니다 (학부+대학원 통합, SSO 로그인 필요).

"이 강의실 오늘 비어있나?" 확인용. 학부 22개 + 대학원 38개 단과대를 병렬 호출하므로 호출당 30~60초 소요 (총 800+ 학과 fan-out). 같은 학기는 자주 안 바뀌니 결과를 호출 측에서 캐싱 권장.

한계:

  • 학사 시스템에 등록된 정규 수업만 잡힘

  • 학회·세미나·임시 행사 등 비정규 점유는 별도 (spacek.korea.ac.kr 시스템 영역)

Args: building: 건물명 부분일치 (예: "애기능" → "애기능생활관" 매치) room: 호실 부분일치 (예: "301" → "301호" / "B301"). 비우면 건물 전체. day: 요일 필터 ("월"/"화"/.../"토"/"일"). 비우면 전 요일. year: 학년도 (기본값: 현재 학기 기준 자동) semester: 학기 ("1","2","summer","winter") campus: "1"=서울, "2"=세종 include_grad: True(기본)면 대학원도 검색, False면 학부만

ParametersJSON Schema
NameRequiredDescriptionDefault
buildingYes
roomNo
dayNo
yearNo
semesterNo
campusNo1
include_gradNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, description effectively discloses behavioral traits: requires SSO login, takes 30-60 seconds due to parallel calls, and recommends caching. Limitations about only covering regular classes are also stated.

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?

Well-structured with front-loaded purpose and organized sections (usage context, limitations, parameters). Slight verbosity in parameter list could be trimmed, but overall efficient.

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?

Description covers input parameters, usage context, performance characteristics, limitations, and caching advice. Output schema exists, so return values need not be explained. Complete for a complex query 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?

Schema has no descriptions (0% coverage), but the description's Args block adds detailed semantics for each parameter, including partial matching, defaults, and examples, fully compensating.

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 it queries regular class schedules for buildings/rooms, integrated for undergrad and graduate. While sibling tools exist, none are directly comparable for room schedules, so no explicit differentiation is needed.

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 context for checking room availability and mentions performance and caching, but does not explicitly state when not to use or list alternative tools for non-regular schedules.

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

kupid_search_coursesA

개설과목을 검색합니다 (SSO 로그인 필요).

학과/단과대별로 개설된 과목을 조회합니다. 단과대 코드가 비어있으면 사용 가능한 단과대 목록을 반환합니다.

Args: year: 학년도 (기본값: 현재 학기 기준 자동 선택) semester: 학기 ("1"=1학기, "2"=2학기, "summer"=여름학기, "winter"=겨울학기) college: 단과대/대학원 코드 (예: 학부 "5720"=정보대학, 대학원 "7298"=SW·AI융합대학원) department: 학과 코드 (예: 학부 "5722"=컴퓨터학과, 대학원 "7313"=인공지능융합학과) campus: 캠퍼스 ("1"=서울, "2"=세종) is_grad: True면 대학원(LecGradMajorSub.jsp), False면 학부(LecMajorSub.jsp)

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
semesterNo
collegeNo
departmentNo
campusNo1
is_gradNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the special behavior of returning college list when college is empty and mentions SSO requirement. However, it does not state whether the tool is read-only, describe any side effects, or address rate limits or data freshness.

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 well-structured: a clear purpose line, a scope line, a special behavior note, and a parameter table. It is not overly verbose, though the parameter explanations could be slightly more concise without losing clarity.

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 all parameters, special behavior, and auth requirement. Output schema exists, so return values need not be explained. However, it lacks details on error handling, pagination, or performance characteristics.

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?

Despite 0% schema description coverage, the description's Args section provides detailed semantics for all 6 parameters, including defaults, examples for college and department codes, and enum values for semester and campus. This fully compensates for the lack of schema descriptions.

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 searches for offered courses and returns a college list when college code is empty. It distinguishes itself from sibling tools like kupid_my_courses (user-specific) and kupid_get_syllabus (specific course). However, it does not explicitly differentiate from similar search tools like kupid_search.

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 notes SSO login is required and explains the special case of empty college code. However, it provides no guidance on when to use this tool versus alternatives (e.g., kupid_my_courses, kupid_get_syllabus), nor does it mention 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.

  1. 31 tool updatesv0.12.0
    • First observedkupid_dept_notice_detail
    • First observedkupid_dept_notices
    • First observedkupid_get_all_grades
    • First observedkupid_get_library_seats
    • First observedkupid_get_notice_detail
    • First observedkupid_get_notices
    • First observedkupid_get_schedule_detail
    • First observedkupid_get_schedules
    • First observedkupid_get_scholarship_detail
    • First observedkupid_get_scholarships
    • First observedkupid_get_syllabus
    • First observedkupid_get_timetable
    • First observedkupid_lms_announcements
    • First observedkupid_lms_assignments
    • First observedkupid_lms_courses
    • First observedkupid_lms_dashboard
    • First observedkupid_lms_download_file
    • First observedkupid_lms_get_board_post
    • First observedkupid_lms_grades
    • First observedkupid_lms_list_board_posts
    • First observedkupid_lms_list_boards
    • First observedkupid_lms_modules
    • First observedkupid_lms_quizzes
    • First observedkupid_lms_submissions
    • First observedkupid_lms_syllabus
    • First observedkupid_lms_todo
    • First observedkupid_login
    • First observedkupid_my_courses
    • First observedkupid_room_schedule
    • First observedkupid_search
    • First observedkupid_search_courses

TDQS

A3.7/5.0

Scored across 31 tools

Disambiguation5/5

Each tool targets a distinct resource or operation. Notices, grades, timetable, library, LMS functions, etc., are cleanly separated with clear descriptions, making it easy for an agent to select the correct tool.

Naming Consistency3/5

All tools share the 'kupid_' prefix, but beyond that, naming patterns vary: some use verb_noun (get_notices), some use area_noun (lms_announcements), and some use noun_noun (dept_notices). This inconsistency, while still readable, could confuse an agent.

Tool Count4/5

With 31 tools, the server is fairly comprehensive for a university portal. The count is slightly above the ideal range but justified by the breadth of functionality (portal, LMS, search, etc.).

Completeness5/5

The tool set covers nearly all expected operations for a university portal: viewing notices, schedules, scholarships, grades, timetable, library seats, and full LMS integration including courses, assignments, quizzes, submissions, boards, and file downloads. No obvious gaps for the read-only nature of the domain.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers