Skip to main content
Glama

Server Details

Connect AI assistants to Paxaver, the School Community Operating System, for authorized access to school lunch menus, student lunch orders, wallet balances, school events, restaurants, and school-community operations.

Ownership verified
Status
Healthy
Uptime
57.2% over 34 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.5/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource+action, and descriptions explicitly cross-reference alternatives (e.g. cancel_my_lunch_order vs discard_lunch_order_draft, register_for_event vs sign_up_for_volunteer_shift). The lunch draft lifecycle (create/update/discard/pay) is cleanly separated with clear boundaries.

Naming Consistency5/5

All names are snake_case, verb-first (get_, list_, create_, update_, discard_, pay_, cancel_, register_, sign_up_). The 'my' qualifier is used consistently for user-scoped reads/writes, so the pattern is predictable.

Tool Count4/5

16 tools is slightly above the ideal range but justified by three real feature domains (lunch, events, volunteering) plus account/wallet lookups. No obvious filler; each tool maps to a concrete operation.

Completeness4/5

Covers the full lifecycle for lunch orders (menu→draft→update/pay/discard/cancel), events (list→register→cancel), and volunteer shifts (list→sign up→cancel), plus account context and wallet. Minor gaps like a wallet top-up tool are explicitly out of scope (deferred to the panel), so the surface is coherent.

Available Tools

16 tools
cancel_my_event_registrationCancel My Event RegistrationA
DestructiveIdempotent
Inspect

Cancels one of the authenticated user's own event tickets (ticket_id from list_my_event_registrations). Releases the reserved seats; for paid tickets the full amount is refunded to the user's wallet at that school. Only the ticket owner or a coordinator can cancel. DESTRUCTIVE - confirm with the user before cancelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesTicket ID from list_my_event_registrations - must belong to the caller and still be cancellable

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoCancelled ticket ID
statusNoTicket status (cancelled)

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description discloses concrete effects: reserved seats are released, full refund is credited to the user's wallet at that school, access is restricted to owner/coordinator, and the user must confirm before cancellation. This adds real behavioral context that the annotations do not provide.

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?

Three concise sentences with no filler. The core operation is front-loaded, followed by consequences, permission constraint, and a clear safety warning. Every sentence contributes useful information.

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 one-parameter tool with an output schema and strong annotations, the description covers the identity of the affected ticket, the post-cancellation effects (seats and refund), the authorization constraint, and the required user confirmation. No significant calling context is missing.

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?

The single parameter is already fully documented by the schema (100% coverage), including the constraint that the ticket must belong to the caller and be cancellable. The description repeats the source of ticket_id but does not add new parameter-level semantics beyond the 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?

