Skip to main content
Glama
shreeyachand

USC WebReg/Course Catalog MCP

by shreeyachand

list_courses_by_program

Read-onlyIdempotent

Retrieve every course and section offered by a USC program in a term, with optional filters for days, start times, and open-only sections to narrow your search.

Instructions

List all courses offered by a USC program (department) in a term. Requires the school prefix and program prefix, which can be discovered via list_programs. For example, Computer Science is school 'ENGV' and program 'CSCI'. Returns courses with their sections. Supports optional section filters (days, startAfter, startBefore, openOnly) applied client-side.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNoSection must meet on all of the given days (e.g. ['Mon', 'Wed']). A section matches if any of its schedule entries covers every listed day.
schoolYesSchool prefix the program belongs to (e.g. 'ENGV' for Viterbi). Find via list_programs.
programYesProgram/department prefix (e.g. 'CSCI' for Computer Science).
openOnlyNoWhen true, only include sections that are not cancelled and not full (have seats available).
termCodeYesNumeric USC term code, e.g. 20263 (Fall 2026). Use list_terms to discover codes.
startAfterNoOnly sections whose start time is at or after this zero-padded HH:MM time (e.g. '12:00').
startBeforeNoOnly sections whose start time is at or before this zero-padded HH:MM time (e.g. '17:00').
Install Server

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds genuine value beyond that by disclosing return shape ('Returns courses with their sections') and, importantly, that the optional filters are 'applied client-side' — a real behavioral trait with implications for data volume and server load. It does not contradict the annotations, but it stops short of explaining pagination or volume implications.

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, each earning its place: core function, prerequisite+example, and return value+filters. The main purpose is front-loaded in the first sentence, and there is zero filler or repetition of schema boilerplate.

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 read-only list tool with a fully documented 7-parameter schema and safety-bearing annotations, the definition covers purpose, prerequisites, and return shape adequately. The only gap is the absence of an output schema combined with a terse return-value description — an agent composing multi-step workflows (e.g., piping sections into get_section_fees) would benefit from more detail on the returned course/section shape.

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%, and the schema entries are rich: days has enum values with matching semantics, termCode has a pattern plus the 20263 example, and startAfter/startBefore have HH:MM format constraints. The description adds only the 'applied client-side' note for filters and re-states the ENGV/CSCI example already present in the schema, so it contributes marginally beyond 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 opens with a specific verb and resource: 'List all courses offered by a USC program (department) in a term.' It states the scope precisely and gives a concrete example (ENGV/CSCI), which makes the tool's role unmistakable. This distinguishes it from siblings like search_courses (keyword search vs. full listing) and list_courses_by_ge (GE category vs. program dimension).

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 context by naming the prerequisite discovery path: 'Requires the school prefix and program prefix, which can be discovered via list_programs.' This tells an agent how to prepare before calling. However, it does not explicitly exclude alternatives such as search_courses or list_courses_by_ge, so the when-not-to-use guidance is left to inference.

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

Other Tools

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/shreeyachand/usc-webreg-mcp'

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