Skip to main content
Glama

purdue-mcp

하나의 MCP 서버로 모든 공개된 실시간 Purdue University 데이터를 제공합니다 — 식당 메뉴, 실시간 체육관 이용 현황, 강의 카탈로그, 버스 시간, 캠퍼스 이벤트, 학생 단체, 도서관 운영 시간, 체육, 뉴스, 날씨. 아무 MCP 클라이언트(Claude Code, Claude Desktop, Cursor, …)에 연결하고 "Wiley에서 저녁 뭐 먹지", "CoRec 지금 얼마나 붐빌까", "PMU에서 다음 버스 언제"라고 물어보세요.

10개의 공개 소스에 걸친 24개의 도구.

이 서버가 읽는 모든 것은 공개되어 있으며 인증이 필요 없습니다. 학생 계정, 성적, 시간표, 등록금 기록, 또는 Purdue 로그인 뒤에 있는 어떤 것에도 접근하지 않습니다.

비공식적이며 커뮤니티가 운영합니다. Purdue University와 제휴, 보증, 운영되지 않습니다.

설치

npm install -g purdue-mcp

또는 저장소에서 바로 실행:

git clone https://github.com/sharziki/purdue-mcp && cd purdue-mcp
npm install && npm run build

Related MCP server: SG Gov MCP Server

연결하기

Claude Code

claude mcp add purdue -- npx -y purdue-mcp

Claude Desktop / Cursor — MCP 구성에 추가:

{
  "mcpServers": {
    "purdue": {
      "command": "npx",
      "args": ["-y", "purdue-mcp"]
    }
  }
}

도구

식당 — Purdue HFS 식당 API

도구

답변 내용

dining_locations

현재 영업 중이거나 다음 식사 시간에 여는 모든 다이닝 코트 / Quick Bites / On-the-GO!

dining_menu

특정 위치와 날짜의 전체 메뉴, 식사 및 스테이션별, 비건/채식/알레르기 필터 포함

dining_find_item

"오늘 치킨 텐더 파는 곳 어디?" — 모든 다이닝 코트를 한 번에 검색

dining_item_nutrition

모든 메뉴 항목에 대한 전체 영양 정보

dining_line_length

크라우드소싱된 실시간 대기 줄 길이 보고 (식사 시간대에 활성화)

학사 — Purdue.io 강의 카탈로그

도구

답변 내용

list_terms

학기 코드와 날짜 범위, 최신순

list_subjects

모든 과목 코드 (CS, MA, ENGR, …)

search_courses

과목, 번호 또는 제목 키워드로 강의 검색 — 설명 및 학점 포함

course_sections

학기별 CRN, 섹션 유형, 요일/시간, 강의실, 교수자

find_building

건물 코드 확인, 예: LWSN → Lawson Computer Science Bldg

캠퍼스 생활

도구

답변 내용

search_events

공식 대학 일정 — 강연, 체육 행사, 채용 박람회, 마감일

search_student_orgs

BoilerLink에 등록된 약 1,200개의 학생 단체

search_club_events

예정된 클럽 이벤트: 모집 설명회, 친목 행사, 모임

시설

도구

답변 내용

recwell_occupancy

37개 계수 RecWell 공간의 실시간 인원 수 및 % 수용률 — "지금 CoRec 얼마나 붐빌까"

library_hours

모든 도서관의 오늘 운영 시간 및 개관/휴관 상태, 또는 전체 주간 일정

체육

도구

답변 내용

athletics_sports

모든 대표팀과 현재 시즌 일정

athletics_schedule

한 팀의 전체 시즌 — 상대팀, 순위, 홈/원정, 경기장, 결과

athletics_upcoming

모든 종목의 다음 Boilermaker 경기, 가장 가까운 순서로

교통

도구

답변 내용

bus_routes

캠퍼스와 Greater Lafayette를 운행하는 모든 CityBus 노선

bus_stops

이름으로 정류장 검색, 또는 위도/경도에서 가장 가까운 정류장

bus_next_departures

정류장에서 다음 출발 예정 시간, 몇 분 후인지 포함

뉴스 및 마감일

도구

답변 내용

purdue_news

검색 가능한 공식 뉴스룸 기사

academic_calendar

개강일, 방학, 기말고사 주, 수강 신청/취소 마감일, 시험 일정

환경

도구

답변 내용

campus_weather

West Lafayette의 현재 날씨, 예보, 진행 중인 NWS 경보

날짜는 기본적으로 캠퍼스 시간대의 오늘 (America/Indiana/Indianapolis)을 사용하므로, 서버가 어디서 실행되든 올바른 답을 제공합니다.

데이터 소스

소스

엔드포인트

비고

Purdue Dining (HFS)

api.hfs.purdue.edu/menus/v2

공식, 공개, 인증 불필요

Purdue.io

api.purdue.io/odata

커뮤니티 운영 오픈소스 카탈로그 미러 (Purdue-io/PurdueApi)

Purdue Events

events.purdue.edu/api/2

Localist 공개 API

BoilerLink

purdue.campuslabs.com/engage/api/discovery

Anthology Engage 공개 검색 API

Purdue RecWell

goboardapi.azurewebsites.net (Connect2)

실시간 수용 인원 카운터; 계정 키는 Purdue 자체 공개 위젯이 사용하는 것

Purdue Libraries

calendar.lib.purdue.edu

Springshare LibCal 공개 운영 시간 엔드포인트

Purdue Athletics

purduesports.com/website-api

공식 체육 웹사이트의 공개 JSON API

Purdue Newsroom / Registrar

purdue.edu/{newsroom,registrar}/wp-json

WordPress REST API

CityBus

bus.gocitybus.com GTFS

정적 스케줄 피드; 공개 실시간 피드는 존재하지 않음

NOAA / NWS

api.weather.gov

공개 연방 API

응답은 데이터가 변하는 속도에 따라 짧은 TTL(30초~24시간)로 프로세스 내 캐시되어 예의 바른 클라이언트로 동작합니다. 디스크에 저장되는 것은 없습니다.

제외된 항목 (조사 결과 공개 소스 없음)

  • 세탁기 이용 가능 여부 — Purdue는 기숙사 세탁을 CSCPay Mobile로 옮겼으며, 여기에는 공개 웹 상태 페이지가 없습니다. 커뮤니티 앱이 스크랩하던 기존 washalertweb 호스트는 더 이상 확인되지 않습니다.

  • 실시간 버스 위치 — CityBus는 정적 GTFS만 게시합니다. Transitland나 Mobility Database에는 GTFS-Realtime 피드가 등재되어 있지 않으며, MyRide의 백엔드는 공개되지 않았습니다. bus_next_departures는 시간표 기준 시간을 반환합니다.

  • 주차장 이용 가능 여부 — Purdue Parking은 실시간 주차 공간 수를 공개하지 않습니다.

  • 좌석 이용 가능 여부 / 대기자 명단 — myPurdue 로그인 뒤에 있습니다. 설계상 범위 밖입니다.

소스 추가하기