Description uses a specific verb ('Cancels'), specifies the resource ('one of the authenticated user's own event tickets'), names the required input source ('ticket_id from list_my_event_registrations'), and distinguishes itself from sibling cancel tools by targeting ticket registrations rather than lunch orders, volunteer signups, or the event itself.

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?

It clearly frames when to use the tool: for a user's own event ticket cancellation, and it sets the condition that only the ticket owner or a coordinator may cancel. It also includes a confirmation requirement. However, it does not explicitly contrast with sibling tools like cancel_school_event or cancel_my_volunteer_signup, so some routing is left to context.

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

cancel_my_lunch_orderCancel My Lunch OrderA
DestructiveIdempotent
Inspect

Cancels a finalized order and refunds the charge to the wallet. Only works before order labels have been sent; after that the request is rejected and the order stands. DESTRUCTIVE - confirm with the user before cancelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesID of a finalized order - from list_my_lunch_orders; the order must still be finalized and not yet have labels sent

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoOrder ID
statusNoOrder status (cancelled)
refundCentsNoAmount refunded to the wallet, in cents
balanceCentsNoWallet balance after the refund, in cents

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavior beyond that: the wallet refund, the rejection condition after labels are sent, and the user-confirmation requirement. There is no contradiction with the annotations, including idempotentHint=true.

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?

Three short sentences with no filler: the core action, the timing limitation, and the destructive-action warning. It is front-loaded and every sentence earns its place.

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 single-parameter mutating tool with an output schema and complete annotations, this covers the preconditions, the failure mode, the postcondition (refund), and the required user confirmation. Nothing essential for selecting or invoking the tool is missing.

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?

The schema fully documents order_id, including the source (list_my_lunch_orders) and the preconditions (finalized, labels not sent). With 100% schema description coverage, the description does not need to add parameter-level detail and does not meaningfully exceed what the schema already provides.

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 ('Cancels'), a resource ('finalized order'), and the resulting effect ('refunds the charge to the wallet'). The phrase 'finalized order' clearly distinguishes this from draft-focused siblings like discard_lunch_order_draft and create_lunch_order_draft.

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?

Explicitly gives the acceptable timing ('before order labels have been sent') and the when-not case ('after that the request is rejected and the order stands'). It also instructs the agent to confirm with the user before cancelling. It does not name a sibling alternative for drafts, but the finalized-order phrasing covers the primary routing decision.

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

cancel_my_volunteer_signupCancel My Volunteer SignupA
DestructiveIdempotent
Inspect

Cancels one of the authenticated user's own volunteer signups (signup_id from list_my_volunteer_signups) and frees the shift slot for others. No payment is involved. Only the volunteer themselves or an admin can cancel. DESTRUCTIVE - confirm with the user before cancelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
signup_idYesSignup ID from list_my_volunteer_signups - must belong to the caller and still be active

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoCancelled signup ID
statusNoSignup status (cancelled)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark it destructive and non-read-only, but the description adds meaningful behavioral detail: it frees the shift slot for others, clarifies that no payment is involved, specifies authorization (volunteer/admin only), and explicitly instructs the agent to confirm with the user before proceeding. This goes far beyond the annotations and provides the agent with critical safety context. No contradiction with annotations.

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 compact and front-loaded, with each sentence serving a distinct purpose: the first states the action and effect, the second removes financial ambiguity, the third specifies authorization, and the fourth delivers the safety warning. There is no filler or redundancy, and the most critical destructive note is placed at the end for emphasis while still being quickly scannable.

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

Completeness4/5

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

For a simple one-parameter tool with annotations covering read-only/destructive/idempotent hints, the description provides ample context: effect on the shift, payment clarity, authorization, and confirmation requirement. It does not explicitly describe the return value, but an output schema exists, so that is not required. It also does not mention idempotency (e.g., behavior on double-cancel), but that is already covered by idempotentHint. Overall, it is almost complete.

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%: the signup_id parameter already has a clear description stating it must come from list_my_volunteer_signups and belong to the caller. The tool description repeats this source but does not add new meaning or details (e.g., format, validation). Per the baseline rule for high schema coverage, a score of 3 is appropriate.

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 states a specific verb ('cancels'), resource ('volunteer signups'), and scope ('own'), and even references the source of the ID (list_my_volunteer_signups). It clearly distinguishes from sibling tools like cancel_my_event_registration or cancel_my_lunch_order by naming the unique resource. The purpose is 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 gives clear context: it cancels only the authenticated user's own signups, from a specific list, and notes that only the volunteer or an admin can cancel. However, it does not explicitly contrast with related tools (e.g., cancel_my_event_registration) or state when not to use it beyond the ownership scope. There is implied usage guidance, but no explicit exclusions or alternatives are named.

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

create_lunch_order_draftCreate Lunch Order DraftA
Idempotent
Inspect

Creates an unpaid draft lunch order with one or more items - nothing is charged until pay_lunch_order_draft commits it. Use for multi-item orders or when the user should review the total first; each items entry pairs a menu_item_id with a quantity. The draft total is the sum of item prices times quantities plus nothing else until pay_lunch_order_draft. To change or abandon the draft, use update_lunch_order_draft or discard_lunch_order_draft. FINANCIAL - confirm student, items, and date before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesLine items to order; get IDs and prices from get_lunch_menu
menu_dateYesDate the lunch is served, YYYY-MM-DD
student_idNoStudent ID (must be your own student; from get_my_context); required when the user has more than one student, defaults to their only student
school_slugNoSchool slug (from get_my_context); defaults to the active school

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoDraft order ID - pass to pay_lunch_order_draft
itemsNoDraft line items
statusNoOrder status (draft)
menuDateNoDate the lunch is served, YYYY-MM-DD
studentIdNoStudent the order is for
schoolSlugNoSchool the order was placed at
itemTotalCentsNoItem total in cents - charged on finalize

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnly=false, idempotent=true, destructive=false, so the bar is lower. The description adds genuine context beyond those: 'nothing is charged until pay_lunch_order_draft commits it' discloses deferred financial impact, and 'plus nothing else' rules out hidden fees. No contradiction with the annotations exists — the description never claims read-only or destructive behavior.

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?

Purpose is front-loaded and each sentence earns its place: purpose, usage criterion, pricing/behavioral detail, lifecycle alternatives, and a FINANCIAL confirmation warning. Minor redundancy exists between sentence one ('nothing is charged until pay commits it') and sentence three ('plus nothing else until pay_lunch_order_draft'), which could be merged without loss.

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

Completeness4/5

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

Given the output schema exists (covering return values), the schema documents parameter provenance via get_lunch_menu and get_my_context defaults, and the description covers financial impact, lifecycle routing, and a confirmation warning, this is nearly complete for a financial write tool. The one small gap is that the description doesn't state what happens on repeat calls with identical arguments — though idempotentHint=true partially covers this.

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 100%, so the schema documents all four parameters, justifying a baseline of 3. The description adds meaning on top: it explains the items structure as pairing a menu_item_id with a quantity and spells out the pricing computation ('sum of item prices times quantities plus nothing else'), which clarifies that price_cents is the unit price multiplied by quantity.

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 states a specific verb and resource — 'Creates an unpaid draft lunch order with one or more items' — and immediately distinguishes it from its lifecycle siblings: pay_lunch_order_draft commits it, update/discard change or abandon it. An agent can tell this tool apart from pay, update, and discard without opening any schema.

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 explicit when-to-use criteria ('Use for multi-item orders or when the user should review the total first') and names the alternative tools for the next action (pay_lunch_order_draft) and for alterations (update_lunch_order_draft, discard_lunch_order_draft). It lacks an explicit when-not-to-use statement for the direct single-item/pay-now case, but the guidance is otherwise clear.

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

discard_lunch_order_draftDiscard Lunch Order DraftA
DestructiveIdempotent
Inspect

Permanently discards an unpaid draft order - the caller must own it and it must still be in draft status (order_id from create_lunch_order_draft). Nothing was ever charged, so there is no refund; the draft is simply deleted. For a finalized order use cancel_my_lunch_order instead. DESTRUCTIVE - confirm with the user before discarding.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesDraft order ID from create_lunch_order_draft - must still be in draft status

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoOrder status (discarded)
orderIdNoDiscarded draft order ID

TDQS

A4.7/5.0
Behavior5/5

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

The description provides substantial behavioral context beyond the annotations: the operation is permanent, no refund exists because nothing was charged, the draft is simply deleted, and it explicitly warns to confirm with the user. It also emphasizes destructive behavior, matching the destructiveHint annotation without contradicting it.

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 compact and front-loaded, with every sentence contributing necessary operational or safety information. The critical DESTRUCTIVE warning is included without redundancy or fluff.

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 single-parameter destructive tool, the description fully covers purpose, preconditions, side effects, alternatives, and user confirmation. Since an output schema exists, return-value details are not required here, and nothing essential is missing.

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?

The input schema already fully describes order_id as the draft order ID from create_lunch_order_draft and requires draft status. The description reinforces this but adds no new parameter meaning beyond what the schema already covers, so the baseline of 3 is appropriate.

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 identifies a specific verb and resource: 'Permanently discards an unpaid draft order.' It also differentiates from the sibling tool by specifying that it applies only to drafts and directing finalized orders to cancel_my_lunch_order.

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 description explicitly states when to use the tool: the caller must own the draft, it must still be in draft status, and it must be unpaid. It also names the alternative for finalized orders and includes a clear confirmation requirement, leaving no ambiguity about usage.

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

get_lunch_menuGet Lunch MenuA
Read-only
Inspect

Returns the orderable lunch menu for the user's active school - item names, prices, dietary tags, and remaining quantity. Pass date for a single day or month for a per-day listing across the whole month (today if neither is given); if both are passed, date wins. The menu_item_id values returned are required by create_lunch_order_draft. For orders already placed, use list_my_lunch_orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoSingle day to show, YYYY-MM-DD; omit when using month
monthNoCalendar month to show, YYYY-MM; omit when using date. Today is used when neither is given

Output Schema

ParametersJSON Schema
NameRequiredDescription
dateNoDate this menu applies to, YYYY-MM-DD
menuItemsNoItems orderable on that date

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the tool as read-only and non-destructive. The description adds value by specifying the precedence rule (date wins over month) and the default behavior (today when neither is provided), which are behavioral traits not captured by annotations. It does not mention pagination or response structure, but output schema is present.

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 concise and well-structured, front-loading the primary purpose and key details. It covers parameter usage, defaults, and alternative tools in three sentences without redundant phrasing. Every sentence adds value.

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?

Given the tool has 2 optional parameters, a comprehensive schema with 100% coverage, an output schema, and full annotations, the description is complete. It covers usage rules, parameter precedence, defaults, and cross-references to related tools. No critical information is missing for an agent to call this tool correctly.

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 schema already fully documents both parameters. The description adds a small clarification about the precedence rule (date wins if both are passed), but otherwise does not introduce new semantic meaning beyond what the schema provides. This aligns with the baseline of 3.

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 clearly states the tool returns the orderable lunch menu for the active school, including specific details (item names, prices, dietary tags, remaining quantity). It distinguishes itself from related tools like list_restaurant_menu_items and list_my_lunch_orders, so the agent can easily identify its unique purpose.

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 description explicitly explains when to use this tool versus alternatives: it is for the orderable lunch menu, while list_my_lunch_orders is for already placed orders. It also provides clear usage logic for date vs. month parameters, including default behavior when neither is given.

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

get_my_contextGet My ContextA
Read-only
Inspect

Read-only lookup with no side effects - safe to call repeatedly. Requires authentication: returns only the caller's own context (never another user's data): first name, active school, the students they are a guardian for, and their role codes at that school. This is the context-discovery call - most other tools need a student_id or school_slug from here, and admin-role checks come from roles. Returns live account state, so call again if the user may have switched schools or had roles changed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rolesNoRole codes the user holds at the active school
studentsNoStudents the user is guardian for (id, firstName, schoolSlug)
firstNameNoUser first name
schoolNameNoActive school display name
schoolSlugNoActive school slug

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it is safe to call repeatedly, requires authentication, returns only the caller's own data, and returns live account state. It does not contradict annotations. A small gap is that it doesn't describe the output schema shape, but the output schema exists and the description covers the key behavioral traits.

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 compact, front-loaded with the most important fact (read-only, safe to call repeatedly), and every sentence adds value: what it returns, why it matters, and when to call again. No wasted words.

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 zero-parameter, read-only tool with an output schema and annotations covering safety, the description is complete. It explains the return contents, the authentication requirement, the privacy boundary, and the live-state caveat. An agent has everything needed to call it correctly and interpret its role in the broader toolset.

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?

