Skip to main content
Glama
oliverhruby

EduPage MCP Server

scan_students

Read-onlyIdempotent

Discover every student visible to the logged-in EduPage account across configured schools or all schools, returning names, IDs, classes, and subdomains from cached read-only data.

Instructions

Discover all students visible to the logged-in account across the discovery scope (the configured EDUPAGE_SUBDOMAINS, or every school when unset). Read-only; uses cached data to avoid redundant API calls.

Args: None. This tool takes no arguments — the discovery scope is fixed by EDUPAGE_SUBDOMAINS and the logged-in role, both of which are environment/login state rather than per-call input.

Returns: dict: {'students': [{name, student_id, class_id, subdomain}], 'total': n}. For a parent account: their linked children in each school; for a student/teacher: classmates. One entry per student per school.

Notes: - get_my_students returns the same view for the active subdomain; clear_student_cache refreshes it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.6

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered structurally. The description adds real value beyond them: it uses cached data to avoid redundant API calls, and it clarifies the return shape and how results differ for parent vs student/teacher accounts (one entry per student per school).

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, then structured Args/Returns/Notes sections; every block earns its place. It is slightly longer than strictly necessary given the Notes section repeats the sibling relationship, but there is no filler.

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 carries the return-format burden and does so explicitly (dict with students list of name/student_id/class_id/subdomain and a total). Scope, caching behavior, and account-dependent return semantics are all covered, so an agent has everything needed to call it correctly.

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

Parameters5/5

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

The tool takes zero parameters, and the description goes beyond the empty schema by explaining WHY there are no args — scope comes from EDUPAGE_SUBDOMAINS and login role, both environment/login state rather than per-call input. That is exactly the justification an agent needs to avoid hunting for nonexistent inputs.

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?

States a specific verb (discover/scan) and resource (students), plus the precise scope: all students visible across the configured EDUPAGE_SUBDOMAINS discovery scope. It explicitly differentiates from the sibling get_my_students by noting that tool returns only the active subdomain, so an agent can distinguish the two without opening schemas.

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

Usage Guidelines4/5

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

Gives clear usage context: read-only, scope fixed by environment/role, and names the alternatives get_my_students (same view for active subdomain) and clear_student_cache (refreshes). It does not spell out an explicit when-not-use rule, but the contrast with get_my_students effectively signals the selection condition.

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