각 소스는 src/sources/의 한 파일이며, server.registerTool(...)를 호출하는 registerX(server)를 내보냅니다. src/index.ts에서 등록하세요. src/lib/http.tsgetJSON()을 사용하면 타임아웃, User-Agent, 캐시가 상속됩니다.

기본 규칙:

  1. 공개 데이터만. Purdue 로그인이 필요한 것, 특정 개인에 관한 것은 없습니다.

  2. 배포 전에 엔드포인트가 실제로 동작하는지 확인하세요 — npm run smoke는 모든 실제 업스트림을 호출하며 테스트 스위트입니다.

  3. 예의 바른 클라이언트가 되세요. 합리적인 캐시 TTL, 빡빡한 폴링 금지.

npm run build
npm run smoke   # live end-to-end check of all tools

라이선스

MIT

Available Tools

29 tools
academic_calendarPurdue academic calendar and registrar infoA

The official academic calendar — first day of classes, breaks, finals week, commencement — plus any registrar page (add/drop deadlines, exam scheduling, grade policies) by keyword. Source: purdue.edu/registrar (WordPress REST API, live).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 3.
queryNoOmit for the official academic calendar itself. Otherwise a keyword, e.g. 'add drop', 'final exams', 'projected calendar'.

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 the full burden. It discloses the data source (purdu.edu/registrar via WordPress REST API, live) and the scope (calendar + registrar pages). However, it does not mention read-only behavior, rate limits, or what happens when the query is omitted (though that is covered in the schema). The description adds some behavioral context beyond the schema but is not exhaustive.

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

Conciseness5/5

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

Two sentences, no wasted words. The first sentence defines the tool's purpose and scope, the second provides the source. Every sentence is necessary and informative.

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 2 parameters, no output schema, and no annotations, the description provides enough context: what the tool does, what it covers, and the source. It is complete for a simple query tool. It could briefly mention that the return format is a list of calendar events or registrar pages, but the examples in the schema partially compensate.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described in the input schema. The description does not add significant parameter-specific meaning beyond what the schema already provides. The baseline of 3 is appropriate because the schema handles parameter semantics adequately.

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 official academic calendar (specific events: first day, breaks, finals, commencement) and also searches any registrar page by keyword. It distinguishes itself from sibling tools like search_events or search_courses by explicitly naming the resource (registrar/academic calendar) and the verb 'retrieve' is implied.

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 implies when to use the tool: for academic calendar dates or registrar-specific info by keyword. It does not explicitly mention when not to use it or list alternative tools, but the scope is clear enough that an agent can infer it's for registrar-related queries, not for general Purdue events or other topics.

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

athletics_schedulePurdue team scheduleA

Full season schedule for one Purdue team — dates, opponents, home/away, venue, and final scores where played. Source: purduesports.com (official athletics site API).

ParametersJSON Schema
NameRequiredDescriptionDefault
sportYesSport name, e.g. 'Football', 'Men's Basketball', 'Volleyball', 'Softball'.
upcoming_onlyNoHide games already played.

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 the data fields returned and source, which is helpful. However, it does not mention that the tool likely returns past, present, and future games (with scores for completed ones) or any limitations (e.g., only future schedule for in-progress sports). The description is adequate but not fully transparent about behavior.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the purpose and detail. Every word adds value, and no extraneous information is present.

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 limited complexity (2 params, no output schema), the description is sufficient. It explains what data the tool returns, the data source, and the parameters are well-documented in the schema. It lacks mention of return format (e.g., list of games) but is otherwise 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 100% with both parameters described. The description adds context about what the returned data contains (e.g., final scores for played games) which is beyond the parameter descriptions. It could clarify that 'upcoming_only' hides games that have already been played, but the schema already says that. Baseline 3 plus extra context justifies 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 retrieves a full season schedule for one Purdue team, listing specific data fields (dates, opponents, home/away, venue, final scores) and identifies the source. The verb 'schedule' and resource 'one Purdue team' are specific and differentiate it from sibling tools that handle other topics.

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

Usage Guidelines3/5

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

The description implies the tool should be used to get a team's schedule, but does not explicitly state when to use this vs. siblings like athletics_sports (which lists teams) or athletics_upcoming (which likely shows only upcoming events). No guidance on when not to use it or alternatives is provided.

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

athletics_sportsList Purdue varsity sportsB

Every Purdue varsity sport and its current schedule id. Source: purduesports.com (official athletics site API).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/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. While it states the data source (purduesports.com API), it does not disclose behavioral traits such as whether the tool requires authentication, has rate limits, how frequently data is refreshed, or what happens if the API is unavailable. The description is too minimal 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 two short sentences, one focused on output and the other on source. It is efficient with no redundancy. However, it could benefit from a slightly clearer structure or explicit mention of output format. It earns a 4 for being front-loaded and concise.

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 tool has no parameters, no output schema, and no annotations, the description is minimally adequate. It communicates the core output (list of sports and schedule IDs) and data source. However, it lacks completeness in describing the output format or potential edge cases (e.g., empty list, API errors). For a simple tool, this is acceptable but not comprehensive.

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, and schema description coverage is 100% (empty schema). The description adds value by specifying that the tool returns a list of sports and schedule IDs, which goes beyond the empty schema. Since there are no params, the description's purpose is to explain what the tool does without parameter details, scoring above the baseline 4.

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

Purpose4/5

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

The description clearly states the tool lists all Purdue varsity sports along with their current schedule IDs. The verb 'list' and resource 'Purdue varsity sports' are specific, and the source attribution adds credibility. It does not explicitly differentiate from siblings like 'athletics_schedule' or 'athletics_upcoming', but the noun 'sports' distinguishes it as a listing of sports themselves, not schedules or upcoming events.

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 implicitly suggests using this tool when you need a list of varsity sports or their schedule IDs, likely as a prerequisite to fetching schedules. However, it provides no explicit guidance on when to use it versus siblings like 'athletics_schedule', nor does it mention when not to use it or any prerequisites. The mention of 'current' implies use for up-to-date data, but this is not explicit.

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

athletics_upcomingNext Purdue games across all sportsA

The next Boilermaker games across every varsity sport, soonest first — what to go watch this week. Source: purduesports.com (official athletics site API).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days. Default 14.
limitNoDefault 20.
home_onlyNoOnly home games.

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 discloses the source and sorting order but does not mention rate limits, data freshness, whether results are cached, or if live updates occur. Without annotations, more behavioral detail would be helpful.

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 two sentences, front-loading the purpose and adding a source note. It is efficient and clear, but the source note could be integrated into the first sentence to reduce slight 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 no output schema and moderate tool complexity (3 optional params), the description provides enough context for an agent to select and invoke the tool for its intended purpose. It lacks return format details, but the list nature of the tool makes this somewhat 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 coverage is 100%, so baseline is 3. The description adds value by explaining the purpose of the tool (upcoming games, sorted soonest) and implicitly ties parameters to filtering. However, it does not elaborate on each parameter's specific behavior beyond what the schema already provides. The description earns a 4 for contextual framing rather than parameter-specific details.

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 upcoming Purdue athletics games across all sports, sorted by soonest first, and specifies the data source (purduesports.com API). This distinguishes it from siblings like athletics_sports or athletics_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 implies it's for finding games to watch this week, but does not explicitly compare with siblings (e.g., athletics_schedule for a specific sport) or provide when-not-to-use guidance. Usage context is implied by the content, but no alternative tools are mentioned.

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

