Skip to main content
Glama

uou-mcp — 울산대학교 MCP 서버

Claude, Cursor 같은 AI에게 울산대학교 정보를 물어볼 수 있게 해 주는 MCP 서버입니다. 학교 공개 홈페이지·학과 홈페이지·도서관을 그때그때 읽어서 답하므로 항상 최신 정보를 줍니다.

"내일 학식 뭐야?" · "산업ICT공학 기본트랙 2학년 1학기 과목 알려줘" · "ICT융합학부 사무실 어디야?" "도서관에 파이썬 책 대출 가능한 거 있어?" · "기말고사 언제야?" · "최근 채용공지 보여줘"

  • 비공식 프로젝트입니다. 울산대학교와 관계없으며, 정확한 내용은 학교 공식 안내를 확인하세요.

  • 로그인이 필요한 정보(UWINS 시간표·성적, UCLASS, 도서관 좌석)는 다루지 않습니다. 개인정보를 저장하지 않습니다.

설치

준비물: uv 하나만 설치하면 됩니다.

  • Windows (PowerShell): powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

  • macOS / Linux: curl -LsSf https://astral.sh/uv/install.sh | sh

그다음 쓰는 앱에 아래처럼 등록합니다. 처음 실행할 때 자동으로 내려받아 실행됩니다.

Claude Code

claude mcp add --scope user uou -- uvx --from git+https://github.com/vector2967/uou-mcp uou-mcp

Claude Desktop

설정 → 개발자 → 구성 편집(claude_desktop_config.json)에 추가하고 Claude Desktop을 다시 켭니다.

{
  "mcpServers": {
    "uou": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/vector2967/uou-mcp", "uou-mcp"]
    }
  }
}

Cursor / 기타 MCP 앱

~/.cursor/mcp.json 등 앱의 MCP 설정에 위와 같은 command/args를 넣으면 됩니다.

로컬 HTTP 서버로 쓰기 (선택)

여러 앱이 같이 쓰거나 URL로 연결해야 할 때:

uvx --from git+https://github.com/vector2967/uou-mcp uou-mcp --http        # → http://127.0.0.1:44610/mcp
claude mcp add --transport http uou http://127.0.0.1:44610/mcp

업데이트

uv cache clean uou-mcp

다음에 앱을 켤 때 최신 버전을 다시 받습니다.

Related MCP server: jbnu-lms

할 수 있는 것

도구

하는 일

meal

학식 메뉴(학생·교직원·기숙사, 오늘/내일/금요일/11/6 등)

academic_schedule

학사일정(기말고사·수강신청·휴복학 등 검색)

track_search / track_page

2026 트랙소개서(258쪽)에서 트랙·이수체계도(학년·학기별 과목)·전공필수·진로 검색

departments

단과대학·학부(2025 개편)와 학부/전공 홈페이지

dept_contact

학부·학과 사무실 위치·전화, 교수·직원 연락처

dept_site

학과 홈페이지 메뉴(찾아오시는길·교수소개·교육과정 등) 읽기

dept_notices / dept_notice_detail

학부·학과 공지사항(학과 사이트 117곳 중 107곳)

notices / notice_detail

본교 공지·UOU소식·언론보도·연구성과·동아리 등 게시판, 본문·첨부

read_attachment

공지 첨부 PDF를 글자로 읽기(울산대 링크만)

jobs / job_detail

채용공지(기업 채용·교내채용, 마감일·자격요건)

site_menu / site_page

홈페이지 전체 메뉴 → 페이지 읽기(등록금·장학·기숙사·통학버스·주차·의료·증명서·학칙 등)

site_search

홈페이지 통합검색(본문·게시판까지)

library_search / library_hours

도서 검색(위치·청구기호·대출가능), 도서관 운영시간

campus_building

건물 번호·이름 찾기

알려진 한계

  • 교직원식당 식단은 학교 홈페이지에 올라오지 않아 볼 수 없습니다.

  • 일부 학과 사이트는 닫혔거나(공공인재·국제학부·의대 등) 게시판을 읽을 수 없습니다(간호학과). 이 경우 링크를 안내합니다.

  • 이미지로만 올라온 안내(셔틀 노선도 등)는 글자를 읽지 못하고 이미지 링크만 줍니다.

  • 이수체계도의 학년·학기 정리는 PDF 글자 위치로 자동 생성한 것이라 원본 표와 조금 다를 수 있습니다.

