Skip to main content
Glama

Make a daily school page

make_school_digest
Read-onlyIdempotent

Use this when the user wants a printable daily school page from a Canvas snapshot they already have, for example "make today's page from this Canvas JSON". Returns: one section per child with grades, due today, the next 7 days, missing and late, recent scores, announcements, attendance, changes, attention flags, page_text and html. Input tips: send date (YYYY-MM-DD), run_at (ISO time) and canvas, the Canvas API JSON with observees [{id, name}], courses [{id, name, teachers, enrollments}], assignments as an object keyed by course id, and announcements. Optional: timezone (IANA name), infinite_campus {students: [...]}, parentsquare_emails for ParentSquare mail, notice_emails for any other school notice, previous (yesterday's full request, same shape) for the changes block, and summaries as up to 3 lines per child name. Not for: fetching live Canvas data, logging in, storing grades, or answering without a snapshot (ask the user to export one). Never send a token or a password.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesThe report day in the school time zone, as YYYY-MM-DD, such as "2026-10-08".
canvasYesCanvas API JSON from a parent observer account, such as {"observees": [{"id": 1, "name": "River Sample"}], "courses": [...], "assignments": {"11": [...]}, "announcements": []}. No token.
run_atYesWhen the snapshots were taken, as an ISO time, such as "2026-10-08T12:00:00Z".
previousNoOptional: yesterday's full request with its own date, run_at, timezone and canvas (and infinite_campus, if any), for the changes block.
timezoneNoA valid IANA time zone name for the school, such as "America/Chicago" (the default).
summariesNoOptional lines you wrote, keyed by child name as in observees, 1 to 3 lines of up to 180 characters each. The tool does not call a model.
notice_emailsNoAny other school notice emails, same format and limits. Plain text with From, Subject and Date headers, a blank line, then the body. Up to 30 emails of 12000 characters each. Optional.
infinite_campusNoOptional Infinite Campus grade snapshot. Each student is matched to a Canvas observee by firstName and lastName.
parentsquare_emailsNoParentSquare notice emails. Plain text with From, Subject and Date headers, a blank line, then the body. Up to 30 emails of 12000 characters each. Optional.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYes
htmlYesThe printable page as a full HTML document.
notesNo
statusYes
storedYesAlways false: nothing is stored.
childrenYes
timezoneYes
page_textYesThe page as plain text. Show this to the user.
previous_dateYesDate of the previous snapshot, or null when none was sent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent/closed-world profile, so the bar is lower; the description still adds real context: the snapshot must pre-exist, the tool never calls a model, and a hard security rule ('Never send a token or a password'). It stops short of describing failure modes for malformed Canvas JSON, which keeps it at 4 rather than 5.

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?

Well front-loaded and clearly segmented ('Use this when', 'Returns:', 'Input tips:', 'Not for:'), so an agent can scan the trigger and the exclusions first. The input-tips sentence duplicates schema text that is already 100% documented, which is a modest amount of redundancy for a 9-parameter tool.

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?

For a complex tool with 9 parameters, nested Canvas/Infinite Campus payloads and an output schema, the description covers prerequisites, required vs optional inputs, the previous-snapshot mechanism and hard exclusions. Return values are also enumerated, though the output schema already handles that.

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 baseline is 3. The 'Input tips' paragraph largely restates the schema (date format, IANA timezone, 3-line summaries, ParentSquare/notice email formats); its only extra value is framing `canvas` as the observer-account JSON and `previous` as the driver of the changes block, both of which the schema also states.

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 opening sentence states a specific verb and artifact — produce a printable daily school page — and names the required input (a Canvas snapshot the user already has), plus a concrete trigger phrase. The scope (per-child sections, deterministic rendering) is unambiguous even though the siblings are unrelated tools.

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?

Explicit when-to-use with a sample utterance, plus an explicit 'Not for' list (fetching live Canvas data, logging in, storing grades, answering without a snapshot) and a prescribed fallback ('ask the user to export one'). Nothing about invocation conditions is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.