bus_next_departuresNext scheduled buses from a stopA

Next scheduled CityBus departures from a stop today, by route and headsign. These are timetable times — CityBus publishes no public real-time feed, so buses may run early or late. Source: CityBus GTFS feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD. Defaults to today on campus.
stopYesStop id, or part of a stop name, e.g. 'Purdue Memorial Union'.
limitNoDefault 10.

TDQS

A4.2/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It explicitly notes that the data are timetable times and that CityBus does not provide a public real-time feed, so buses may run early or late. This is a critical behavioral disclosure that goes 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.

Conciseness5/5

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

The description is two sentences long and immediately states the purpose and key constraint. Every sentence adds value with no wasted words. It is front-loaded and highly scannable.

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 is relatively simple (3 fields, no output schema, no nested objects), the description covers the essential behavior (timetable only, source). It does not describe the return format, but that is acceptable since no output schema exists and the data is straightforward. A small gap is that it doesn't explain how the limit parameter affects output beyond 'default 10' from the schema.

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

Parameters3/5

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

The input schema already provides descriptions for all three parameters (100% coverage). The tool description adds no further elaboration on the parameters. The baseline for full schema coverage is 3, and the description meets that without adding extra parameter insight.

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 provides 'Next scheduled CityBus departures from a stop today, by route and headsign.' It specifies that these are timetable-based times and not real-time, which is a key distinction. The source is also mentioned. This clearly differentiates from sibling tools like bus_stops or bus_routes.

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 tells the agent when to use this tool (to get departure times) and highlights a limitation (no real-time data). It does not explicitly discuss when not to use it or mention alternatives among siblings, but the constraint is clear enough for an agent to decide.

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

bus_routesList CityBus routesA

Every CityBus route serving Purdue and Greater Lafayette. Source: CityBus GTFS feed (scheduled service; CityBus publishes no public real-time feed).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFilter by route number or name.

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses the data source (CityBus GTFS feed), that it reflects scheduled service, and that no public real-time feed is available. This is valuable behavioral context beyond the schema. However, it does not mention other traits like caching behavior or response size bounds; a score of 4 reflects strong but not exhaustive 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?

Two short sentences convey purpose and a key limitation. Every word earns its place, with no redundancy or filler. Excellent conciseness.

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 simple list tool with one optional parameter, the description is fully adequate: it states the scope (all routes), the data source, and a limitation (no real-time feed). No output schema exists, but the return value is straightforward. No gaps remain for an agent to operate correctly.

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

Parameters3/5

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

Schema description coverage is 100% with the 'query' parameter described as 'Filter by route number or name.' The tool description adds no further semantics or examples. Per guidelines, high schema coverage sets a baseline of 3, and no additional meaning is provided here.

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?

Title 'List CityBus routes' and description 'Every CityBus route serving Purdue and Greater Lafayette' use a specific verb ('list') and resource ('routes'), clearly distinguishing it from sibling tools like bus_stops and bus_next_departures.

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 does not explicitly state when to use this tool versus alternatives (e.g., bus_stops for stop info, bus_next_departures for departures). While the sibling list provides context, the description itself offers no usage guidance, exclusions, or preferred scenarios.

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

bus_stopsFind CityBus stopsA

Search CityBus stops by name, or find the stops nearest a latitude/longitude on campus. Source: CityBus GTFS feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude, to find nearby stops instead.
lonNoLongitude.
limitNoDefault 15.
queryNoStop name keyword, e.g. 'Purdue Memorial Union', 'State St'.

TDQS

A3.5/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 carry full behavioral disclosure. It omits key details: whether query and lat/lon can be combined, what happens when both are provided, pagination behavior, and the absence of any mutability warnings. The description is too sparse 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.

Conciseness5/5

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

Two sentences with no wasted words. The purpose and source are front-loaded, and the structure is optimal for quick scanning.

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 4 optional parameters, no output schema, and no annotations. The description fails to clarify return format, parameter interaction (e.g., can both query and lat/lon be used together?), or the meaning of 'nearest' (radius, ordering). While adequate for a simple tool, gaps remain that could confuse an agent.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond parameter descriptions, only mapping 'by name' to query and 'nearest a lat/lon' to lat/lon. It does not clarify mutual exclusivity or default behavior, so it does not exceed the baseline.

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

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 two modes: searching by name or finding nearest stops by lat/lon. It specifies the source (CityBus GTFS) and implicitly distinguishes from sibling tools like bus_next_departures and bus_routes by focusing on stop location lookup.

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

Usage Guidelines3/5

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

The description implies use cases (search by name or find nearest stops) but does not explicitly contrast with sibling tools or provide when-to-use/when-not-to-use guidance. For a tool with 30+ siblings, more explicit direction would help selection.

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

campus_weatherPurdue campus weatherA

