Skip to main content
Glama

Расписание студента по email

ruz_get_my_schedule
Read-onlyIdempotent

Retrieves an HSE student's class schedule by corporate email for a specified date range or number of days ahead. Requires the HSE campus network or VPN.

Instructions

Расписание занятий студента ВШЭ по его корпоративному email (login@edu.hse.ru) на daysAhead дней начиная со startDate (по умолчанию с сегодня). Использует API RUZ, который отдаёт данные только из внутренней сети ВШЭ (Wi-Fi HSE.Student на кампусе или VPN) — вне сети запрос вернёт ошибку.

Input Schema

NameRequiredDescriptionDefault
emailYesКорпоративный email студента, напр. ivanov@edu.hse.ru
languageNoЯзык названий дисциплин, аудиторий и т.п.: ru или enru
daysAheadNoСколько календарных дней получить, начиная со startDate (по умолчанию с сегодня)
startDateNoПервый день периода, ГГГГ-ММ-ДД по московскому времени (можно в прошлом). По умолчанию сегодня

Output Schema

NameRequiredDescriptionDefault
toYesПоследний день периода включительно, ГГГГ-ММ-ДД
fromYesПервый день периода, ГГГГ-ММ-ДД
lessonsYes
studentYesСтудент из RUZ studentinfo: id, ФИО (fio) и info

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.2.3
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / daysAhead / description
      Previous value: -"На сколько дней вперёд от сегодня получить расписание"New value: +"Сколько календарных дней получить, начиная со startDate (по умолчанию с сегодня)"
    • addedInput schema / properties / email / pattern
      Added value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    • addedInput schema / properties / language
      Added value: +{
      +  "default": "ru",
      +  "description": "Язык названий дисциплин, аудиторий и т.п.: ru или en",
      +  "enum": [
      +    "ru",
      +    "en"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / startDate
      Added value: +{
      +  "description": "Первый день периода, ГГГГ-ММ-ДД по московскому времени (можно в прошлом). По умолчанию сегодня",
      +  "format": "date",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +  "type": "string"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "from": {
      +      "description": "Первый день периода, ГГГГ-ММ-ДД",
      +      "type": "string"
      +    },
      +    "lessons": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "auditorium": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "beginLesson": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "building": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "date": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "dayOfWeekString": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "discipline": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "endLesson": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "group": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "kindOfWork": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "lecturer": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "lecturer_rank": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "lecturer_title": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "note": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "stream": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "subGroup": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "url1": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "url1Description": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "url2": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          },
      +          "url2Description": {
      +            "type": [
      +              "string",
      +              "number"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "student": {
      +      "additionalProperties": false,
      +      "description": "Студент из RUZ studentinfo: id, ФИО (fio) и info",
      +      "properties": {
      +        "fio": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "number"
      +        },
      +        "info": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id"
      +      ],
      +      "type": "object"
      +    },
      +    "to": {
      +      "description": "Последний день периода включительно, ГГГГ-ММ-ДД",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "student",
      +    "from",
      +    "to",
      +    "lessons"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, openWorld, non-destructive), the description discloses a critical behavioral trait: the RUZ API is only reachable from the HSE internal network or VPN, and requests from outside will fail. This is exactly the kind of operational context an agent needs to avoid a failed call.

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?

Two sentences, front-loaded with the purpose and followed by the crucial network constraint. Slight redundancy in restating the default start date that the schema already covers keeps it from a 5, but overall it is efficient and well-structured.

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?

The description covers purpose, date range behavior, and the decisive network prerequisite, and an output schema exists so return values need not be explained. It is missing explicit sibling differentiation, but otherwise complete for a read-only retrieval tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including email format, language enum, daysAhead range, and startDate default. The description mentions daysAhead and startDate but adds no semantics beyond what the schema provides; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieves a student's class schedule for HSE by corporate email over a date range. The scope is clear, but the description never distinguishes this tool from its sibling ruz_get_schedule, which an agent may confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the tool name and the email parameter; the description gives no explicit guidance on when to use this tool versus ruz_find_person or ruz_get_schedule. The network prerequisite is useful but is a behavioral constraint, not usage guidance.

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