Skip to main content
Glama
oliverhruby

EduPage MCP Server

choose_meal

Idempotent

Order a school meal for a date and meal type by selecting a menu number. Read available menus first to pick a valid number.

Instructions

Order/choose a meal. Writes: books the selected menu for the date.

Args: date_str: YYYY-MM-DD to order for. meal_type: 'snack' | 'lunch' | 'afternoon_snack'. number: 1-based menu choice among the chooseable menus (see get_meals). subdomain: School to query (defaults to the active subdomain).

Returns: dict: {'ordered': True, meal_type, date, number}.

Notes: - Read get_meals first for the date to pick a valid number. - To cancel, use sign_off_meal.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
numberYes
date_strYes
meal_typeYes
subdomainNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.0
    • addedInput schema / properties / subdomain / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / subdomain / type
      Removed value: -"string"
  2. First observedv0.4.6

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true and openWorldHint=true, so the safety profile is covered; the description adds that it books a menu for a date and documents the prerequisite read. It does not discuss reversibility or what happens on a repeat call (relevant given idempotentHint=true), so it is strong but not exhaustive.

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?

Front-loads the one-line purpose and write semantics, then uses tidy Args/Returns/Notes sections. No sentence is filler; each adds invocation-relevant detail.

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 Returns block supplies the response shape, and the Notes cover the key prerequisite and the cancel path. For a 4-param mutation tool with annotations already disclosing safety, nothing an agent needs to call it correctly is missing.

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?

Schema description coverage is 0%, so the description carries the full burden, and it does: date_str format (YYYY-MM-DD), the enumerated meal_type values, the meaning of number (1-based choice among chooseable menus with a pointer to get_meals), and the subdomain default. Every parameter is explained beyond the bare schema.

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 and resource ('Order/choose a meal') and immediately clarifies the write semantics ('books the selected menu for the date'). It is clearly distinguishable from the sibling read tool get_meals and the cancel tool sign_off_meal.

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?

The Notes section gives explicit ordering guidance ('Read get_meals first for the date to pick a valid number') and names the alternative for the opposite action ('To cancel, use sign_off_meal'). Both when-to-use and alternative routing are covered.

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