개발

git clone https://github.com/vector2967/uou-mcp && cd uou-mcp
uv sync
uv run uou-mcp                 # stdio 실행
uv run python check.py         # 실제 학교 사이트로 전 도구 점검(사이트 구조가 바뀌면 여기서 먼저 깨짐)
uv run --with pdfplumber python build_tracks.py   # 트랙소개서 새 판이 올라오면 데이터 다시 만들기
  • 학교 서버 부담을 줄이려고 요청을 10분 캐시합니다. 대량 요청(크롤링)에 쓰지 마세요.

  • 학교 사이트 구조가 바뀌어 안 되는 기능이 있으면 이슈로 알려 주세요.

라이선스

MIT. 트랙소개서 등 학교 자료의 저작권은 울산대학교에 있습니다(uou_mcp/data/tracks.json은 공개 PDF에서 뽑은 텍스트).

Available Tools

20 tools
academic_scheduleB

학사일정. keyword(예: '기말', '수강신청', '휴학')가 없으면 오늘 이후 일정 15개.

NameRequiredDescriptionDefault
yearNo
keywordNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose a real behavioral trait beyond the schema: with no keyword it returns the 15 most recent upcoming events after today. It says nothing about pagination, ordering beyond 'after today', how many results a keyword search returns, or failure behavior.

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

Conciseness4/5

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

Two short sentences, front-loaded with the resource and then the default behavior; nothing is padded. The terseness borders on under-specification, but no sentence is wasted.

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?

An output schema exists, so return values need not be described, and the default-result rule is covered. Still, with no annotations and an undocumented 'year' parameter, an agent cannot confidently call this with a specific year or know what a keyword search returns.

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 explains 'keyword' well with concrete example values, but 'year' is never mentioned despite its cryptic default of 0 (current year? all years?), leaving a genuinely ambiguous sentinel undocumented.

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?

'학사일정' (academic schedule) names the resource precisely and the second sentence specifies the default retrieval behavior (15 events after today). The verb is implicit and no sibling (e.g., notices, dept_notices, library_hours) is named as an alternative, so an agent can tell what it fetches but gets no explicit disambiguation.

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 keyword examples ('기말', '수강신청', '휴학') implicitly show when to pass a filter versus omitting it, and the no-keyword case is spelled out. There is no explicit when-to-use / when-not-to-use guidance or named alternative tool for related needs like general notices.

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

campus_buildingA

캠퍼스 건물 번호·이름 찾기(예: '7', '공학', '도서관', '학생회관'). 비우면 전체 목록.

NameRequiredDescriptionDefault
keywordNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; '찾기' implies a read-only lookup and the empty-keyword fallback to a full list is useful behavioral detail. It does not say whether matching is partial or exact, whether results are ordered or paged, or anything about access constraints – but for a one-parameter lookup on a public campus site these gaps are modest.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core purpose front-loaded and the parameter default behavior appended. Nothing repeats the schema or wastes tokens.

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

Completeness5/5

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

The tool takes one optional string, has an output schema (so return values need no explanation), and the description covers both purpose and the empty-parameter case. For a tool of this complexity there is little an agent still needs to know in order to call it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate – and it does, explaining that the keyword can be a number or a name fragment, with four concrete example values, plus the default-empty behavior ('전체 목록'). Only exact matching semantics (substring vs. exact) remain unstated.

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 states a specific verb and resource ('캠퍼스 건물 번호·이름 찾기' – find campus building number/name) and gives concrete query examples ('7', '공학', '도서관', '학생회관'). The resource is distinct enough from the sibling list (meal, notices, departments, library_hours) that an agent can identify the tool without opening the schema, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

It provides an explicit empty-input behavior ('비우면 전체 목록' – if blank, return the full list), which is real usage guidance for the single parameter. However, it never states when to prefer this tool over related siblings (e.g., departments or library_hours) or when not to call it, so usage is only implied.

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

departmentsA

