Skip to main content
Glama
oliverhruby

EduPage MCP Server

get_subdomains

Read-onlyIdempotent

List school subdomains available to the logged-in EduPage account, showing per-school login, session, role, and 2FA status. Read-only.

Instructions

List the school subdomains available to the logged-in account and the server's session status per school, plus overall login state. Read-only.

Args: None. This tool takes no arguments — the active credentials and EDUPAGE_SUBDOMAINS determine the result entirely.

Returns: dict with: - subdomains: list of school subdomains available to the account. For a logged-in parent account this is live-discovered (via edupage-api's get_subdomains, read from the profile page) and includes schools with no session yet; it is limited to EDUPAGE_SUBDOMAINS when that is set (allowlist), otherwise every accessible school is listed. For student/teacher accounts or when not logged in it falls back to the configured / current sessions. - schools: per subdomain {subdomain, logged_in, role (student/parent/teacher), user_id, two_factor_pending, active}. When EDUPAGE_SUBDOMAINS is set it contains only the in-scope schools (sessions for unconfigured schools are never listed). - active_subdomain: the school used by tools without an explicit subdomain argument. - failed_logins: subdomain → error for login attempts that failed or are blocked (e.g. pending 2FA at startup). - env_*_set: whether EDUPAGE_USERNAME / EDUPAGE_PASSWORD / EDUPAGE_SUBDOMAINS are configured.

Notes: - Use this instead of the former auth_status / user_id tools. - To connect to a discovered subdomain that has no session yet, pass it to login_all. - A school with two_factor_pending: True needs two_factor_finish.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.5.1

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: live-discovery via the profile page for parent accounts vs fallback for student/teacher/unauthenticated, the allowlist effect of EDUPAGE_SUBDOMAINS, and the semantics of failed_logins (blocked login attempts, pending 2FA). This is substantive disclosure, not a restatement of the annotations.

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?

Front-loaded with purpose and cleanly sectioned into Args/Returns/Notes, so it is easy to scan. However the Returns block is dense and somewhat over-explained (e.g. repeated allowlist caveats in both subdomains and schools), which is more than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must document the return shape, and it does so thoroughly: subdomains, per-school session fields, active_subdomain, failed_logins, and env_*_set. Given the role-dependent branching behavior, this level of detail is exactly what an agent needs to interpret results correctly.

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

Parameters4/5

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

Zero parameters means baseline 4. The description reinforces that no arguments are taken and explains that the result is determined entirely by active credentials and EDUPAGE_SUBDOMAINS, which is useful framing beyond the empty schema, but there is no parameter syntax to clarify.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the school subdomains available to the logged-in account and the server's session status per school.' It explicitly enumerates what is returned (subdomains, session status, login state) and points back to the tools it supersedes ('Use this instead of the former auth_status / user_id tools'). An agent can distinguish it from the login/switch siblings without opening the schema.

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

Usage Guidelines5/5

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

It names the alternatives and the conditions that select them: use login_all to connect to a discovered subdomain with no session, and use two_factor_finish when two_factor_pending is True. It also instructs replacement of the deprecated auth_status/user_id tools. When-to-use is explicit rather than inferred.

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