Skip to main content
Glama

Find class sections in a term (WebSoc)

find_sections
Read-onlyIdempotent

Search UCI's live class schedule for sections matching your filters like department, days, time, or availability, and get meeting details, instructor, location, seats, waitlist, and exam info.

Instructions

The main course-finding tool. Queries UCI's live schedule of classes for one term and returns matching sections with meeting times, instructor, location, seats taken, waitlist and final exam. Filter by department, course number, GE category, instructor, days of week, time window, and seat availability. At least one narrowing filter besides the term is required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
geNoOnly courses satisfying this GE category.
daysNoSection must meet on at least ONE of these days, e.g. "MWF", "TuTh", "M". See daysOnly.
termYesRequired, e.g. "2026 Fall".
limitNoMax sections to return (default 60, max 300).
unitsNoUnit count, or "VAR" for variable-unit sections.
avoidEndNoEnd of the blocked window, e.g. "18:00". Requires avoidDays.
buildingNoBuilding code, e.g. "ELH", "DBH".
daysOnlyNoIf true, `days` becomes exclusive: only sections that meet SOLELY on those days are returned. Use this for "I can only come to campus Tuesday and Thursday".
divisionNoCourse level.
avoidDaysNoDays of a window you must keep free, e.g. "M,W". Use with avoidStart/avoidEnd.
endBeforeNoSection must end at or before this time, e.g. "17:00" or "5pm".
avoidStartNoStart of the blocked window, e.g. "13:00". Requires avoidDays.
departmentNoDepartment code or name, e.g. "COMPSCI", "CS".
instructorNoInstructor last name, e.g. "Shindler".
startAfterNoSection must start at or after this time, e.g. "10:00" or "10am".
courseTitleNoSubstring of the course title.
sectionTypeNoSection type.
availabilityNoSeat availability filter. Default ANY.
courseNumberNoCourse number, e.g. "161".
sectionCodesNoComma-separated 5-digit codes or ranges, e.g. "34190,34200-34210".
includeCancelledNoInclude cancelled sections (default false).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description goes beyond these by noting it queries the 'live schedule,' requiring at least one narrowing filter, and summarizing the returned section data. There is no contradiction between the description and the 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 compact: three sentences convey what the tool does, what it returns, how it can be filtered, and the required-filter rule. Key information is front-loaded, and 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?

With 21 parameters and no output schema, the description handles selection context well by naming primary return fields and the mandatory narrowing constraint. Per-parameter semantics are fully covered by the schema, so this is a solid overall package. Minor gaps remain around pagination and output volume, but the schema's `limit` description partially addresses this.

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 21 parameters have schema descriptions, so the baseline is 3. The description names broad filter categories such as department, course number, GE, instructor, days, and time window, but it does not add detail beyond the schema, such as dependencies between avoidDays/avoidStart/avoidEnd or the default limit behavior.

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 opens with 'The main course-finding tool' and states that it queries UCI's live schedule for a term and returns matching sections with meeting times, instructor, location, seats, waitlist, and final exam. This is a clear verb-resource pairing with a specific resource and scope. It does not explicitly contrast itself with sibling search_courses, so it is just short of a 5.

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 for when to use it—finding course sections in a term—and explicitly states a hard precondition: 'At least one narrowing filter besides the term is required.' It also enumerates the dimensions an agent can filter by. However, it does not name alternative tools or state explicit when-not-to-use conditions.

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