The tool has zero parameters, so the schema is trivially complete. The description adds value by explaining what the returned data contains and how it should be used, which is more relevant than parameter semantics for a no-parameter tool. Baseline 4 for zero params is appropriate.

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 states a specific verb ('lookup'), a clear resource (the caller's own context), and enumerates exactly what is returned (first name, active school, guardian students, role codes). It also distinguishes itself from siblings by framing it as the context-discovery call that other tools depend on.

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 description explicitly says when to use it: as the context-discovery call, before other tools that need student_id or school_slug, and for admin-role checks. It also tells the agent to call again if the user may have switched schools or roles changed. This is strong usage guidance with no ambiguity.

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

get_my_wallet_balanceGet My Wallet BalanceA
Read-only
Inspect

Read-only lookup - never moves funds or has side effects. Requires authentication: returns only the caller's spendable wallet balance at their active school (wallets are scoped per school, so a balance at one school does not apply elsewhere), in cents and formatted. Live value reflecting orders and refunds up to the current moment - recheck before assuming funds are still available. Call before pay_lunch_order_draft or register_for_event to confirm the user can cover the charge; not needed for read-only lookups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
currencyNoISO currency code (CAD, USD, or MXN)
balanceCentsNoSpendable balance in cents
balanceFormattedNoBalance formatted with the currency symbol

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context beyond that: requires authentication, school-scoped data, live values reflecting orders/refunds, and the caution to recheck before assuming funds. It also emphasizes no side effects, which reinforces the read-only annotation without contradicting it.

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 front-loaded with the most important fact ('Read-only lookup - never moves funds or has side effects') and every subsequent sentence earns its place: auth, scope, units, freshness, and usage guidance. It is detailed but not bloated, each clause adds distinct value.

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 zero-parameter tool with an output schema, the description covers everything needed to call it correctly: authentication requirement, per-school scoping, return format (cents and formatted), live-value semantics, and when to invoke it. An agent has all necessary context.

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?

The input schema has zero parameters, so the baseline is 4. The description doesn't need to explain parameters because there are none; it instead explains what data the tool operates on (caller's balance, active school), which is the relevant semantic content.

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 names a specific verb and resource: it 'returns only the caller's spendable wallet balance.' It also scopes the operation precisely to the caller's active school, in cents and formatted, which separates it from any other balance-related query. This clearly distinguishes it from the mutation-heavy sibling list.

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 description gives explicit when-to-use instructions: 'Call before pay_lunch_order_draft or register_for_event to confirm the user can cover the charge.' It also provides a when-not exclusion ('not needed for read-only lookups') and contextual scoping guidance about per-school balances.

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

list_my_event_registrationsList My Event RegistrationsA
Read-onlyIdempotent
Inspect

Read-only, no side effects. Returns the authenticated user's own event tickets at their active school - ticket id, event name/date/location, quantity, total paid, and status (paid or checked_in). Cancelled tickets are excluded. The id values returned are required by cancel_my_event_registration. Pair with list_school_events for events the user has not registered for.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
ticketsNoCaller's event tickets at the active school

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description reinforces this with 'Read-only, no side effects.' It adds valuable behavioral context beyond annotations: results are scoped to the active school, cancelled tickets are excluded, and the return payload includes ticket status values like paid and checked_in.

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?

Four sentences with no fluff; the key behavioral claim is front-loaded and every sentence adds useful information. The only minor issue is that 'Read-only, no side effects' partly duplicates the annotations, but it is brief and harmless.

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 zero-parameter tool with an output schema and strong annotations, this description is complete: it defines scope, exclusions, returned fields, and links to the two most relevant sibling tools. An agent has everything needed to select and invoke it 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?

The input schema has zero parameters and schema description coverage is 100%, so the baseline of 4 applies. The description correctly focuses on output and scope rather than parameter syntax, and no parameter-level explanation is needed.

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 ('Returns') and a precise resource: the authenticated user's own event tickets at their active school, including the exact fields returned. It clearly differentiates itself from sibling list tools like list_school_events, list_my_lunch_orders, and list_my_volunteer_signups by scope and resource.

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?

Explicitly names the sibling tool list_school_events for events the user has not registered for, giving a clear when-to-use/when-not-to-use distinction. It also states that the returned ids are required by cancel_my_event_registration, which helps an agent decide to call this tool before attempting a cancellation.

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

list_my_lunch_ordersList My Lunch OrdersA
Read-only
Inspect

Returns lunch orders already placed - items, menu date, status, and total - for the authenticated user's students, newest first (up to ~100 most recent). Filters combine with AND: student_id narrows to one student; menu_date and month narrow the date range, and if both are given menu_date wins. With no filters returns recent orders across all of the user's students. Admins (pac_cordinator, lunch_cordinator) see school-wide orders; parents only their own students. For what can be ordered (menu and prices), use get_lunch_menu.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthNoCalendar month to query, YYYY-MM; omit when using menu_date
menu_dateNoSingle day to query, YYYY-MM-DD; omit when using month
student_idNoFilter to a specific student (must be your own student, from get_my_context; admins may filter any student in the school)

Output Schema

ParametersJSON Schema
NameRequiredDescription
ordersNoOrders matching the filters

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds non-obvious behavior beyond that: newest-first ordering, a ~100 record cap, filter precedence, and role-based visibility. Nothing contradicts 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.

Conciseness5/5

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

The description is information-dense with no filler. Each clause earns its place: return fields, ordering, limit, filter semantics, fallback behavior, role scoping, and the pointer to a sibling 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 read-only listing tool with an output schema, the description covers all needed invocation context: what is returned, ordering, limits, filter combination and precedence, default behavior, role-based access, and which sibling to use for menus.

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?

Although schema coverage is 100%, the description adds meaning beyond the schema: filters combine with AND, menu_date wins if both menu_date and month are provided, and student_id has ownership/role constraints. These behaviors are not inferable from the schema alone.

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: 'Returns lunch orders already placed - items, menu date, status, and total - for the authenticated user's students.' It clearly distinguishes this read tool from sibling create/cancel/update/order tools and from get_lunch_menu.

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?

Explicitly explains filter combination behavior (AND), menu_date vs month precedence, the no-filter default, and admin vs parent scoping. It also points to get_lunch_menu when the goal is ordering-eligible items, giving a clear alternative.

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

list_my_volunteer_signupsList My Volunteer SignupsA
Read-onlyIdempotent
Inspect

