Exposes tools to query UMD class schedule from a local SQLite database. Provides access to today's classes, next class, classes for a specific day, and class search functionality.
Four tools with clear verb-noun naming (get_*, find_*) and reasonable descriptions (100-200 chars). All tools are READ_ONLY with no state mutation. Input schemas present for 2/4 tools; 2 tools have empty input objects. Parameter descriptions exist but lack format constraints (e.g., day aliases not formalized as enum). Output schemas are not explicitly documented, LLMs must infer structure from description text. Error handling is minimal (ValueError for invalid day, but no recovery guidance). No tool annotations (readOnlyHint, etc.). Composition is sound: tools are single-purpose and chainable.
Find all meetings for a class by course code or partial match. Args: query: A course code (e.g. 'CMSC 131') or substring ('CMSC', 'chem'). Case-insensitive. Returns all matching meetings across all days. Useful for "when does my chem class meet?" style questions.
Get all class meetings for a specific day of the week. Args: day: One of M, T, W, Th, F (Monday through Friday). Case-insensitive. Also accepts full names like 'Monday'. Returns an empty list if no classes meet on that day.
Get all class meetings scheduled for today, sorted by start time. Returns an empty list if today is a weekend or there are no classes.
Get the next class meeting starting from right now. If a class is currently in session, it counts as 'next' (the start time today is in the past, but you're still in it). If nothing is scheduled later today, it rolls forward to the next day with classes. Returns None if there are no classes anywhere in the schedule.
Output schemas not documented. Tools return list[dict] or dict|None, but field names, types, and structure are inferred from code only. LLMs cannot plan downstream calls without explicit schema.
Parameter 'day' in get_classes_for_day accepts free-form string with aliases (M, T, W, Th, F, Monday, etc.) but no enum constraint. Should declare as enum or provide strict format in description.
Error handling is minimal. ValueError for invalid day has no recovery guidance. Should return actionable error: 'Invalid day: got "X", use M, T, W, Th, F, or full names (Monday, Tuesday, etc.)'
No tool annotations. All tools are READ_ONLY but lack readOnlyHint annotation. FastMCP supports tool annotations, should declare them for clarity.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Tools with empty input {} (get_classes_today, get_next_class) lack explicit schema documentation. Schema score capped at 40 because input structure is not formally declared.