단과대학·학부(2025 개편) 목록과 학부/전공 홈페이지. 전공·트랙 내용은 track_search.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

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 must carry the behavioral burden. It implies a static, parameterless lookup with no side effects, but never states that it is read-only, whether the list is complete or paginated, or that no arguments are required. For a zero-argument listing tool the risk is low, so the gap is modest rather than severe.

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

Conciseness5/5

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

Two short clauses, zero filler: the resource is stated first and the sibling routing second. Every phrase earns its place.

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

Completeness4/5

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

With an output schema present, return-value detail need not be described, and the absence of parameters removes input ambiguity. The only remaining gap is the lack of any statement about read-only behavior or list completeness, which matters slightly given there are no annotations.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param schema applies. The description correctly signals that no scoping input is expected.

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 names a specific resource: the list of colleges/schools under the 2025 reorganization plus their department/major homepages. It also points at the sibling tool that covers the adjacent domain (track_search). The verb is nominal ('목록'), so it is a clear resource description rather than an explicit action statement.

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

Usage Guidelines4/5

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

It explicitly routes the agent away from this tool for major/track content by naming track_search as the alternative. It does not spell out a positive trigger condition beyond the implied 'when you need the college/department list', but the exclusion is enough to disambiguate.

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

dept_contactB

학부·학과 사무실 전화번호와 교수·직원 연락처표(본교 전화번호 안내). 2025 신설 학부는 위치가 비어 있을 수 있어 dept_site(학부, '찾아오시는길')로 학부 홈페이지에서 확인한다.

NameRequiredDescriptionDefault
nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden alone. It discloses the valuable data quality caveat that newly created 2025 departments may have empty location fields, but doesn't state whether the tool is read-only, what the output table looks like, or coverage limits.

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?

Two sentences, front-loaded with what the tool returns, followed by the caveat and fallback. Every sentence carries signal, though the fallback sentence is slightly compressed and could be clearer.

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?

Output schema exists, so return values needn't be explained, and the data caveat is a helpful addition. However, with zero schema coverage on the sole parameter and no annotations, the description should clarify the input's expected meaning to be complete.

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?

Single parameter 'name' has 0% schema description coverage, and the description never clarifies whether 'name' is the department name or a person's name. The dept_site(dept, ...) reference hints at department names, but this is inferential rather than explicit.

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

Purpose4/5

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

States a specific resource: department office phone numbers and a professor/staff contact table. An agent can tell it apart from dept_site or departments, though the description doesn't name what distinguishes it from the plain 'departments' sibling.

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?

Gives a concrete fallback rule: for 2025 newly established departments where location may be blank, use dept_site(dept, '찾아오시는길'). That is useful guidance for missing data, but there is no explicit 'use this when X, not Y' for the core lookup versus other siblings.

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

dept_notice_detailB

학과 공지 본문과 첨부·이미지 링크. board는 dept_notices에서 쓴 값 그대로.

NameRequiredDescriptionDefault
noYes
deptYes
boardNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the return payload shape (body text, attachment links, image links). It says nothing about permissions, error behavior for invalid dept/no combinations, or pagination/truncation of long bodies, which leaves meaningful gaps for an unannotated tool.

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?

Two short, front-loaded sentences with no filler; the content-first statement leads and the parameter caveat follows. It is efficient, though the extreme terseness borders on cryptic for an agent without Korean-language context.

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?

An output schema exists, so return values need no prose explanation, and the description correctly focuses on scope and the `board` linkage. Still, for a 3-parameter tool with zero schema descriptions and no annotations, the unexplained required `dept` and `no` parameters leave the definition short of what is needed to call it confidently.

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, and it only explains one of three parameters: `board` must mirror the value obtained from `dept_notices`. The required `dept` and `no` parameters are left entirely undefined — an agent must guess that `no` is a notice identifier and `dept` a department key, and in what format.

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 identifies a specific resource — the body of a department notice plus its attachment and image links — which distinguishes it from the sibling `dept_notices` (the listing tool) and from the generic `notice_detail`. The retrieval verb is only implied, but the resource and returned content are concrete enough for an agent to recognize it as a detail/get tool.

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 note that `board` must be the exact value used in `dept_notices` implicitly signals the intended call order: list first, then fetch detail. However, there is no explicit statement of when this tool should be chosen over `notice_detail` or what happens if it is called without a prior `dept_notices` lookup.

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