Read-only, no side effects. Returns the authenticated user's active volunteer signups at their school - signup id, shift title/date/times, and the parent event. Cancelled signups are excluded. The id values returned are required by cancel_my_volunteer_signup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
signupsNoCaller's active volunteer signups

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds value beyond annotations by specifying that cancelled signups are excluded, the data scope (active signups at the user's school), and the dependency on cancellation. No contradiction with annotations.

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?

Four short sentences, each carrying distinct information: safety, return content, exclusion filter, and downstream usage. No filler, and the most critical information (read-only, what it returns) is front-loaded.

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 no-parameter tool with an output schema present, the description covers all necessary operational details: return fields, scope, exclusions, and the relationship to cancellation. Nothing critical is missing for an agent to call it 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?

The tool has zero parameters, so the input schema is empty and coverage is effectively 100%. The description appropriately doesn't dwell on parameters; the baseline for 0-param tools is 4, and no additional parameter explanation is needed.

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 states a specific verb ('Returns') and resource ('volunteer signups'), with explicit fields returned. It distinguishes from siblings like list_my_event_registrations (different resource) and cancel_my_volunteer_signup (different action). The scope is clear: authenticated user's active signups at their school.

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 mentions that returned IDs are required by cancel_my_volunteer_signup, which gives a concrete use case and implies this tool is the precursor for cancellation. However, it doesn't explicitly contrast with other list tools (e.g., list_my_event_registrations) or state when not to use it, leaving some inference to the agent.

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

list_school_eventsList School EventsA
Read-only
Inspect

Returns upcoming events for the user's active school: date, times, location, volunteer shifts, and whether registration is closed. The event IDs returned feed register_for_event; shift IDs feed sign_up_for_volunteer_shift. To review or undo your own registrations and signups, use list_my_event_registrations / cancel_my_event_registration and list_my_volunteer_signups / cancel_my_volunteer_signup. Optionally filter by date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoLast day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events
start_dateNoFirst day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventsNoUpcoming events matching the date range

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, so the bar is lower. The description adds useful behavioral context beyond annotations: it returns upcoming events only, includes volunteer shifts and registration closure status, and is scoped to the active school. It does not contradict annotations and provides enough behavioral framing for a list operation.

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 three sentences long and each sentence earns its place: the first states what is returned, the second explains how the returned IDs connect to downstream tools, and the third provides alternative-tool routing and the optional filter. It is front-loaded and free of 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?

For a read-only listing tool with an existing output schema, two optional parameters fully documented, and clear annotations, the description covers everything an agent needs: return contents, relationship to dependent tools, alternatives for own registrations, and optional filtering. Nothing important is missing.

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 schema documents both optional parameters (start_date and end_date) adequately. The description only says 'Optionally filter by date range,' which adds no new semantic detail beyond the schema's own descriptions. Baseline 3 is appropriate given full schema coverage.

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 clearly states the tool lists upcoming events for the user's active school and enumerates the included data (date, times, location, volunteer shifts, registration status). It distinguishes itself from related registration/signup tools by explicitly noting that event IDs feed register_for_event and shift IDs feed sign_up_for_volunteer_shift.

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 description gives explicit routing guidance: it says to use list_my_event_registrations / cancel_my_event_registration and list_my_volunteer_signups / cancel_my_volunteer_signup to review or undo the user's own registrations and signups. This tells the agent exactly when this tool is appropriate and when alternatives should be used.

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

pay_lunch_order_draftPay Lunch Order DraftA
Idempotent
Inspect

Commits a draft order from create_lunch_order_draft and charges the wallet for the item total plus optional tip_cents (donated to the school's PAC). Wallet-only: if the balance cannot cover the full total, the call fails with an error directing the user to open the Paxaver panel and top up the wallet balance, then retry - no card payment is offered through this tool. Not for new orders - use create_lunch_order_draft first. FINANCIAL - confirm the total before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesDraft order ID from create_lunch_order_draft - must still be in draft status; already-finalized orders are rejected
tip_centsNoTip in cents (donated to school PAC)

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo'finalized' when the wallet covered the full total
orderIdNoOrder ID
tipCentsNoPAC donation added, in cents
itemTotalCentsNoItem total in cents

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal readOnly=false, destructive=false, and idempotent=true, and the description adds valuable behavior: charging the wallet, optional tip donation, the rejection of already-finalized orders (supporting idempotency), and the no-card-payment limitation. The FINANCIAL warning further clarifies the risk profile.

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 compact and front-loaded: the core action is stated first, followed by payment constraints, failure behavior, and the key exclusion. Every sentence carries operational weight, with no redundant or filler content.

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?

Given a 2-parameter schema, an output schema, and rich annotations, the description covers the essential workflow: commit a draft, charge wallet, handle insufficient funds, and avoid misuse for new orders. No critical operational detail is missing.

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 100%, so the baseline is 3. The description adds meaning by clarifying that tip_cents is added on top of the item total and that the combined amount is charged to the wallet, reinforcing the schema's note that tips go to the PAC.

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 states a specific verb and resource ('commits a draft order') and clearly distinguishes this tool from siblings like create_lunch_order_draft, discard_lunch_order_draft, and cancel_my_lunch_order. It also names the source of the draft order and the financial action performed.

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 explicitly says this is not for new orders and directs the agent to use create_lunch_order_draft first. It also defines the payment constraint (wallet-only, no card) and gives a concrete failure-handling path: if balance is insufficient, tell the user to top up and retry.

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

register_for_eventRegister for EventA
Idempotent
Inspect

Registers the authenticated user for a school event and issues tickets to the caller (quantity is the number of tickets bought for the caller, minimum 1 - there is no per-student split). For paid events quantity times the ticket price is charged to the user's wallet - the call fails on insufficient balance or when the event is sold out or registration is closed. To volunteer at an event rather than attend, use sign_up_for_volunteer_shift. FINANCIAL for paid events - confirm before registering.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID from list_school_events - registration must still be open (check the closed flag)
quantityNoNumber of tickets

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRegistration ID
statusNoRegistration status
eventIdNoEvent the user registered for
quantityNoTickets issued

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, it discloses that all tickets go to the caller with no per-student split, that paid events debit the wallet, and that the call fails on insufficient balance, sold out, or closed registration. This significantly clarifies side effects; no statement contradicts the annotations, though the idempotentHint tradeoff is left to the annotation.

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?

The definition is compact and front-loaded: purpose first, then financial consequence, failure conditions, and sibling routing. The second sentence is dense but each clause earns its place.

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 two-parameter registration tool, the description covers purpose, ticket allocation, costs, failure modes, and alternative tool, while an output schema exists for return values. Nothing essential is missing.

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?

The schema covers 100% of parameters and already defines event_id and quantity; the description adds real semantic value by stating that quantity is tickets for the caller, enforces minimum 1, and explicitly rules out per-student splitting.

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: 'Registers the authenticated user for a school event and issues tickets to the caller.' It also differentiates itself from the volunteer sibling by explicitly directing volunteer use to sign_up_for_volunteer_shift.

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 key alternative ('To volunteer at an event rather than attend, use sign_up_for_volunteer_shift') and gives conditional guidance for paid events with 'confirm before registering.' Failure conditions (sold out, registration closed, insufficient balance) further clarify when a call would not be appropriate.

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

sign_up_for_volunteer_shiftSign Up for Volunteer ShiftA
Idempotent
Inspect

Signs the authenticated user up for a specific volunteer shift - no payment involved. shift_id identifies one shift within an event, not the event itself: get it from the event's volunteer shifts in list_school_events. The call fails when the shift is full or cancelled. To attend an event as a guest instead, use register_for_event. WRITE - confirm with the user before signing up.

ParametersJSON Schema
NameRequiredDescriptionDefault
shift_idYesVolunteer shift ID - from the event's volunteer shifts (list_school_events)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoSignup ID
statusNoSignup status
shiftIdNoVolunteer shift signed up for

TDQS

A4.9/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the annotations: no payment is involved, the call fails when the shift is full or cancelled, and it explicitly labels itself as a WRITE operation requiring user confirmation before executing. These details complement the idempotentHint and destructiveHint annotations without contradicting them.

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?

Each sentence earns its place: the core action, the no-payment clarification, the shift_id disambiguation with sourcing instructions, the failure triggers, the guest alternative, and the confirmation guardrail. The description is compact but information-dense, with the main purpose front-loaded.

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 single-parameter tool with an output schema and complete annotations, the description covers everything an agent needs to invoke it correctly: parameter semantics, source of the ID, failure conditions, alternative usage, and user confirmation. There are no notable gaps.

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 100%, so baseline is 3. The description goes further by clarifying that shift_id refers to a shift within an event, not the event itself, and directs the agent to list_school_events for retrieval—value that the schema description alone does not fully convey.

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 uses a specific verb ('Signs up'), names the resource ('volunteer shift'), and adds critical distinctions: it is for the authenticated user, involves no payment, and shift_id is a shift within an event, not the event itself. This clearly separates it from sibling tools like register_for_event and the event-level operations.

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?

Explicitly states when the tool is appropriate (signing up for a volunteer shift) and directly names the alternative for guests: 'To attend an event as a guest instead, use register_for_event.' It also instructs where to obtain shift_id via list_school_events, leaving no ambiguity about the prerequisite data source.

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

update_lunch_order_draftUpdate Lunch Order DraftA
Idempotent
Inspect

Replaces the items and/or menu_date of an unpaid draft order before it is finalized - the caller must own the draft and it must still be in draft status (order_id from create_lunch_order_draft). Pass the complete items list: it replaces the draft's items wholesale and the total is recomputed from price times quantity. Only draft orders can be updated; once finalized, use cancel_my_lunch_order. WRITE - confirm the new contents with the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoReplacement line items (menu_item_id from get_lunch_menu + quantity); replaces all existing items when provided
order_idYesDraft order ID from create_lunch_order_draft - must still be in draft status
menu_dateNoNew date the lunch is served, YYYY-MM-DD

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoOrder status (draft)
orderIdNoUpdated draft order ID

TDQS

A4.9/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond the annotations: items are replaced wholesale, the total is recomputed from price times quantity, and only unpaid draft orders can be updated. It correctly complements readOnlyHint=false and destructiveHint=false by framing the operation as a controlled, reversible-enough edit with ownership requirements.

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?

The description is information-dense and front-loaded with the core behavior, but it contains minor redundancy about draft status ('must still be in draft status' and 'Only draft orders can be updated'). Still, it earns its length by covering ownership, replacement semantics, and post-finalization routing in a compact form.

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 3 parameters, an output schema, and no nested objects, the description covers all essential context: what changes, what is required, what the preconditions are, how totals behave, and how to handle finalized orders. An agent has enough information to invoke the tool correctly and to avoid destructive mistakes.

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 coverage is 100%, but the description adds crucial semantics beyond the schema: items must be the complete replacement list, the update replaces existing items entirely, and the total is recomputed from price times quantity. It also clarifies that order_id comes from create_lunch_order_draft, reinforcing the schema's provenance note.

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 states a specific action ('Replaces the items and/or menu_date') on a specific resource ('unpaid draft order'), and clearly scopes it to drafts not yet finalized. It also implicitly distinguishes this tool from siblings like discard_lunch_order_draft, pay_lunch_order_draft, and cancel_my_lunch_order by emphasizing draft-state editing.

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 description explicitly says when to use the tool: the order must be owned by the caller and still in draft status. It also provides the alternative for finalized orders ('use cancel_my_lunch_order'), and instructs the caller to pass the complete items list and confirm with the user, giving clear operational guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 27 tool updates
    • Addedcancel_my_event_registration
    • Addedcancel_my_lunch_order
    • Addedcancel_my_volunteer_signup
    • Removedcancel_order
    • Removedcreate_draft_order
    • Addedcreate_lunch_order_draft
    • Addeddiscard_lunch_order_draft
    • Removedfinalize_order
    • Addedget_lunch_menu
    • Removedget_menu
    • Addedget_my_context
    • Addedget_my_wallet_balance
    • Removedget_orders
    • Removedget_upcoming_events
    • Removedget_user_info
    • Removedget_wallet_balance
    • Addedlist_my_event_registrations
    • Addedlist_my_lunch_orders
    • Addedlist_my_volunteer_signups
    • Addedlist_school_events
    • Removedorder_lunch
    • Addedpay_lunch_order_draft
    • Removedregister_event
    • Addedregister_for_event
    • Addedsign_up_for_volunteer_shift
    • Removedsign_up_to_volunteer
    • Addedupdate_lunch_order_draft
  2. 27 tool updates
    • Removedcancel_my_event_registration
    • Removedcancel_my_lunch_order
    • Removedcancel_my_volunteer_signup
    • Addedcancel_order
    • Addedcreate_draft_order
    • Removedcreate_lunch_order_draft
    • Removeddiscard_lunch_order_draft
    • Addedfinalize_order
    • Removedget_lunch_menu
    • Addedget_menu
    • Removedget_my_context
    • Removedget_my_wallet_balance
    • Addedget_orders
    • Addedget_upcoming_events
    • Addedget_user_info
    • Addedget_wallet_balance
    • Removedlist_my_event_registrations
    • Removedlist_my_lunch_orders
    • Removedlist_my_volunteer_signups
    • Removedlist_school_events
    • Addedorder_lunch
    • Removedpay_lunch_order_draft
    • Addedregister_event
    • Removedregister_for_event
    • Removedsign_up_for_volunteer_shift
    • Addedsign_up_to_volunteer
    • Removedupdate_lunch_order_draft
  3. 1 tool update
    • Changedpay_lunch_order_draft5 fields changed
      • removedOutput schema / properties / balanceCents
        Removed value: -{
        -  "description": "Wallet balance after the charge, in cents",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / id
        Removed value: -{
        -  "description": "Order ID",
        -  "type": "string"
        -}
      • addedOutput schema / properties / orderId
        Added value: +{
        +  "description": "Order ID",
        +  "type": "string"
        +}
      • changedOutput schema / properties / status / description
        Previous value: -"Order status (finalized)"New value: +"'finalized' when the wallet covered the full total"
      • removedOutput schema / properties / totalCents
        Removed value: -{
        -  "description": "Total charged to the wallet, in cents",
        -  "type": "integer"
        -}
  4. 33 tool updates
    • Removedcancel_event_registration
    • Addedcancel_my_event_registration
    • Addedcancel_my_lunch_order
    • Addedcancel_my_volunteer_signup
    • Removedcancel_order
    • Removedcancel_volunteer_signup
    • Removedcreate_draft_order
    • Addedcreate_lunch_order_draft
    • Removeddiscard_draft_order
    • Addeddiscard_lunch_order_draft
    • Removedfinalize_order
    • Addedget_lunch_menu
    • Removedget_menu
    • Addedget_my_context
    • Removedget_my_event_registrations
    • Removedget_my_volunteer_signups
    • Addedget_my_wallet_balance
    • Removedget_orders
    • Removedget_upcoming_events
    • Removedget_user_info
    • Removedget_wallet_balance
    • Addedlist_my_event_registrations
    • Addedlist_my_lunch_orders
    • Addedlist_my_volunteer_signups
    • Addedlist_school_events
    • Removedorder_lunch
    • Addedpay_lunch_order_draft
    • Removedregister_event
    • Addedregister_for_event
    • Addedsign_up_for_volunteer_shift
    • Removedsign_up_to_volunteer
    • Removedupdate_draft_order
    • Addedupdate_lunch_order_draft
  5. 2 tool updates
    • Addeddiscard_draft_order
    • Addedupdate_draft_order
  6. 4 tool updates
    • Addedcancel_event_registration
    • Addedcancel_volunteer_signup
    • Addedget_my_event_registrations
    • Addedget_my_volunteer_signups
  7. 9 tool updates
    • Changedcancel_order1 field changed
      • changedInput schema / properties / order_id / description
        Previous value: -"Order ID to cancel"New value: +"ID of a finalized order - from get_orders; the order must still be finalized and not yet have labels sent"
    • Changedcreate_draft_order2 fields changed
      • changedInput schema / properties / school_slug / description
        Previous value: -"School slug (from get_user_info)"New value: +"School slug (from get_user_info); defaults to the active school"
      • changedInput schema / properties / student_id / description
        Previous value: -"Student ID (must be your own student; from get_user_info)"New value: +"Student ID (must be your own student; from get_user_info); required when the user has more than one student, defaults to their only student"
    • Changedfinalize_order1 field changed
      • changedInput schema / properties / order_id / description
        Previous value: -"Order ID from create_draft_order"New value: +"Draft order ID from create_draft_order - must still be in draft status; already-finalized orders are rejected"
    • Changedget_menu2 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Single day to show, YYYY-MM-DD"New value: +"Single day to show, YYYY-MM-DD; omit when using month"
      • changedInput schema / properties / month / description
        Previous value: -"Calendar month to show, YYYY-MM"New value: +"Calendar month to show, YYYY-MM; omit when using date. Today is used when neither is given"
    • Changedget_orders3 fields changed
      • changedInput schema / properties / menu_date / description
        Previous value: -"Single day to query, YYYY-MM-DD"New value: +"Single day to query, YYYY-MM-DD; omit when using month"
      • changedInput schema / properties / month / description
        Previous value: -"Calendar month to query, YYYY-MM"New value: +"Calendar month to query, YYYY-MM; omit when using menu_date"
      • changedInput schema / properties / student_id / description
        Previous value: -"Filter to a specific student (must be your own; from get_user_info)"New value: +"Filter to a specific student (must be your own student, from get_user_info; admins may filter any student in the school)"
    • Changedget_upcoming_events2 fields changed
      • changedInput schema / properties / end_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Last day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events"
      • changedInput schema / properties / start_date / description
        Previous value: -"YYYY-MM-DD"New value: +"First day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events"
    • Changedorder_lunch1 field changed
      • changedInput schema / properties / student_id / description
        Previous value: -"Student ID (must be your own student; from get_user_info)"New value: +"Student ID (must be your own student; from get_user_info); required when the user has more than one student, defaults to their only student"
    • Changedregister_event1 field changed
      • changedInput schema / properties / event_id / description
        Previous value: -"Event ID"New value: +"Event ID from get_upcoming_events - registration must still be open (check the closed flag)"
    • Changedsign_up_to_volunteer1 field changed
      • changedInput schema / properties / shift_id / description
        Previous value: -"Volunteer shift ID"New value: +"Volunteer shift ID - from the event's volunteer shifts (get_upcoming_events)"
  8. 10 tool updates
    • Removedcancel_event
    • Removedcreate_event
    • Removedcreate_menu_item
    • Removedcreate_restaurant
    • Removeddelete_menu_item
    • Removedlist_menu_items
    • Removedlist_school_restaurants
    • Removedset_daily_menu
    • Removedupdate_event
    • Removedupdate_menu_item
  9. 21 tool updates
    • Changedcancel_event3 fields changed
      • changedInput schema / properties / event_id / description
        Previous value: -"Event ID — from get_upcoming_events"New value: +"Event ID - from get_upcoming_events"
      • addedOutput schema / properties / id / description
        Added value: +"Event ID"
      • addedOutput schema / properties / status / description
        Added value: +"Event status (cancelled)"
    • Changedcancel_order4 fields changed
      • addedOutput schema / properties / balanceCents / description
        Added value: +"Wallet balance after the refund, in cents"
      • addedOutput schema / properties / id / description
        Added value: +"Order ID"
      • addedOutput schema / properties / refundCents / description
        Added value: +"Amount refunded to the wallet, in cents"
      • addedOutput schema / properties / status / description
        Added value: +"Order status (cancelled)"
    • Changedcreate_draft_order15 fields changed
      • addedInput schema / properties / items / description
        Added value: +"Line items to order; get IDs and prices from get_menu"
      • addedInput schema / properties / items / items / properties / menu_item_id / description
        Added value: +"Menu item ID from get_menu"
      • addedInput schema / properties / items / items / properties / menu_item_name / description
        Added value: +"Item display name from get_menu"
      • addedInput schema / properties / items / items / properties / price_cents / description
        Added value: +"Unit price in cents from get_menu"
      • addedInput schema / properties / items / items / properties / quantity / description
        Added value: +"Number of servings"
      • changedInput schema / properties / menu_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Date the lunch is served, YYYY-MM-DD"
      • changedInput schema / properties / school_slug / description
        Previous value: -"School slug"New value: +"School slug (from get_user_info)"
      • changedInput schema / properties / student_id / description
        Previous value: -"Student ID"New value: +"Student ID (must be your own student; from get_user_info)"
      • addedOutput schema / properties / id / description
        Added value: +"Draft order ID - pass to finalize_order"
      • addedOutput schema / properties / itemTotalCents / description
        Added value: +"Item total in cents - charged on finalize"
      • addedOutput schema / properties / items / description
        Added value: +"Draft line items"
      • addedOutput schema / properties / menuDate / description
        Added value: +"Date the lunch is served, YYYY-MM-DD"
      • addedOutput schema / properties / schoolSlug / description
        Added value: +"School the order was placed at"
      • addedOutput schema / properties / status / description
        Added value: +"Order status (draft)"
      • addedOutput schema / properties / studentId / description
        Added value: +"Student the order is for"
    • Changedcreate_event4 fields changed
      • addedOutput schema / properties / eventDate / description
        Added value: +"Event date, YYYY-MM-DD"
      • addedOutput schema / properties / id / description
        Added value: +"Event ID"
      • addedOutput schema / properties / name / description
        Added value: +"Event name"
      • addedOutput schema / properties / status / description
        Added value: +"Event status (e.g. active)"
    • Changedcreate_menu_item5 fields changed
      • changedInput schema / properties / restaurant_id / description
        Previous value: -"Restaurant ID — from list_school_restaurants"New value: +"Restaurant ID - from list_school_restaurants"
      • addedOutput schema / properties / id / description
        Added value: +"Menu item ID"
      • addedOutput schema / properties / isActive / description
        Added value: +"Whether the item is on the restaurant menu"
      • addedOutput schema / properties / name / description
        Added value: +"Item name"
      • addedOutput schema / properties / priceCents / description
        Added value: +"Sale price in cents"
    • Changedcreate_restaurant4 fields changed
      • changedInput schema / properties / school_slug / description
        Previous value: -"School slug — defaults to the active school"New value: +"School slug - defaults to the active school"
      • addedOutput schema / properties / id / description
        Added value: +"Restaurant ID"
      • addedOutput schema / properties / isActive / description
        Added value: +"Whether the restaurant is active"
      • addedOutput schema / properties / name / description
        Added value: +"Restaurant name"
    • Changeddelete_menu_item4 fields changed
      • changedInput schema / properties / menu_item_id / description
        Previous value: -"Menu item ID — from list_menu_items"New value: +"Menu item ID - from list_menu_items"
      • changedInput schema / properties / restaurant_id / description
        Previous value: -"Restaurant ID — from list_school_restaurants"New value: +"Restaurant ID - from list_school_restaurants"
      • addedOutput schema / properties / deleted / description
        Added value: +"Whether the item was soft-deleted"
      • addedOutput schema / properties / id / description
        Added value: +"Menu item ID"
    • Changedfinalize_order6 fields changed
      • addedOutput schema / properties / balanceCents / description
        Added value: +"Wallet balance after the charge, in cents"
      • addedOutput schema / properties / id / description
        Added value: +"Order ID"
      • addedOutput schema / properties / itemTotalCents / description
        Added value: +"Item total in cents"
      • addedOutput schema / properties / status / description
        Added value: +"Order status (finalized)"
      • addedOutput schema / properties / tipCents / description
        Added value: +"PAC donation added, in cents"
      • addedOutput schema / properties / totalCents / description
        Added value: +"Total charged to the wallet, in cents"
    • Changedget_menu9 fields changed
      • addedOutput schema / properties / date / description
        Added value: +"Date this menu applies to, YYYY-MM-DD"
      • addedOutput schema / properties / menuItems / description
        Added value: +"Items orderable on that date"
      • addedOutput schema / properties / menuItems / items / properties / availableQty / description
        Added value: +"Remaining portions; null means unlimited"
      • addedOutput schema / properties / menuItems / items / properties / dailyMenuId / description
        Added value: +"Daily-menu entry ID"
      • addedOutput schema / properties / menuItems / items / properties / dietaryTags / description
        Added value: +"Dietary labels (e.g. vegetarian, halal)"
      • addedOutput schema / properties / menuItems / items / properties / menuItemId / description
        Added value: +"Menu item ID for ordering tools"
      • addedOutput schema / properties / menuItems / items / properties / menuItemName / description
        Added value: +"Item display name"
      • addedOutput schema / properties / menuItems / items / properties / priceCents / description
        Added value: +"Sale price in cents"
      • addedOutput schema / properties / menuItems / items / properties / restaurantName / description
        Added value: +"Restaurant offering the item"
    • Changedget_orders8 fields changed
      • addedOutput schema / properties / orders / description
        Added value: +"Orders matching the filters"
      • addedOutput schema / properties / orders / items / properties / createdAt / description
        Added value: +"ISO timestamp the order was placed"
      • addedOutput schema / properties / orders / items / properties / id / description
        Added value: +"Order ID"
      • addedOutput schema / properties / orders / items / properties / itemTotalCents / description
        Added value: +"Item total in cents"
      • addedOutput schema / properties / orders / items / properties / items / description
        Added value: +"Ordered line items"
      • addedOutput schema / properties / orders / items / properties / menuDate / description
        Added value: +"Date the lunch is served, YYYY-MM-DD"
      • addedOutput schema / properties / orders / items / properties / status / description
        Added value: +"Order status"
      • addedOutput schema / properties / orders / items / properties / studentId / description
        Added value: +"Student the order is for"
    • Changedget_upcoming_events8 fields changed
      • addedOutput schema / properties / events / description
        Added value: +"Upcoming events matching the date range"
      • addedOutput schema / properties / events / items / properties / endsAt / description
        Added value: +"End time"
      • addedOutput schema / properties / events / items / properties / eventDate / description
        Added value: +"Event date, YYYY-MM-DD"
      • addedOutput schema / properties / events / items / properties / id / description
        Added value: +"Event ID - input to register_event, update_event, cancel_event"
      • addedOutput schema / properties / events / items / properties / isClosed / description
        Added value: +"Whether registration is closed"
      • addedOutput schema / properties / events / items / properties / location / description
        Added value: +"Event location"
      • addedOutput schema / properties / events / items / properties / name / description
        Added value: +"Event name"
      • addedOutput schema / properties / events / items / properties / startsAt / description
        Added value: +"Start time"
    • Changedget_user_info5 fields changed
      • addedOutput schema / properties / firstName / description
        Added value: +"User first name"
      • addedOutput schema / properties / roles / description
        Added value: +"Role codes the user holds at the active school"
      • addedOutput schema / properties / schoolName / description
        Added value: +"Active school display name"
      • addedOutput schema / properties / schoolSlug / description
        Added value: +"Active school slug"
      • addedOutput schema / properties / students / description
        Added value: +"Students the user is guardian for (id, firstName, schoolSlug)"
    • Changedget_wallet_balance3 fields changed
      • addedOutput schema / properties / balanceCents / description
        Added value: +"Spendable balance in cents"
      • addedOutput schema / properties / balanceFormatted / description
        Added value: +"Balance formatted with the currency symbol"
      • addedOutput schema / properties / currency / description
        Added value: +"ISO currency code (CAD, USD, or MXN)"
    • Changedlist_menu_items11 fields changed
      • changedInput schema / properties / restaurant_id / description
        Previous value: -"Restaurant ID — from list_school_restaurants"New value: +"Restaurant ID - from list_school_restaurants"
      • addedOutput schema / properties / items / description
        Added value: +"Full catalog items, including inactive and unavailable"
      • addedOutput schema / properties / items / items / properties / calories / description
        Added value: +"Calorie count"
      • addedOutput schema / properties / items / items / properties / costCents / description
        Added value: +"Kitchen cost in cents"
      • addedOutput schema / properties / items / items / properties / description / description
        Added value: +"Item description"
      • addedOutput schema / properties / items / items / properties / id / description
        Added value: +"Menu item ID"
      • addedOutput schema / properties / items / items / properties / ingredients / description
        Added value: +"Ingredient list text"
      • addedOutput schema / properties / items / items / properties / isActive / description
        Added value: +"Whether the item is on the restaurant menu"
      • addedOutput schema / properties / items / items / properties / isAvailable / description
        Added value: +"Whether the item can currently be ordered"
      • addedOutput schema / properties / items / items / properties / name / description
        Added value: +"Item name"
      • addedOutput schema / properties / items / items / properties / priceCents / description
        Added value: +"Sale price in cents"
    • Changedlist_school_restaurants6 fields changed
      • addedOutput schema / properties / restaurants / description
        Added value: +"Restaurants attached to the school, including inactive ones"
      • addedOutput schema / properties / restaurants / items / properties / description / description
        Added value: +"Restaurant description"
      • addedOutput schema / properties / restaurants / items / properties / id / description
        Added value: +"Restaurant ID - input to menu-item and daily-menu tools"
      • addedOutput schema / properties / restaurants / items / properties / isActive / description
        Added value: +"Whether the restaurant is active"
      • addedOutput schema / properties / restaurants / items / properties / logoUrl / description
        Added value: +"Restaurant logo URL"
      • addedOutput schema / properties / restaurants / items / properties / name / description
        Added value: +"Restaurant name"
    • Changedorder_lunch7 fields changed
      • addedOutput schema / properties / id / description
        Added value: +"Order ID"
      • addedOutput schema / properties / itemTotalCents / description
        Added value: +"Item total in cents"
      • addedOutput schema / properties / items / description
        Added value: +"Ordered line items"
      • addedOutput schema / properties / menuDate / description
        Added value: +"Date the lunch is served, YYYY-MM-DD"
      • addedOutput schema / properties / schoolSlug / description
        Added value: +"School the order was placed at"
      • addedOutput schema / properties / status / description
        Added value: +"Order status (e.g. finalized)"
      • addedOutput schema / properties / studentId / description
        Added value: +"Student the order is for"
    • Changedregister_event4 fields changed
      • addedOutput schema / properties / eventId / description
        Added value: +"Event the user registered for"
      • addedOutput schema / properties / id / description
        Added value: +"Registration ID"
      • addedOutput schema / properties / quantity / description
        Added value: +"Tickets issued"
      • addedOutput schema / properties / status / description
        Added value: +"Registration status"
    • Changedset_daily_menu6 fields changed
      • changedInput schema / properties / menu_item_id / description
        Previous value: -"Menu item ID — from list_menu_items"New value: +"Menu item ID - from list_menu_items"
      • changedInput schema / properties / restaurant_id / description
        Previous value: -"Restaurant ID — from list_school_restaurants"New value: +"Restaurant ID - from list_school_restaurants"
      • addedOutput schema / properties / availableQty / description
        Added value: +"Portion cap for the day; null means unlimited"
      • addedOutput schema / properties / id / description
        Added value: +"Daily-menu entry ID"
      • addedOutput schema / properties / menuDate / description
        Added value: +"Date the item is orderable, YYYY-MM-DD"
      • addedOutput schema / properties / menuItemId / description
        Added value: +"Menu item scheduled"
    • Changedsign_up_to_volunteer3 fields changed
      • addedOutput schema / properties / id / description
        Added value: +"Signup ID"
      • addedOutput schema / properties / shiftId / description
        Added value: +"Volunteer shift signed up for"
      • addedOutput schema / properties / status / description
        Added value: +"Signup status"
    • Changedupdate_event6 fields changed
      • changedInput schema / properties / event_id / description
        Previous value: -"Event ID — from get_upcoming_events"New value: +"Event ID - from get_upcoming_events"
      • changedInput schema / properties / status / description
        Previous value: -"Event status — cancelled stops sales, completed closes the event"New value: +"Event status - cancelled stops sales, completed closes the event"
      • addedOutput schema / properties / eventDate / description
        Added value: +"Event date, YYYY-MM-DD"
      • addedOutput schema / properties / id / description
        Added value: +"Event ID"
      • addedOutput schema / properties / name / description
        Added value: +"Event name"
      • addedOutput schema / properties / status / description
        Added value: +"Event status after the update"
    • Changedupdate_menu_item9 fields changed
      • changedInput schema / properties / is_active / description
        Previous value: -"Whether the item stays on the restaurant menu — set false to retire it"New value: +"Whether the item stays on the restaurant menu - set false to retire it"
      • changedInput schema / properties / is_available / description
        Previous value: -"Whether the item can be ordered — set false while out of stock"New value: +"Whether the item can be ordered - set false while out of stock"
      • changedInput schema / properties / menu_item_id / description
        Previous value: -"Menu item ID — from list_menu_items"New value: +"Menu item ID - from list_menu_items"
      • changedInput schema / properties / restaurant_id / description
        Previous value: -"Restaurant ID — from list_school_restaurants"New value: +"Restaurant ID - from list_school_restaurants"
      • addedOutput schema / properties / id / description
        Added value: +"Menu item ID"
      • addedOutput schema / properties / isActive / description
        Added value: +"Whether the item is on the restaurant menu"
      • addedOutput schema / properties / isAvailable / description
        Added value: +"Whether the item can currently be ordered"
      • addedOutput schema / properties / name / description
        Added value: +"Item name"
      • addedOutput schema / properties / priceCents / description
        Added value: +"Sale price in cents"
  10. 10 tool updates
    • Changedcancel_event1 field changed
      • addedInput schema / properties / event_id / description
        Added value: +"Event ID — from get_upcoming_events"
    • Changeddelete_menu_item2 fields changed
      • addedInput schema / properties / menu_item_id / description
        Added value: +"Menu item ID — from list_menu_items"
      • addedInput schema / properties / restaurant_id / description
        Added value: +"Restaurant ID — from list_school_restaurants"
    • Removedget_daily_menu
    • Removedget_daily_orders
    • Addedget_menu
    • Removedget_monthly_orders
    • Changedget_orders3 fields changed
      • addedInput schema / properties / menu_date
        Added value: +{
        +  "description": "Single day to query, YYYY-MM-DD",
        +  "type": "string"
        +}
      • addedInput schema / properties / month
        Added value: +{
        +  "description": "Calendar month to query, YYYY-MM",
        +  "type": "string"
        +}
      • changedInput schema / properties / student_id / description
        Previous value: -"Filter to a specific student (must be your own)"New value: +"Filter to a specific student (must be your own; from get_user_info)"
    • Removedget_wallet_status
    • Changedorder_lunch2 fields changed
      • changedInput schema / properties / menu_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Date the lunch is served, YYYY-MM-DD"
      • changedInput schema / properties / menu_item_id / description
        Previous value: -"Menu item ID from get_daily_menu"New value: +"Menu item ID from get_menu"
    • Removedset_menu_item_price
  11. 7 tool updates
    • Changedcreate_event7 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional event description"
      • addedInput schema / properties / ends_at / description
        Added value: +"End time (e.g. 20:00)"
      • changedInput schema / properties / event_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Event date, YYYY-MM-DD"
      • addedInput schema / properties / location / description
        Added value: +"Event location (e.g. Gymnasium)"
      • addedInput schema / properties / max_capacity / description
        Added value: +"Maximum attendees/tickets; omit for unlimited"
      • addedInput schema / properties / name / description
        Added value: +"Event name shown to parents"
      • addedInput schema / properties / starts_at / description
        Added value: +"Start time (e.g. 18:30)"
    • Changedcreate_menu_item7 fields changed
      • addedInput schema / properties / calories / description
        Added value: +"Calorie count"
      • addedInput schema / properties / cost_cents / description
        Added value: +"Kitchen cost in cents (internal margin tracking)"
      • addedInput schema / properties / description / description
        Added value: +"Optional item description"
      • addedInput schema / properties / ingredients / description
        Added value: +"Ingredient list text"
      • addedInput schema / properties / name / description
        Added value: +"Item display name shown to parents"
      • addedInput schema / properties / price_cents / description
        Added value: +"Sale price in cents (e.g. 550 = $5.50)"
      • addedInput schema / properties / restaurant_id / description
        Added value: +"Restaurant ID — from list_school_restaurants"
    • Changedcreate_restaurant4 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional restaurant description"
      • addedInput schema / properties / name / description
        Added value: +"Restaurant display name"
      • addedInput schema / properties / school_slug / description
        Added value: +"School slug — defaults to the active school"
      • addedInput schema / properties / tax_percent / description
        Added value: +"Sales tax percentage applied to orders (e.g. 5 for 5%)"
    • Changedlist_menu_items1 field changed
      • addedInput schema / properties / restaurant_id / description
        Added value: +"Restaurant ID — from list_school_restaurants"
    • Changedset_daily_menu4 fields changed
      • addedInput schema / properties / available_qty / description
        Added value: +"Maximum portions for the day; omit for unlimited"
      • changedInput schema / properties / menu_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Date the item is orderable, YYYY-MM-DD"
      • addedInput schema / properties / menu_item_id / description
        Added value: +"Menu item ID — from list_menu_items"
      • addedInput schema / properties / restaurant_id / description
        Added value: +"Restaurant ID — from list_school_restaurants"
    • Changedupdate_event10 fields changed
      • addedInput schema / properties / description / description
        Added value: +"New event description shown to parents"
      • addedInput schema / properties / ends_at / description
        Added value: +"End time (e.g. 20:00)"
      • changedInput schema / properties / event_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Event date, YYYY-MM-DD"
      • addedInput schema / properties / event_id / description
        Added value: +"Event ID — from get_upcoming_events"
      • addedInput schema / properties / location / description
        Added value: +"Event location (e.g. Gymnasium)"
      • addedInput schema / properties / max_capacity / description
        Added value: +"Maximum number of attendees/tickets"
      • addedInput schema / properties / name / description
        Added value: +"New event name"
      • addedInput schema / properties / starts_at / description
        Added value: +"Start time (e.g. 18:30)"
      • addedInput schema / properties / status / description
        Added value: +"Event status — cancelled stops sales, completed closes the event"
      • addedInput schema / properties / ticket_price_cents / description
        Added value: +"Ticket price in cents; 0 for free events"
    • Changedupdate_menu_item10 fields changed
      • addedInput schema / properties / calories / description
        Added value: +"Calorie count"
      • addedInput schema / properties / cost_cents / description
        Added value: +"Kitchen cost in cents (internal margin tracking)"
      • addedInput schema / properties / description / description
        Added value: +"New item description shown to parents"
      • addedInput schema / properties / ingredients / description
        Added value: +"Ingredient list text"
      • addedInput schema / properties / is_active / description
        Added value: +"Whether the item stays on the restaurant menu — set false to retire it"
      • addedInput schema / properties / is_available / description
        Added value: +"Whether the item can be ordered — set false while out of stock"
      • addedInput schema / properties / menu_item_id / description
        Added value: +"Menu item ID — from list_menu_items"
      • addedInput schema / properties / name / description
        Added value: +"New display name for the item"
      • addedInput schema / properties / price_cents / description
        Added value: +"Sale price in cents (e.g. 550 = $5.50)"
      • addedInput schema / properties / restaurant_id / description
        Added value: +"Restaurant ID — from list_school_restaurants"
  12. 12 tool updates
    • Addedcancel_event
    • Addedcreate_event
    • Addedcreate_menu_item
    • Addedcreate_restaurant
    • Addeddelete_menu_item
    • Addedget_daily_orders
    • Addedlist_menu_items
    • Addedlist_school_restaurants
    • Addedset_daily_menu
    • Addedset_menu_item_price
    • Addedupdate_event
    • Addedupdate_menu_item
  13. 1 tool update
    • Changedget_user_info1 field changed
      • removedOutput schema / properties / lastName
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
  14. 13 tool updates
    • First observedcancel_order
    • First observedcreate_draft_order
    • First observedfinalize_order
    • First observedget_daily_menu
    • First observedget_monthly_orders
    • First observedget_orders
    • First observedget_upcoming_events
    • First observedget_user_info
    • First observedget_wallet_balance
    • First observedget_wallet_status
    • First observedorder_lunch
    • First observedregister_event
    • First observedsign_up_to_volunteer

Publisher details

Operator
Paxaver · Publisher source
Operator website
https://paxaver.com
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    22 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources