Provides tools for accessing the GopherGrades SQLite database with course search, grade statistics, professor ratings, and academic term information
Gopher Grades exposes a single tool (search_courses) with a well-structured input schema and comprehensive parameter coverage. The tool name follows verb-noun convention ('search_courses'), and the description is substantive (186 characters). However, the description contains example values ('Machine Learning', 'data structures') which violates the pattern of using enums/constraints instead. The schema includes proper JSON Schema with types and descriptions for all parameters. Error handling is not visible in the provided code, no recovery guidance, error categorization, or actionable error messages. The tool is read-only with low risk. Output schema is not explicitly documented in the visible code, which limits composability for downstream tools.
Search for courses based on various criteria, including department abbreviation, course number, course level, average GPA range (minimum average gpa or maximum average gpa), and a general search term. Get course details and grade statistics.
Description contains example values ('Machine Learning', 'data structures') instead of formal constraints (enums). LLMs may treat these as the only valid options or reuse them literally.
Output schema not documented in visible code. LLMs cannot infer the structure of search results, making it difficult to chain downstream tools or extract specific fields (e.g., course_id, grade_distribution).
No error handling or recovery guidance visible. Tool implementation logs queries and results but does not provide actionable error messages to guide the LLM on retry strategy, user-fixable vs. fatal errors, or next steps.
Parameter 'level' accepts mixed types (int enum [1-9] OR string enum ['undergraduate', 'master', 'doctoral']) via oneOf. This overloads the parameter and forces LLMs to reason about type mapping. Consider separate parameters or a single normalized enum.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'terms' accepts mixed types (int OR string) via oneOf. The description mentions 'raw term integer' but does not explain the mapping or provide examples of valid formats (e.g., 'Fall 2023' vs. '202409'). This ambiguity invites invalid input.
Numeric parameters (min_gpa, max_gpa) lack explicit min/max constraints in the description. Defaults are provided (-1 and 5 respectively) but the valid range is not stated. An LLM could pass min_gpa=10 without guidance.