이 MCP로 할 수 있는 일
Manages school events, volunteer shifts, lunch menus and orders, restaurant catalogs, student-family contexts, and school wallet payments.
도구
입력 스키마
{'type': 'object', 'required': ['restaurant_id', 'menu_item_id'], 'properties': {'menu_item_id': {'type': 'string', 'description': 'Menu item ID - from list_restaurant_menu_items'}, 'restaurant_id': {'type': 'string', 'description': 'Restaurant ID - from list_school_restaurants'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Menu item ID'}, 'deleted': {'type': 'boolean', 'description': 'Whether the item was soft-deleted'}}}
입력 스키마
{'type': 'object', 'required': ['ticket_id'], 'properties': {'ticket_id': {'type': 'string', 'description': 'Ticket ID from list_my_event_registrations - must belong to the caller and still be cancellable'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Cancelled ticket ID'}, 'status': {'type': 'string', 'description': 'Ticket status (cancelled)'}}}
입력 스키마
{'type': 'object', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string', 'description': 'ID of a finalized order - from list_my_lunch_orders; the order must still be finalized and not yet have labels sent'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Order ID'}, 'status': {'type': 'string', 'description': 'Order status (cancelled)'}, 'refundCents': {'type': 'integer', 'description': 'Amount refunded to the wallet, in cents'}, 'balanceCents': {'type': ['number', 'null'], 'description': 'Wallet balance after the refund, in cents'}}}
입력 스키마
{'type': 'object', 'required': ['signup_id'], 'properties': {'signup_id': {'type': 'string', 'description': 'Signup ID from list_my_volunteer_signups - must belong to the caller and still be active'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Cancelled signup ID'}, 'status': {'type': 'string', 'description': 'Signup status (cancelled)'}}}
입력 스키마
{'type': 'object', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID - from list_school_events; cancelling is permanent and cannot be undone'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Event ID'}, 'status': {'type': 'string', 'description': 'Event status (cancelled)'}}}
입력 스키마
{'type': 'object', 'required': ['menu_date', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['menu_item_id', 'menu_item_name', 'price_cents', 'quantity'], 'properties': {'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Number of servings'}, 'price_cents': {'type': 'integer', 'description': 'Unit price in cents from get_lunch_menu'}, 'menu_item_id': {'type': 'string', 'description': 'Menu item ID from get_lunch_menu'}, 'menu_item_name': {'type': 'string', 'description': 'Item display name from get_lunch_menu'}}}, 'description': 'Line items to order; get IDs and prices from get_lunch_menu'}, 'menu_date': {'type': 'string', 'description': 'Date the lunch is served, YYYY-MM-DD'}, 'student_id': {'type': 'string', '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'}, 'school_slug': {'type': 'string', 'description': 'School slug (from get_my_context); defaults to the active school'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Draft order ID - pass to pay_lunch_order_draft'}, 'items': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Draft line items'}, 'status': {'type': 'string', 'description': 'Order status (draft)'}, 'menuDate': {'type': 'string', 'description': 'Date the lunch is served, YYYY-MM-DD'}, 'studentId': {'type': 'string', 'description': 'Student the order is for'}, 'schoolSlug': {'type': 'string', 'description': 'School the order was placed at'}, 'itemTotalCents': {'type': 'integer', 'description': 'Item total in cents - charged on finalize'}}}
입력 스키마
{'type': 'object', 'required': ['restaurant_id', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Item display name shown to parents'}, 'calories': {'type': 'integer', 'description': 'Calorie count'}, 'cost_cents': {'type': 'integer', 'description': 'Kitchen cost in cents (internal margin tracking)'}, 'description': {'type': 'string', 'description': 'Optional item description'}, 'ingredients': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Ingredient list'}, 'price_cents': {'type': 'integer', 'description': 'Sale price in cents (e.g. 550 = $5.50)'}, 'restaurant_id': {'type': 'string', 'description': 'Restaurant ID - from list_school_restaurants'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Menu item ID'}, 'name': {'type': 'string', 'description': 'Item name'}, 'isActive': {'type': 'boolean', 'description': 'Whether the item is on the restaurant menu'}, 'priceCents': {'type': 'integer', 'description': 'Sale price in cents'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'event_date'], 'properties': {'name': {'type': 'string', 'description': 'Event name shown to parents'}, 'ends_at': {'type': 'string', 'description': 'End time (e.g. 20:00)'}, 'location': {'type': 'string', 'description': 'Event location (e.g. Gymnasium)'}, 'starts_at': {'type': 'string', 'description': 'Start time (e.g. 18:30)'}, 'event_date': {'type': 'string', 'description': 'Event date, YYYY-MM-DD'}, 'description': {'type': 'string', 'description': 'Optional event description'}, 'school_slug': {'type': 'string', 'description': 'School slug (defaults to active school)'}, 'max_capacity': {'type': 'integer', 'description': 'Maximum attendees/tickets; omit for unlimited'}, 'ticket_price_cents': {'type': 'integer', 'description': 'Ticket price in cents (0 = free)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Event ID'}, 'name': {'type': 'string', 'description': 'Event name'}, 'status': {'type': 'string', 'description': 'Event status (e.g. active)'}, 'eventDate': {'type': 'string', 'description': 'Event date, YYYY-MM-DD'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Restaurant display name'}, 'description': {'type': 'string', 'description': 'Optional restaurant description'}, 'school_slug': {'type': 'string', 'description': 'School slug - defaults to the active school'}, 'tax_percent': {'type': 'number', 'description': 'Sales tax percentage applied to orders (e.g. 5 for 5%)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Restaurant ID'}, 'name': {'type': 'string', 'description': 'Restaurant name'}, 'isActive': {'type': 'boolean', 'description': 'Whether the restaurant is active'}}}
입력 스키마
{'type': 'object', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string', 'description': 'Draft order ID from create_lunch_order_draft - must still be in draft status'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'status': {'type': 'string', 'description': 'Order status (discarded)'}, 'orderId': {'type': 'string', 'description': 'Discarded draft order ID'}}}
입력 스키마
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'Single day to show, YYYY-MM-DD; omit when using month'}, 'month': {'type': 'string', 'description': 'Calendar month to show, YYYY-MM; omit when using date. Today is used when neither is given'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'Date this menu applies to, YYYY-MM-DD'}, 'menuItems': {'type': 'array', 'items': {'type': 'object', 'properties': {'menuItemId': {'type': 'string', 'description': 'Menu item ID for ordering tools'}, 'priceCents': {'type': 'integer', 'description': 'Sale price in cents'}, 'dailyMenuId': {'type': 'string', 'description': 'Daily-menu entry ID'}, 'dietaryTags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dietary labels (e.g. vegetarian, halal)'}, 'availableQty': {'type': ['integer', 'null'], 'description': 'Remaining portions; null means unlimited'}, 'menuItemName': {'type': 'string', 'description': 'Item display name'}, 'restaurantName': {'type': ['string', 'null'], 'description': 'Restaurant offering the item'}}}, 'description': 'Items orderable on that date'}}}
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'roles': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Role codes the user holds at the active school'}, 'students': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Students the user is guardian for (id, firstName, schoolSlug)'}, 'firstName': {'type': ['string', 'null'], 'description': 'User first name'}, 'schoolName': {'type': ['string', 'null'], 'description': 'Active school display name'}, 'schoolSlug': {'type': ['string', 'null'], 'description': 'Active school slug'}}}
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'currency': {'type': ['string', 'null'], 'description': 'ISO currency code (CAD, USD, or MXN)'}, 'balanceCents': {'type': ['number', 'null'], 'description': 'Spendable balance in cents'}, 'balanceFormatted': {'type': ['string', 'null'], 'description': 'Balance formatted with the currency symbol'}}}
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'tickets': {'type': 'array', 'description': "Caller's event tickets at the active school"}}}
입력 스키마
{'type': 'object', 'properties': {'month': {'type': 'string', 'description': 'Calendar month to query, YYYY-MM; omit when using menu_date'}, 'menu_date': {'type': 'string', 'description': 'Single day to query, YYYY-MM-DD; omit when using month'}, 'student_id': {'type': 'string', 'description': 'Filter to a specific student (must be your own student, from get_my_context; admins may filter any student in the school)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'orders': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Order ID'}, 'items': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Ordered line items'}, 'status': {'type': 'string', 'description': 'Order status'}, 'menuDate': {'type': 'string', 'description': 'Date the lunch is served, YYYY-MM-DD'}, 'createdAt': {'type': 'string', 'description': 'ISO timestamp the order was placed'}, 'studentId': {'type': 'string', 'description': 'Student the order is for'}, 'itemTotalCents': {'type': 'integer', 'description': 'Item total in cents'}}}, 'description': 'Orders matching the filters'}}}
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'signups': {'type': 'array', 'description': "Caller's active volunteer signups"}}}
입력 스키마
{'type': 'object', 'required': ['restaurant_id'], 'properties': {'restaurant_id': {'type': 'string', 'description': 'Restaurant ID - from list_school_restaurants'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Menu item ID'}, 'name': {'type': 'string', 'description': 'Item name'}, 'calories': {'type': ['integer', 'null'], 'description': 'Calorie count'}, 'isActive': {'type': 'boolean', 'description': 'Whether the item is on the restaurant menu'}, 'costCents': {'type': ['integer', 'null'], 'description': 'Kitchen cost in cents'}, 'priceCents': {'type': 'integer', 'description': 'Sale price in cents'}, 'description': {'type': ['string', 'null'], 'description': 'Item description'}, 'ingredients': {'type': ['string', 'null'], 'description': 'Ingredient list text'}, 'isAvailable': {'type': 'boolean', 'description': 'Whether the item can currently be ordered'}}}, 'description': 'Full catalog items, including inactive and unavailable'}}}
입력 스키마
{'type': 'object', 'properties': {'end_date': {'type': 'string', 'description': 'Last day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events'}, 'start_date': {'type': 'string', 'description': 'First day of the range, YYYY-MM-DD (inclusive); omit for all upcoming events'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'events': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Event ID - input to register_for_event, update_school_event, cancel_school_event'}, 'name': {'type': 'string', 'description': 'Event name'}, 'endsAt': {'type': ['string', 'null'], 'description': 'End time'}, 'isClosed': {'type': 'boolean', 'description': 'Whether registration is closed'}, 'location': {'type': ['string', 'null'], 'description': 'Event location'}, 'startsAt': {'type': ['string', 'null'], 'description': 'Start time'}, 'eventDate': {'type': 'string', 'description': 'Event date, YYYY-MM-DD'}}}, 'description': 'Upcoming events matching the date range'}}}
입력 스키마
{'type': 'object', 'properties': {'school_slug': {'type': 'string', 'description': 'School slug (defaults to active school)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'restaurants': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Restaurant ID - input to menu-item and daily-menu tools'}, 'name': {'type': 'string', 'description': 'Restaurant name'}, 'logoUrl': {'type': ['string', 'null'], 'description': 'Restaurant logo URL'}, 'isActive': {'type': 'boolean', 'description': 'Whether the restaurant is active'}, 'description': {'type': ['string', 'null'], 'description': 'Restaurant description'}}}, 'description': 'Active restaurants attached to the school (inactive ones are excluded)'}}}
입력 스키마
{'type': 'object', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string', 'description': 'Draft order ID from create_lunch_order_draft - must still be in draft status; already-finalized orders are rejected'}, 'tip_cents': {'type': 'integer', 'default': 0, 'description': 'Tip in cents (donated to school PAC)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'status': {'type': 'string', 'description': "'finalized' when the wallet covered the full total"}, 'orderId': {'type': 'string', 'description': 'Order ID'}, 'tipCents': {'type': 'integer', 'description': 'PAC donation added, in cents'}, 'itemTotalCents': {'type': 'integer', 'description': 'Item total in cents'}}}
입력 스키마
{'type': 'object', 'required': ['event_id'], 'properties': {'event_id': {'type': 'string', 'description': 'Event ID from list_school_events - registration must still be open (check the closed flag)'}, 'quantity': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Number of tickets'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Registration ID'}, 'status': {'type': 'string', 'description': 'Registration status'}, 'eventId': {'type': 'string', 'description': 'Event the user registered for'}, 'quantity': {'type': 'integer', 'description': 'Tickets issued'}}}
입력 스키마
{'type': 'object', 'required': ['restaurant_id', 'menu_item_id', 'menu_date'], 'properties': {'menu_date': {'type': 'string', 'description': 'Date the item is orderable, YYYY-MM-DD'}, 'menu_item_id': {'type': 'string', 'description': 'Menu item ID - from list_restaurant_menu_items'}, 'available_qty': {'type': 'integer', 'description': 'Maximum portions for the day; omit for unlimited'}, 'restaurant_id': {'type': 'string', 'description': 'Restaurant ID - from list_school_restaurants'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Daily-menu entry ID'}, 'menuDate': {'type': 'string', 'description': 'Date the item is orderable, YYYY-MM-DD'}, 'menuItemId': {'type': 'string', 'description': 'Menu item scheduled'}, 'availableQty': {'type': ['integer', 'null'], 'description': 'Portion cap for the day; null means unlimited'}}}
입력 스키마
{'type': 'object', 'required': ['shift_id'], 'properties': {'shift_id': {'type': 'string', 'description': "Volunteer shift ID - from the event's volunteer shifts (list_school_events)"}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Signup ID'}, 'status': {'type': 'string', 'description': 'Signup status'}, 'shiftId': {'type': 'string', 'description': 'Volunteer shift signed up for'}}}
입력 스키마
{'type': 'object', 'required': ['order_id'], 'properties': {'items': {'type': 'array', 'description': 'Replacement line items (menu_item_id from get_lunch_menu + quantity); replaces all existing items when provided'}, 'order_id': {'type': 'string', 'description': 'Draft order ID from create_lunch_order_draft - must still be in draft status'}, 'menu_date': {'type': 'string', 'description': 'New date the lunch is served, YYYY-MM-DD'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'status': {'type': 'string', 'description': 'Order status (draft)'}, 'orderId': {'type': 'string', 'description': 'Updated draft order ID'}}}
입력 스키마
{'type': 'object', 'required': ['restaurant_id', 'menu_item_id'], 'properties': {'name': {'type': 'string', 'description': 'New display name for the item'}, 'calories': {'type': 'integer', 'description': 'Calorie count'}, 'is_active': {'type': 'boolean', 'description': 'Whether the item stays on the restaurant menu - set false to retire it'}, 'cost_cents': {'type': 'integer', 'description': 'Kitchen cost in cents (internal margin tracking)'}, 'description': {'type': 'string', 'description': 'New item description shown to parents'}, 'ingredients': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Ingredient list'}, 'price_cents': {'type': 'integer', 'description': 'Sale price in cents (e.g. 550 = $5.50)'}, 'menu_item_id': {'type': 'string', 'description': 'Menu item ID - from list_restaurant_menu_items'}, 'restaurant_id': {'type': 'string', 'description': 'Restaurant ID - from list_school_restaurants'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Menu item ID'}, 'name': {'type': 'string', 'description': 'Item name'}, 'isActive': {'type': 'boolean', 'description': 'Whether the item is on the restaurant menu'}, 'priceCents': {'type': 'integer', 'description': 'Sale price in cents'}, 'isAvailable': {'type': 'boolean', 'description': 'Whether the item can currently be ordered'}}}
입력 스키마
{'type': 'object', 'required': ['event_id'], 'properties': {'name': {'type': 'string', 'description': 'New event name'}, 'status': {'enum': ['active', 'cancelled', 'completed'], 'type': 'string', 'description': 'Event status - cancelled stops sales, completed closes the event'}, 'ends_at': {'type': 'string', 'description': 'End time (e.g. 20:00)'}, 'event_id': {'type': 'string', 'description': 'Event ID - from list_school_events'}, 'location': {'type': 'string', 'description': 'Event location (e.g. Gymnasium)'}, 'starts_at': {'type': 'string', 'description': 'Start time (e.g. 18:30)'}, 'event_date': {'type': 'string', 'description': 'Event date, YYYY-MM-DD'}, 'description': {'type': 'string', 'description': 'New event description shown to parents'}, 'max_capacity': {'type': 'integer', 'description': 'Maximum number of attendees/tickets'}, 'ticket_price_cents': {'type': 'integer', 'description': 'Ticket price in cents; 0 for free events'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Event ID'}, 'name': {'type': 'string', 'description': 'Event name'}, 'status': {'type': 'string', 'description': 'Event status after the update'}, 'eventDate': {'type': 'string', 'description': 'Event date, YYYY-MM-DD'}}}
최근 도구 변경
유사한 MCP 서버
intelligence-gateway
Provides Algerian geography and telecom utilities, talent certification and recruitment tools, corporate training discovery, vide…
Hotmart
Manages Hotmart digital products, course memberships, students, sales, subscriptions, commissions, coupons, payment links, charge…
Gracie Barra Jiu-Jitsu
Provides directory capabilities for Jiu-Jitsu schools, classes, instructors, ranks, events, services, bookings, and purchases.
DOJO+
Provides directory access to martial arts schools, classes, instructors, ranks, events, services, bookings, and purchases.
Dog Leadership Academy
Provides dog behavior education content, assessments, program information, and Stripe enrollment checkout links.
Seamgrin
Provides clothing alteration information, tailor training applications, and opportunities for experienced tailors.
Prelude NZ — Instrument Rental
Searches musical instruments available for rental in New Zealand, provides rental pricing and FAQs, and finds music teachers.
Tantra Authority Catalog
Searches a catalog of tantra, sex, and consciousness digital courses, books, and readings and provides x402 purchase details.