Skip to main content
Glama

plan_timetable

Build a conflict-free UofT timetable from course codes in one call, using early, balanced, or late time preferences and blocked hours. Create a shareable schedule link without enrolling.

Instructions

Plan a conflict-free timetable from course codes in one call and share it.

course_codes are full codes such as CSC148H1; add a term suffix (CSC148H1-F) when a course runs in more than one term, or set term to F, S or Y for all of them. The tool finds each course's offering and section types, asks UofT's solver for lectures, tutorials and practicals, and returns the chosen meeting times with a weekly overview. preference is early, balanced or late. blocked_times use weekday names and 24-hour HH:MM times and are preferences the solver may not be able to honour; any broken ones are reported. With share=True (default) it creates a public anonymous ttb.utoronto.ca link (share_url). It does not enrol anyone.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "course_codes": "<course_codes>"
    },
    "name": "plan_timetable"
  }
}

Input Schema

NameRequiredDescriptionDefault
termNo
shareNo
preferenceNobalanced
course_codesYes
blocked_timesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.7.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare non-read-only, non-idempotent, non-destructive; the description adds the meaningful side effects on top — that share=True creates a public anonymous ttb.utoronto.ca link, that blocked_times are soft preferences the solver may break (with broken ones reported), and that no enrolment occurs. It does not cover failure modes such as unknown course codes or rate limits on the external solver.

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?

Purpose is front-loaded in the first sentence, then per-parameter notes follow logically and every sentence carries information. It is slightly dense with line-wrapped clauses, but nothing is redundant filler.

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 five-parameter tool with no output schema, the description covers return content (chosen meeting times plus a weekly overview, share_url) and the solve-and-share behaviour adequately. Minor gaps remain around error handling for invalid or multi-term course codes and the 10-course cap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry all meaning, and it does: it documents course_codes syntax (CSC148H1, optional -F term suffix), the term values F/S/Y, the three preference values, and blocked_times format (weekday names, 24-hour HH:MM). Only the min/max course-count limits are left to 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?

States a specific verb and resource — "Plan a conflict-free timetable from course codes in one call and share it" — which is immediately distinguishable from siblings find_courses, course_info and save_timetable. An agent can tell this is the composite solve-and-share tool without opening the schema.

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?

Gives clear operational context: it does the offering lookup, asks the solver for lectures/tutorials/practicals, and "does not enrol anyone," which implicitly rules out registration use. It never names an alternative tool or says when to prefer find_courses/course_info first, so it falls short of explicit routing guidance.

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