Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VTOP_BASE_URLNoBase URL for the VTOP server.https://vtop.vitbhopal.ac.in/vtop
VTOP_PASSWORDYesYour VTOP password.
VTOP_USERNAMEYesYour VTOP registration number (username).
VTOP_PROXY_URLNoResidential proxy URL. Useful to avoid Google reCAPTCHA when running from datacentre IPs.
VTOP_CAPTCHA_DIRNoDirectory where captcha JPEG files are written. Defaults to %TEMP%\vtop-mcp-captcha\ on Windows.
VTOP_CAPTCHA_OPENNoSet to "1" to make the server open the captcha image in a viewer automatically. Experimental; for local single-user use only.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_captchaA

Step 1 of login: fetch a CAPTCHA image from VTOP. Returns the image AND saves it to a file. CRITICAL - never invent the characters. If no image is rendered above, you cannot read the captcha: do NOT guess. Open captchaFile from the response and read that, or ask the user to open it and tell you the characters. A guess is always wrong and counts as a real failed login attempt against the student's account. After reading it, immediately call login — the image is only valid for 30-60 seconds. Failures come back as structuredContent.error.code (e.g. RECAPTCHA_REQUIRED, CAPTCHA_NOT_FOUND) with an ordered recovery plan.

loginA

Step 2 of login: submit credentials + the captcha you just OCR'd. Username/password are optional — if VTOP_USERNAME and VTOP_PASSWORD are set as env vars on the MCP server, omit them and the server uses the stored values. Only ask the user for credentials if the server reports they're not configured. Failures return structuredContent.error with a code and needsUserInput; on CREDENTIALS_REQUIRED the captcha you already hold is still valid, so reuse it rather than fetching a new one.

session_statusA

Report the current VTOP session state: whether a session is active, the registration number, whether credentials are configured, and (with probe: true) whether VTOP still considers the session valid. Call this before logging in if unsure, or when a data tool returns NOT_AUTHENTICATED. Read-only — it never changes anything. Does not require login.

get_semestersA

Get list of available semesters (id + name). IMPORTANT ORDERING: VTOP returns these NEWEST-FIRST -- index 0 is the current (in-progress) term and the LAST element is the OLDEST. To reach the most recent COMPLETED term use index 1, not the last element; taking the last element silently returns the student's first semester. Most data tools accept the semesterId, but they also default to the current semester if omitted — so you usually don't need to call this unless the user asks about a specific past semester. On failure the response carries structuredContent.error.code; if it is NOT_AUTHENTICATED, follow the error's recovery array (get_captcha then login) and retry this tool.

logoutA

Logout from VTOP and clear the session.

get_attendanceA

Get attendance records for all courses (attended/total/percentage per course). If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. semesterId is optional; omit for current semester. Requires login.

get_attendance_detailA

Per-class attendance for one course: every posted session with its date and outcome (Present / Absent / On Duty). Ask 'was I present on 2026-10-12 in BCSE302L?' with courseCode + date; omit date to list all posted sessions. A date with no row means VTOP posted nothing for it — NOT POSTED, never absent. If the response contains NOT_AUTHENTICATED, call get_captcha then login then retry. Requires login.

get_timetableA

Get class timetable: registered courses with slots, venues, faculty and credits, plus the actual weekly schedule. Each course carries a sessions array with every meeting it has (day, slot, THEORY/LAB, start and end time, venue) — a course with two slots a week appears twice. The top-level day/startTime/endTime mirror the first session. Use get_today_classes for 'what do I have today' (it applies the academic calendar and day-order overrides). semesterId is optional; omit for current semester. If the response contains NOT_AUTHENTICATED, follow the error's recovery array and retry. Requires login.

get_marksA

Get internal marks/assessment scores: per component the raw marks, max marks, weightage (the marks that component contributes to the internal total), max weightage, class average and status. Use get_internal_totals instead when you want the TOTAL for each subject rather than the component breakdown. semesterId is optional; omit for current semester. If the response contains NOT_AUTHENTICATED, follow the error's recovery array and retry. Requires login.

get_internal_totalsA

