IIITH Mess MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MESS_AUTH_KEY | Yes | Your auth key from mess.iiit.ac.in (Settings > Auth Keys) or a session cookie |
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 |
|---|---|
| mess_cas_login_infoA | Get instructions for IIIT student CAS login (browser-only, cannot be called via API/AJAX). Returns: Step-by-step instructions for obtaining a session cookie |
| mess_login_msitA | Login as an MSIT student or intern using email + password. Args: params: user (email address), password Returns: JSON User object. 'session_hint' contains the session cookie value to pass as 'session' in subsequent tool calls. |
| mess_get_meB | Get the currently logged-in user's profile. Args: params: auth_key or session Returns: JSON User object (id, name, email, roll_number, token, attributes, tags) |
| mess_get_auth_keysA | Get all auth keys for the current user (including expired ones). Args: params: auth_key or session Returns: JSON array of AuthKey objects (name, user_id, created_at, expires_at) |
| mess_create_auth_keyA | Create a new API auth key. Key names must be unique. Args: params: auth_key/session, name (unique friendly name), expiry (YYYY-MM-DD) Returns: JSON AuthKey including the key value — save this, it won't be shown again. Returns 409 if a key with the same name already exists. |
| mess_get_auth_key_infoB | Get info about the auth key currently in use (passed in Authorization header). Args: params: auth_key (the key to inspect) Returns: JSON AuthKey details. Returns 401/403 if the key is expired. |
| mess_delete_auth_keyA | Delete an auth key by its name (not its value). Identified by name in the URL path. Args: params: auth_key/session for auth, name = the friendly name of the key to delete Returns: JSON status 204 on success |
| mess_reset_qr_tokenB | Reset the user's QR code token (shown at the mess counter). Args: params: auth_key or session Returns: JSON { token: string } — new URL-safe base64 token |
| mess_generate_reset_password_otpA | Send a password reset OTP to the given email. Only for MSIT/intern accounts. Rate limited to once per minute. Returns 204 even if email is invalid. Args: params: email address Returns: JSON status 204 on success |
| mess_complete_password_resetA | Complete password reset with OTP + new password. Args: params: email, otp (6-digit string e.g. '123456'), password (new password) Returns: JSON status 204 on success |
| mess_get_infoA | Get info about all messes (name, short_name, color, tags, rating, billing_id). No auth required. Returns: JSON array of MessInfo objects |
| mess_get_menusA | Get the food menu for all messes on a date. No auth required. Use to answer "what's for lunch today?", "what's on the menu this week?", "what is [mess] serving for dinner?". Menu structure per mess: { day_name: { meal: [{ category, name }] } } Menus are stored week-wise (Sunday-anchored). effective_from always falls on a Sunday. Args: params: on (YYYY-MM-DD, optional, defaults to today) Returns: JSON array of { mess, updated_at, effective_from, days } |
| mess_get_ratesA | Get mess rates (in paise) for a meal on a date, grouped by category. Categories: registered, unregistered, guest, extra. Args: params: meal (required), on (YYYY-MM-DD, optional) Returns: JSON { category: [{ mess, day, rate }] } — rate in paise |
| mess_get_capacitiesA | Get mess capacities for a meal on a date, grouped by category. Args: params: meal (required), on (YYYY-MM-DD, optional) Returns: JSON { category: [{ mess, available, capacity }] } |
| mess_get_registrationsA | Look up what meals the user is registered for over a date range. Use this to answer: "what am I eating today/tomorrow/this week?", "show my registrations", "which meals do I have booked?". Max range: 2 months. Both dates are inclusive. Args: params: auth_key/session, from (YYYY-MM-DD), to (YYYY-MM-DD) Returns: JSON array of MealRegistration objects (meal_date, meal_type, meal_mess, category, user_id, registered_at, cancelled_at, availed_at, availed_price, monthly_reg) |
| mess_create_registrationA | Register the user for a meal at a specific mess on a date. Use this when the user wants to book/register for breakfast, lunch, or dinner. Fails with 403 if the registration window is closed or the mess is full. Args: params: auth_key/session, meal_date, meal_type, meal_mess, optional guests (int) Returns: JSON MealRegistration on success, or 204 if already registered |
| mess_get_registrationA | Look up the user's registration for a single date (defaults to today). Use this to answer "am I registered for lunch today?", "what mess am I going to tonight?". Only returns active (non-cancelled) registrations. If meal is omitted, returns all meals for the date as { meal_type: MealRegistration }. If date is omitted, defaults to today. Args: params: auth_key/session, optional meal, optional date (YYYY-MM-DD) Returns: JSON MealRegistration or object keyed by meal name |
| mess_skip_mealA | Mark a registration as skipped or unskipped. Skipping = user likely won't attend but is still charged. Use when out of free cancellations. Args: params: auth_key/session, meal_date, meal_type, meal_mess, skipping (bool) Returns: JSON updated MealRegistration |
| mess_cancel_registrationA | Cancel a meal registration so the user is not charged for it. Use when the user wants to cancel/drop a booked meal. Returns 403 if the cancellation window is closed, 424 if no registration exists. Args: params: auth_key/session, meal_date, meal_type Returns: JSON status 204 on success |
| mess_uncancel_registrationA | Restore a previously cancelled meal registration. Returns 424 if the registration was not cancelled. Args: params: auth_key/session, meal_date, meal_type Returns: JSON status 204 on success |
| mess_provide_feedbackA | Submit anonymous feedback for a meal. User must have availed the meal. Returns 409 if feedback already submitted, 424 if meal not availed. Args: params: auth_key/session, meal_date, meal_type, rating (1-5), optional remarks Returns: JSON status 204 on success |
| mess_get_meal_ratingA | Get the average rating for a meal at a mess on a date. If mess is omitted, returns ratings keyed by mess ID. Ratings are only visible after the feedback window closes (403 otherwise). Args: params: auth_key/session, meal (required), optional mess, optional date Returns: JSON { rating: float, count: int } or { mess_id: { rating, count } } |
| mess_get_monthly_registrationA | Get the monthly mess registration for the current user. Also returns snack availments for the month. Args: params: auth_key/session, optional month (1-12), optional year Returns: JSON { registration: MonthlyRegistration, snack_availments: [...] } |
| mess_create_monthly_registrationA | Register at a mess for an entire month. Returns 409 if already registered, 403 if window closed or mess full. Args: params: auth_key/session, month (1-12), year, mess (mess ID) Returns: JSON MonthlyRegistration object |
| mess_delete_monthly_registrationA | Delete a monthly mess registration (individual meal registrations are kept). Returns 403 if window closed. Args: params: auth_key/session, month (1-12), year Returns: JSON status 204 on success |
| mess_get_cancellations_countB | Get count of cancelled registrations for a meal in a month. Args: params: auth_key/session, meal (required), optional month, optional year Returns: JSON integer count |
| mess_get_billA | Get the user's mess bill for a month. Use to answer "how much do I owe?", "what's my bill?". Amounts are in paise — divide by 100 for rupees. May include projected future meals. Returns 404 if registrations haven't opened for that month. Args: params: auth_key/session, optional month, optional year Returns: JSON { non_projected: int, projected: int } — in paise (divide by 100 for rupees) |
| mess_get_scans_countA | Get meal availment (scan) count for a mess on a date. No authentication required. Args: params: meal (required), mess (required), optional date (YYYY-MM-DD) Returns: JSON { meal, mess, date, total: int, recent: int (last 10 min) } |
| mess_get_registered_extrasB | Get extra item registrations for the current user for a meal on a date. Args: params: auth_key/session, meal (required), optional date (YYYY-MM-DD) Returns: JSON array of ExtraRegistration objects |
| mess_create_extra_registrationA | Register for an extra item on a meal. User must have a regular registration at that mess for that meal. Cannot be modified — delete and recreate if needed. Args: params: auth_key/session, extra (item ID), meal_date, meal_type, meal_mess Returns: JSON array of ExtraRegistrationInserted objects |
| mess_delete_extra_registrationB | Delete an extra registration by its ID (passed as query param). Args: params: auth_key/session, id (extra registration ID) Returns: JSON array of remaining ExtraRegistration objects |
| mess_get_extras_in_rangeA | Get all extra registrations in a date range (max 2 months, both inclusive). Args: params: auth_key/session, from (YYYY-MM-DD), to (YYYY-MM-DD) Returns: JSON array of ExtraRegistration objects |
| mess_list_extrasA | List available extra items for a meal on a date. Some extras (same ID) may be available across multiple meals. Args: params: meal (required), optional date (YYYY-MM-DD), optional mess ID Returns: JSON array of ExtraItem objects (id, name, description, rate in paise, mess, food_tags) |
| mess_get_all_billsA | Get bill breakdown for all months with a non-zero bill. Includes food_bill, extras_bill, and infra_bill (all in paise). Divide by 100 to get rupees. Args: params: auth_key or session Returns: JSON array of { month, year, food_bill, extras_bill, infra_bill } — all in paise |
| mess_get_all_windowsA | Get all window times in seconds: cancellation, registration, feedback, extras, skip. Args: params: auth_key or session Returns: JSON { cancellation_window, registration_window, feedback_window, extras_window, skip_window } |
| mess_get_registration_windowB | Get the registration window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_cancellation_windowB | Get the cancellation window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_feedback_windowB | Get the feedback window time in seconds (time after a meal to submit feedback). Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_extras_windowA | Get the extra registration window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_skip_windowB | Get the skip window time in seconds. Args: params: auth_key or session Returns: JSON integer (seconds) |
| mess_get_registration_max_dateB | Get the maximum future date allowed for meal registration. Args: params: auth_key or session Returns: JSON date string (YYYY-MM-DD) |
| mess_get_max_cancellationsB | Get the maximum free cancellations allowed per month for a meal. Args: params: auth_key/session, meal (required) Returns: JSON integer |
| mess_get_meal_timingsA | Get meal timings (start/end times) for each mess on a date. Args: params: optional on (YYYY-MM-DD), defaults to today Returns: JSON { mess_id: [{ meal, start_time, end_time }] } |
| mess_get_preferencesB | Get all user preferences. Args: params: auth_key or session Returns: JSON UserPreferences: notify_not_registered, notify_malloc_happened, auto_reset_token_daily, enable_unregistered, nag_for_feedback, skip_malloced |
| mess_update_preferencesA | Update all user preferences (full replacement — all 5 fields required). Args: params: auth_key/session plus all 5 booleans: - notify_not_registered: remind before registration deadline - notify_malloc_happened: email on random meal allocation - auto_reset_token_daily: reset QR at 02:00 daily - enable_unregistered: allow on-spot availing at unregistered rates - nag_for_feedback: prompt after every availed meal - skip_malloced: auto-skip randomly allocated meals Returns: JSON status 204 on success |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| nutrition | Estimate nutrition breakdown for a mess meal using the menu |
| check-my-meals | Show meal registrations for a given date (today, tomorrow, or YYYY-MM-DD) |
| register-meal | Register for a meal on a specific date |
| cancel-meal | Cancel a meal registration |
| my-bill | Show the current month's mess bill in rupees |
| whats-for-lunch | Show the mess menu for a meal on a date |
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/Kallind/IIITH-Mess-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server