dept_noticesB

학부·학과 홈페이지 공지 목록. dept 예: 'ICT융합학부', '산업경영공학부', '전기전자공학전공'. board는 그 사이트에 공지 게시판이 여럿일 때(예: '대학원', '취업') 고른다. [번호]는 dept_notice_detail로.

NameRequiredDescriptionDefault
deptYes
pageNo
boardNo
limitNo
keywordNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/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 implicitly establishes a read-only listing and hints that results carry numbered items ('[번호]') that feed dept_notice_detail. It says nothing about pagination behavior, ordering, or how many results come back per call, which matters for a paginated list tool.

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

Conciseness4/5

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

Three short sentences, each carrying a distinct piece of information (what it lists, how to pick a board, where details go). No filler, and the handoff note is placed last where it belongs.

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?

An output schema exists, so return formatting needn't be explained. Still, for a 5-parameter paginated tool with zero schema descriptions, the description leaves keyword/page/limit semantics and the dept-vs-generic-notices distinction unresolved.

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 the description must compensate: it gives concrete dept examples ('ICT융합학부', '산업경영공학부') and explains what board selects. The remaining three parameters (page, limit, keyword) get no mention at all, leaving half the surface to 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 states the resource precisely ('학부·학과 홈페이지 공지 목록') and explicitly hands off detail lookups to the sibling dept_notice_detail. The listing verb is only implied by '목록', but the resource and scope are unambiguous.

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

Usage Guidelines3/5

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

It explains when the optional board parameter matters ('게시판이 여럿일 때') and routes numbered items to dept_notice_detail, which is real routing guidance. However, it never distinguishes this from the generic sibling 'notices' or 'dept_site', which is the main alternative an agent must choose between.

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

dept_siteA

학부·학과 홈페이지의 다른 메뉴 읽기: 찾아오시는길(사무실 위치), 교수소개, 직원소개, 학부소개, 교육과정, 트랙소개, 이수체계도, 학사일정, 입학안내 등. menu를 비우면 그 사이트 메뉴 목록. 공지 게시판은 dept_notices.