TOTAL internal marks for every subject, out of the 100-mark course scale (internal assessment 40 = lab/class 35 + attendance 5; CAT-I 15 + CAT-II 15 = 30; Term End Examination 30). ORDER MATTERS when reporting: give every subject with its full component breakdown FIRST, then the totals at the END. For each course: scoredSoFar (exact), percentOfScale, and outstanding - components VTOP has not published yet, since it omits them rather than showing zero. Your marks can only rise. Where the attendance component is still outstanding, attendanceForecast projects what your current attendance is worth out of 5 — remember these marks are only awarded after the last instructional day, so it is a projection, not a settled score. outstanding means no mark is published yet: usually the faculty has not entered it, which is not the same as the component being unconducted. The letter grade is awarded RELATIVELY against the class average, so the 100 total does not map directly to an S/A/B. semesterId is optional; omit for current semester. Requires login.

get_exam_scheduleA

Get exam schedule (CAT1/CAT2/FAT dates, timings, venues, seat numbers, row/col). If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. semesterId is optional; omit for current semester. Requires login.

get_grade_historyA

Get cumulative grade history (CGPA, total earned credits, per-semester GPA + courses + grades, grouped by exam month). If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. Requires login.

get_semester_gradesA

Get grades for a specific semester (course-wise letter grades + GPA). IMPORTANT: for a semester still in progress VTOP publishes no results, and this tool then returns published: false, gpa: null and an explanatory message — that is NOT a GPA of 0. semesterId is optional; omit for current semester. If the response contains NOT_AUTHENTICATED, follow the error's recovery array and retry. Requires login.

get_profileA

Get student profile (name, registration number, application number, program, branch, school, email, phone, blood group). If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. Requires login.

get_curriculum_progressA

Get degree progress: total credits earned vs required (and remaining), per-category breakdown (Foundation Core, Discipline Core, Discipline Electives, Open Electives, Projects/Internship, etc.), per-basket completion (HSM Elective, Foreign Language, Extra-curricular, ...), CGPA, and grade-letter counts across all semesters. Use this for any 'how many credits left?', 'how close am I to graduating?', 'which baskets do I still need?', or 'how many of each grade have I gotten?' questions. If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. Requires login.

calculate_attendanceA