Current conditions and forecast for the Purdue West Lafayette campus, plus any active severe-weather alerts. Source: NOAA/NWS api.weather.gov (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
hourlyNoReturn hour-by-hour instead of day/night periods.
periodsNoHow many periods. Default 4.

TDQS

A3.8/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 of behavioral disclosure. It adds useful context by citing the live NOAA/NWS api.weather.gov source, but it does not discuss data freshness, latency, rate limits, or response format. This is moderate transparency for a simple weather 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?

The description is two sentences, front-loaded with the core purpose, and the source is a single clear addendum. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a simple, no-required-parameter tool, the description covers the scope (Purdue West Lafayette) and the content (current conditions, forecast, alerts). It could be slightly more explicit about what 'current conditions' includes, but given the lack of output schema and low complexity, the description is largely 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 100%: both 'hourly' and 'periods' are defined in the schema. The description itself adds no extra parameter details, but that is acceptable given the schema already documents them well.

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 provides current conditions, forecast, and severe-weather alerts for the Purdue West Lafayette campus. It is specific about the resource and scope, and it naturally distinguishes itself from the unrelated sibling tools.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given, and no alternative weather tools exist among siblings. However, the use case is implied by the description itself: if you need current conditions, forecast, or severe alerts for the Purdue campus, this is the tool to use.

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

course_availabilityLive seat and waitlist counts for a courseA

How many seats are actually open in each section of a course right now, with waitlist counts, CRNs, meeting times, and instructors. This is the authoritative registration data — use it over search_courses/course_sections when the question is 'can I get in'. Source: Purdue Banner self-service (public, live).

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoTerm code ('202710') or name ('Fall 2026'). Defaults to the registerable term.
limitNoMax sections to detail. Default 25.
numberYesCourse number, e.g. '18000' or '180'.
subjectYesSubject abbreviation, e.g. 'CS', 'MA', 'ENGL'.
open_onlyNoOnly sections with seats remaining.

TDQS

A4.5/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 states the source (Purdue Banner self-service, public, live) and the type of data returned. While it lacks explicit mention of read-only status or side effects, the context strongly implies it is a safe read operation. A slightly higher score would require explicit behavioral notes.

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 with zero waste. The first sentence front-loads what the tool returns, the second provides usage guidance and source. Every word 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?

Despite having no output schema, the description enumerates return fields (seats, waitlist, CRNs, meeting times, instructors) and clarifies it operates per section. Combined with the schema's parameter descriptions, it provides a complete picture for an agent to use the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add parameter-level context beyond what the schema already provides. It focuses on output rather than input parameters, which is acceptable given the schema is complete.

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

Purpose5/5

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

The description clearly states the tool returns live seat and waitlist counts for course sections, with details like CRNs and instructors. It explicitly distinguishes from sibling tools 'search_courses' and 'course_sections', making the purpose specific and unambiguous.

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

Usage Guidelines5/5

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

The description directly advises using this tool over alternatives when the question is 'can I get in', providing explicit context for when to use and when not. It also labels the data as authoritative registration data, further clarifying its appropriate use case.

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

course_sectionsGet sections and meeting times for a courseB

CRNs, section types, meeting days/times, rooms, and instructors for a course in a given term. Source: Purdue.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoTerm code ('202710') or name ('Fall 2026'). Defaults to the newest term.
numberYesCourse number, e.g. '18000' or '180'.
subjectYesSubject abbreviation, e.g. 'CS'.

TDQS

B3.1/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 carry the full burden. It only lists the data returned and cites a data source ('Purdue.io'), but does not disclose any behavioral traits such as whether the operation is read-only, expected performance, rate limits, or authentication requirements. The agent is left to assume it is safe without explicit confirmation.

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

Conciseness5/5

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

The description is a single sentence that front-loads the key data items (CRNs, section types, etc.) and includes the source. Every word earns its place, and there is no redundancy. Perfectly concise for a simple query 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?

Given the absence of an output schema and the moderate complexity (3 parameters, 2 required), the description lists the returned fields but does not specify the structure, ordering, or error handling. It is adequate for a basic understanding but lacks completeness for fully autonomous use without further instructions.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions; it merely restates the tool's scope. It does not clarify formats, defaults, or relationships between parameters beyond what is already 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 the tool returns 'CRNs, section types, meeting days/times, rooms, and instructors for a course in a given term', which is a specific verb+resource combination. However, it does not differentiate from sibling tools like 'section_details' or 'search_courses', so it misses the opportunity to guide selection.

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 no guidance on when to use this tool over alternatives. It does not mention when not to use it, such as for a single section lookup (where section_details might be better) or for course search (where search_courses is appropriate). No context or exclusions are given.

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

dining_find_itemFind a food item across dining courtsA

Search every Purdue dining court's menu for a dish on a given date — answers 'who is serving chicken tenders today'. Source: Purdue HFS dining API (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD. Defaults to today on campus.
mealNoRestrict to a meal period, e.g. 'Dinner'.
queryYesDish or keyword, e.g. 'chicken tenders', 'pho', 'cookie'.
include_retailNoAlso search Quick Bites / On-the-GO! locations. Default false.

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 the burden of disclosing behavior. It adds useful context: the tool sources live data from the Purdue HFS dining API and answers the 'who is serving' question. However, it does not disclose return format, no-match behavior, or whether retail locations are included by default (though the schema hints at include_retail).

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 one concise sentence with a clear main clause, a defining example, and a source attribution. Every element serves a purpose and there is no unnecessary repetition or filler.

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

Completeness4/5

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

For a simple search tool with no output schema, the description adequately conveys the tool's function, cross-court scope, date sensitivity, and live data source. It does not describe the response structure or edge cases, but the core selection and invocation context is clear.

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

Parameters3/5

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

The input schema provides 100% coverage with meaningful descriptions for all four parameters, including examples and defaults. The description only repeats the query idea ('chicken tenders') and date concept ('on a given date'), adding no additional semantic value beyond what the schema already offers. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Search') and clearly defines the resource ('every Purdue dining court's menu') and scope ('for a dish on a given date'). The example 'who is serving chicken tenders today' makes the tool's purpose unmistakable and differentiates it from siblings like dining_menu (which likely shows a single court's menu).

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

Usage Guidelines4/5

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

The description gives a clear use case: finding which dining court serves a specific dish on a given date. It implies cross-court lookup rather than per-court menu browsing, which helps disambiguate from dining_menu. However, it does not explicitly state when not to use the tool or name alternative tools.

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

dining_item_nutritionNutrition facts for a dining itemA

Full nutrition panel for one menu item, by the item id returned from dining_menu or dining_find_item. Source: Purdue HFS dining API (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYesItem GUID from dining_menu / dining_find_item.

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 the full burden. It identifies the tool as a read operation ('returns... panel', live API source) but does not explicitly state non-destructive behavior, error handling, or response limitations. For a simple read tool, this is adequate but could be more explicit.

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

Conciseness5/5

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

The description is a single front-loaded sentence plus a brief source note. Every part is necessary and no word is wasted. It is optimally concise.

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, no output schema), the description adequately covers the input source and purpose. It could mention the expected output format (e.g., JSON object with nutrient fields), but the term 'full nutrition panel' provides sufficient guidance for an AI agent.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description already explains 'Item GUID from dining_menu / dining_find_item'. The tool description repeats this information without adding new semantics, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the tool returns a 'full nutrition panel for one menu item', using an item ID from sibling tools. It distinguishes from dining_menu and dining_find_item which retrieve item lists rather than nutrition data. The verb 'returns' is implied but the purpose is unambiguous.

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 tells the agent to obtain the item ID from dining_menu or dining_find_item before using this tool, providing clear context. However, it does not include explicit when-not-to-use guidance or mention alternatives, though no competing nutrition tools exist among siblings.

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

dining_line_lengthLive dining court line lengthsA

Crowdsourced real-time line-length reports for Purdue dining courts. Often empty outside peak hours. Source: Purdue HFS dining API (live).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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 discloses the source (live API, crowdsourced) and implies the data is real-time and may be 'empty' at off-peak times. While this adds transparency, it does not state behaviors like freshness interval, what happens if no reports exist, or any rate limits. It is adequate but not comprehensive for a zeroparam 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?

The description is two sentences, front-loads the core purpose, and includes only relevant additional context (off-peak emptiness, source). Every sentence earns its place with no wasted words. Excellent conciseness.

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 no parameters, no output schema, and no annotations, the description provides sufficient context for a simple live data retrieval: what it returns, its source, and a usage hint. It lacks explicit mention of data format or expected output structure, but for a zero-param, read-only style tool, this is mostly 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?

