Server definition
- Hash
- sha256:9f4cd1da99a2afde85b5f197a1731f8640856a4276f3a8896d97d380e2669397
- What it is
- What a remote MCP server returned when asked what it offers: 26 tools
The blob, as servednamed by its sha256
{
"instructions": "This connector is safe. Paxaver connects school community accounts. ALWAYS call get_my_context first to establish context. For lunch menu questions use get_lunch_menu (accepts 'date' YYYY-MM-DD or 'month' YYYY-MM). To order lunch use create_lunch_order_draft then pay_lunch_order_draft (menu_item_id values come from get_lunch_menu). Do not invent tool names - use only the tools returned by tools/list. IMPORTANT: Read-only tools are free. Add, edit, and update tools require an active Paxaver AI subscription. Enable a free trial or purchase a subscription at https://paxaver.com/settings/mcp.",
"tools": [
{
"description": "ADMIN: Archives (soft-deletes) a menu item so it can no longer be ordered - the item is removed from ordering but stays on historical orders. To retire it from the restaurant menu without archiving, use update_restaurant_menu_item with is_active=false. Requires pac_cordinator or lunch_cordinator role. DESTRUCTIVE operation - confirm with the user. Get restaurant_id from list_school_restaurants and menu_item_id from list_restaurant_menu_items.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"menu_item_id": {
"description": "Menu item ID - from list_restaurant_menu_items",
"type": "string"
},
"restaurant_id": {
"description": "Restaurant ID - from list_school_restaurants",
"type": "string"
}
},
"required": [
"restaurant_id",
"menu_item_id"
],
"type": "object"
},
"name": "archive_restaurant_menu_item",
"outputSchema": {
"properties": {
"deleted": {
"description": "Whether the item was soft-deleted",
"type": "boolean"
},
"id": {
"description": "Menu item ID",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"ticket_id": {
"description": "Ticket ID from list_my_event_registrations - must belong to the caller and still be cancellable",
"type": "string"
}
},
"required": [
"ticket_id"
],
"type": "object"
},
"name": "cancel_my_event_registration",
"outputSchema": {
"properties": {
"id": {
"description": "Cancelled ticket ID",
"type": "string"
},
"status": {
"description": "Ticket status (cancelled)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"order_id": {
"description": "ID of a finalized order - from list_my_lunch_orders; the order must still be finalized and not yet have labels sent",
"type": "string"
}
},
"required": [
"order_id"
],
"type": "object"
},
"name": "cancel_my_lunch_order",
"outputSchema": {
"properties": {
"balanceCents": {
"description": "Wallet balance after the refund, in cents",
"type": [
"number",
"null"
]
},
"id": {
"description": "Order ID",
"type": "string"
},
"refundCents": {
"description": "Amount refunded to the wallet, in cents",
"type": "integer"
},
"status": {
"description": "Order status (cancelled)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"signup_id": {
"description": "Signup ID from list_my_volunteer_signups - must belong to the caller and still be active",
"type": "string"
}
},
"required": [
"signup_id"
],
"type": "object"
},
"name": "cancel_my_volunteer_signup",
"outputSchema": {
"properties": {
"id": {
"description": "Cancelled signup ID",
"type": "string"
},
"status": {
"description": "Signup status (cancelled)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Cancels a school event outright; cancelled events cannot be reactivated. For schedule, capacity, or price changes use update_school_event instead. Requires pac_cordinator or event_cordinator role. DESTRUCTIVE - confirm with the user. Get event_id from list_school_events.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"event_id": {
"description": "Event ID - from list_school_events; cancelling is permanent and cannot be undone",
"type": "string"
}
},
"required": [
"event_id"
],
"type": "object"
},
"name": "cancel_school_event",
"outputSchema": {
"properties": {
"id": {
"description": "Event ID",
"type": "string"
},
"status": {
"description": "Event status (cancelled)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"items": {
"description": "Line items to order; get IDs and prices from get_lunch_menu",
"items": {
"properties": {
"menu_item_id": {
"description": "Menu item ID from get_lunch_menu",
"type": "string"
},
"menu_item_name": {
"description": "Item display name from get_lunch_menu",
"type": "string"
},
"price_cents": {
"description": "Unit price in cents from get_lunch_menu",
"type": "integer"
},
"quantity": {
"description": "Number of servings",
"minimum": 1,
"type": "integer"
}
},
"required": [
"menu_item_id",
"menu_item_name",
"price_cents",
"quantity"
],
"type": "object"
},
"type": "array"
},
"menu_date": {
"description": "Date the lunch is served, YYYY-MM-DD",
"type": "string"
},
"school_slug": {
"description": "School slug (from get_my_context); defaults to the active school",
"type": "string"
},
"student_id": {
"description": "Student ID (must be your own student; from get_my_context); required when the user has more than one student, defaults to their only student",
"type": "string"
}
},
"required": [
"menu_date",
"items"
],
"type": "object"
},
"name": "create_lunch_order_draft",
"outputSchema": {
"properties": {
"id": {
"description": "Draft order ID - pass to pay_lunch_order_draft",
"type": "string"
},
"itemTotalCents": {
"description": "Item total in cents - charged on finalize",
"type": "integer"
},
"items": {
"description": "Draft line items",
"items": {
"type": "object"
},
"type": "array"
},
"menuDate": {
"description": "Date the lunch is served, YYYY-MM-DD",
"type": "string"
},
"schoolSlug": {
"description": "School the order was placed at",
"type": "string"
},
"status": {
"description": "Order status (draft)",
"type": "string"
},
"studentId": {
"description": "Student the order is for",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Creates a new menu item on a restaurant. Only restaurant_id and name are required - set price_cents before the item can be meaningfully ordered. New items start active and available; use update_restaurant_menu_item to change them later. Requires pac_cordinator or lunch_cordinator role. WRITE operation - confirm with the user. Get restaurant_id from list_school_restaurants.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"calories": {
"description": "Calorie count",
"type": "integer"
},
"cost_cents": {
"description": "Kitchen cost in cents (internal margin tracking)",
"type": "integer"
},
"description": {
"description": "Optional item description",
"type": "string"
},
"ingredients": {
"description": "Ingredient list",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "Item display name shown to parents",
"type": "string"
},
"price_cents": {
"description": "Sale price in cents (e.g. 550 = $5.50)",
"type": "integer"
},
"restaurant_id": {
"description": "Restaurant ID - from list_school_restaurants",
"type": "string"
}
},
"required": [
"restaurant_id",
"name"
],
"type": "object"
},
"name": "create_restaurant_menu_item",
"outputSchema": {
"properties": {
"id": {
"description": "Menu item ID",
"type": "string"
},
"isActive": {
"description": "Whether the item is on the restaurant menu",
"type": "boolean"
},
"name": {
"description": "Item name",
"type": "string"
},
"priceCents": {
"description": "Sale price in cents",
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Creates a school event, optionally ticketed, at the active school. To change an existing event use update_school_event; to register a parent for an event use register_for_event. Requires pac_cordinator or event_cordinator role. WRITE - only create on explicit user request.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"description": "Optional event description",
"type": "string"
},
"ends_at": {
"description": "End time (e.g. 20:00)",
"type": "string"
},
"event_date": {
"description": "Event date, YYYY-MM-DD",
"type": "string"
},
"location": {
"description": "Event location (e.g. Gymnasium)",
"type": "string"
},
"max_capacity": {
"description": "Maximum attendees/tickets; omit for unlimited",
"type": "integer"
},
"name": {
"description": "Event name shown to parents",
"type": "string"
},
"school_slug": {
"description": "School slug (defaults to active school)",
"type": "string"
},
"starts_at": {
"description": "Start time (e.g. 18:30)",
"type": "string"
},
"ticket_price_cents": {
"description": "Ticket price in cents (0 = free)",
"type": "integer"
}
},
"required": [
"name",
"event_date"
],
"type": "object"
},
"name": "create_school_event",
"outputSchema": {
"properties": {
"eventDate": {
"description": "Event date, YYYY-MM-DD",
"type": "string"
},
"id": {
"description": "Event ID",
"type": "string"
},
"name": {
"description": "Event name",
"type": "string"
},
"status": {
"description": "Event status (e.g. active)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Adds a restaurant to the active school so it can offer menu items via create_restaurant_menu_item. To change an existing restaurant there is no update tool - recreate or manage it in the Paxaver admin. Requires pac_cordinator role. WRITE - confirm with the user.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"description": "Optional restaurant description",
"type": "string"
},
"name": {
"description": "Restaurant display name",
"type": "string"
},
"school_slug": {
"description": "School slug - defaults to the active school",
"type": "string"
},
"tax_percent": {
"description": "Sales tax percentage applied to orders (e.g. 5 for 5%)",
"type": "number"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_school_restaurant",
"outputSchema": {
"properties": {
"id": {
"description": "Restaurant ID",
"type": "string"
},
"isActive": {
"description": "Whether the restaurant is active",
"type": "boolean"
},
"name": {
"description": "Restaurant name",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"order_id": {
"description": "Draft order ID from create_lunch_order_draft - must still be in draft status",
"type": "string"
}
},
"required": [
"order_id"
],
"type": "object"
},
"name": "discard_lunch_order_draft",
"outputSchema": {
"properties": {
"orderId": {
"description": "Discarded draft order ID",
"type": "string"
},
"status": {
"description": "Order status (discarded)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"date": {
"description": "Single day to show, YYYY-MM-DD; omit when using month",
"type": "string"
},
"month": {
"description": "Calendar month to show, YYYY-MM; omit when using date. Today is used when neither is given",
"type": "string"
}
},
"type": "object"
},
"name": "get_lunch_menu",
"outputSchema": {
"properties": {
"date": {
"description": "Date this menu applies to, YYYY-MM-DD",
"type": "string"
},
"menuItems": {
"description": "Items orderable on that date",
"items": {
"properties": {
"availableQty": {
"description": "Remaining portions; null means unlimited",
"type": [
"integer",
"null"
]
},
"dailyMenuId": {
"description": "Daily-menu entry ID",
"type": "string"
},
"dietaryTags": {
"description": "Dietary labels (e.g. vegetarian, halal)",
"items": {
"type": "string"
},
"type": "array"
},
"menuItemId": {
"description": "Menu item ID for ordering tools",
"type": "string"
},
"menuItemName": {
"description": "Item display name",
"type": "string"
},
"priceCents": {
"description": "Sale price in cents",
"type": "integer"
},
"restaurantName": {
"description": "Restaurant offering the item",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_my_context",
"outputSchema": {
"properties": {
"firstName": {
"description": "User first name",
"type": [
"string",
"null"
]
},
"roles": {
"description": "Role codes the user holds at the active school",
"items": {
"type": "string"
},
"type": "array"
},
"schoolName": {
"description": "Active school display name",
"type": [
"string",
"null"
]
},
"schoolSlug": {
"description": "Active school slug",
"type": [
"string",
"null"
]
},
"students": {
"description": "Students the user is guardian for (id, firstName, schoolSlug)",
"items": {
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_my_wallet_balance",
"outputSchema": {
"properties": {
"balanceCents": {
"description": "Spendable balance in cents",
"type": [
"number",
"null"
]
},
"balanceFormatted": {
"description": "Balance formatted with the currency symbol",
"type": [
"string",
"null"
]
},
"currency": {
"description": "ISO currency code (CAD, USD, or MXN)",
"type": [
"string",
"null"
]
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_my_event_registrations",
"outputSchema": {
"properties": {
"tickets": {
"description": "Caller's event tickets at the active school",
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"menu_date": {
"description": "Single day to query, YYYY-MM-DD; omit when using month",
"type": "string"
},
"month": {
"description": "Calendar month to query, YYYY-MM; omit when using menu_date",
"type": "string"
},
"student_id": {
"description": "Filter to a specific student (must be your own student, from get_my_context; admins may filter any student in the school)",
"type": "string"
}
},
"type": "object"
},
"name": "list_my_lunch_orders",
"outputSchema": {
"properties": {
"orders": {
"description": "Orders matching the filters",
"items": {
"properties": {
"createdAt": {
"description": "ISO timestamp the order was placed",
"type": "string"
},
"id": {
"description": "Order ID",
"type": "string"
},
"itemTotalCents": {
"description": "Item total in cents",
"type": "integer"
},
"items": {
"description": "Ordered line items",
"items": {
"type": "object"
},
"type": "array"
},
"menuDate": {
"description": "Date the lunch is served, YYYY-MM-DD",
"type": "string"
},
"status": {
"description": "Order status",
"type": "string"
},
"studentId": {
"description": "Student the order is for",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_my_volunteer_signups",
"outputSchema": {
"properties": {
"signups": {
"description": "Caller's active volunteer signups",
"type": "array"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Lists the full menu-item catalog for a restaurant, including inactive and unavailable items - this is the catalog, not what parents can order on a date (use get_lunch_menu for that). Provides menu_item_id values for update_restaurant_menu_item, archive_restaurant_menu_item, and schedule_lunch_menu_item. Requires pac_cordinator or lunch_cordinator role. Get restaurant_id from list_school_restaurants.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"restaurant_id": {
"description": "Restaurant ID - from list_school_restaurants",
"type": "string"
}
},
"required": [
"restaurant_id"
],
"type": "object"
},
"name": "list_restaurant_menu_items",
"outputSchema": {
"properties": {
"items": {
"description": "Full catalog items, including inactive and unavailable",
"items": {
"properties": {
"calories": {
"description": "Calorie count",
"type": [
"integer",
"null"
]
},
"costCents": {
"description": "Kitchen cost in cents",
"type": [
"integer",
"null"
]
},
"description": {
"description": "Item description",
"type": [
"string",
"null"
]
},
"id": {
"description": "Menu item ID",
"type": "string"
},
"ingredients": {
"description": "Ingredient list text",
"type": [
"string",
"null"
]
},
"isActive": {
"description": "Whether the item is on the restaurant menu",
"type": "boolean"
},
"isAvailable": {
"description": "Whether the item can currently be ordered",
"type": "boolean"
},
"name": {
"description": "Item name",
"type": "string"
},
"priceCents": {
"description": "Sale price in cents",
"type": "integer"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"end_date": {
"description": "Last day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events",
"type": "string"
},
"start_date": {
"description": "First day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events",
"type": "string"
}
},
"type": "object"
},
"name": "list_school_events",
"outputSchema": {
"properties": {
"events": {
"description": "Upcoming events matching the date range",
"items": {
"properties": {
"endsAt": {
"description": "End time",
"type": [
"string",
"null"
]
},
"eventDate": {
"description": "Event date, YYYY-MM-DD",
"type": "string"
},
"id": {
"description": "Event ID - input to register_for_event, update_school_event, cancel_school_event",
"type": "string"
},
"isClosed": {
"description": "Whether registration is closed",
"type": "boolean"
},
"location": {
"description": "Event location",
"type": [
"string",
"null"
]
},
"name": {
"description": "Event name",
"type": "string"
},
"startsAt": {
"description": "Start time",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Lists the active restaurants attached to a school (defaults to the active school). Inactive restaurants are not returned. The restaurant_id values returned are required by list_restaurant_menu_items, create_restaurant_menu_item, update_restaurant_menu_item, archive_restaurant_menu_item, and schedule_lunch_menu_item. Requires pac_cordinator, pac_member, or lunch_cordinator role.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"school_slug": {
"description": "School slug (defaults to active school)",
"type": "string"
}
},
"type": "object"
},
"name": "list_school_restaurants",
"outputSchema": {
"properties": {
"restaurants": {
"description": "Active restaurants attached to the school (inactive ones are excluded)",
"items": {
"properties": {
"description": {
"description": "Restaurant description",
"type": [
"string",
"null"
]
},
"id": {
"description": "Restaurant ID - input to menu-item and daily-menu tools",
"type": "string"
},
"isActive": {
"description": "Whether the restaurant is active",
"type": "boolean"
},
"logoUrl": {
"description": "Restaurant logo URL",
"type": [
"string",
"null"
]
},
"name": {
"description": "Restaurant name",
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"order_id": {
"description": "Draft order ID from create_lunch_order_draft - must still be in draft status; already-finalized orders are rejected",
"type": "string"
},
"tip_cents": {
"default": 0,
"description": "Tip in cents (donated to school PAC)",
"type": "integer"
}
},
"required": [
"order_id"
],
"type": "object"
},
"name": "pay_lunch_order_draft",
"outputSchema": {
"properties": {
"itemTotalCents": {
"description": "Item total in cents",
"type": "integer"
},
"orderId": {
"description": "Order ID",
"type": "string"
},
"status": {
"description": "'finalized' when the wallet covered the full total",
"type": "string"
},
"tipCents": {
"description": "PAC donation added, in cents",
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"event_id": {
"description": "Event ID from list_school_events - registration must still be open (check the closed flag)",
"type": "string"
},
"quantity": {
"default": 1,
"description": "Number of tickets",
"minimum": 1,
"type": "integer"
}
},
"required": [
"event_id"
],
"type": "object"
},
"name": "register_for_event",
"outputSchema": {
"properties": {
"eventId": {
"description": "Event the user registered for",
"type": "string"
},
"id": {
"description": "Registration ID",
"type": "string"
},
"quantity": {
"description": "Tickets issued",
"type": "integer"
},
"status": {
"description": "Registration status",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Puts a restaurant menu item on the orderable menu for a given date, optionally capping portions. This only schedules the item - to retire it entirely use update_restaurant_menu_item (is_active) or archive_restaurant_menu_item. Requires pac_cordinator or lunch_cordinator role. WRITE - confirm with the user. Get IDs from list_school_restaurants and list_restaurant_menu_items.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"available_qty": {
"description": "Maximum portions for the day; omit for unlimited",
"type": "integer"
},
"menu_date": {
"description": "Date the item is orderable, YYYY-MM-DD",
"type": "string"
},
"menu_item_id": {
"description": "Menu item ID - from list_restaurant_menu_items",
"type": "string"
},
"restaurant_id": {
"description": "Restaurant ID - from list_school_restaurants",
"type": "string"
}
},
"required": [
"restaurant_id",
"menu_item_id",
"menu_date"
],
"type": "object"
},
"name": "schedule_lunch_menu_item",
"outputSchema": {
"properties": {
"availableQty": {
"description": "Portion cap for the day; null means unlimited",
"type": [
"integer",
"null"
]
},
"id": {
"description": "Daily-menu entry ID",
"type": "string"
},
"menuDate": {
"description": "Date the item is orderable, YYYY-MM-DD",
"type": "string"
},
"menuItemId": {
"description": "Menu item scheduled",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"shift_id": {
"description": "Volunteer shift ID - from the event's volunteer shifts (list_school_events)",
"type": "string"
}
},
"required": [
"shift_id"
],
"type": "object"
},
"name": "sign_up_for_volunteer_shift",
"outputSchema": {
"properties": {
"id": {
"description": "Signup ID",
"type": "string"
},
"shiftId": {
"description": "Volunteer shift signed up for",
"type": "string"
},
"status": {
"description": "Signup status",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"items": {
"description": "Replacement line items (menu_item_id from get_lunch_menu + quantity); replaces all existing items when provided",
"type": "array"
},
"menu_date": {
"description": "New date the lunch is served, YYYY-MM-DD",
"type": "string"
},
"order_id": {
"description": "Draft order ID from create_lunch_order_draft - must still be in draft status",
"type": "string"
}
},
"required": [
"order_id"
],
"type": "object"
},
"name": "update_lunch_order_draft",
"outputSchema": {
"properties": {
"orderId": {
"description": "Updated draft order ID",
"type": "string"
},
"status": {
"description": "Order status (draft)",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Partially updates an existing menu item - only the provided fields change; omitted fields keep their current values. Use for renames, description edits, price changes (price_cents - FINANCIAL, confirm the new price), nutrition updates, or retiring an item (is_active=false). Day-level orderability is controlled by schedule_lunch_menu_item, not this tool. Use archive_restaurant_menu_item to remove the item permanently. Requires pac_cordinator or lunch_cordinator role. WRITE operation - confirm changes with the user. Get restaurant_id from list_school_restaurants and menu_item_id from list_restaurant_menu_items.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"calories": {
"description": "Calorie count",
"type": "integer"
},
"cost_cents": {
"description": "Kitchen cost in cents (internal margin tracking)",
"type": "integer"
},
"description": {
"description": "New item description shown to parents",
"type": "string"
},
"ingredients": {
"description": "Ingredient list",
"items": {
"type": "string"
},
"type": "array"
},
"is_active": {
"description": "Whether the item stays on the restaurant menu - set false to retire it",
"type": "boolean"
},
"menu_item_id": {
"description": "Menu item ID - from list_restaurant_menu_items",
"type": "string"
},
"name": {
"description": "New display name for the item",
"type": "string"
},
"price_cents": {
"description": "Sale price in cents (e.g. 550 = $5.50)",
"type": "integer"
},
"restaurant_id": {
"description": "Restaurant ID - from list_school_restaurants",
"type": "string"
}
},
"required": [
"restaurant_id",
"menu_item_id"
],
"type": "object"
},
"name": "update_restaurant_menu_item",
"outputSchema": {
"properties": {
"id": {
"description": "Menu item ID",
"type": "string"
},
"isActive": {
"description": "Whether the item is on the restaurant menu",
"type": "boolean"
},
"isAvailable": {
"description": "Whether the item can currently be ordered",
"type": "boolean"
},
"name": {
"description": "Item name",
"type": "string"
},
"priceCents": {
"description": "Sale price in cents",
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "ADMIN: Partially updates an existing school event - only the provided fields change; omitted fields keep their current values. Use for reschedules, capacity or price changes, and status transitions (cancelled/completed). Prefer cancel_school_event to cancel outright. Requires pac_cordinator or event_cordinator role. WRITE operation - confirm changes with the user. Get event_id from list_school_events.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"description": "New event description shown to parents",
"type": "string"
},
"ends_at": {
"description": "End time (e.g. 20:00)",
"type": "string"
},
"event_date": {
"description": "Event date, YYYY-MM-DD",
"type": "string"
},
"event_id": {
"description": "Event ID - from list_school_events",
"type": "string"
},
"location": {
"description": "Event location (e.g. Gymnasium)",
"type": "string"
},
"max_capacity": {
"description": "Maximum number of attendees/tickets",
"type": "integer"
},
"name": {
"description": "New event name",
"type": "string"
},
"starts_at": {
"description": "Start time (e.g. 18:30)",
"type": "string"
},
"status": {
"description": "Event status - cancelled stops sales, completed closes the event",
"enum": [
"active",
"cancelled",
"completed"
],
"type": "string"
},
"ticket_price_cents": {
"description": "Ticket price in cents; 0 for free events",
"type": "integer"
}
},
"required": [
"event_id"
],
"type": "object"
},
"name": "update_school_event",
"outputSchema": {
"properties": {
"eventDate": {
"description": "Event date, YYYY-MM-DD",
"type": "string"
},
"id": {
"description": "Event ID",
"type": "string"
},
"name": {
"description": "Event name",
"type": "string"
},
"status": {
"description": "Event status after the update",
"type": "string"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:9f4cd1da99a2afde85b5f197a1731f8640856a4276f3a8896d97d380e2669397 | sha256sum