Skip to main content
Glama

get_timetable

Read-onlyIdempotent

Fetch a semester's registered courses with slots, venues, faculty, credits, and each weekly class session's day, time, and THEORY/LAB type. Requires an authenticated VTOP login.

Instructions

Get class timetable: registered courses with slots, venues, faculty and credits, plus the actual weekly schedule. Each course carries a sessions array with every meeting it has (day, slot, THEORY/LAB, start and end time, venue) — a course with two slots a week appears twice. The top-level day/startTime/endTime mirror the first session. Use get_today_classes for 'what do I have today' (it applies the academic calendar and day-order overrides). semesterId is optional; omit for current semester. If the response contains NOT_AUTHENTICATED, follow the error's recovery array and retry. Requires login.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
refreshNoBypass the short cache and re-read the page from VTOP. Results are cached for 60 seconds so follow-up questions are instant; set this when you specifically want to know whether something has just been updated.
semesterIdNoSemester ID (e.g. 'AP2024251'). If omitted, uses the current/latest semester.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.5

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely new behavioral context: it requires login and prescribes a recovery procedure when the response contains NOT_AUTHENTICATED. It does not mention the 60-second cache at the description level (that detail lives in the refresh parameter schema), so it falls just short of the top mark.

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

Conciseness4/5

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

Front-loaded with the purpose, then routing, then parameters, then auth guidance in a logical order. The sentence on the sessions array is somewhat detailed but justified because no output schema exists; overall density is high but each sentence carries information.

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

Completeness5/5

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

With no output schema, the description compensates by explaining the response shape (courses, sessions array, duplicated multi-slot courses, top-level fields mirroring the first session), and it covers the auth failure path. Nothing an agent needs to call and interpret this tool is missing.

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

Parameters3/5

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

Schema description coverage is 100%, including the caching rationale for `refresh`, so the schema already does the heavy lifting. The description only restates that semesterId is optional and defaults to the current semester, adding nothing beyond the schema.

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

Purpose5/5

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

Names a specific verb+resource ('Get class timetable') and enumerates the returned content (courses with slots, venues, faculty, credits, plus weekly sessions) at a level that lets an agent distinguish it from the other schedule-related siblings.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'Use get_today_classes for "what do I have today"' and explains why (it applies the academic calendar and day-order overrides). It also states the semesterId default ('omit for current semester') and the login prerequisite.

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