ScarletPlan
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCARLETPLAN_DB | No | Path to the scarletplan database file. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_coursesA | Search the Rutgers course catalog by free text, subject code (e.g. '198' for CS), level (300 = 300-level), and term. Returns compact course rows. Use before get_course when the user names a topic not a code. |
| get_courseA | Full detail for one course: prereq AST + raw text, sections summary, core codes, credits. Accepts 'CS 344', '198:344', or '01:198:344'. Always pass caveats through to the user. |
| get_prereq_treeB | Annotated prerequisite tree for a course (AST with course titles). Use to explain WHY a course is or isn't available. |
| check_eligibilityA | Given candidate course_strings and the student's completed courses, return per course: eligible (bool), the unsatisfied prereq subtree, and any 'unknowns' (notes we could not verify automatically). |
| get_sectionsA | List sections for a course in a term with meeting times, instructors, and open status. Times are minutes-from-midnight; Thursday is 'H'. |
| get_user_profileA | Read a stored user-profile value (e.g. 'completed_courses', 'target_grad', 'preferences'). Returns null if unset. |
| set_user_profileB | Store a user-profile value so the student does not repeat themselves across turns. Value is any JSON. |
| get_professorA | Look up a professor by name. Returns their cached RateMyProfessors rating (avg_rating 1–5, avg_difficulty 1–5, would_take_again_pct) plus which courses they teach this term. Accepts any name format: 'Professor Smith', 'J. Smith', or SOC format 'SMITH, J'. Always surface match_confidence and caveats[] — low-confidence matches (<85%) should be flagged to the user. ratings_available=false means the scraper has not run yet for this term. |
| get_fill_statsA | Historical fill statistics for a section index, derived from the openSections poller. Returns hours_to_first_fill (how quickly the section filled after registration opened), pct_time_closed (fraction of the registration window the section was unavailable), and reopen_count (how many times a closed section reopened due to drops — high reopen_count means a closed section is still worth watching). Returns status='no_data' when the poller has not yet collected data for this term. Always surface caveats[] to the user. |
| get_requirements_progressA | Per-requirement-bucket progress for the CS BS major. completed: list of course strings the student has finished. Returns buckets with satisfied/remaining course lists and credit counts. Call this before solve_degree_plan to show what's left to complete. |
| solve_degree_planA | Plan remaining semesters from now to target_term. completed: list of course strings the student has finished. target_term: {'year': 2028, 'term': 1} where term 1=spring, 9=fall. preferences: optional dict with max_credits_per_term (int, default 18), min_credits_per_term (int, default 12), current_year, current_term. pins: optional dict mapping course_string to {'year': Y, 'term': T} to force placement. Returns a semester-by-semester plan or a structured infeasibility explanation. Always call get_requirements_progress first to show the student their remaining requirements. |
| solve_semester_scheduleA | Given a list of course_strings and a term, return up to k (default 3) conflict-free section schedules using CP-SAT optimization. preferences may include earliest_start (minutes from midnight, e.g. 600=10am), latest_end, days_off (list of day strings like ['F']), campus_preference (e.g. 'BUSCH'). Returns schedules with section assignments, a human-readable summary, and penalty_score (lower=better). Always surface caveats[] to the user. Use get_sections first to confirm sections exist for the term. |
| validate_planA | Check whether a proposed schedule (list of section index numbers) has any time conflicts. Use after the student manually edits a solve_semester_schedule result. Input: {sections: [index_number, ...], term: int}. Returns valid (bool), conflicts (list of overlapping pairs), and caveats (unknown indexes). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/heetshah15/scarletplan'
If you have feedback or need assistance with the MCP directory API, please join our Discord server