Attendance / bunk calculator. Per course: current %, whether you're safe (strictly above 74.0% by default — 74.0 is debarred; override via targetPercent), how many more classes you can skip ('bunkBuffer'), and how many to attend to recover ('classesToRecover'). For the key real use case — 'I'm at the line; if I skip today can I still make 75% by the time attendance closes?' — pass untilDate (the attendance-closing date; ASK THE USER for it) or toTermEnd: true to project to the last instructional day of the term automatically, plus bunkDates (the days you'd skip, e.g. today's date). Using the timetable + academic calendar (holidays, working Saturdays / day-orders) it returns per course: upcomingSessions until the deadline, ifAttendAllPercent/ifSkipAllPercent, maxSkippableInRange, mustAttendInRange, canBeSafeByDeadline, and — when bunkDates is given — plannedBunk (your final % and whether you're still safe if you skip exactly those days and attend everything else). Also returns a perDay breakdown of which classes fall on each upcoming day. If the response contains NOT_AUTHENTICATED, call get_captcha then login then retry. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if it reports credentials missing, ask the user for them. Requires login.

get_today_classesA

List the classes scheduled for today (or a given date) with their time and venue, accounting for the academic calendar — returns a holiday/no-class result on non-instructional days, and follows the correct day-order on working Saturdays (e.g. a Saturday running the Thursday timetable). Pass date (ISO YYYY-MM-DD) to check another day. If the response contains NOT_AUTHENTICATED, call get_captcha then login then retry. Requires login.

get_calendarA

Look up the academic calendar: holidays, events (e.g. TechnoVIT), working Saturdays / day-orders, and which days are instructional. Use query to find a named event/holiday (e.g. 'technovit', 'pongal'), month ('YYYY-MM') to list a month, or holidaysOnly for just the no-class days; with no filter it returns the semester's notable days (holidays + working-Saturday day-orders). Festivals/holidays belong to the term they fall in, so if a query finds nothing, call get_semesters and retry with that semester's id. If the response contains NOT_AUTHENTICATED, call get_captcha then login then retry. Requires login.

get_semester_infoA

Term bounds for a semester: id, name, first/last instructional day from the academic calendar, instructional-day totals, days remaining, and whether teaching is over. When teachingOver is true, no more classes can occur — attendance figures are final (locked), not projectable. Use this to answer 'when does my semester end?' or 'how many teaching days are left?'. Requires login.

check_pass_eligibilityA

Answer 'will I pass this course?' for every subject, using VIT Bhopal's actual pass rules rather than guessing. ALWAYS quote BOTH scales when asked what to score. Each CAT is a 50-mark paper needing 20, which is worth 6 of the 15 that CAT carries on the 100-point course scale. The TEE (FAT) is a 100-mark paper worth 30 of 100, and must reach 40 - worth 12 of those 30. So the canonical answer is '20/50 in each CAT, worth 6 of 15 each, and 40/100 in the TEE, worth 12 of 30'. Rules applied: passing is 80 raw marks out of 200 (CAT-I 20 + CAT-II 20 + TEE 40), equivalently CAT-I + CAT-II + TEE >= 80 raw. The TEE's own end goal is 40 of 100, and whatever the two CATs fall SHORT of 40 BETWEEN THEM is added to it - this is net, so a CAT above 20 offsets one below it (10 and 10 needs the TEE at 60, but 30 and 10 needs only 40). There is no re-test. Attendance must be >= 75.0% exactly to sit any exam. READ teeRequiredRaw AS THE ANSWER to 'what do I need in the TEE'. Do NOT present totalIfTeeClearedAtMinimum as a requirement - it is an OUTCOME: the course total you would finish with by scoring exactly the TEE minimum, i.e. bankedSoFar + teeRequiredMarks. The attendance marks are excluded from it because they are a projection awarded only after the last instructional day. Working-day and class counts come from the academic calendar and timetable, so holidays and day-order Saturdays are accounted for. If the calendar cannot be read, upcomingClasses is null and calendarAvailable is false with a calendarNote explaining why - that means UNKNOWN, not zero. semesterId is optional; omit for current semester. Requires login.

get_student_profileA

Full student profile: the five accordion sections of VTOP's profile page (personal, educational, family, proctor, hostel information), exactly as VTOP groups them with verbatim values. Use this instead of get_profile when you need anything beyond name/programme/branch/email/phone — date of birth, addresses, board/school, parents, proctor contact, hostel block and room. Privacy: this returns sensitive PII verbatim — keep it in the student's own session, don't paste it elsewhere. If the response contains NOT_AUTHENTICATED, immediately call get_captcha then login then retry this tool. login auto-uses VTOP_USERNAME/VTOP_PASSWORD env vars if set; if login replies that credentials are missing, ask the user for their VTOP username and password and call login again with them. Requires login.

get_acknowledgmentsA

Admission document checklist: which joining documents VTOP shows as Submitted, Not Applicable, or Not Submitted (e.g. mark lists, transfer/migration/conduct certificates, affidavits). A 'Not Submitted' line is actionable — it names a document the student still owes. Read-only. Requires login.

get_proctor_detailsA

Proctor (faculty mentor) contact details: faculty id, name, designation, school, department, cabin, email, intercom and mobile. Same data as the proctor section of get_student_profile, via the standalone proctor page. Read-only. Requires login.

get_fee_receiptsA

Fee payment receipts: receipt number, date, amount and campus for every payment VTOP has on record. Pass receiptNo (from a previous call) to get that receipt's detail breakdown instead of the list. Amounts are as printed; no currency conversion is applied. Read-only. Requires login.

get_curriculum_basketsA

Programme curriculum baskets: every category (Programme Core, Programme Elective, University Core/Electives, …) with its courses — code, title, type, version, L/T/P/J and credits. Each row also carries vtopMarkedCompleted, VTOP's own completion marking, reported verbatim. Use get_pending_subjects when you want completed-vs-left rather than the raw baskets. Read-only. Requires login.

get_course_basketA

Which curriculum basket a course belongs to: pass a course code (e.g. 'CSD3002') or a title fragment (e.g. 'salesforce') and get back every matching catalogue course with its basket (Programme Core, Programme Elective, …), credits and completion state. Works for courses you have never taken — it reads the programme catalogue, not your records. Read-only. Requires login.

get_pending_subjectsA

Subjects still to complete: the curriculum baskets minus grade-history passes, with names and credits. Completion is decided ONLY by course code against the latest grade on record (a pass is any grade except F; N never counts as a pass) — period labels are never compared, because timetable labels are instructional semesters while grade-history labels are result-publication months. VTOP's own row marking is reported alongside, and any disagreement lands in discrepancies rather than being resolved silently. For elective baskets only N of M credits are required, so every uncompleted basket course is listed and the category totals say how far short. Read-only. Requires login.

get_leave_type_rulesA

Diagnostic: ask VTOP what rules apply to each hostel leave type (max days, limits, required fields) by triggering the same request the leave-type dropdown makes when you change the selection. READ-ONLY - this never submits a leave application. It exists because the day limits are server-side rules that are otherwise only discoverable by submitting and being rejected (e.g. HOME TURN caps at 14 days). Omit leaveCode to probe every type. Returns the raw text VTOP replies with for each, so limits can be read directly rather than guessed.

get_leave_typesA

List the hostel leave types VTOP currently offers, read from the live leave form (so a newly added or retired type is reflected rather than assumed). Use the CODE, not the label. Also states the 6 PM in-time rule: it applies to OG1 (Day Outing) only, and 18:00 itself is allowed. Requires login.

get_leave_statusA

Get hostel leave applications and their approval status: leave id, type, place, from/to, status (reported verbatim, e.g. REQUEST RAISED / PROCTOR APPROVAL PENDING / REQUEST APPROVED), approver remarks, and gate-pass OUT/IN flags where VTOP publishes them. Read-only. Requires login.

get_leave_historyA

Full hostel leave history: every leave application on record — id, type, place, reason, from/to, status, approver remarks, and gate-pass OUT/IN state. Use this for 'what leaves have I taken?' or past-leave questions; use get_leave_status for the current state. Statuses are reported exactly as VTOP prints them. Read-only. Requires login.

apply_leaveA

Apply for hostel leave on VTOP. THIS WRITES TO VTOP and creates a real request for your proctor, so it is deliberately two-step. Call 1 (preview): pass the details with confirm OMITTED or false. Nothing is sent. You get back the normalised values, every rule that fired, any classes the leave would make you miss, and a previewToken. Call 2 (submit): repeat the SAME details plus confirm=true and the previewToken. The token is server-signed, single-use and expires after 10 minutes, so if anything changed since the preview the submission is refused and you must preview again. Always show the user the preview and get their agreement before calling with confirm=true. Never invent a previewToken or set confirm=true on a first call. Rules enforced before submitting: OG1 (Day Outing) must return by 18:00 inclusive; dates must be ISO YYYY-MM-DD and not in the past; to-date cannot precede from-date; visiting place is required and capped at 150 characters; reason is required. Times are normalised, so '6:00 PM' becomes '18:00'. Requires login.

cancel_leaveA

Withdraw a hostel leave application on VTOP. THIS WRITES TO VTOP, so it is deliberately two-step like apply_leave. Call 1 (preview): pass leaveId with confirm OMITTED or false. Nothing is withdrawn. You get back the leave's current record — type, dates, and approval status exactly as VTOP prints it — plus whether VTOP publishes a withdraw control for it, and a previewToken. Call 2 (withdraw): repeat the SAME leaveId plus confirm=true and the previewToken. The token is bound to this exact leave id and caller. Always show the user the preview — including the approval state — and get their agreement before calling with confirm=true. An already-approved leave may no longer offer a withdraw control; the preview says so. Never invent a previewToken or set confirm=true on a first call. Requires login.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 33 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and the descriptions proactively resolve near-overlaps (e.g. get_profile vs get_student_profile, get_marks vs get_internal_totals, get_leave_status vs get_leave_history, get_semesters vs get_semester_info). A few clusters remain somewhat confusable (the four curriculum tools and four marks/grades tools), but the descriptions generally steer correctly.

Naming Consistency4/5

The set is uniformly snake_case with predictable verb_noun naming (get_*, apply_leave, cancel_leave, calculate_attendance, check_pass_eligibility). The only deviations are the verb-less auth tools (login, logout, session_status), which are reasonable given their role.

Tool Count3/5

33 tools is heavy and sits in the over-large range, with some genuine redundancy (get_profile/get_student_profile, get_marks/get_internal_totals, three overlapping curriculum tools). However, the portal's breadth (auth, attendance, marks, curriculum, profile, fees, hostel leave, exams) justifies a large surface more than most.

Completeness4/5

Coverage is broad and lifecycle-aware: read access across attendance, marks, grades, curriculum, profile, fees and exams, plus a full two-step apply/cancel leave flow and a full auth flow. Only minor gaps exist (write operations for functions outside hostel leave, no exam re-evaluation/registration), which agents can work around.

Maintenance

ActivityMaintained
ResponsivenessResponsive