NameRequiredDescriptionDefault
deptYes
menuNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden; it does disclose the read-only nature and the special behavior of an empty menu (returns the site's menu list). It says nothing about what happens with an invalid dept, whether the target site may be unreachable, or any rate/permission constraints. Return shape is covered by the output schema, which lowers the bar.

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 core action and the menu enumeration are front-loaded, and the sibling routing note is placed last where it belongs. The long example list is dense but each item maps to a real menu value, so it earns its space; a slightly tighter phrasing would reach a 5.

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

Completeness5/5

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

For a two-parameter read tool with an output schema and no annotations, the description covers what is fetched, how to enumerate menus, and where notices belong. The only residual gap (valid dept values) is naturally supplied by the departments sibling.

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, and it largely does for 'menu': the enumerated menu names act as an implicit value vocabulary and the empty-string default behavior is explained. 'dept' is only implied by the tool's domain rather than defined (no guidance on accepted identifiers, presumably from the departments sibling).

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 gives a specific verb+resource ('학부·학과 홈페이지의 다른 메뉴 읽기') and enumerates concrete menu types (찾아오시는길, 교수소개, 교육과정, 학사일정, etc.), so the agent knows exactly what content it fetches. It explicitly routes notice-board content to the sibling dept_notices, but does not differentiate itself from other site-reading siblings such as site_page, site_menu, or departments.

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

Usage Guidelines4/5

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

It states a concrete invocation rule ('menu를 비우면 그 사이트 메뉴 목록') and names the alternative for notices (dept_notices), which is clear contextual guidance. It stops short of exclusions for overlapping siblings like dept_contact (office location is listed here too) or site_page.

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

job_detailC

채용공지 본문(자격요건·연봉·마감·제출방법 등).

NameRequiredDescriptionDefault
seqYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.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 carries the full behavioral burden, and it says nothing about read-only semantics, permission requirements, or error behavior for an invalid identifier. The content enumeration adds some value, but return values are already covered by the output 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?

One short, front-loaded sentence with no filler; the content list is the most useful information and appears immediately. It is arguably too terse rather than padded.

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

Completeness2/5

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

For a detail-fetch tool the output schema relieves the description of explaining return values, but the critical missing piece is how to obtain `seq` and how this tool relates to `jobs`. With no annotations and 0% parameter coverage, that omission leaves a real gap.

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 single `seq` parameter is completely undocumented in both schema and description. The description never mentions that `seq` is the posting identifier obtained from the `jobs` listing, leaving the caller to infer it.

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 identifies the resource precisely as the job-posting body and enumerates the kinds of content it contains (qualifications, salary, deadline, submission method), which implicitly separates it from the sibling `jobs` listing tool. It lacks an explicit verb and never states it is the detail counterpart to `jobs`, but an agent can infer the purpose.

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?

There is no when-to-use guidance, no statement that this must be called after `jobs` to resolve a posting identifier, and no exclusions or alternatives named. The agent must guess the relationship to `jobs` from the names alone.

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

jobsA

본교 채용공지(기업 채용정보·교내채용): [번호] 구분 기업 제목 (등록일 ~ 마감일). keyword는 기업·제목에서 거른다 (앞 5쪽 안에서). 본문은 job_detail(번호).

NameRequiredDescriptionDefault
pageNo
limitNo
keywordNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It usefully discloses the result shape and the 5-page keyword scan limit, but says nothing about page/limit defaults, total result counts, or ordering beyond the field list. Meaningful but incomplete 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.

Conciseness4/5

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

Very compact, front-loaded with the resource and result shape, then the keyword rule and the detail-tool pointer. The bracketed field notation is dense but each fragment carries information.

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

Completeness4/5

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

An output schema exists, so return values need not be re-explained, yet the description still summarizes the fields and adds the paging caveat and sibling pointer. Complete enough for correct invocation; only pagination semantics remain thin.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It explains keyword semantics well (filters on company/title, scoped to first 5 pages), but page and limit are undocumented beyond their schema defaults. Partial compensation justifies a mid score.

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

Purpose5/5

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

States a specific verb+resource: lists main-campus job postings, and enumerates the returned fields ([번호] 구분 기업 제목 (등록일 ~ 마감일)). It also names the sibling job_detail for body content, so an agent can distinguish list vs. detail without opening either schema.

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

Usage Guidelines4/5

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

Explicitly routes to job_detail(번호) for postings' body, and discloses an important usage constraint: keyword only filters over the first 5 pages. Missing an explicit statement of when not to use it (e.g. vs. notices/site_search), but the context is clear.

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

library_hoursA

중앙도서관 자료실·열람실 운영시간. (좌석 현황은 로그인이 필요해 제공 못 함)

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose one meaningful constraint (seat status is out of scope because it requires login). However, it says nothing about whether hours are static or term/holiday-dependent, nor about staleness of the data — relevant behavioral context for a schedule tool.

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

Conciseness5/5

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

Two short sentences, resource identity front-loaded, with the scope limitation placed immediately after. Nothing is wasted and nothing important is buried.

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?

A simple read-only, zero-parameter lookup with an output schema that carries the return shape. The description covers what it returns and one exclusion, which is nearly complete; only freshness/term-dependence context is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete. Baseline 4 applies for a no-arg tool.

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

Purpose4/5

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

States a specific resource: the central library's 자료실 (collection room) and 열람실 (reading room) operating hours. An agent can distinguish it from library_search (searching materials) and campus_building without ambiguity, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the resource itself (call it to get library hours), and the parenthetical adds a useful scope exclusion — seat availability is not available here due to login requirements. There is no explicit when-to-use guidance or pointer to an alternative tool for seat data.

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

mealA

학식 메뉴. date는 '오늘'/'내일'/'금요일'(이번 주)/'YYYY-MM-DD', cafeteria는 학생·교직원·기숙사. 운영시간은 site_page('MN134'). 학생식당은 기숙사식당(무거관)으로 옮겨 같은 메뉴다.

NameRequiredDescriptionDefault
dateNo오늘
cafeteriaNo학생

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden alone. It discloses a useful quirk — the student cafeteria has moved to the dormitory cafeteria (무거관) with the same menu — but does not state read-only nature explicitly, nor caching, language, or availability behavior beyond that note.

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?

Two short, dense sentences with the resource named first and parameter guidance following. Every clause carries information, though the cafeteria-relocation note is slightly tangential to invoking the tool.

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?

An output schema exists, so return values need not be described. Two optional parameters are fully explained and the hours use-case is routed elsewhere; only the default-parameter behavior and language of results remain unstated.

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 supply meaning, and it does: it enumerates the accepted date forms and the cafeteria categories (학생·교직원·기숙사). It does not explain the default behavior when parameters are omitted, which keeps it below a 5.

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 opens with '학식 메뉴' (cafeteria menu), a specific resource, and the date/cafeteria values make it clear this retrieves menu listings. It is distinguishable from siblings like job_detail or library_hours, though no sibling is named as a contrast.

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

Usage Guidelines4/5

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

It explicitly tells the agent which date values are accepted (오늘/내일/금요일/YYYY-MM-DD) and which cafeteria values apply, plus routes operating-hours questions to site_page('MN134'). There is no explicit when-not-to-use statement, but the alternative route for hours is clear.

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

notice_detailB

본교 공지 본문 + 첨부파일 목록(첨부 PDF는 read_attachment로 읽는다).

NameRequiredDescriptionDefault
seqYes
boardNo공지

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does establish that this returns content (body + attachment list) rather than mutating anything, which signals a read-only fetch. It does not disclose behavior on an invalid or unknown seq, permission/authentication needs, or whether the attachment list is truncated, so the mutation/error profile remains undocumented.

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

Conciseness5/5

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

A single front-loaded sentence states the two things returned and then the follow-up action in parentheses; there is no filler and no restatement of the tool name. It is appropriately sized for a two-parameter detail 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?

An output schema exists, so the return payload needn't be spelled out, and the description correctly limits itself to saying body plus attachments come back. What is missing for a tool with zero annotation coverage and zero schema description coverage is the meaning of 'seq'/'board' and any failure behavior, leaving real gaps for an agent deciding how to call it.

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% for both parameters: 'seq' is a bare integer with no title beyond 'Seq', and 'board' is a string defaulting to '공지'. The description adds no meaning for either — it does not explain that seq is a notice identifier obtained from the notices list nor what values 'board' accepts, so it fails to compensate for the coverage gap.

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 names a specific resource pair: the notice body plus its attachment list, and implicitly distinguishes this main-campus detail fetch from the sibling 'dept_notice_detail' via '본교'. It also routes PDF reading to a named sibling, so an agent can separate this from 'notices' (list) and 'read_attachment' (file contents), though it never states the resource verb explicitly (fetch/retrieve).

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?

There is one useful routing hint: attachment PDFs should be read with read_attachment, which tells the agent when to chain into another tool. However, it never says that a notice 'seq' must first be obtained from the 'notices' sibling, nor does it mention any when-not conditions or prerequisites for this being a detail (single-item) call.

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

noticesA

본교 게시판 목록. board: 공지(일반공지·학사 포함), 사업(산학 사업공지), 산학(산학 일반공지), 또는 site_menu에 나온 게시판 mCode(예: MN104 UOU소식, MN106 언론 속 울산대, MN119 중앙동아리, MN180 예산공개). 채용공지는 jobs. keyword는 제목 검색. 결과의 [번호]를 notice_detail(번호, board)에 넘기면 본문·첨부를 본다.

NameRequiredDescriptionDefault
pageNo
boardNo공지
limitNo
keywordNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must carry behavior; it discloses the search field semantics (title-only) and the result-to-detail handoff, which is real added context. It does not say anything about paging behavior, result ordering, or total counts despite the page/limit parameters, leaving a gap for a no-annotation tool.

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

Conciseness4/5

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

Front-loaded with the resource and board options before the detail-chaining note, and nearly every clause is load-bearing. It is somewhat run-on, with the long mCode example list sitting mid-sentence and slightly interrupting the read.

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?

An output schema exists, so return-value explanation is unnecessary, and the board taxonomy plus the notice_detail handoff cover the main decision points. The missing pagination guidance is the only real hole, and it is minor for a listing tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It explains `board` (enum-like values plus mCode examples) and `keyword` (title search), but `page` and `limit` — both defaulted and central to controlling the result set — are entirely unaddressed in both schema and description.

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

Purpose5/5

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

States a concrete resource (본교 게시판 목록) with the specific board taxonomy it covers, and explicitly routes non-covered cases elsewhere ('채용공지는 jobs'). An agent can distinguish it from notice_detail (which reads a single post) and jobs without opening a schema.

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

Usage Guidelines5/5

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

Names the valid `board` values, points to site_menu for mCode discovery with concrete examples, notes that `keyword` is a title search, and prescribes the follow-up call ('결과의 [번호]를 notice_detail(번호, board)에 넘기면...'). Explicit when-to-use, alternatives, and chaining are all present.

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

read_attachmentB

울산대 사이트 첨부파일(PDF)을 텍스트로 읽는다. 이미지·HWP는 링크만 돌려준다.

NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the core behavioral trait that PDFs become text while images and HWP return links only. However, it omits truncation behavior tied to max_chars, handling of unsupported formats, and any error/failure semantics for unreachable URLs.

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

Conciseness5/5

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

Two short sentences with zero waste; the format-support constraint is front-loaded immediately after the action statement. Every sentence earns its place.

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?

An output schema exists, so return-value explanation isn't needed, and the format caveat is covered. Still, for a two-parameter extraction tool, the undocumented max_chars truncation and incomplete format coverage (no mention of DOCX, TXT, etc.) leave gaps an agent would hit in practice.

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, but it says nothing about either parameter. In particular, max_chars (default 15000) drives output truncation and is entirely undocumented, leaving the agent unaware that long PDFs may be cut off.

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

Purpose4/5

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

States a specific verb (read) and resource (Ulsan University site attachments) and names the format scope (PDF). It also clarifies the fallback for images/HWP, so an agent knows exactly what it gets. No sibling tool overlaps with attachment reading, so explicit differentiation isn't required.

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?

Usage is implied: use this to convert a PDF attachment linked from a notice/detail page into text. There is no explicit statement about when not to call it (e.g., for HWP/images, which only return links) or about prerequisites such as the URL needing to come from a prior tool result.

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

site_pageA

홈페이지 안내 페이지 본문(표 포함)과 첨부·링크. mcode는 site_menu 결과(예: 'MN243' 기숙사, 'MN194' 통학버스).

NameRequiredDescriptionDefault
mcodeYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Despite lacking formal annotations, the description discloses behavioral traits about the content returned, such as including tables, attachments, and links. This informs the agent about the richness and complexity of the data it will receive, going beyond mere parameter validation.

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 information is dense, perfectly structured across two sentences, and all components contribute to defining the tool's utility and requirements. There is no unnecessary padding.

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 provides the complete context needed for the input (source and meaning of mcode) and defines the scope of the output (what kinds of content are returned). Given that an output schema exists, this definition is highly complete for a content-fetching 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?

Since the input schema provides no description, the description provides maximal semantic value by defining 'mcode' not just as a string, but as the result of the 'site_menu' and giving real-world examples ('MN243' for Dormitory), which is essential for correct invocation.

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 content ('guide page body, including tables, attachments, and links'). It is highly specific and easily distinguishes this content retrieval task from simple site searching or menu listing.

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

Usage Guidelines5/5

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

The usage is governed by the input 'mcode'. The description explicitly tells the agent that this code must come from the 'site_menu' tool, creating a clear prerequisite workflow for usage.

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

track_pageB

트랙소개서 한 쪽 전체 텍스트(2~3쪽: 대학별 트랙 운영 현황표). 이수체계도 쪽은 '2학년 1학기 … 4학년 2학기' 열 순서대로 과목이 한 줄에 놓여 있다(빈 칸은 건너뛰므로 열 위치는 대략). 맨 오른쪽 '…모듈'은 과목 묶음 이름.

NameRequiredDescriptionDefault
pageYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds useful behavioral context about the page text format, including that columns are approximate because blank cells are skipped and that the far-right '…module' label is a course bundle name. However, it does not explicitly state read-only behavior, page-range behavior, or how this retrieval relates to the search tool.

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 front-loads the core purpose and then adds relevant layout details. It is compact and mostly earns its sentences, though the phrasing is dense and somewhat opaque for an agent unfamiliar with the source document.

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 tool has an output schema, so return-value details are not required in the description. The description adequately covers page content and text layout, but it omits usage context relative to track_search and does not fully specify page numbering, leaving some gaps for correct invocation.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate for the bare integer 'page' parameter. It does add meaning by indicating that the parameter selects one page of the track introduction and by mentioning pages 2–3 specifically, but it does not clarify page numbering rules or accepted page values.

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 this tool returns the full text of one page from the track introduction, and it specifies what pages 2–3 contain. It is distinguishable from track_search by its page-oriented retrieval purpose, though it does not explicitly name the search sibling as an alternative.

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

Usage Guidelines2/5

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

The description explains page content and layout but gives no explicit guidance on when to use this tool versus track_search or other siblings. There are no stated preconditions, exclusions, or workflow hints such as whether it should follow a track_search call.

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. 20 tool updatesv0.1.0
    • First observedacademic_schedule
    • First observedcampus_building
    • First observeddepartments
    • First observeddept_contact
    • First observeddept_notice_detail
    • First observeddept_notices
    • First observeddept_site
    • First observedjob_detail
    • First observedjobs
    • First observedlibrary_hours
    • First observedlibrary_search
    • First observedmeal
    • First observednotice_detail
    • First observednotices
    • First observedread_attachment
    • First observedsite_menu
    • First observedsite_page
    • First observedsite_search
    • First observedtrack_page
    • First observedtrack_search

TDQS

B3.4/5.0

Scored across 20 tools

Disambiguation4/5

Tools are mostly cleanly separated by domain and role: site_menu/site_search/site_page differ in listing menus vs. full-text search vs. reading a page, and notices/dept_notices/jobs are distinguished by board scope. The residual risk is the cluster of similar-sounding pairs (notice_detail vs dept_notice_detail, track_search vs track_page, site_search vs site_menu), which an agent could still mis-pick, though the descriptions do explain the boundaries.

Naming Consistency4/5

Everything is snake_case, with a fairly readable domain-prefix convention (site_*, dept_*, track_*, library_*) and *_detail/*_search suffixes. It is not a uniform verb_noun pattern, though — many tools are bare nouns (meal, notices, jobs, departments) while others are verb-led (read_attachment, site_search), and the prefix scheme is not applied everywhere (notice_detail vs. dept_notice_detail).

Tool Count4/5

20 tools is on the heavy side but each earns its place: most domains need a list+detail pair (notices/notice_detail, jobs/job_detail, dept_notices/dept_notice_detail, track_search/track_page). The set is scoped to distinct information domains rather than redundant variants, so it sits at the upper end of reasonable rather than bloated.

Completeness4/5

Coverage is broad for a public-information campus portal: meals, academic calendar, notices, jobs, homepage/menu pages, departments, track guide, library, and buildings, with attachment and detail follow-throughs preventing dead ends. Gaps are the acknowledged login-gated items (library seat status) and things only reachable indirectly via site_page (shuttle, tuition, scholarships, timetables), which are workable but not first-class operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables Korea University students to query their KUPID portal and Canvas LMS using natural language for notices, library seats, timetable, grades, courses, and assignments.
    31
    24 PyPI
    13
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Read-only MCP server that lets Jeonbuk National University students query their LMS in natural language, covering daily briefings, deadlines, announcements, assignments, and course materials while keeping credentials local.
    25
    14 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to query SeoulTech e-Class course announcements and assignments, search full notice text, track pending work, and refresh login sessions securely through natural language.
    7
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects Waseda University's Moodle to AI assistants such as Claude, ChatGPT, and Cursor, letting users ask about assignments and deadlines, timetable, syllabus, grades, course updates, forums, and files across all their courses at once. It also supports write actions like assignment submission and forum posts through a preview-then-confirm flow.
    MIT