The tool has zero parameters and schema coverage is 100% (empty properties). The description adds value by explaining what data the tool returns (line-length reports for dining courts) and its nature (crowdsourced, live). For a parameterless tool, this is above baseline; the description meaningfully sets expectations.

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 provides 'real-time line-length reports for Purdue dining courts' and identifies the data source (Purdue HFS dining API). The verb 'Crowdsourced real-time line-length reports' effectively communicates the purpose and distinguishes it from sibling tools like dining_menu or dining_locations, though it could be more explicit about it being a live retrieval, not historical analysis.

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 'Often empty outside peak hours', giving implicit guidance on when the tool returns value vs. less relevant data. However, it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling tools for dining or campus info. Usage context is hinted 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.

dining_locationsList Purdue dining locationsA

List every Purdue dining location (dining courts, quick bites, On-the-GO!) with whether it is open right now and the next meal period. Source: Purdue HFS dining API (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter to one category of location.
open_nowNoOnly return locations currently serving.

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It states the source is a live API and that the output includes open status and next meal period, which is moderately transparent. However, it does not disclose potential error conditions, rate limits, or output format details, leaving gaps for an agent.

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, no wasted words. The first sentence immediately states the tool's purpose and scope, and the second adds the source and output details. Highly efficient and 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 no output schema, the description reasonably covers return values (open now, next meal period) and source. It could clarify the output structure (e.g., list of objects with fields) or mention that location names are included, but for a simple list tool it is mostly 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 100%, so baseline is 3. The description adds value by enumerating the enum values (dining courts, Quick Bites, On-the-GO!) and linking the open_now parameter to 'whether it is open right now', reinforcing the schema descriptions and providing richer context.

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 'List', specifies the resource 'Purdue dining locations', and enumerates the categories (dining courts, quick bites, On-the-GO!). This distinctly sets it apart from sibling tools like dining_menu or dining_line_length by focusing on location listing rather than menus or wait times.

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 no guidance on when to use this tool versus alternatives. It does not mention related tools like dining_menu for menus or dining_line_length for wait times, nor does it state conditions like 'use when you need a list of all locations' versus 'use dining_menu for a specific location's menu'.

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

dining_menuGet a dining court menuC

Full menu for one Purdue dining location on a date, by meal period and station, with dietary tags. Source: Purdue HFS dining API (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD. Defaults to today on campus.
mealNoFilter to one meal period, e.g. 'Breakfast', 'Lunch', 'Dinner', 'Late Lunch'.
locationYesLocation name or code, e.g. 'Wiley', 'Earhart', 'Hillenbrand', 'WILY'.
vegan_onlyNo
vegetarian_onlyNo
exclude_allergensNoDrop items containing any of these, e.g. ['Peanuts','Gluten','Milk'].

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 must carry the full burden. It mentions a live API source, but does not disclose behavioral traits like rate limits, authentication, pagination, error handling, or output format. The phrase 'by meal period and station' is ambiguous—station is not a parameter in the schema, which could mislead an agent about available filters.

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 a single sentence with no wasted words. However, the inclusion of 'station' is ambiguous and slightly detracts from clarity. Still, it is appropriately concise for a simple tool.

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?

Given 6 parameters, no output schema, and no annotations, the description is insufficient. It does not explain the return format, how dietary filters interact, or what happens if no menu is available for a given date/meal. The mention of 'station' without a corresponding parameter creates confusion. An agent would likely need to infer behavior from arbitrary examples.

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 67% (4 of 6 parameters documented). The description reinforces the purpose of 'date', 'meal', and dietary tags, but does not add meaning for the undocumented 'vegan_only' and 'vegetarian_only' parameters. It also mentions 'station' which is not a parameter, reducing clarity. The description fails to compensate for gaps 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 clearly states the tool returns a 'Full menu for one Purdue dining location on a date, by meal period and station, with dietary tags.' This distinguishes it from siblings like dining_locations (lists locations), dining_find_item (search specific item), dining_item_nutrition (nutrition info), and dining_line_length (wait times). The verb 'Get' in the title is aligned.

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 explicit guidance on when to use this tool vs. alternatives. The description implies use when you want a full menu with dietary filters, but does not contrast with dining_find_item (for searching across locations) or dining_line_length (for wait times). With many dining siblings, explicit usage guidance is missing.

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

find_buildingLook up a campus buildingA

Resolve a Purdue building short code or name (e.g. 'LWSN' -> Lawson Computer Science Building). Source: Purdue.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoShort code or partial name. Omit to list all.

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 full responsibility for behavioral disclosure. It only says 'resolve' with an example, but does not describe what the tool returns (e.g., full name, address, coordinates), whether it performs any side effects, or any authentication or rate limits. The behavior of an optional query that lists all when omitted is only hinted in the schema, not reinforced in the description.

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 a single concise sentence plus a data source tag. It is front-loaded with the core action and includes a helpful example. Every part contributes to understanding, but given the lack of output schema and behavioral details, it could be slightly more informative without becoming verbose.

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 simple lookup tool with one parameter and no output schema, the description is adequate but incomplete. It tells the input and the mapping via example, but it does not specify what the output contains (e.g., full name only, or also location, image, etc.). The omission forces the agent to infer return structure, leaving some uncertainty.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'query', and the schema already explains its behavior ('Omit to list all'). The description adds an example ('LWSN') but does not provide additional semantics such as case sensitivity, exact format, or partial matching rules. With full schema coverage, baseline is 3, and the description adds minimal extra value.

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

Purpose5/5

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

The description clearly states the tool's purpose: resolving a Purdue building short code or name into its full name, with a concrete example ('LWSN' -> Lawson Computer Science Building). It distinguishes itself from sibling tools (e.g., bus_stops, dining_locations) which cover other campus domains, leaving no ambiguity about the resource being building codes.

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 tells when to use this tool (when you have a building code or partial name) and includes a data source. However, it does not explicitly state when not to use it or mention any alternatives among siblings, though no direct alternative building lookup tool exists. The omission of explicit usage boundaries keeps it from a 5.

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

library_hoursPurdue library hoursA

Today's hours and open/closed status for every Purdue library and study space (WALC, Hicks, HSSE, Parrish, Archives, …), or a full week's grid. Source: Purdue Libraries LibCal (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
weekNoReturn the whole week instead of just today.
queryNoFilter by library name, e.g. 'WALC', 'Hicks'.
open_nowNoOnly libraries currently open.

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 the full burden. It mentions that data is live (from LibCal), which is helpful context. However, it does not disclose any behavioral traits such as whether the tool requires authentication, rate limits, or what happens if the LibCal source is unavailable. The boolean parameters' effects are hinted but not fully detailed (e.g., 'open_now' returns only currently open libraries).

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 exceptionally concise, using only two sentences that cover purpose, scope, and data source without any wasted words. It is front-loaded with the most critical information ('Today's hours and open/closed status') and provides examples of library names to clarify the query parameter's use.

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 that there are three optional boolean parameters, no output schema, and no annotations, the description fairly sets expectations about what is returned (hours/status for today or a week). It could be more complete by describing the output format (e.g., 'returns library name, hours, and a boolean for open/closed') or by disclosing potential error conditions (e.g., if the source is down). However, for a simple query tool, the description is largely adequate.

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

Parameters3/5

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

Schema description coverage is 100%, meaning each parameter (week, query, open_now) has a description. The tool description adds context by naming specific libraries ('WALC, Hicks, HSSE, Parrish, Archives') and explaining that 'week' returns 'a full week's grid', but it does not explicitly define parameter syntax or constraints beyond what the schema already provides. Baseline 3 is appropriate since the schema and description together give sufficient but not enriched semantics.

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

Purpose5/5

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

The description clearly states a specific verb-resource pair ('hours and open/closed status for every Purdue library and study space') and distinguishes itself from the many siblings (e.g., dining, bus, athletics) by focusing exclusively on library hours. It also mentions the data source ('Purdue Libraries LibCal (live)').

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 clear context about what the tool returns (today's hours or a full week's grid) and implicitly guides the agent to use it for library hours queries versus any of the 28+ sibling tools. However, it does not explicitly say when NOT to use it or mention alternatives for related but different queries (e.g., library event hours).

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

list_subjectsList course subjectsA

All course subject codes at Purdue (CS, MA, ENGR, …), optionally filtered by name. Source: Purdue.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFilter by name or abbreviation.

TDQS

A3.6/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 the tool returns subject codes with optional name filtering and cites Purdue.io as source, but does not mention whether subjects are sorted, include inactive codes, or require authentication. The description is adequate but lacks depth for a data discovery 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?

The description is a single sentence plus a source attribution, containing zero fluff. Every word adds value: it specifies the domain (Purdue), the data (subject codes), examples (CS, MA, ENGR), the optional filter, and the source. Highly efficient.

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 is simple (one optional param, no nested objects, no output schema), the description sufficiently explains what the tool returns and its optional filter. It doesn't include pagination or sort order, but for a list of subject codes this is likely unnecessary. The source attribution adds credibility. Complete for its simplicity level.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'query', and the description mentions it filters by name or abbreviation, which adds context beyond the schema's 'Filter by name or abbreviation'. However, since there is only one optional parameter and the schema already describes it, the description's additional value is minimal, baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool lists all course subject codes at Purdue (specific examples given: CS, MA, ENGR) and mentions an optional filter by name. It distinguishes itself from sibling tools like 'list_terms' and 'search_courses' by focusing on subject codes rather than courses or terms.

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

Usage Guidelines3/5

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

The description implies the tool returns unfiltered subject codes unless a query is provided, but does not explicitly state when to use this tool vs siblings (e.g., when to call this before 'search_courses'). No explicit exclusions or alternatives are mentioned, though context signals show many sibling tools exist that might need this subject data.

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

list_termsList Purdue academic termsA

Every term in the Purdue course catalog, newest first, with codes and date ranges. Use the code with the other course tools. Source: Purdue.io (community catalog mirror).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

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 of behavioral disclosure. It reveals ordering ('newest first'), content ('codes and date ranges'), and data source ('Purdue.io community catalog mirror'). However, it does not mention that the tool is read-only, any rate limits, or what happens when the 'limit' parameter is omitted (e.g., returns all terms). The description gives useful context but is not exhaustive.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: what the tool does, how to use the output, and the source. It is front-loaded with the most important information and contains 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 tool's simplicity (one optional parameter, no output schema, no annotations), the description covers the essential aspects: output content, ordering, and linkage to other tools. It does not detail the return format or pagination, but for a straightforward listing tool, the description is largely 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?

Schema description coverage is 0% (the 'limit' parameter is not mentioned in the description). The description must compensate for low coverage, but it fails to explain the parameter's purpose, behavior, or effect. The schema itself provides min/max, but the description adds no value beyond that.

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 ('list'), the resource ('Purdue academic terms'), and the specifics: 'Every term in the Purdue course catalog, newest first, with codes and date ranges.' It also distinguishes itself from sibling tools like 'banner_terms' by naming the source (Purdue.io) and indicating its use with other course tools.

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

Usage Guidelines4/5

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

The description provides explicit guidance: 'Use the code with the other course tools,' which tells the agent when to use this tool (to obtain term codes for subsequent course-related tools). It does not explicitly exclude alternatives or mention when not to use it, 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.

purdue_exponentPurdue Exponent student newspaperB

Articles from the Purdue Exponent, the independent student newspaper — campus reporting, student government, local news, sports coverage. Editorially independent of the university. Source: purdueexponent.org public feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 10.
sectionNoSection to read. Default 'news'.

TDQS

B3.3/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 for behavioral disclosure. It only says 'Articles from' and 'public feed', which hints at a list of recent articles but does not specify pagination, ordering, rate limits, or whether it returns full text or summaries. The behavior regarding the limit parameter (e.g., how many total articles exist) is unaddressed.

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 two sentences, front-loading the main resource and topics. Minor redundancy with the title ('student newspaper' appears in both). Nearly perfect, but could be slightly tighter.

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?

Despite low complexity (2 optional parameters, no nested objects), the description fails to hint at the return format (full articles, summaries, titles), which is critical since no output schema exists. The absence of annotations and behavioral details leaves the agent underinformed for invocation and response handling.

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

Parameters3/5

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

The input schema covers both parameters (limit and section) with descriptions (defaults, min/max, enum values). The description adds no new meaning beyond listing some topics that may correspond to sections, but does not clarify what each enum value contains. Baseline 3 is appropriate given 100% schema coverage.

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 provides articles from the Purdue Exponent, an independent student newspaper, and lists specific topics (campus reporting, student government, local news, sports coverage). It distinguishes from sibling tools like purdue_news by emphasizing editorial independence and the specific source (purdueexponent.org).

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 student newspaper content versus official university news (via the 'editorially independent' phrase), but does not explicitly state when to use this tool over alternatives like purdue_news or athletics_sports. No guidance on parameter selection (limit, section) or when not to use is provided.

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

purdue_newsPurdue University newsA

Official Purdue newsroom articles — research announcements, university decisions, campus news — searchable by keyword. Source: purdue.edu/newsroom (WordPress REST API, live).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 10.
queryNoKeyword search. Omit for the latest headlines.
full_textNoInclude full article body, not just the excerpt.

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 must disclose behavior. It reveals the data source and live API, but does not mention whether repeated calls count against a rate limit, if results are cached, or what happens when the API is unavailable. This is adequate but not comprehensive 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the purpose and optionally adds implementation detail in a parenthetical. Every word adds meaning 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 simple schema (3 optional params, no output schema), the description covers the core behavior (search news, get headlines or full text) and source. It could mention that results are a list of articles or clarify the 'excerpt' default, but for a straightforward read-only tool it is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds context by naming the source and the search type ('keyword'), but does not elaborate on the parameters beyond what the schema already documents. No extra value is given for limit or full_text.

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 official Purdue newsroom articles with a specific verb-resource combination. It distinguishes itself by naming the source domain and API backend, and the scope (research announcements, university decisions, campus news) is explicit.

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 when to use keyword search ('searchable by keyword') and that omitting the query yields the latest headlines. It does not explicitly contrast with siblings like reddit_purdue or purdue_exponent, but the source (official newsroom) naturally sets it apart.

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

recwell_occupancyLive gym / CoRec occupancyA

Real-time headcount and percent-of-capacity for every counted Purdue RecWell space — CoRec fitness floors, tracks, courts, climbing walls, pools. Answers 'how busy is the gym right now'. Source: Purdue RecWell live facility counts (updates ~every 30s).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order. Default 'busiest'.
queryNoFilter by space name, e.g. 'fitness', 'climbing', 'track', 'gym'.
open_onlyNoHide closed spaces. Default true.

TDQS

A4.3/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 and does well: it discloses the data source (Purdue RecWell live facility counts), update frequency (~every 30s), and the caveat 'every counted space'. This adds meaningful context about data recency and scope, though it doesn't address potential error states or data unavailability.

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, front-loaded with the key output, and contains no redundancy. Every phrase adds value: real-time, headcount, percent-of-capacity, scope, source, and update frequency.

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 simple read-only lookup with optional filters and no output schema, the description fully conveys return semantics (headcount and percent), data freshness, and the user-facing question it answers. Given 100% parameter schema coverage, the description is self-sufficient.

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

Parameters3/5

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

All three parameters (sort, query, open_only) have descriptions in the JSON schema, achieving 100% coverage. The tool description adds only minor extra meaning (e.g., example query values) beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool provides real-time headcount and percent-of-capacity for Purdue RecWell spaces, using the verb 'answers' and enumerating specific areas (fitness floors, tracks, courts, climbing walls, pools). This unambiguously distinguishes it from sibling tools focused on other domains like dining or transit.

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

Usage Guidelines4/5

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

The description gives clear usage context by stating it answers 'how busy is the gym right now' and scopes itself to RecWell facilities. However, it doesn't explicitly mention alternatives such as dining_line_length for real-time crowding in dining venues, so it only partially satisfies the 'when vs alternatives' guidance.

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

reddit_purdueWhat Purdue students are talking aboutA

Current posts from r/Purdue — the unofficial student pulse: housing and sublease chatter, campus gripes, events, advice threads, what is actually happening this week. Unofficial and unmoderated by the university; treat as opinion, not fact. Source: reddit.com/r/Purdue public feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoFeed to read. Default 'hot'.
limitNoDefault 15.

TDQS

A3.8/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 full responsibility. It discloses the source (Reddit, public feed), content nature (unofficial, opinion-based), and lack of university moderation. However, it does not state whether the tool is read-only, requires authentication, or has rate limits. The description adds value beyond the schema but lacks full behavioral details.

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 front-loaded with the main purpose ('Current posts from r/Purdue') and includes a relevant disclaimer. At three sentences, it is slightly verbose with example categories, but still efficient. No wasted words, but could be trimmed slightly without losing meaning.

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 gives context on content type and source but does not describe the output format (e.g., titles, URLs, text, timestamps). Since there is no output schema, the description should compensate, but it only mentions 'posts' without structural details. The parameters are well-covered, but the return value is underspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains both parameters ('sort' and 'limit') with defaults and constraints. The description adds no additional meaning or guidance for parameter selection, such as recommending 'hot' for trending or 'new' for recent. Baseline 3 is appropriate when the schema is sufficient.

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

Purpose5/5

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

The description clearly states the tool provides 'Current posts from r/Purdue' and lists example content (housing, campus gripes, events, advice). It effectively distinguishes from all sibling tools, which are official Purdue services (bus, dining, courses, etc.), making the Reddit community focus unique and unambiguous.

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

Usage Guidelines4/5

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

The description implies usage for informal student opinions ('unofficial student pulse', 'treat as opinion, not fact') but does not explicitly contrast with sibling tools like 'purdue_news' or 'purdue_exponent' for official information. While no direct alternative exists, guidance on when to prefer this over other sources is missing, though the context is implied.

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

search_club_eventsSearch student-org events on BoilerLinkA

Upcoming student organization events (club meetings, socials, callouts) with time, room, and host org. Distinct from the official university calendar. Source: BoilerLink / Anthology Engage (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 20.
queryNoKeyword, e.g. 'callout', 'free food', 'hackathon'.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that data is 'live' from 'BoilerLink / Anthology Engage', implying freshness and external dependency. It also specifies the type of information returned (time, room, host org). A minor gap: it doesn't mention read-only behavior or potential network latency, but the source declaration is strong 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 two sentences with zero waste. It front-loads the purpose, specifies key output fields, distinguishes from a related tool, and cites the data source. Every sentence 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?

Given the tool's low parameter count (2), full schema coverage, and no output schema, the description covers the essential: what events are returned, their attributes, and the source. It lacks details on return structure (e.g., result count, fields always present) but is largely complete for a filtered search tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mentions 'keyword' indirectly via examples in the schema, but does not add extra semantics beyond the schema. No new meaning is provided about the 'limit' or 'query' parameters beyond what the schema already documents.

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

Purpose5/5

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

The description uses specific verbs ('search', 'upcoming') and resource ('student organization events on BoilerLink') and distinguishes from sibling tools like search_events and academic_calendar by mentioning 'student org' events, time, room, host org, and the source. It clearly separates from the 'official university calendar'.

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 states the tool is for 'upcoming student organization events' and notes it's 'distinct from the official university calendar', giving context for when to use it. However, it does not explicitly mention when not to use it or name specific sibling alternatives (e.g., search_events for academic events) as a counter-recommendation.

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

search_coursesSearch the Purdue course catalogB

Find courses by subject code, course number, and/or title keyword — returns titles, credit hours, and descriptions. Source: Purdue.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 25.
numberNoCourse number, e.g. '18000' or '180' (short forms are zero-padded).
subjectNoSubject abbreviation, e.g. 'CS', 'MA', 'ENGR'.
title_containsNoKeyword in the course title.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It indicates this is a search/query operation (read-only), but does not explicitly state that it is non-destructive, mention rate limits, pagination, default limit behavior, or what happens when no results are found. The description is too minimal to fully inform an agent about side effects or safety.

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 consists of two succinct sentences that front-load the purpose and return values. Every word adds value, and there is no fluff.

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

Completeness4/5

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

Given no output schema, the description explains that the tool returns titles, credit hours, and descriptions, which is sufficient for a basic search. However, it omits details about pagination, ordering, or the interaction between parameters (e.g., all optional). It is mostly complete for a simple search tool but could be slightly more informative.

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

Parameters3/5

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

Schema coverage is 100% and each parameter has a description. The tool description only summarizes the criteria generally (subject, number, title keyword) without adding new semantics beyond the schema. The baseline of 3 is appropriate since the schema already does the heavy lifting.

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 uses a specific verb 'Find' and resource 'courses', and lists the search criteria (subject, number, title keyword) and return fields (titles, credit hours, descriptions). It clearly states what the tool does but does not differentiate it from sibling tools like course_sections or course_availability.

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, nor does it specify prerequisites, exclusions, or when not to use it. For example, it doesn't mention that course_sections should be used after a course is found, or that all parameters are optional but at least one is recommended.

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

search_eventsSearch official Purdue campus eventsB

Official university event calendar (lectures, athletics, concerts, deadlines, career fairs) with times, locations, and links. Source: events.purdue.edu (Localist, live).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days from the start date. Default 7.
limitNoDefault 20.
queryNoKeyword search. Omit to browse upcoming events.
startNoYYYY-MM-DD start of window. Defaults to today.

TDQS

B3.4/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 mentions the source is live but does not disclose any behavioral traits such as rate limits, caching, pagination behavior, or whether the query parameter is optional. The agent gets minimal insight 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 with two sentences, front-loading the purpose and source. It is well-structured and avoids unnecessary verbosity.

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 absence of annotations and output schema, the description provides basic context (event types, source) but lacks details on return format, pagination, or date range behavior. It is adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters with descriptions. The description adds no additional parameter-level meaning beyond stating the source. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it searches the official Purdue campus event calendar, lists specific event types (lectures, athletics, concerts, deadlines, career fairs), and identifies the live source. It effectively distinguishes from sibling tools like search_club_events and academic_calendar.

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

Usage Guidelines3/5

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

The description implies the tool is for searching official campus events but provides no explicit guidance on when to use this tool versus alternatives like search_club_events or athletics_upcoming. No 'when-not-to-use' or selection criteria are given.

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

search_student_orgsSearch Purdue student organizationsB

Search BoilerLink's directory of ~1,200 registered student organizations by name or keyword. Source: BoilerLink / Anthology Engage (live).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 20.
queryNoKeyword, e.g. 'robotics', 'a cappella', 'finance'.

TDQS

B3.3/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 mentions the source (BoilerLink/Anthology Engage, live) and the number of organizations (~1,200), which is helpful, but it omits key behaviors such as whether the operation is read-only, pagination behavior, order of results, or any side effects. The description adds some context but is insufficient for a search tool with zero annotations.

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

Conciseness5/5

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

The description is a single sentence followed by a source attribution. It front-loads the purpose and includes a helpful number of organizations and data source. Every word earns its place, no redundancy.

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

Completeness3/5

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

The description is complete enough for the parameter coverage but lacks any mention of the output format or return structure. Since there is no output schema, the agent is left guessing what fields are returned (e.g., organization name, description, contact info). For a search tool, this is a notable gap. The description otherwise covers the source and scope adequately.

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

Parameters3/5

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

Schema description coverage is 100% (both parameters have descriptions in the input schema). The description does not add additional meaning beyond what the schema already provides: 'query' is described as 'Keyword, e.g. 'robotics', 'a cappella', 'finance' and 'limit' has default and range. Baseline 3 is appropriate when schema covers all parameters.

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?

Clearly states the verb 'Search' and the resource 'BoilerLink's directory of ~1,200 registered student organizations by name or keyword.' This differentiates it from sibling tools like search_events or search_club_events which search different entities.

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 over alternatives or when not to use it. The description only states what it does, implying usage context but lacking explicit when-to-use or when-not-to-use advice. Among many search-related siblings, this omission could confuse the agent.

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

section_detailsFull registration detail for one CRNA

Everything Banner knows about one section: seats, waitlist, prerequisites, and major/level restrictions. Answers 'why can't I register for this'. Meeting times come from course_availability or course_sections. Source: Purdue Banner self-service (public, live).

ParametersJSON Schema
NameRequiredDescriptionDefault
crnYesThe 5-digit CRN, e.g. '13610'.
termNoTerm code or name. Defaults to the registerable term.

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 the full burden. It discloses the source as 'public, live' and hints at non-destructive behavior. However, it does not mention authentication requirements, rate limits, or whether the data is cached, missing some behavioral context that annotations would typically cover.

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

Conciseness5/5

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

Three sentences with no filler. The first sentence front-loads the tool's value ('Everything Banner knows about one section'), followed by a purpose statement and a sibling clarification. Every sentence serves a distinct purpose.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema), the description adequately covers return values (seats, waitlist, etc.) and distinguishes from related tools. It could mention that results are for a single CRN (implied in title) or note any pagination limits, but it is largely complete for this complexity level.

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

Parameters3/5

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

Schema coverage is 100% with both parameters already described in the schema. The description adds purpose context but does not enhance parameter meaning beyond what the schema provides (e.g., it doesn't elaborate on the 'term' parameter beyond the default behavior). Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses specific verbs and resources: 'Everything Banner knows about one section', listing concrete data types (seats, waitlist, prerequisites, restrictions). It answers a clear user question ('why can't I register') and distinguishes from siblings by noting meeting times come from other tools.

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

Usage Guidelines4/5

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

It explicitly directs the agent to course_availability or course_sections for meeting times, providing clear context on when this tool is not needed. However, it does not explicitly state when to use this tool over other registration-related siblings like search_courses, leaving some inference to the agent.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 29 tool updatesv0.3.0
    • First observedacademic_calendar
    • First observedathletics_schedule
    • First observedathletics_sports
    • First observedathletics_upcoming
    • First observedbanner_terms
    • First observedbus_next_departures
    • First observedbus_routes
    • First observedbus_stops
    • First observedcampus_weather
    • First observedcourse_availability
    • First observedcourse_sections
    • First observeddining_find_item
    • First observeddining_item_nutrition
    • First observeddining_line_length
    • First observeddining_locations
    • First observeddining_menu
    • First observedfind_building
    • First observedlibrary_hours
    • First observedlist_subjects
    • First observedlist_terms
    • First observedpurdue_exponent
    • First observedpurdue_news
    • First observedrecwell_occupancy
    • First observedreddit_purdue
    • First observedsearch_club_events
    • First observedsearch_courses
    • First observedsearch_events
    • First observedsearch_student_orgs
    • First observedsection_details

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource and action, such as bus stops versus departures, dining locations versus menus, and course search versus availability. The descriptions clearly differentiate overlapping domains like official events and club events.

Naming Consistency5/5

All 29 tools follow a consistent snake_case pattern with a domain-specific prefix (bus_, dining_, list_, search_, etc.) and a descriptive verb or noun. The naming is predictable and easy to interpret.

Tool Count3/5

With 29 tools, the set is on the high side, exceeding the typical 3-15 range for a well-scoped server. However, the server covers a broad range of university functions (dining, transportation, courses, events, athletics, etc.), and each tool serves a specific purpose, making the count borderline reasonable.

Completeness4/5

The server covers most common Purdue queries: dining, bus, courses, registration, events, athletics, news, calendar, library, weather, recwell, and student organizations. Minor gaps like parking or a campus map exist, but the surface is extensive and cohesive.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects AI assistants to university D2L Brightspace and Piazza, enabling query of courses, grades, assignments, deadlines, files, and Piazza posts.
    7
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for St. Louis transit developer tooling, providing 45 tools for GTFS and GTFS-Realtime inspection, feed surveillance, schedule and arrival queries, assertions, drift detection, and golden-fixture generation for the Light Phone 3 Kotlin transit app, all backed by public unauthenticated sources.
    -

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sharziki/purdue-mcp'

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