← WebMCP Directory

Tool tree

bucknell-course-advisor.vercel.app

Health & EducationTools verified
Website
Student-built course planner for Bucknell: degree audit, Spring section planner and an AI advisor that only drafts.
Explore capabilities
    get_student_profileAnswer

    Return the signed-in Bucknell student’s academic profile: major, class year, GPA, credits earned, completed courses, interests, career goal, credit cap and scheduling preferences. Call this first to personalize any advice.

    View tool JSON
    {
      "name": "get_student_profile",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the signed-in Bucknell student’s academic profile: major, class year, GPA, credits earned, completed courses, interests, career goal, credit cap and scheduling preferences. Call this first to personalize any advice.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    search_coursesAnswer

    Search the Fall 2026 demo catalog. Every result carries an eligibility verdict (eligible, ineligible, full, conflict, taken) with plain-language reasons derived from the student’s prerequisites, GPA, seat availability and current schedule.

    View tool JSON
    {
      "name": "search_courses",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the Fall 2026 demo catalog. Every result carries an eligibility verdict (eligible, ineligible, full, conflict, taken) with plain-language reasons derived from the student’s prerequisites, GPA, seat availability and current schedule.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text match on course code, title or description."
          },
          "tag": {
            "type": "string",
            "enum": [
              "ai",
              "security",
              "web",
              "data",
              "core",
              "ethics",
              "business",
              "design"
            ],
            "description": "Topic filter, e.g. ai, security, web, data, core."
          },
          "department": {
            "type": "string",
            "description": "Department filter, e.g. \"Computer Science\"."
          },
          "onlyEligible": {
            "type": "boolean",
            "description": "Return only courses the student can register for right now."
          }
        }
      }
    }
    check_eligibilityAnswer

    Full eligibility report for one course: prerequisites, GPA minimum, open seats, waitlist size, and time conflicts against the student’s registered courses. Expands the course on screen.

    View tool JSON
    {
      "name": "check_eligibility",
      "kind": "answer",
      "impl": "imperative",
      "description": "Full eligibility report for one course: prerequisites, GPA minimum, open seats, waitlist size, and time conflicts against the student’s registered courses. Expands the course on screen.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "Course code such as CS360."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    build_scheduleAction

    DEMO ONLY — Fall 2026 sample catalog used by the Registration page. For planning the real Spring 2026–27 term use plan_spring_schedule instead. Proposes a schedule from the student’s constraints: credit cap, earliest start, latest end, priority topics, days to keep free. Only eligible, non-conflicting courses are selected. This produces a DRAFT shown on the page — no seats are held and nobody is enrolled. The result also reports the weekly workload in hours, project and team-work load, and which graduation requirement each course satisfies. Use suggest_alternatives or swap_draft_course to change one course without rebuilding, then register_course once the student agrees.

    View tool JSON
    {
      "name": "build_schedule",
      "kind": "act",
      "impl": "imperative",
      "description": "DEMO ONLY — Fall 2026 sample catalog used by the Registration page. For planning the real Spring 2026–27 term use plan_spring_schedule instead. Proposes a schedule from the student’s constraints: credit cap, earliest start, latest end, priority topics, days to keep free. Only eligible, non-conflicting courses are selected. This produces a DRAFT shown on the page — no seats are held and nobody is enrolled. The result also reports the weekly workload in hours, project and team-work load, and which graduation requirement each course satisfies. Use suggest_alternatives or swap_draft_course to change one course without rebuilding, then register_course once the student agrees.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "maxCredits": {
            "type": "integer",
            "minimum": 1,
            "maximum": 21,
            "description": "Credit cap for the semester."
          },
          "earliestStart": {
            "type": "string",
            "description": "24h time such as \"10:00\" — no class may start earlier."
          },
          "latestEnd": {
            "type": "string",
            "description": "24h time such as \"17:00\" — no class may end later."
          },
          "priorities": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "security",
                "web",
                "data",
                "core",
                "ethics",
                "business",
                "design"
              ]
            },
            "description": "Topic areas to prioritize, most important first."
          },
          "avoidDays": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri"
              ]
            },
            "description": "Weekdays to keep free."
          }
        }
      }
    }
    suggest_alternativesAction

    For one course in the current DRAFT schedule, return 2-3 replacement options that fit around every other draft course unchanged. Each option states which graduation requirement it satisfies, its weekly workload in hours, whether it has a team project or lab, how well it matches the student’s interests, and the explicit trade-off against the course being replaced. Also returns what deferring the original course costs — whether it is required for the major and which later courses it unblocks. Use this when the student wants to change one course without rebuilding the whole schedule.

    View tool JSON
    {
      "name": "suggest_alternatives",
      "kind": "act",
      "impl": "imperative",
      "description": "For one course in the current DRAFT schedule, return 2-3 replacement options that fit around every other draft course unchanged. Each option states which graduation requirement it satisfies, its weekly workload in hours, whether it has a team project or lab, how well it matches the student’s interests, and the explicit trade-off against the course being replaced. Also returns what deferring the original course costs — whether it is required for the major and which later courses it unblocks. Use this when the student wants to change one course without rebuilding the whole schedule.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "The draft course to replace, e.g. CS320."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    swap_draft_courseAction

    Swap one course out of the DRAFT schedule and optionally another in, leaving every other draft course exactly as it is. Omit replaceWith to simply remove the course and leave the slot open. This edits the draft only — no seats are held and nothing is registered.

    View tool JSON
    {
      "name": "swap_draft_course",
      "kind": "act",
      "impl": "imperative",
      "description": "Swap one course out of the DRAFT schedule and optionally another in, leaving every other draft course exactly as it is. Omit replaceWith to simply remove the course and leave the slot open. This edits the draft only — no seats are held and nothing is registered.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "remove": {
            "type": "string",
            "description": "Course code to take out of the draft."
          },
          "replaceWith": {
            "type": "string",
            "description": "Course code to put in its place. Omit to leave the slot empty."
          }
        },
        "required": [
          "remove"
        ]
      }
    }
    explain_course_impactAction

    Explain what one course means for the student’s path to graduation: which requirement it satisfies, whether it is required or elective, which later courses it unlocks as a prerequisite, its weekly workload and project/lab profile, and what deferring it to a later term would cost.

    View tool JSON
    {
      "name": "explain_course_impact",
      "kind": "act",
      "impl": "imperative",
      "description": "Explain what one course means for the student’s path to graduation: which requirement it satisfies, whether it is required or elective, which later courses it unlocks as a prerequisite, its weekly workload and project/lab profile, and what deferring it to a later term would cost.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "Course code such as CS320."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    register_courseAction

    Request registration for one or more courses. SENSITIVE ACTION: the portal asks the student to confirm, and nothing is enrolled until they click Confirm themselves. The result states what happened — never tell the student they are registered unless it says so.

    View tool JSON
    {
      "name": "register_course",
      "kind": "act",
      "impl": "imperative",
      "description": "Request registration for one or more courses. SENSITIVE ACTION: the portal asks the student to confirm, and nothing is enrolled until they click Confirm themselves. The result states what happened — never tell the student they are registered unless it says so.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Course codes, e.g. [\"CS360\",\"CS380\"]."
          }
        },
        "required": [
          "courseCodes"
        ]
      }
    }
    drop_courseAction

    Request dropping a registered course. SENSITIVE ACTION: the student must confirm in the portal before anything changes.

    View tool JSON
    {
      "name": "drop_course",
      "kind": "act",
      "impl": "imperative",
      "description": "Request dropping a registered course. SENSITIVE ACTION: the student must confirm in the portal before anything changes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "Registered course to drop."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    join_waitlistSensitive Action

    Request adding the student to the waitlist for a course that has no open seats (or leaving it). The student confirms in the portal; the result reports the queue position once applied.

    View tool JSON
    {
      "name": "join_waitlist",
      "kind": "transact",
      "impl": "imperative",
      "description": "Request adding the student to the waitlist for a course that has no open seats (or leaving it). The student confirms in the portal; the result reports the queue position once applied.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "Course code with no open seats."
          },
          "leave": {
            "type": "boolean",
            "description": "Set true to remove the student from that waitlist instead."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    get_degree_auditAction

    Return the student’s degree audit (Area Requirement Summary, Computer Science B.S.): every requirement area and item with Met / Not Met status taken from the student’s own audit snapshot, the major courses already completed, and for each open item the eligible Spring 2026–27 sections that would count toward it (or why a required course cannot be taken yet). Opens the Degree Audit page. Use this for any question about what the student still needs.

    View tool JSON
    {
      "name": "get_degree_audit",
      "kind": "act",
      "impl": "imperative",
      "description": "Return the student’s degree audit (Area Requirement Summary, Computer Science B.S.): every requirement area and item with Met / Not Met status taken from the student’s own audit snapshot, the major courses already completed, and for each open item the eligible Spring 2026–27 sections that would count toward it (or why a required course cannot be taken yet). Opens the Degree Audit page. Use this for any question about what the student still needs.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_phase1_recommendationsAnswer

    Rank real Spring 2026–27 sections (public Bucknell feed, saved snapshot — not live) against the open items in the student’s degree audit. Each result lists which open audit items it would count toward (courses that close several rank higher), prerequisites, unreserved seats, instructor permission, section footnotes and other cautions. Opens Smart Recommendations.

    View tool JSON
    {
      "name": "get_phase1_recommendations",
      "kind": "answer",
      "impl": "imperative",
      "description": "Rank real Spring 2026–27 sections (public Bucknell feed, saved snapshot — not live) against the open items in the student’s degree audit. Each result lists which open audit items it would count toward (courses that close several rank higher), prerequisites, unreserved seats, instructor permission, section footnotes and other cautions. Opens Smart Recommendations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "interests": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "security",
                "data"
              ]
            },
            "description": "Interest signals to include in ranking."
          },
          "stat227Completed": {
            "type": "boolean",
            "description": "Test switch: treat STAT 227 as completed to show how the ranking changes."
          }
        }
      }
    }
    get_scheduleAnswer

    Return the student’s registered courses with instructors, meeting times, rooms, total credits, any waitlists they are on, and the current draft if one exists.

    View tool JSON
    {
      "name": "get_schedule",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the student’s registered courses with instructors, meeting times, rooms, total credits, any waitlists they are on, and the current draft if one exists.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    plan_spring_scheduleAction

    Build up to three conflict-free Spring 2026–27 schedules from REAL sections in Bucknell’s public feed (saved snapshot): each course is paired with its required lab or recitation, sections with no unreserved seats are skipped, and courses are chosen to close as many open degree-audit items as possible. Returns, per plan, the sections with CRNs, meeting times and rooms, the audit items covered, a plan B for each course (another section or an alternative course that keeps the rest of the plan intact) and warnings (tight walks between buildings, evening exam slots, long days, two W2s, reserved seats, permission, restrictive section notes, unverified prerequisites). Shows the plans on the Smart Recommendations page. Holds no seats: Spring registration happens in Banner with the CRNs.

    View tool JSON
    {
      "name": "plan_spring_schedule",
      "kind": "act",
      "impl": "imperative",
      "description": "Build up to three conflict-free Spring 2026–27 schedules from REAL sections in Bucknell’s public feed (saved snapshot): each course is paired with its required lab or recitation, sections with no unreserved seats are skipped, and courses are chosen to close as many open degree-audit items as possible. Returns, per plan, the sections with CRNs, meeting times and rooms, the audit items covered, a plan B for each course (another section or an alternative course that keeps the rest of the plan intact) and warnings (tight walks between buildings, evening exam slots, long days, two W2s, reserved seats, permission, restrictive section notes, unverified prerequisites). Shows the plans on the Smart Recommendations page. Holds no seats: Spring registration happens in Banner with the CRNs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mustInclude": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Course codes the student wants in every plan, e.g. [\"CSCI204\"]."
          },
          "maxCourses": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6,
            "description": "Number of credit-bearing courses (default 4)."
          },
          "maxCredits": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 6,
            "description": "Bucknell course credits (most courses are 1.0; default 4.5)."
          },
          "earliestStart": {
            "type": "string",
            "description": "24h time such as \"10:00\" — no weekly class earlier."
          },
          "latestEnd": {
            "type": "string",
            "description": "24h time such as \"17:00\" — no weekly class later."
          },
          "avoidDays": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri"
              ]
            },
            "description": "Weekdays to keep free of weekly classes."
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "security",
                "data"
              ]
            },
            "description": "Interest signals that break ties."
          }
        }
      }
    }
    explain_sectionAnswer

    Facts about one Spring 2026–27 course section for a plain-language explanation: meeting times (marking evening exam slots that are not weekly), required labs or recitations and their times, every designation code with its meaning, reserved vs unreserved seats, instructor permission, the section footnote verbatim with flags (restricted to certain students, preference given, prerequisite named, cross-listed), other sections, and which of the student’s open audit items it would count toward. Use it when the student asks what a note, code or restriction means or whether it affects them.

    View tool JSON
    {
      "name": "explain_section",
      "kind": "answer",
      "impl": "imperative",
      "description": "Facts about one Spring 2026–27 course section for a plain-language explanation: meeting times (marking evening exam slots that are not weekly), required labs or recitations and their times, every designation code with its meaning, reserved vs unreserved seats, instructor permission, the section footnote verbatim with flags (restricted to certain students, preference given, prerequisite named, cross-listed), other sections, and which of the student’s open audit items it would count toward. Use it when the student asks what a note, code or restriction means or whether it affects them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "courseCode": {
            "type": "string",
            "description": "Course code such as CSCI204 or \"LAMS 160\"."
          },
          "section": {
            "type": "string",
            "description": "Section number such as \"01\". Omit for the first section."
          }
        },
        "required": [
          "courseCode"
        ]
      }
    }
    prepare_advisor_summaryAction

    Prepare a one-page summary for the student’s advisor meeting: degree-audit progress and open items, the chosen Spring plan (sections, CRNs, times, what each counts toward), plan B, schedule warnings and a list of questions to ask (double counting, unverified prerequisites, permission, W2 timing, required courses not offered in Spring). Opens it on screen with Print and Copy buttons. Call plan_spring_schedule first if the student wants a plan included.

    View tool JSON
    {
      "name": "prepare_advisor_summary",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare a one-page summary for the student’s advisor meeting: degree-audit progress and open items, the chosen Spring plan (sections, CRNs, times, what each counts toward), plan B, schedule warnings and a list of questions to ask (double counting, unverified prerequisites, permission, W2 timing, required courses not offered in Spring). Opens it on screen with Print and Copy buttons. Call plan_spring_schedule first if the student wants a plan included.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "planNumber": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "description": "Which plan to include (1–3). Defaults to the plan on screen."
          }
        }
      }
    }
    update_preferencesAction

    Save the student’s advising preferences so later recommendations respect them: interests, credit cap, earliest start, latest end, days to keep free. Only call when the student asks to change their defaults.

    View tool JSON
    {
      "name": "update_preferences",
      "kind": "act",
      "impl": "imperative",
      "description": "Save the student’s advising preferences so later recommendations respect them: interests, credit cap, earliest start, latest end, days to keep free. Only call when the student asks to change their defaults.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "interests": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "security",
                "web",
                "data",
                "core",
                "ethics",
                "business",
                "design"
              ]
            }
          },
          "maxCredits": {
            "type": "integer",
            "minimum": 1,
            "maximum": 21
          },
          "earliestStart": {
            "type": "string",
            "description": "24h time such as \"10:00\"."
          },
          "latestEnd": {
            "type": "string",
            "description": "24h time such as \"18:00\"."
          },
          "avoidDays": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri"
              ]
            }
          }
        }
      }
    }