Skip to main content
Glama
jasonko
by jasonko

add_student

Add a student to a school roster using school ID, name, and grade, then confirm the student exists after creation.

Instructions

Create a new student on a school's roster. Requires PS_ENABLE_WRITES.

Use list_grades(school_id) to find the grade_id. The new student's id is not returned by ParentSquare — call list_students afterward to retrieve it.

The roster is read back after the write, so the result says whether the student actually exists. If ParentSquare ever returns a 5xx here, do not retry on the status code alone: its error page is rendered after the record is saved, so the student may well have been created, and there is no API route to delete a duplicate.

Args: school_id: School ID first_name: Student first name last_name: Student last name grade_id: Grade ID (from list_grades) student_sis_id: Optional SIS/external student ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
grade_idYes
last_nameYes
school_idYes
first_nameYes
student_sis_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and excels: it discloses that the created id is not returned, that the roster is read back to verify success, and that a 5xx error may still mean the student was created because the error page renders after saving. It also flags that there is no delete route for duplicates, which is critical non-obvious behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: the purpose is front-loaded, the workflow advice is actionable, and the 5xx caveat is essential. There is no filler or vague boilerplate.

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 tool with no annotations and low schema coverage, the description covers everything needed: precondition (PS_ENABLE_WRITES), prerequisite lookup (list_grades), post-write retrieval (list_students), failure semantics, parameter meaning, and duplicate-deletion risk. An output schema exists, so detailed return-value documentation is not necessary.

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?

Schema coverage is 0%, so the description must compensate, and it does. Each parameter gets a one-line meaning, including the crucial note that grade_id comes from list_grades and that student_sis_id is optional and external. It could add more constraints (e.g., uniqueness expectations), but the provided semantics go well beyond the bare schema titles.

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: 'Create a new student on a school's roster.' This clearly distinguishes it from sibling tools like add_parent, add_staff, and edit_student, and the focus on roster creation is immediately unambiguous.

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?

The description provides concrete usage guidance: it requires PS_ENABLE_WRITES, tells the agent to use list_grades(school_id) to obtain grade_id, and instructs to call list_students afterward because the new id is not returned. It does not explicitly state when-not-to-use this tool versus edit_student, but the creation-vs-edit distinction is strongly implied.

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